diff --git a/.azure/ci.yml b/.azure/ci.yml index a7873d0a6..b02f21f6a 100644 --- a/.azure/ci.yml +++ b/.azure/ci.yml @@ -13,7 +13,7 @@ variables: - name: DOTNET_CLI_TELEMETRY_OPTOUT value: 'true' - name: INPUT_VERSIONSPEC - value: '6.0.x' + value: '6.3.x' - name: INPUT_INCLUDEPRERELEASE value: 'false' - name: INPUT_IGNOREFAILEDSOURCES @@ -26,12 +26,12 @@ jobs: displayName: '' strategy: matrix: - 'ubuntu-latest': - imageName: 'ubuntu-latest' - 'macos-latest': + 'ubuntu-24.04': + imageName: 'ubuntu-24.04' + 'macos-15': imageName: 'macos-15' - 'windows-latest': - imageName: 'windows-latest' + 'windows-2025': + imageName: 'windows-2025' pool: vmImage: $(imageName) @@ -58,9 +58,11 @@ jobs: npm run test:ci displayName: 'Run tests' - task: PublishTestResults@2 + condition: always() inputs: testResultsFormat: 'JUnit' testResultsFiles: 'junit-report.xml' + searchFolder: '$(System.DefaultWorkingDirectory)' displayName: 'Test Summary' - pwsh: | # set the inputs for the 'gitversion/setup' action diff --git a/.azure/example-10.yml b/.azure/example-10.yml new file mode 100644 index 000000000..07f2ca794 --- /dev/null +++ b/.azure/example-10.yml @@ -0,0 +1,94 @@ +name: example-10 +trigger: none + +variables: + - name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE + value: 'true' + - name: DOTNET_CLI_TELEMETRY_OPTOUT + value: 'true' + +stages: + - stage: GitVersion_v6_cross_stage + displayName: GitVersion v6 (cross stage) + jobs: + - job: GitVersion_v6_cross_stage_producer + displayName: GitVersion v6 (cross stage producer) + pool: + vmImage: ubuntu-24.04 + steps: + - checkout: self + fetchDepth: 0 + + - task: gitversion/setup@3.2.0 + displayName: Install GitVersion + inputs: + versionSpec: '6.3.x' + + - task: gitversion/execute@3.2.0 + displayName: Determine Version + name: version_step # step id used as a reference for output values + inputs: + overrideConfig: | + update-build-number=false + - stage: GitVersion_v6_cross_stage_consumer_without_prefix + displayName: GitVersion v6 (cross stage consumer) - without prefix + dependsOn: GitVersion_v6_cross_stage + condition: and(succeeded(), eq(dependencies.GitVersion_v6_cross_stage.outputs['GitVersion_v6_cross_stage_producer.version_step.branchName'], 'main')) # use in condition + jobs: + - job: GitVersion_v6_cross_stage_consumer_without_prefix + displayName: GitVersion v6 (cross stage consumer) - without prefix + variables: + myvar_fullSemVer: $[ stageDependencies.GitVersion_v6_cross_stage.GitVersion_v6_cross_stage_producer.outputs['version_step.fullSemVer'] ] + pool: + vmImage: ubuntu-24.04 + steps: + - pwsh: | + echo "FullSemVer (myvar_fullSemVer) : $(myvar_fullSemVer)" + displayName: Use mapped job variables (pwsh - outputs without prefix) + + - pwsh: | + echo "FullSemVer (env:localvar_fullSemVer) : $env:localvar_fullSemVer" + displayName: Use mapped local env from job variables (pwsh - outputs without prefix) + env: + localvar_fullSemVer: $(myvar_fullSemVer) + + - bash: | + echo "FullSemVer (myvar_fullSemVer) : $(myvar_fullSemVer)" + displayName: Use mapped job variables (bash - outputs without prefix) + + - bash: | + echo "FullSemVer (localvar_fullSemVer) : $localvar_fullSemVer" + displayName: Use mapped local env from job variables (bash - outputs without prefix) + env: + localvar_fullSemVer: $(myvar_fullSemVer) + - stage: GitVersion_v6_cross_stage_consumer_with_prefix + displayName: GitVersion v6 (cross stage consumer) - with prefix + dependsOn: GitVersion_v6_cross_stage + condition: and(succeeded(), eq(dependencies.GitVersion_v6_cross_stage.outputs['GitVersion_v6_cross_stage_producer.version_step.GitVersion_BranchName'], 'main')) # use in condition + jobs: + - job: GitVersion_v6_cross_stage_consumer_with_prefix + displayName: GitVersion v6 (cross stage consumer) - with prefix + variables: + myvar_GitVersion_FullSemVer: $[ stageDependencies.GitVersion_v6_cross_stage.GitVersion_v6_cross_stage_producer.outputs['version_step.GitVersion_FullSemVer'] ] + pool: + vmImage: ubuntu-24.04 + steps: + - pwsh: | + echo "FullSemVer (myvar_GitVersion_FullSemVer) : $(myvar_GitVersion_FullSemVer)" + displayName: Use mapped job variables (pwsh - outputs with prefix) + + - pwsh: | + echo "FullSemVer (env:localvar_GitVersion_FullSemVer) : $env:localvar_GitVersion_FullSemVer" + displayName: Use mapped local env from job variables (pwsh - outputs with prefix) + env: + localvar_GitVersion_FullSemVer: $(myvar_GitVersion_FullSemVer) + + - bash: | + echo "FullSemVer (localvar_GitVersion_FullSemVer) : $localvar_GitVersion_FullSemVer" + displayName: Use mapped job variables (bash - outputs with prefix) + + - bash: | + echo "FullSemVer (localvar_GitVersion_FullSemVer) : $localvar_GitVersion_FullSemVer" + displayName: Use mapped local env from job variables (bash - outputs with prefix) + env: + localvar_GitVersion_FullSemVer: $(myvar_GitVersion_FullSemVer) diff --git a/.azure/example-7.yml b/.azure/example-7.yml deleted file mode 100644 index 2491982cc..000000000 --- a/.azure/example-7.yml +++ /dev/null @@ -1,68 +0,0 @@ -trigger: none - -variables: - - name: DOTNET_SKIP_FIRST_TIME_EXPERIENCE - value: 'true' - - name: DOTNET_CLI_TELEMETRY_OPTOUT - value: 'true' - -jobs: - - job: GitVersion_v6_same_job - displayName: GitVersion v6 (same job) - pool: - vmImage: ubuntu-latest - steps: - - checkout: self - fetchDepth: 0 - - - task: gitversion/setup@3.1.10 - displayName: Install GitVersion - inputs: - versionSpec: '6.0.x' - - - task: gitversion/execute@3.1.10 - displayName: Determine Version - name: version_step # step id used as reference for output values - inputs: - overrideConfig: | - update-build-number=false - - - pwsh: | - echo "FullSemVer (fullSemVer) : $(fullSemVer)" - displayName: Display GitVersion variables (without prefix) - - - pwsh: | - echo "FullSemVer (GitVersion_FullSemVer) : $(GitVersion_FullSemVer)" - displayName: Display GitVersion variables (with prefix) - - - pwsh: | - echo "FullSemVer (version_step.fullSemVer) : $(version_step.fullSemVer)" - displayName: Display GitVersion outputs (step output without prefix) - - - pwsh: | - echo "FullSemVer (version_step.GitVersion_FullSemVer) : $(version_step.GitVersion_FullSemVer)" - displayName: Display GitVersion outputs (step output with prefix) - - - pwsh: | - echo "FullSemVer (env:myvar_fullSemVer) : $env:myvar_fullSemVer" - displayName: Display mapped local env (pwsh - outputs without prefix) - env: - myvar_fullSemVer: $(version_step.fullSemVer) - - - pwsh: | - echo "FullSemVer (env:myvar_GitVersion_FullSemVer) : $env:myvar_GitVersion_FullSemVer" - displayName: Display mapped local env (pwsh - outputs with prefix) - env: - myvar_GitVersion_FullSemVer: $(version_step.GitVersion_FullSemVer) - - - bash: | - echo "FullSemVer (myvar_fullSemVer) : $myvar_fullSemVer" - displayName: Display mapped local env (bash - outputs without prefix) - env: - myvar_fullSemVer: $(version_step.fullSemVer) - - - bash: | - echo "FullSemVer (myvar_GitVersion_FullSemVer) : $myvar_GitVersion_FullSemVer" - displayName: Display mapped local env (bash - outputs with prefix) - env: - myvar_GitVersion_FullSemVer: $(version_step.GitVersion_FullSemVer) diff --git a/.azure/example-8.yml b/.azure/example-8.yml index 8694e1611..61c395966 100644 --- a/.azure/example-8.yml +++ b/.azure/example-8.yml @@ -1,3 +1,4 @@ +name: example-8 trigger: none variables: @@ -7,80 +8,62 @@ variables: value: 'true' jobs: - - job: GitVersion_v6_cross_job - displayName: GitVersion v6 (cross job) + - job: GitVersion_v6_same_job + displayName: GitVersion v6 (same job) pool: - vmImage: ubuntu-latest + vmImage: ubuntu-24.04 steps: - checkout: self fetchDepth: 0 - - task: gitversion/setup@3.1.10 + - task: gitversion/setup@3.2.0 displayName: Install GitVersion inputs: - versionSpec: '6.0.x' + versionSpec: '6.3.x' - - task: gitversion/execute@3.1.10 + - task: gitversion/execute@3.2.0 displayName: Determine Version - name: version_step # step id used as reference for output values + name: version_step # step id used as a reference for output values inputs: overrideConfig: | update-build-number=false - - job: GitVersion_v6_cross_job_consumer_without_prefix - displayName: GitVersion v6 (cross job consumer) - without prefix - dependsOn: GitVersion_v6_cross_job - condition: and(succeeded(), eq(dependencies.GitVersion_v6_cross_job.outputs['version_step.branchName'], 'main')) # use in condition - variables: - myvar_fullSemVer: $[ dependencies.GitVersion_v6_cross_job.outputs['version_step.fullSemVer'] ] - pool: - vmImage: ubuntu-latest - steps: - pwsh: | - echo "FullSemVer (myvar_fullSemVer) : $(myvar_fullSemVer)" - displayName: Use mapped job variables (pwsh - outputs without prefix) + echo "FullSemVer (fullSemVer) : $(fullSemVer)" + displayName: Display GitVersion variables (without prefix) - pwsh: | - echo "FullSemVer (env:localvar_fullSemVer) : $env:localvar_fullSemVer" - displayName: Use mapped local env from job variables (pwsh - outputs without prefix) - env: - localvar_fullSemVer: $(myvar_fullSemVer) + echo "FullSemVer (GitVersion_FullSemVer) : $(GitVersion_FullSemVer)" + displayName: Display GitVersion variables (with prefix) - - bash: | - echo "FullSemVer (myvar_fullSemVer) : $(myvar_fullSemVer)" - displayName: Use mapped job variables (bash - outputs without prefix) + - pwsh: | + echo "FullSemVer (version_step.fullSemVer) : $(version_step.fullSemVer)" + displayName: Display GitVersion outputs (step output without prefix) - - bash: | - echo "FullSemVer (localvar_fullSemVer) : $localvar_fullSemVer" - displayName: Use mapped local env from job variables (bash - outputs without prefix) - env: - localvar_fullSemVer: $(myvar_fullSemVer) + - pwsh: | + echo "FullSemVer (version_step.GitVersion_FullSemVer) : $(version_step.GitVersion_FullSemVer)" + displayName: Display GitVersion outputs (step output with prefix) - - job: GitVersion_v6_cross_job_consumer_with_prefix - displayName: GitVersion v6 (cross job consumer) - with prefix - dependsOn: GitVersion_v6_cross_job - condition: and(succeeded(), eq(dependencies.GitVersion_v6_cross_job.outputs['version_step.GitVersion_BranchName'], 'main')) # use in condition - variables: - myvar_GitVersion_FullSemVer: $[ dependencies.GitVersion_v6_cross_job.outputs['version_step.GitVersion_FullSemVer'] ] - pool: - vmImage: ubuntu-latest - steps: - pwsh: | - echo "FullSemVer (myvar_GitVersion_FullSemVer) : $(myvar_GitVersion_FullSemVer)" - displayName: Use mapped job variables (pwsh - outputs with prefix) + echo "FullSemVer (env:myvar_fullSemVer) : $env:myvar_fullSemVer" + displayName: Display mapped local env (pwsh - outputs without prefix) + env: + myvar_fullSemVer: $(version_step.fullSemVer) - pwsh: | - echo "FullSemVer (env:localvar_GitVersion_FullSemVer) : $env:localvar_GitVersion_FullSemVer" - displayName: Use mapped local env from job variables (pwsh - outputs with prefix) + echo "FullSemVer (env:myvar_GitVersion_FullSemVer) : $env:myvar_GitVersion_FullSemVer" + displayName: Display mapped local env (pwsh - outputs with prefix) env: - localvar_GitVersion_FullSemVer: $(myvar_GitVersion_FullSemVer) + myvar_GitVersion_FullSemVer: $(version_step.GitVersion_FullSemVer) - bash: | - echo "FullSemVer (myvar_GitVersion_FullSemVer) : $(myvar_GitVersion_FullSemVer)" - displayName: Use mapped job variables (bash - outputs with prefix) + echo "FullSemVer (myvar_fullSemVer) : $myvar_fullSemVer" + displayName: Display mapped local env (bash - outputs without prefix) + env: + myvar_fullSemVer: $(version_step.fullSemVer) - bash: | - echo "FullSemVer (localvar_GitVersion_FullSemVer) : $localvar_GitVersion_FullSemVer" - displayName: Use mapped local env from job variables (bash - outputs with prefix) + echo "FullSemVer (myvar_GitVersion_FullSemVer) : $myvar_GitVersion_FullSemVer" + displayName: Display mapped local env (bash - outputs with prefix) env: - localvar_GitVersion_FullSemVer: $(myvar_GitVersion_FullSemVer) + myvar_GitVersion_FullSemVer: $(version_step.GitVersion_FullSemVer) diff --git a/.azure/example-9.yml b/.azure/example-9.yml index 4a95d083c..97b559445 100644 --- a/.azure/example-9.yml +++ b/.azure/example-9.yml @@ -1,3 +1,4 @@ +name: example-9 trigger: none variables: @@ -6,88 +7,81 @@ variables: - name: DOTNET_CLI_TELEMETRY_OPTOUT value: 'true' -stages: - - stage: GitVersion_v6_cross_stage - displayName: GitVersion v6 (cross stage) - jobs: - - job: GitVersion_v6_cross_stage_producer - displayName: GitVersion v6 (cross stage producer) - pool: - vmImage: ubuntu-latest - steps: - - checkout: self - fetchDepth: 0 +jobs: + - job: GitVersion_v6_cross_job + displayName: GitVersion v6 (cross job) + pool: + vmImage: ubuntu-24.04 + steps: + - checkout: self + fetchDepth: 0 - - task: gitversion/setup@3.1.10 - displayName: Install GitVersion - inputs: - versionSpec: '6.0.x' + - task: gitversion/setup@3.2.0 + displayName: Install GitVersion + inputs: + versionSpec: '6.3.x' - - task: gitversion/execute@3.1.10 - displayName: Determine Version - name: version_step # step id used as reference for output values - inputs: - overrideConfig: | - update-build-number=false - - stage: GitVersion_v6_cross_stage_consumer_without_prefix - displayName: GitVersion v6 (cross stage consumer) - without prefix - dependsOn: GitVersion_v6_cross_stage - condition: and(succeeded(), eq(dependencies.GitVersion_v6_cross_stage.outputs['GitVersion_v6_cross_stage_producer.version_step.branchName'], 'main')) # use in condition - jobs: - - job: GitVersion_v6_cross_stage_consumer_without_prefix - displayName: GitVersion v6 (cross stage consumer) - without prefix - variables: - myvar_fullSemVer: $[ stageDependencies.GitVersion_v6_cross_stage.GitVersion_v6_cross_stage_producer.outputs['version_step.fullSemVer'] ] - pool: - vmImage: ubuntu-latest - steps: - - pwsh: | - echo "FullSemVer (myvar_fullSemVer) : $(myvar_fullSemVer)" - displayName: Use mapped job variables (pwsh - outputs without prefix) + - task: gitversion/execute@3.2.0 + displayName: Determine Version + name: version_step # step id used as a reference for output values + inputs: + overrideConfig: | + update-build-number=false - - pwsh: | - echo "FullSemVer (env:localvar_fullSemVer) : $env:localvar_fullSemVer" - displayName: Use mapped local env from job variables (pwsh - outputs without prefix) - env: - localvar_fullSemVer: $(myvar_fullSemVer) + - job: GitVersion_v6_cross_job_consumer_without_prefix + displayName: GitVersion v6 (cross job consumer) - without prefix + dependsOn: GitVersion_v6_cross_job + condition: and(succeeded(), eq(dependencies.GitVersion_v6_cross_job.outputs['version_step.branchName'], 'main')) # use in condition + variables: + myvar_fullSemVer: $[ dependencies.GitVersion_v6_cross_job.outputs['version_step.fullSemVer'] ] + pool: + vmImage: ubuntu-24.04 + steps: + - pwsh: | + echo "FullSemVer (myvar_fullSemVer) : $(myvar_fullSemVer)" + displayName: Use mapped job variables (pwsh - outputs without prefix) - - bash: | - echo "FullSemVer (myvar_fullSemVer) : $(myvar_fullSemVer)" - displayName: Use mapped job variables (bash - outputs without prefix) + - pwsh: | + echo "FullSemVer (env:localvar_fullSemVer) : $env:localvar_fullSemVer" + displayName: Use mapped local env from job variables (pwsh - outputs without prefix) + env: + localvar_fullSemVer: $(myvar_fullSemVer) - - bash: | - echo "FullSemVer (localvar_fullSemVer) : $localvar_fullSemVer" - displayName: Use mapped local env from job variables (bash - outputs without prefix) - env: - localvar_fullSemVer: $(myvar_fullSemVer) - - stage: GitVersion_v6_cross_stage_consumer_with_prefix - displayName: GitVersion v6 (cross stage consumer) - with prefix - dependsOn: GitVersion_v6_cross_stage - condition: and(succeeded(), eq(dependencies.GitVersion_v6_cross_stage.outputs['GitVersion_v6_cross_stage_producer.version_step.GitVersion_BranchName'], 'main')) # use in condition - jobs: - - job: GitVersion_v6_cross_stage_consumer_with_prefix - displayName: GitVersion v6 (cross stage consumer) - with prefix - variables: - myvar_GitVersion_FullSemVer: $[ stageDependencies.GitVersion_v6_cross_stage.GitVersion_v6_cross_stage_producer.outputs['version_step.GitVersion_FullSemVer'] ] - pool: - vmImage: ubuntu-latest - steps: - - pwsh: | - echo "FullSemVer (myvar_GitVersion_FullSemVer) : $(myvar_GitVersion_FullSemVer)" - displayName: Use mapped job variables (pwsh - outputs with prefix) + - bash: | + echo "FullSemVer (myvar_fullSemVer) : $(myvar_fullSemVer)" + displayName: Use mapped job variables (bash - outputs without prefix) - - pwsh: | - echo "FullSemVer (env:localvar_GitVersion_FullSemVer) : $env:localvar_GitVersion_FullSemVer" - displayName: Use mapped local env from job variables (pwsh - outputs with prefix) - env: - localvar_GitVersion_FullSemVer: $(myvar_GitVersion_FullSemVer) + - bash: | + echo "FullSemVer (localvar_fullSemVer) : $localvar_fullSemVer" + displayName: Use mapped local env from job variables (bash - outputs without prefix) + env: + localvar_fullSemVer: $(myvar_fullSemVer) - - bash: | - echo "FullSemVer (localvar_GitVersion_FullSemVer) : $localvar_GitVersion_FullSemVer" - displayName: Use mapped job variables (bash - outputs with prefix) + - job: GitVersion_v6_cross_job_consumer_with_prefix + displayName: GitVersion v6 (cross job consumer) - with prefix + dependsOn: GitVersion_v6_cross_job + condition: and(succeeded(), eq(dependencies.GitVersion_v6_cross_job.outputs['version_step.GitVersion_BranchName'], 'main')) # use in condition + variables: + myvar_GitVersion_FullSemVer: $[ dependencies.GitVersion_v6_cross_job.outputs['version_step.GitVersion_FullSemVer'] ] + pool: + vmImage: ubuntu-24.04 + steps: + - pwsh: | + echo "FullSemVer (myvar_GitVersion_FullSemVer) : $(myvar_GitVersion_FullSemVer)" + displayName: Use mapped job variables (pwsh - outputs with prefix) - - bash: | - echo "FullSemVer (localvar_GitVersion_FullSemVer) : $localvar_GitVersion_FullSemVer" - displayName: Use mapped local env from job variables (bash - outputs with prefix) - env: - localvar_GitVersion_FullSemVer: $(myvar_GitVersion_FullSemVer) + - pwsh: | + echo "FullSemVer (env:localvar_GitVersion_FullSemVer) : $env:localvar_GitVersion_FullSemVer" + displayName: Use mapped local env from job variables (pwsh - outputs with prefix) + env: + localvar_GitVersion_FullSemVer: $(myvar_GitVersion_FullSemVer) + + - bash: | + echo "FullSemVer (myvar_GitVersion_FullSemVer) : $(myvar_GitVersion_FullSemVer)" + displayName: Use mapped job variables (bash - outputs with prefix) + + - bash: | + echo "FullSemVer (localvar_GitVersion_FullSemVer) : $localvar_GitVersion_FullSemVer" + displayName: Use mapped local env from job variables (bash - outputs with prefix) + env: + localvar_GitVersion_FullSemVer: $(myvar_GitVersion_FullSemVer) diff --git a/.github/workflows/checkout-path.yml b/.github/workflows/checkout-path.yml index 145580169..55f6bb227 100644 --- a/.github/workflows/checkout-path.yml +++ b/.github/workflows/checkout-path.yml @@ -17,7 +17,7 @@ defaults: jobs: build: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout code uses: actions/checkout@v4 @@ -28,7 +28,7 @@ jobs: - name: Install GitVersion uses: gittools/actions/gitversion/setup@main with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' - name: Determine version id: gitversion diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 36c9b188e..0dd38b6e3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -22,7 +22,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ windows-latest, ubuntu-latest, macos-15 ] + os: [ windows-2025, ubuntu-24.04, macos-15 ] fail-fast: false steps: - uses: actions/checkout@v4 @@ -50,22 +50,25 @@ jobs: name: Run tests - name: Test Summary uses: test-summary/action@v2.4 + if: always() with: paths: junit-report.xml - name: gitversion/setup uses: ./gitversion/setup with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' - name: gitversion/command (showvariable) uses: ./gitversion/command with: + targetPath: './' arguments: '/showvariable FullSemVer' - name: gitversion/command (format) uses: ./gitversion/command with: + targetPath: './' arguments: '/format {Major}.{Minor}' - name: gitversion/execute - id: gitversion # step id used as reference for output values + id: gitversion # step id used as a reference for output values uses: ./gitversion/execute with: targetPath: './' @@ -95,7 +98,7 @@ jobs: echo "FullSemVer (steps.gitversion.outputs.GitVersion_FullSemVer) : ${{ steps.gitversion.outputs.GitVersion_FullSemVer }}" name: Use variables and output - name: Check for changes - if: matrix.os == 'ubuntu-latest' && github.event_name == 'push' + if: matrix.os == 'ubuntu-24.04' && github.event_name == 'push' id: status run: | if ($null -ne (git status --porcelain)) { echo "has_changes=1"; echo "has_changes=1" >> $env:GITHUB_OUTPUT } diff --git a/.github/workflows/example-7.yml b/.github/workflows/example-7.yml deleted file mode 100644 index 14bfdb6fa..000000000 --- a/.github/workflows/example-7.yml +++ /dev/null @@ -1,82 +0,0 @@ -name: example-7 -on: - workflow_dispatch: - -defaults: - run: - shell: pwsh - -jobs: - GitVersion_v6_same_job: - name: GitVersion v6 (same job) - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v3.1.10 - with: - versionSpec: '6.0.x' - - - name: Determine Version - id: version_step # step id used as reference for output values - uses: gittools/actions/gitversion/execute@v3.1.10 - - - run: | - echo "FullSemVer (env.fullSemVer) : ${{ env.fullSemVer }}" - name: Display GitVersion variables (without prefix) - - - run: | - echo "FullSemVer (env.GitVersion_FullSemVer) : ${{ env.GitVersion_FullSemVer }}" - name: Display GitVersion variables (with prefix) - - - run: | - echo "FullSemVer (steps.version_step.outputs.fullSemVer) : ${{ steps.version_step.outputs.fullSemVer }}" - name: Display GitVersion outputs (step output without prefix) - - - run: | - echo "FullSemVer (steps.version_step.outputs.GitVersion_FullSemVer) : ${{ steps.version_step.outputs.GitVersion_FullSemVer }}" - name: Display GitVersion outputs (step output with prefix) - - - run: | - echo "FullSemVer (env.myvar_fullSemVer) : ${{ env.myvar_fullSemVer }}" - name: Display mapped local env (outputs without prefix) - env: - myvar_fullSemVer: ${{ steps.version_step.outputs.fullSemVer }} - - - run: | - echo "FullSemVer (env.myvar_GitVersion_FullSemVer) : ${{ env.myvar_GitVersion_FullSemVer }}" - name: Display mapped local env (outputs with prefix) - env: - myvar_GitVersion_FullSemVer: ${{ steps.version_step.outputs.GitVersion_FullSemVer }} - - - run: | - echo "FullSemVer (env.myvar_fullSemVer) : $env:myvar_fullSemVer" - name: Display mapped local env (pwsh - outputs without prefix) - shell: pwsh - env: - myvar_fullSemVer: ${{ steps.version_step.outputs.fullSemVer }} - - - run: | - echo "FullSemVer (env.myvar_GitVersion_FullSemVer) : $env:myvar_GitVersion_FullSemVer" - name: Display mapped local env (pwsh - outputs with prefix) - shell: pwsh - env: - myvar_GitVersion_FullSemVer: ${{ steps.version_step.outputs.GitVersion_FullSemVer }} - - - run: | - echo "FullSemVer (myvar_fullSemVer) : $myvar_fullSemVer" - name: Display mapped local env (bash - outputs without prefix) - shell: bash - env: - myvar_fullSemVer: ${{ steps.version_step.outputs.fullSemVer }} - - - run: | - echo "FullSemVer (myvar_GitVersion_FullSemVer) : $myvar_GitVersion_FullSemVer" - name: Display mapped local env (bash - outputs with prefix) - shell: bash - env: - myvar_GitVersion_FullSemVer: ${{ steps.version_step.outputs.GitVersion_FullSemVer }} diff --git a/.github/workflows/example-8.yml b/.github/workflows/example-8.yml index 7d02e9989..2a5a89f50 100644 --- a/.github/workflows/example-8.yml +++ b/.github/workflows/example-8.yml @@ -7,15 +7,9 @@ defaults: shell: pwsh jobs: - GitVersion_v6_cross_job: - name: GitVersion v6 (cross job) - runs-on: ubuntu-latest - outputs: - branchName: ${{ steps.version_step.outputs.branchName }} - fullSemVer: ${{ steps.version_step.outputs.fullSemVer }} - - GitVersion_BranchName: ${{ steps.version_step.outputs.GitVersion_BranchName }} - GitVersion_FullSemVer: ${{ steps.version_step.outputs.GitVersion_FullSemVer }} + GitVersion_v6_same_job: + name: GitVersion v6 (same job) + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -23,122 +17,66 @@ jobs: fetch-depth: 0 - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v3.1.10 + uses: gittools/actions/gitversion/setup@v3.2.0 with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' - name: Determine Version - id: version_step # step id used as reference for output values - uses: gittools/actions/gitversion/execute@v3.1.10 + id: version_step # step id used as a reference for output values + uses: gittools/actions/gitversion/execute@v3.2.0 - GitVersion_v6_cross_job_consumer_without_prefix: - name: GitVersion v6 (cross job consumer) - without prefix - needs: GitVersion_v6_cross_job - runs-on: ubuntu-latest - if: contains(needs.GitVersion_v6_cross_job.outputs['branchName'], 'main') - env: - myvar_fullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.fullSemVer }} - steps: - run: | - echo "FullSemVer (env:myvar_fullSemVer) : $env:myvar_fullSemVer" - name: Use job variables (pwsh - outputs without prefix) - shell: pwsh + echo "FullSemVer (env.fullSemVer) : ${{ env.fullSemVer }}" + name: Display GitVersion variables (without prefix) - run: | - echo "FullSemVer (env:localvar_fullSemVer): $env:localvar_fullSemVer" - name: Use local env mapped from output (pwsh - outputs without prefix) - shell: pwsh - env: - localvar_fullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.fullSemVer }} + echo "FullSemVer (env.GitVersion_FullSemVer) : ${{ env.GitVersion_FullSemVer }}" + name: Display GitVersion variables (with prefix) - run: | - echo "FullSemVer (env:localvar_fullSemVer) : $env:localvar_fullSemVer" - name: Use local env mapped from job variables (pwsh - outputs without prefix) - shell: pwsh - env: - localvar_fullSemVer: ${{ env.myvar_fullSemVer }} + echo "FullSemVer (steps.version_step.outputs.fullSemVer) : ${{ steps.version_step.outputs.fullSemVer }}" + name: Display GitVersion outputs (step output without prefix) - run: | - echo "FullSemVer (needs.GitVersion_v6_cross_job.outputs.fullSemVer) : ${{ needs.GitVersion_v6_cross_job.outputs.fullSemVer }}" - name: Use direct output from previous job (pwsh - outputs without prefix) - shell: pwsh + echo "FullSemVer (steps.version_step.outputs.GitVersion_FullSemVer) : ${{ steps.version_step.outputs.GitVersion_FullSemVer }}" + name: Display GitVersion outputs (step output with prefix) - run: | - echo "FullSemVer (myvar_fullSemVer) : $myvar_fullSemVer" - name: Use job variables (bash - outputs without prefix) - shell: bash - - - run: | - echo "FullSemVer (localvar_fullSemVer): $localvar_fullSemVer" - name: Use local env mapped from output (bash - outputs without prefix) - shell: bash + echo "FullSemVer (env.myvar_fullSemVer) : ${{ env.myvar_fullSemVer }}" + name: Display mapped local env (outputs without prefix) env: - localvar_fullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.fullSemVer }} + myvar_fullSemVer: ${{ steps.version_step.outputs.fullSemVer }} - run: | - echo "FullSemVer (localvar_fullSemVer) : $localvar_fullSemVer" - name: Use local env mapped from job variables (bash - outputs without prefix) - shell: bash + echo "FullSemVer (env.myvar_GitVersion_FullSemVer) : ${{ env.myvar_GitVersion_FullSemVer }}" + name: Display mapped local env (outputs with prefix) env: - localvar_fullSemVer: ${{ env.myvar_fullSemVer }} + myvar_GitVersion_FullSemVer: ${{ steps.version_step.outputs.GitVersion_FullSemVer }} - run: | - echo "FullSemVer (needs.GitVersion_v6_cross_job.outputs.fullSemVer) : ${{ needs.GitVersion_v6_cross_job.outputs.fullSemVer }}" - name: Use direct output from previous job (bash - outputs without prefix) - shell: bash - - GitVersion_v6_cross_job_consumer_with_prefix: - name: GitVersion v6 (cross job consumer) - with prefix - needs: GitVersion_v6_cross_job - runs-on: ubuntu-latest - if: contains(needs.GitVersion_v6_cross_job.outputs['GitVersion_BranchName'], 'main') - env: - myvar_GitVersion_FullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer }} - steps: - - run: | - echo "FullSemVer (env:myvar_GitVersion_FullSemVer) : $env:myvar_GitVersion_FullSemVer" - name: Use job variables (pwsh - outputs without prefix) - shell: pwsh - - - run: | - echo "FullSemVer (env:localvar_fullSemVer): $env:localvar_fullSemVer" - name: Use local env mapped from output (pwsh - outputs without prefix) + echo "FullSemVer (env.myvar_fullSemVer) : $env:myvar_fullSemVer" + name: Display mapped local env (pwsh - outputs without prefix) shell: pwsh env: - localvar_fullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer }} + myvar_fullSemVer: ${{ steps.version_step.outputs.fullSemVer }} - run: | - echo "FullSemVer (env:localvar_fullSemVer) : $env:localvar_fullSemVer" - name: Use local env mapped from job variables (pwsh - outputs without prefix) + echo "FullSemVer (env.myvar_GitVersion_FullSemVer) : $env:myvar_GitVersion_FullSemVer" + name: Display mapped local env (pwsh - outputs with prefix) shell: pwsh env: - localvar_fullSemVer: ${{ env.myvar_GitVersion_FullSemVer }} - - - run: | - echo "FullSemVer (needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer) : ${{ needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer }}" - name: Use direct output from previous job (pwsh - outputs without prefix) - shell: pwsh - - - run: | - echo "FullSemVer (myvar_GitVersion_FullSemVer) : $myvar_GitVersion_FullSemVer" - name: Use job variables (bash - outputs without prefix) - shell: bash + myvar_GitVersion_FullSemVer: ${{ steps.version_step.outputs.GitVersion_FullSemVer }} - run: | - echo "FullSemVer (localvar_fullSemVer): $localvar_fullSemVer" - name: Use local env mapped from output (bash - outputs without prefix) + echo "FullSemVer (myvar_fullSemVer) : $myvar_fullSemVer" + name: Display mapped local env (bash - outputs without prefix) shell: bash env: - localvar_fullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer }} + myvar_fullSemVer: ${{ steps.version_step.outputs.fullSemVer }} - run: | - echo "FullSemVer (localvar_fullSemVer) : $localvar_fullSemVer" - name: Use local env mapped from job variables (bash - outputs without prefix) + echo "FullSemVer (myvar_GitVersion_FullSemVer) : $myvar_GitVersion_FullSemVer" + name: Display mapped local env (bash - outputs with prefix) shell: bash env: - localvar_fullSemVer: ${{ env.myvar_GitVersion_FullSemVer }} - - - run: | - echo "FullSemVer (needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer) : ${{ needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer }}" - name: Use direct output from previous job (bash - outputs without prefix) - shell: bash + myvar_GitVersion_FullSemVer: ${{ steps.version_step.outputs.GitVersion_FullSemVer }} diff --git a/.github/workflows/example-9.yml b/.github/workflows/example-9.yml new file mode 100644 index 000000000..3be81d213 --- /dev/null +++ b/.github/workflows/example-9.yml @@ -0,0 +1,144 @@ +name: example-9 +on: + workflow_dispatch: + +defaults: + run: + shell: pwsh + +jobs: + GitVersion_v6_cross_job: + name: GitVersion v6 (cross job) + runs-on: ubuntu-24.04 + outputs: + branchName: ${{ steps.version_step.outputs.branchName }} + fullSemVer: ${{ steps.version_step.outputs.fullSemVer }} + + GitVersion_BranchName: ${{ steps.version_step.outputs.GitVersion_BranchName }} + GitVersion_FullSemVer: ${{ steps.version_step.outputs.GitVersion_FullSemVer }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: Install GitVersion + uses: gittools/actions/gitversion/setup@v3.2.0 + with: + versionSpec: '6.3.x' + + - name: Determine Version + id: version_step # step id used as a reference for output values + uses: gittools/actions/gitversion/execute@v3.2.0 + + GitVersion_v6_cross_job_consumer_without_prefix: + name: GitVersion v6 (cross job consumer) - without prefix + needs: GitVersion_v6_cross_job + runs-on: ubuntu-24.04 + if: contains(needs.GitVersion_v6_cross_job.outputs['branchName'], 'main') + env: + myvar_fullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.fullSemVer }} + steps: + - run: | + echo "FullSemVer (env:myvar_fullSemVer) : $env:myvar_fullSemVer" + name: Use job variables (pwsh - outputs without prefix) + shell: pwsh + + - run: | + echo "FullSemVer (env:localvar_fullSemVer): $env:localvar_fullSemVer" + name: Use local env mapped from output (pwsh - outputs without prefix) + shell: pwsh + env: + localvar_fullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.fullSemVer }} + + - run: | + echo "FullSemVer (env:localvar_fullSemVer) : $env:localvar_fullSemVer" + name: Use local env mapped from job variables (pwsh - outputs without prefix) + shell: pwsh + env: + localvar_fullSemVer: ${{ env.myvar_fullSemVer }} + + - run: | + echo "FullSemVer (needs.GitVersion_v6_cross_job.outputs.fullSemVer) : ${{ needs.GitVersion_v6_cross_job.outputs.fullSemVer }}" + name: Use direct output from previous job (pwsh - outputs without prefix) + shell: pwsh + + - run: | + echo "FullSemVer (myvar_fullSemVer) : $myvar_fullSemVer" + name: Use job variables (bash - outputs without prefix) + shell: bash + + - run: | + echo "FullSemVer (localvar_fullSemVer): $localvar_fullSemVer" + name: Use local env mapped from output (bash - outputs without prefix) + shell: bash + env: + localvar_fullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.fullSemVer }} + + - run: | + echo "FullSemVer (localvar_fullSemVer) : $localvar_fullSemVer" + name: Use local env mapped from job variables (bash - outputs without prefix) + shell: bash + env: + localvar_fullSemVer: ${{ env.myvar_fullSemVer }} + + - run: | + echo "FullSemVer (needs.GitVersion_v6_cross_job.outputs.fullSemVer) : ${{ needs.GitVersion_v6_cross_job.outputs.fullSemVer }}" + name: Use direct output from previous job (bash - outputs without prefix) + shell: bash + + GitVersion_v6_cross_job_consumer_with_prefix: + name: GitVersion v6 (cross job consumer) - with prefix + needs: GitVersion_v6_cross_job + runs-on: ubuntu-24.04 + if: contains(needs.GitVersion_v6_cross_job.outputs['GitVersion_BranchName'], 'main') + env: + myvar_GitVersion_FullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer }} + steps: + - run: | + echo "FullSemVer (env:myvar_GitVersion_FullSemVer) : $env:myvar_GitVersion_FullSemVer" + name: Use job variables (pwsh - outputs without prefix) + shell: pwsh + + - run: | + echo "FullSemVer (env:localvar_fullSemVer): $env:localvar_fullSemVer" + name: Use local env mapped from output (pwsh - outputs without prefix) + shell: pwsh + env: + localvar_fullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer }} + + - run: | + echo "FullSemVer (env:localvar_fullSemVer) : $env:localvar_fullSemVer" + name: Use local env mapped from job variables (pwsh - outputs without prefix) + shell: pwsh + env: + localvar_fullSemVer: ${{ env.myvar_GitVersion_FullSemVer }} + + - run: | + echo "FullSemVer (needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer) : ${{ needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer }}" + name: Use direct output from previous job (pwsh - outputs without prefix) + shell: pwsh + + - run: | + echo "FullSemVer (myvar_GitVersion_FullSemVer) : $myvar_GitVersion_FullSemVer" + name: Use job variables (bash - outputs without prefix) + shell: bash + + - run: | + echo "FullSemVer (localvar_fullSemVer): $localvar_fullSemVer" + name: Use local env mapped from output (bash - outputs without prefix) + shell: bash + env: + localvar_fullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer }} + + - run: | + echo "FullSemVer (localvar_fullSemVer) : $localvar_fullSemVer" + name: Use local env mapped from job variables (bash - outputs without prefix) + shell: bash + env: + localvar_fullSemVer: ${{ env.myvar_GitVersion_FullSemVer }} + + - run: | + echo "FullSemVer (needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer) : ${{ needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer }}" + name: Use direct output from previous job (bash - outputs without prefix) + shell: bash diff --git a/.github/workflows/examples-version.yml b/.github/workflows/examples-version.yml index b20528a32..c1e108058 100644 --- a/.github/workflows/examples-version.yml +++ b/.github/workflows/examples-version.yml @@ -11,7 +11,7 @@ defaults: jobs: update-examples-version: if: ${{ github.event_name == 'repository_dispatch' }} - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 with: diff --git a/.github/workflows/prerelease.yml b/.github/workflows/prerelease.yml index 71475b6dd..055588cb4 100644 --- a/.github/workflows/prerelease.yml +++ b/.github/workflows/prerelease.yml @@ -12,7 +12,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ ubuntu-latest ] + os: [ ubuntu-24.04 ] steps: - uses: actions/checkout@v4 with: @@ -29,9 +29,9 @@ jobs: - name: Install GitVersion uses: ./gitversion/setup with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' - name: Use GitVersion - id: gitversion # step id used as reference for output values + id: gitversion # step id used as a reference for output values uses: ./gitversion/execute - name: Publish To Azure Marketplace id: publish-azure diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dbd7bd9ec..ac4d2a13e 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -13,7 +13,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ ubuntu-latest ] + os: [ ubuntu-24.04 ] steps: - uses: actions/checkout@v4 with: @@ -30,13 +30,13 @@ jobs: - name: Install GitVersion uses: ./gitversion/setup with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' - name: Install GitReleaseManager uses: ./gitreleasemanager/setup with: - versionSpec: '0.18.x' + versionSpec: '0.20.x' - name: Use GitVersion - id: gitversion # step id used as reference for output values + id: gitversion # step id used as a reference for output values uses: ./gitversion/execute - name: Update Release Notes uses: ./gitreleasemanager/create diff --git a/.github/workflows/stale.yml b/.github/workflows/stale.yml index b6b44be7c..4db093052 100644 --- a/.github/workflows/stale.yml +++ b/.github/workflows/stale.yml @@ -11,7 +11,7 @@ permissions: jobs: stale: - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - uses: actions/stale@v9 with: diff --git a/.husky/pre-commit b/.husky/pre-commit index 2312dc587..a22f0d164 100644 --- a/.husky/pre-commit +++ b/.husky/pre-commit @@ -1 +1,3 @@ +npm run build +git add **/*.mjs* npx lint-staged diff --git a/dist/azure/gitreleasemanager/setup/task.json b/dist/azure/gitreleasemanager/setup/task.json index 372fc61ca..10529c36c 100644 --- a/dist/azure/gitreleasemanager/setup/task.json +++ b/dist/azure/gitreleasemanager/setup/task.json @@ -28,7 +28,7 @@ "label": "The version spec", "defaultValue": "", "required": true, - "helpMarkDown": "Required version in the form of 0.18.x or exact version like 0.18.0" + "helpMarkDown": "Required version in the form of 0.20.x or exact version like 0.20.0" }, { "name": "includePrerelease", diff --git a/dist/azure/gitversion/execute/task.json b/dist/azure/gitversion/execute/task.json index 22ee7056b..0d25b4120 100644 --- a/dist/azure/gitversion/execute/task.json +++ b/dist/azure/gitversion/execute/task.json @@ -108,6 +108,14 @@ "required": false, "helpMarkDown": "Update versions in specified file", "visibleRule": "updateAssemblyInfo = true" + }, + { + "name": "updateProjectFiles", + "type": "boolean", + "label": "Update project files", + "defaultValue": "false", + "required": false, + "helpMarkDown": "Whether to update versions in the project files" } ] } diff --git a/dist/azure/gitversion/setup/task.json b/dist/azure/gitversion/setup/task.json index 511c2996d..1f90612df 100644 --- a/dist/azure/gitversion/setup/task.json +++ b/dist/azure/gitversion/setup/task.json @@ -28,7 +28,7 @@ "label": "The version spec", "defaultValue": "", "required": true, - "helpMarkDown": "Required version in the form of 6.0.x or exact version like 6.0.0" + "helpMarkDown": "Required version in the form of 6.3.x or exact version like 6.3.0" }, { "name": "includePrerelease", diff --git a/dist/tools/azure/agent.mjs b/dist/tools/azure/agent.mjs index 483394af2..fe7eb05e5 100644 --- a/dist/tools/azure/agent.mjs +++ b/dist/tools/azure/agent.mjs @@ -13,7 +13,7 @@ var TaskResult = /* @__PURE__ */ ((TaskResult2) => { })(TaskResult || {}); function issueCommand(command, properties, message) { const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); + process.stdout.write(`${cmd.toString()}${os.EOL}`); } class Command { command; @@ -71,7 +71,7 @@ class BuildAgent extends BuildAgentBase { issueCommand("task.prependpath", {}, inputPath); } info = (message) => { - process.stdout.write(message + os.EOL); + process.stdout.write(`${message}${os.EOL}`); }; debug = (message) => issueCommand("task.debug", {}, message); warn = (message) => issueCommand("task.issue", { type: "warning" }, message); diff --git a/dist/tools/azure/agent.mjs.map b/dist/tools/azure/agent.mjs.map index 9c893e8d8..ded3a5556 100644 --- a/dist/tools/azure/agent.mjs.map +++ b/dist/tools/azure/agent.mjs.map @@ -1 +1 @@ -{"version":3,"file":"agent.mjs","sources":["../../../src/agents/azure/command.ts","../../../src/agents/azure/build-agent.ts"],"sourcesContent":["import * as os from 'node:os'\nimport * as process from 'node:process'\n\nconst CMD_PREFIX = '##vso['\n\nexport type CommandProperties = Record\n\nexport enum TaskResult {\n Succeeded = 0,\n SucceededWithIssues = 1,\n Failed = 2,\n Cancelled = 3,\n Skipped = 4\n}\n\n/**\n * Command Format:\n * ##vso[artifact.command key=value;key=value]user message\n *\n * Examples:\n * ##vso[task.progress value=58]\n * ##vso[task.issue type=warning;]This is the user warning message\n **/\nexport function issueCommand(command: string, properties: CommandProperties, message: string): void {\n const cmd = new Command(command, properties, message)\n process.stdout.write(cmd.toString() + os.EOL)\n}\n\nclass Command {\n private readonly command: string\n private readonly message: string\n private readonly properties: CommandProperties\n\n constructor(command: string, properties: CommandProperties, message: string) {\n if (!command) {\n command = 'missing.command'\n }\n\n this.command = command\n this.properties = properties\n this.message = message\n }\n\n toString(): string {\n let cmdStr = CMD_PREFIX + this.command\n\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' '\n for (const key in this.properties) {\n if (Object.prototype.hasOwnProperty.call(this.properties, key)) {\n const val = this.properties[key] as string\n if (val) {\n // safely append the val - avoid blowing up when attempting to\n // call .replace() if message is not a string for some reason\n cmdStr += `${key}=${escapeProperty(`${val || ''}`)};`\n }\n }\n }\n }\n\n cmdStr += ']'\n\n // safely append the message - avoid blowing up when attempting to\n // call .replace() if message is not a string for some reason\n const message = `${this.message || ''}`\n cmdStr += escapeData(message)\n\n return cmdStr\n }\n}\n\nfunction escapeData(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%AZP25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A')\n}\n\nfunction escapeProperty(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%AZP25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A').replace(/]/g, '%5D').replace(/;/g, '%3B')\n}\n\nfunction toCommandValue(input: string | object): string {\n if (input === null || input === undefined) {\n return ''\n } else if (typeof input === 'string' || input instanceof String) {\n return input as string\n }\n return JSON.stringify(input)\n}\n","import * as os from 'node:os'\nimport * as process from 'node:process'\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\nimport { issueCommand, TaskResult } from './command'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'Azure Pipelines'\n\n sourceDirVariable = 'BUILD_SOURCESDIRECTORY'\n tempDirVariable = 'AGENT_TEMPDIRECTORY'\n cacheDirVariable = 'AGENT_TOOLSDIRECTORY'\n\n addPath(inputPath: string): void {\n super.addPath(inputPath)\n issueCommand('task.prependpath', {}, inputPath)\n }\n\n info = (message: string): void => {\n process.stdout.write(message + os.EOL)\n }\n\n debug = (message: string): void => issueCommand('task.debug', {}, message)\n\n warn = (message: string): void => issueCommand('task.issue', { type: 'warning' }, message)\n\n error = (message: string): void => issueCommand('task.issue', { type: 'error' }, message)\n\n setSucceeded = (message: string, done?: boolean): void => this._setResult(TaskResult.Succeeded, message, done)\n\n setFailed = (message: string, done?: boolean): void => this._setResult(TaskResult.Failed, message, done)\n\n setOutput = (name: string, value: string): void => this._setVariable(name, value, true)\n\n setVariable = (name: string, value: string): void => this._setVariable(name, value)\n\n updateBuildNumber = (version: string): void => this._updateBuildNumber(version)\n\n private _updateBuildNumber(version: string): void {\n this.debug(`build number: ${version}`)\n issueCommand('build.updatebuildnumber', {}, version)\n }\n\n private _setResult(result: TaskResult, message: string, done?: boolean): void {\n this.debug(`task result: ${TaskResult[result]}`)\n // add an error issue\n if (result === TaskResult.Failed && message) {\n this.error(message)\n } else if (result === TaskResult.SucceededWithIssues && message) {\n this.warn(message)\n } else {\n this.info(message)\n }\n // task.complete\n const properties: Record = { result: TaskResult[result] }\n if (done) {\n properties['done'] = 'true'\n }\n issueCommand('task.complete', properties, message)\n }\n\n private _setVariable(name: string, val: string, isOutput = false): void {\n const key: string = this._getVariableKey(name)\n const varValue = val || ''\n process.env[key] = varValue\n\n issueCommand(\n 'task.setvariable',\n {\n variable: name || '',\n isOutput: (isOutput || false).toString(),\n issecret: 'false'\n },\n varValue\n )\n }\n\n private _getVariableKey(name: string): string {\n return name.replace(/\\./g, '_').replace(/ /g, '_').toUpperCase()\n }\n}\n"],"names":["TaskResult"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"agent.mjs","sources":["../../../src/agents/azure/command.ts","../../../src/agents/azure/build-agent.ts"],"sourcesContent":["import * as os from 'node:os'\nimport * as process from 'node:process'\n\nconst CMD_PREFIX = '##vso['\n\nexport type CommandProperties = Record\n\nexport enum TaskResult {\n Succeeded = 0,\n SucceededWithIssues = 1,\n Failed = 2,\n Cancelled = 3,\n Skipped = 4\n}\n\n/**\n * Command Format:\n * ##vso[artifact.command key=value;key=value]user message\n *\n * Examples:\n * ##vso[task.progress value=58]\n * ##vso[task.issue type=warning;]This is the user warning message\n **/\nexport function issueCommand(command: string, properties: CommandProperties, message: string): void {\n const cmd = new Command(command, properties, message)\n process.stdout.write(`${cmd.toString()}${os.EOL}`)\n}\n\nclass Command {\n private readonly command: string\n private readonly message: string\n private readonly properties: CommandProperties\n\n constructor(command: string, properties: CommandProperties, message: string) {\n if (!command) {\n command = 'missing.command'\n }\n\n this.command = command\n this.properties = properties\n this.message = message\n }\n\n toString(): string {\n let cmdStr = CMD_PREFIX + this.command\n\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' '\n for (const key in this.properties) {\n if (Object.prototype.hasOwnProperty.call(this.properties, key)) {\n const val = this.properties[key] as string\n if (val) {\n // safely append the val - avoid blowing up when attempting to\n // call .replace() if message is not a string for some reason\n cmdStr += `${key}=${escapeProperty(`${val || ''}`)};`\n }\n }\n }\n }\n\n cmdStr += ']'\n\n // safely append the message - avoid blowing up when attempting to\n // call .replace() if message is not a string for some reason\n const message = `${this.message || ''}`\n cmdStr += escapeData(message)\n\n return cmdStr\n }\n}\n\nfunction escapeData(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%AZP25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A')\n}\n\nfunction escapeProperty(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%AZP25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A').replace(/]/g, '%5D').replace(/;/g, '%3B')\n}\n\nfunction toCommandValue(input: string | object): string {\n if (input === null || input === undefined) {\n return ''\n } else if (typeof input === 'string' || input instanceof String) {\n return input as string\n }\n return JSON.stringify(input)\n}\n","import * as os from 'node:os'\nimport * as process from 'node:process'\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\nimport { issueCommand, TaskResult } from './command'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'Azure Pipelines'\n\n sourceDirVariable = 'BUILD_SOURCESDIRECTORY'\n tempDirVariable = 'AGENT_TEMPDIRECTORY'\n cacheDirVariable = 'AGENT_TOOLSDIRECTORY'\n\n addPath(inputPath: string): void {\n super.addPath(inputPath)\n issueCommand('task.prependpath', {}, inputPath)\n }\n\n info = (message: string): void => {\n process.stdout.write(`${message}${os.EOL}`)\n }\n\n debug = (message: string): void => issueCommand('task.debug', {}, message)\n\n warn = (message: string): void => issueCommand('task.issue', { type: 'warning' }, message)\n\n error = (message: string): void => issueCommand('task.issue', { type: 'error' }, message)\n\n setSucceeded = (message: string, done?: boolean): void => this._setResult(TaskResult.Succeeded, message, done)\n\n setFailed = (message: string, done?: boolean): void => this._setResult(TaskResult.Failed, message, done)\n\n setOutput = (name: string, value: string): void => this._setVariable(name, value, true)\n\n setVariable = (name: string, value: string): void => this._setVariable(name, value)\n\n updateBuildNumber = (version: string): void => this._updateBuildNumber(version)\n\n private _updateBuildNumber(version: string): void {\n this.debug(`build number: ${version}`)\n issueCommand('build.updatebuildnumber', {}, version)\n }\n\n private _setResult(result: TaskResult, message: string, done?: boolean): void {\n this.debug(`task result: ${TaskResult[result]}`)\n // add an error issue\n if (result === TaskResult.Failed && message) {\n this.error(message)\n } else if (result === TaskResult.SucceededWithIssues && message) {\n this.warn(message)\n } else {\n this.info(message)\n }\n // task.complete\n const properties: Record = { result: TaskResult[result] }\n if (done) {\n properties['done'] = 'true'\n }\n issueCommand('task.complete', properties, message)\n }\n\n private _setVariable(name: string, val: string, isOutput = false): void {\n const key: string = this._getVariableKey(name)\n const varValue = val || ''\n process.env[key] = varValue\n\n issueCommand(\n 'task.setvariable',\n {\n variable: name || '',\n isOutput: (isOutput || false).toString(),\n issecret: 'false'\n },\n varValue\n )\n }\n\n private _getVariableKey(name: string): string {\n return name.replace(/\\./g, '_').replace(/ /g, '_').toUpperCase()\n }\n}\n"],"names":["TaskResult"],"mappings":";;;;AAGA,MAAM,UAAa,GAAA,QAAA;AAIP,IAAA,UAAA,qBAAAA,WAAL,KAAA;AACH,EAAAA,WAAAA,CAAAA,WAAAA,CAAA,eAAY,CAAZ,CAAA,GAAA,WAAA;AACA,EAAAA,WAAAA,CAAAA,WAAAA,CAAA,yBAAsB,CAAtB,CAAA,GAAA,qBAAA;AACA,EAAAA,WAAAA,CAAAA,WAAAA,CAAA,YAAS,CAAT,CAAA,GAAA,QAAA;AACA,EAAAA,WAAAA,CAAAA,WAAAA,CAAA,eAAY,CAAZ,CAAA,GAAA,WAAA;AACA,EAAAA,WAAAA,CAAAA,WAAAA,CAAA,aAAU,CAAV,CAAA,GAAA,SAAA;AALQ,EAAAA,OAAAA,WAAAA;AAAA,CAAA,EAAA,UAAA,IAAA,EAAA,CAAA;AAgBI,SAAA,YAAA,CAAa,OAAiB,EAAA,UAAA,EAA+B,OAAuB,EAAA;AAChG,EAAA,MAAM,GAAM,GAAA,IAAI,OAAQ,CAAA,OAAA,EAAS,YAAY,OAAO,CAAA;AACpD,EAAQ,OAAA,CAAA,MAAA,CAAO,MAAM,CAAG,EAAA,GAAA,CAAI,UAAU,CAAA,EAAG,EAAG,CAAA,GAAG,CAAE,CAAA,CAAA;AACrD;AAEA,MAAM,OAAQ,CAAA;AAAA,EACO,OAAA;AAAA,EACA,OAAA;AAAA,EACA,UAAA;AAAA,EAEjB,WAAA,CAAY,OAAiB,EAAA,UAAA,EAA+B,OAAiB,EAAA;AACzE,IAAA,IAAI,CAAC,OAAS,EAAA;AACV,MAAU,OAAA,GAAA,iBAAA;AAAA;AAGd,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AACf,IAAA,IAAA,CAAK,UAAa,GAAA,UAAA;AAClB,IAAA,IAAA,CAAK,OAAU,GAAA,OAAA;AAAA;AACnB,EAEA,QAAmB,GAAA;AACf,IAAI,IAAA,MAAA,GAAS,aAAa,IAAK,CAAA,OAAA;AAE/B,IAAI,IAAA,IAAA,CAAK,cAAc,MAAO,CAAA,IAAA,CAAK,KAAK,UAAU,CAAA,CAAE,SAAS,CAAG,EAAA;AAC5D,MAAU,MAAA,IAAA,GAAA;AACV,MAAW,KAAA,MAAA,GAAA,IAAO,KAAK,UAAY,EAAA;AAC/B,QAAA,IAAI,OAAO,SAAU,CAAA,cAAA,CAAe,KAAK,IAAK,CAAA,UAAA,EAAY,GAAG,CAAG,EAAA;AAC5D,UAAM,MAAA,GAAA,GAAM,IAAK,CAAA,UAAA,CAAW,GAAG,CAAA;AAC/B,UAAA,IAAI,GAAK,EAAA;AAGL,YAAU,MAAA,IAAA,CAAA,EAAG,GAAG,CAAI,CAAA,EAAA,cAAA,CAAe,GAAG,GAAO,IAAA,EAAE,EAAE,CAAC,CAAA,CAAA,CAAA;AAAA;AACtD;AACJ;AACJ;AAGJ,IAAU,MAAA,IAAA,GAAA;AAIV,IAAA,MAAM,OAAU,GAAA,CAAA,EAAG,IAAK,CAAA,OAAA,IAAW,EAAE,CAAA,CAAA;AACrC,IAAA,MAAA,IAAU,WAAW,OAAO,CAAA;AAE5B,IAAO,OAAA,MAAA;AAAA;AAEf;AAEA,SAAS,WAAW,CAA4B,EAAA;AAC5C,EAAA,OAAO,cAAe,CAAA,CAAC,CAAE,CAAA,OAAA,CAAQ,IAAM,EAAA,QAAQ,CAAE,CAAA,OAAA,CAAQ,KAAO,EAAA,KAAK,CAAE,CAAA,OAAA,CAAQ,OAAO,KAAK,CAAA;AAC/F;AAEA,SAAS,eAAe,CAA4B,EAAA;AAChD,EAAO,OAAA,cAAA,CAAe,CAAC,CAAE,CAAA,OAAA,CAAQ,MAAM,QAAQ,CAAA,CAAE,QAAQ,KAAO,EAAA,KAAK,EAAE,OAAQ,CAAA,KAAA,EAAO,KAAK,CAAE,CAAA,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAE,OAAQ,CAAA,IAAA,EAAM,KAAK,CAAA;AACzI;AAEA,SAAS,eAAe,KAAgC,EAAA;AACpD,EAAI,IAAA,KAAA,KAAU,IAAQ,IAAA,KAAA,KAAU,MAAW,EAAA;AACvC,IAAO,OAAA,EAAA;AAAA,GACA,MAAA,IAAA,OAAO,KAAU,KAAA,QAAA,IAAY,iBAAiB,MAAQ,EAAA;AAC7D,IAAO,OAAA,KAAA;AAAA;AAEX,EAAO,OAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AAC/B;;ACjFO,MAAM,mBAAmB,cAAsC,CAAA;AAAA,EAClE,SAAY,GAAA,iBAAA;AAAA,EAEZ,iBAAoB,GAAA,wBAAA;AAAA,EACpB,eAAkB,GAAA,qBAAA;AAAA,EAClB,gBAAmB,GAAA,sBAAA;AAAA,EAEnB,QAAQ,SAAyB,EAAA;AAC7B,IAAA,KAAA,CAAM,QAAQ,SAAS,CAAA;AACvB,IAAa,YAAA,CAAA,kBAAA,EAAoB,EAAC,EAAG,SAAS,CAAA;AAAA;AAClD,EAEA,IAAA,GAAO,CAAC,OAA0B,KAAA;AAC9B,IAAA,OAAA,CAAQ,OAAO,KAAM,CAAA,CAAA,EAAG,OAAO,CAAG,EAAA,EAAA,CAAG,GAAG,CAAE,CAAA,CAAA;AAAA,GAC9C;AAAA,EAEA,QAAQ,CAAC,OAAA,KAA0B,aAAa,YAAc,EAAA,IAAI,OAAO,CAAA;AAAA,EAEzE,IAAA,GAAO,CAAC,OAA0B,KAAA,YAAA,CAAa,cAAc,EAAE,IAAA,EAAM,SAAU,EAAA,EAAG,OAAO,CAAA;AAAA,EAEzF,KAAA,GAAQ,CAAC,OAA0B,KAAA,YAAA,CAAa,cAAc,EAAE,IAAA,EAAM,OAAQ,EAAA,EAAG,OAAO,CAAA;AAAA,EAExF,YAAA,GAAe,CAAC,OAAiB,EAAA,IAAA,KAAyB,KAAK,UAAW,CAAA,UAAA,CAAW,SAAW,EAAA,OAAA,EAAS,IAAI,CAAA;AAAA,EAE7G,SAAA,GAAY,CAAC,OAAiB,EAAA,IAAA,KAAyB,KAAK,UAAW,CAAA,UAAA,CAAW,MAAQ,EAAA,OAAA,EAAS,IAAI,CAAA;AAAA,EAEvG,SAAA,GAAY,CAAC,IAAc,EAAA,KAAA,KAAwB,KAAK,YAAa,CAAA,IAAA,EAAM,OAAO,IAAI,CAAA;AAAA,EAEtF,cAAc,CAAC,IAAA,EAAc,UAAwB,IAAK,CAAA,YAAA,CAAa,MAAM,KAAK,CAAA;AAAA,EAElF,iBAAoB,GAAA,CAAC,OAA0B,KAAA,IAAA,CAAK,mBAAmB,OAAO,CAAA;AAAA,EAEtE,mBAAmB,OAAuB,EAAA;AAC9C,IAAK,IAAA,CAAA,KAAA,CAAM,CAAiB,cAAA,EAAA,OAAO,CAAE,CAAA,CAAA;AACrC,IAAa,YAAA,CAAA,yBAAA,EAA2B,EAAC,EAAG,OAAO,CAAA;AAAA;AACvD,EAEQ,UAAA,CAAW,MAAoB,EAAA,OAAA,EAAiB,IAAsB,EAAA;AAC1E,IAAA,IAAA,CAAK,KAAM,CAAA,CAAA,aAAA,EAAgB,UAAW,CAAA,MAAM,CAAC,CAAE,CAAA,CAAA;AAE/C,IAAI,IAAA,MAAA,KAAW,UAAW,CAAA,MAAA,IAAU,OAAS,EAAA;AACzC,MAAA,IAAA,CAAK,MAAM,OAAO,CAAA;AAAA,KACX,MAAA,IAAA,MAAA,KAAW,UAAW,CAAA,mBAAA,IAAuB,OAAS,EAAA;AAC7D,MAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AAAA,KACd,MAAA;AACH,MAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AAAA;AAGrB,IAAA,MAAM,UAAqC,GAAA,EAAE,MAAQ,EAAA,UAAA,CAAW,MAAM,CAAE,EAAA;AACxE,IAAA,IAAI,IAAM,EAAA;AACN,MAAA,UAAA,CAAW,MAAM,CAAI,GAAA,MAAA;AAAA;AAEzB,IAAa,YAAA,CAAA,eAAA,EAAiB,YAAY,OAAO,CAAA;AAAA;AACrD,EAEQ,YAAa,CAAA,IAAA,EAAc,GAAa,EAAA,QAAA,GAAW,KAAa,EAAA;AACpE,IAAM,MAAA,GAAA,GAAc,IAAK,CAAA,eAAA,CAAgB,IAAI,CAAA;AAC7C,IAAA,MAAM,WAAW,GAAO,IAAA,EAAA;AACxB,IAAQ,OAAA,CAAA,GAAA,CAAI,GAAG,CAAI,GAAA,QAAA;AAEnB,IAAA,YAAA;AAAA,MACI,kBAAA;AAAA,MACA;AAAA,QACI,UAAU,IAAQ,IAAA,EAAA;AAAA,QAClB,QAAA,EAAA,CAAW,QAAY,IAAA,KAAA,EAAO,QAAS,EAAA;AAAA,QACvC,QAAU,EAAA;AAAA,OACd;AAAA,MACA;AAAA,KACJ;AAAA;AACJ,EAEQ,gBAAgB,IAAsB,EAAA;AAC1C,IAAO,OAAA,IAAA,CAAK,QAAQ,KAAO,EAAA,GAAG,EAAE,OAAQ,CAAA,IAAA,EAAM,GAAG,CAAA,CAAE,WAAY,EAAA;AAAA;AAEvE;;;;"} \ No newline at end of file diff --git a/dist/tools/github/agent.mjs b/dist/tools/github/agent.mjs index aca3e8acf..cfda5d435 100644 --- a/dist/tools/github/agent.mjs +++ b/dist/tools/github/agent.mjs @@ -7,7 +7,7 @@ import * as fs from 'node:fs'; const CMD_STRING = "::"; function issueCommand(command, properties, message) { const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); + process.stdout.write(`${cmd.toString()}${os.EOL}`); } function issueFileCommand(command, message) { const filePath = process.env[`GITHUB_${command}`]; @@ -104,7 +104,7 @@ class BuildAgent extends BuildAgentBase { } debug = (message) => issueCommand("debug", {}, message); info = (message) => { - process__default.stdout.write(message + os.EOL); + process__default.stdout.write(`${message}${os.EOL}`); }; warn = (message) => issueCommand("warning", {}, message); error = (message) => issueCommand("error", {}, message); diff --git a/dist/tools/github/agent.mjs.map b/dist/tools/github/agent.mjs.map index 379abe4d5..6bcd5765d 100644 --- a/dist/tools/github/agent.mjs.map +++ b/dist/tools/github/agent.mjs.map @@ -1 +1 @@ -{"version":3,"file":"agent.mjs","sources":["../../../src/agents/github/command.ts","../../../src/agents/github/build-agent.ts"],"sourcesContent":["import * as crypto from 'node:crypto'\nimport * as os from 'node:os'\nimport * as fs from 'node:fs'\n\nconst CMD_STRING = '::'\n\nexport type CommandProperties = Record\n\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nexport function issueCommand(command: string, properties: CommandProperties, message: string): void {\n const cmd = new Command(command, properties, message)\n process.stdout.write(cmd.toString() + os.EOL)\n}\n\nexport function issueFileCommand(command: string, message: string | object): void {\n const filePath = process.env[`GITHUB_${command}`]\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`)\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`)\n }\n\n fs.appendFileSync(filePath, `${toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n })\n}\n\nexport enum ExitCode {\n /**\n * A code indicating that the action was successful\n */\n Success = 0,\n\n /**\n * A code indicating that the action was a failure\n */\n Failure = 1\n}\n\nclass Command {\n private readonly command: string\n private readonly message: string\n private readonly properties: CommandProperties\n\n constructor(command: string, properties: CommandProperties, message: string) {\n if (!command) {\n command = 'missing.command'\n }\n\n this.command = command\n this.properties = properties\n this.message = message\n }\n\n toString(): string {\n let cmdStr = CMD_STRING + this.command\n\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' '\n let first = true\n for (const key in this.properties) {\n if (Object.prototype.hasOwnProperty.call(this.properties, key)) {\n const val = this.properties[key]\n if (val) {\n if (first) {\n first = false\n } else {\n cmdStr += ','\n }\n\n cmdStr += `${key}=${escapeProperty(val)}`\n }\n }\n }\n }\n\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`\n return cmdStr\n }\n}\n\nfunction escapeData(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A')\n}\n\nfunction escapeProperty(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A').replace(/:/g, '%3A').replace(/,/g, '%2C')\n}\n\nexport function toCommandValue(input: string | object): string {\n if (input === null || input === undefined) {\n return ''\n } else if (typeof input === 'string' || input instanceof String) {\n return input as string\n }\n return JSON.stringify(input)\n}\n\nexport function prepareKeyValueMessage(key: string, value: string | object): string {\n const uuid = crypto.randomUUID()\n const delimiter = `ghadelimiter_${uuid}`\n const convertedValue = toCommandValue(value)\n\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`)\n }\n\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`)\n }\n\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`\n}\n","import * as os from 'node:os'\nimport process from 'node:process'\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\nimport { ExitCode, issueCommand, issueFileCommand, prepareKeyValueMessage, toCommandValue } from './command'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'GitHub Actions'\n\n sourceDirVariable = 'GITHUB_WORKSPACE'\n tempDirVariable = 'RUNNER_TEMP'\n cacheDirVariable = 'RUNNER_TOOL_CACHE'\n\n addPath(inputPath: string): void {\n super.addPath(inputPath)\n const filePath = process.env['GITHUB_PATH'] || ''\n if (filePath) {\n issueFileCommand('PATH', inputPath)\n } else {\n issueCommand('add-path', {}, inputPath)\n }\n }\n\n debug = (message: string): void => issueCommand('debug', {}, message)\n\n info = (message: string): void => {\n process.stdout.write(message + os.EOL)\n }\n\n warn = (message: string): void => issueCommand('warning', {}, message)\n\n error = (message: string): void => issueCommand('error', {}, message)\n\n setSucceeded(_message: string, _done?: boolean): void {\n process.exitCode = ExitCode.Success\n }\n\n setFailed = (message: string, _done?: boolean): void => {\n process.exitCode = ExitCode.Failure\n this.error(message)\n }\n\n setOutput = (name: string, value: string): void => {\n const filePath = process.env['GITHUB_OUTPUT'] || ''\n if (filePath) {\n return issueFileCommand('OUTPUT', prepareKeyValueMessage(name, value))\n }\n\n process.stdout.write(os.EOL)\n issueCommand('set-output', { name }, toCommandValue(value))\n }\n\n setVariable = (name: string, value: string): void => {\n const convertedVal = toCommandValue(value)\n process.env[name] = convertedVal\n\n const filePath = process.env['GITHUB_ENV'] || ''\n if (filePath) {\n return issueFileCommand('ENV', prepareKeyValueMessage(name, value))\n }\n\n issueCommand('set-env', { name }, convertedVal)\n }\n\n updateBuildNumber = (version: string): void => this.debug(`updateBuildNumber - ${version}`)\n}\n"],"names":["ExitCode","process"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"agent.mjs","sources":["../../../src/agents/github/command.ts","../../../src/agents/github/build-agent.ts"],"sourcesContent":["import * as crypto from 'node:crypto'\nimport * as os from 'node:os'\nimport * as fs from 'node:fs'\n\nconst CMD_STRING = '::'\n\nexport type CommandProperties = Record\n\n/**\n * Commands\n *\n * Command Format:\n * ::name key=value,key=value::message\n *\n * Examples:\n * ::warning::This is the message\n * ::set-env name=MY_VAR::some value\n */\nexport function issueCommand(command: string, properties: CommandProperties, message: string): void {\n const cmd = new Command(command, properties, message)\n process.stdout.write(`${cmd.toString()}${os.EOL}`)\n}\n\nexport function issueFileCommand(command: string, message: string | object): void {\n const filePath = process.env[`GITHUB_${command}`]\n if (!filePath) {\n throw new Error(`Unable to find environment variable for file command ${command}`)\n }\n if (!fs.existsSync(filePath)) {\n throw new Error(`Missing file at path: ${filePath}`)\n }\n\n fs.appendFileSync(filePath, `${toCommandValue(message)}${os.EOL}`, {\n encoding: 'utf8'\n })\n}\n\nexport enum ExitCode {\n /**\n * A code indicating that the action was successful\n */\n Success = 0,\n\n /**\n * A code indicating that the action was a failure\n */\n Failure = 1\n}\n\nclass Command {\n private readonly command: string\n private readonly message: string\n private readonly properties: CommandProperties\n\n constructor(command: string, properties: CommandProperties, message: string) {\n if (!command) {\n command = 'missing.command'\n }\n\n this.command = command\n this.properties = properties\n this.message = message\n }\n\n toString(): string {\n let cmdStr = CMD_STRING + this.command\n\n if (this.properties && Object.keys(this.properties).length > 0) {\n cmdStr += ' '\n let first = true\n for (const key in this.properties) {\n if (Object.prototype.hasOwnProperty.call(this.properties, key)) {\n const val = this.properties[key]\n if (val) {\n if (first) {\n first = false\n } else {\n cmdStr += ','\n }\n\n cmdStr += `${key}=${escapeProperty(val)}`\n }\n }\n }\n }\n\n cmdStr += `${CMD_STRING}${escapeData(this.message)}`\n return cmdStr\n }\n}\n\nfunction escapeData(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A')\n}\n\nfunction escapeProperty(s: string | object): string {\n return toCommandValue(s).replace(/%/g, '%25').replace(/\\r/g, '%0D').replace(/\\n/g, '%0A').replace(/:/g, '%3A').replace(/,/g, '%2C')\n}\n\nexport function toCommandValue(input: string | object): string {\n if (input === null || input === undefined) {\n return ''\n } else if (typeof input === 'string' || input instanceof String) {\n return input as string\n }\n return JSON.stringify(input)\n}\n\nexport function prepareKeyValueMessage(key: string, value: string | object): string {\n const uuid = crypto.randomUUID()\n const delimiter = `ghadelimiter_${uuid}`\n const convertedValue = toCommandValue(value)\n\n // These should realistically never happen, but just in case someone finds a\n // way to exploit uuid generation let's not allow keys or values that contain\n // the delimiter.\n if (key.includes(delimiter)) {\n throw new Error(`Unexpected input: name should not contain the delimiter \"${delimiter}\"`)\n }\n\n if (convertedValue.includes(delimiter)) {\n throw new Error(`Unexpected input: value should not contain the delimiter \"${delimiter}\"`)\n }\n\n return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`\n}\n","import * as os from 'node:os'\nimport process from 'node:process'\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\nimport { ExitCode, issueCommand, issueFileCommand, prepareKeyValueMessage, toCommandValue } from './command'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'GitHub Actions'\n\n sourceDirVariable = 'GITHUB_WORKSPACE'\n tempDirVariable = 'RUNNER_TEMP'\n cacheDirVariable = 'RUNNER_TOOL_CACHE'\n\n addPath(inputPath: string): void {\n super.addPath(inputPath)\n const filePath = process.env['GITHUB_PATH'] || ''\n if (filePath) {\n issueFileCommand('PATH', inputPath)\n } else {\n issueCommand('add-path', {}, inputPath)\n }\n }\n\n debug = (message: string): void => issueCommand('debug', {}, message)\n\n info = (message: string): void => {\n process.stdout.write(`${message}${os.EOL}`)\n }\n\n warn = (message: string): void => issueCommand('warning', {}, message)\n\n error = (message: string): void => issueCommand('error', {}, message)\n\n setSucceeded(_message: string, _done?: boolean): void {\n process.exitCode = ExitCode.Success\n }\n\n setFailed = (message: string, _done?: boolean): void => {\n process.exitCode = ExitCode.Failure\n this.error(message)\n }\n\n setOutput = (name: string, value: string): void => {\n const filePath = process.env['GITHUB_OUTPUT'] || ''\n if (filePath) {\n return issueFileCommand('OUTPUT', prepareKeyValueMessage(name, value))\n }\n\n process.stdout.write(os.EOL)\n issueCommand('set-output', { name }, toCommandValue(value))\n }\n\n setVariable = (name: string, value: string): void => {\n const convertedVal = toCommandValue(value)\n process.env[name] = convertedVal\n\n const filePath = process.env['GITHUB_ENV'] || ''\n if (filePath) {\n return issueFileCommand('ENV', prepareKeyValueMessage(name, value))\n }\n\n issueCommand('set-env', { name }, convertedVal)\n }\n\n updateBuildNumber = (version: string): void => this.debug(`updateBuildNumber - ${version}`)\n}\n"],"names":["ExitCode","process"],"mappings":"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"} \ No newline at end of file diff --git a/dist/tools/libs/agents.mjs.map b/dist/tools/libs/agents.mjs.map index 965eb9d4f..80f70dd90 100644 --- a/dist/tools/libs/agents.mjs.map +++ b/dist/tools/libs/agents.mjs.map @@ -1 +1 @@ -{"version":3,"file":"agents.mjs","sources":["../../../src/agents/common/lookPath.ts","../../../src/agents/common/build-agent.ts"],"sourcesContent":["import * as fs from 'node:fs/promises'\nimport * as path from 'node:path'\nimport * as process from 'node:process'\n\n/**\n * Sometimes, people want to look for local executable files\n * which are specified with either relative or absolute file path.\n * @private\n * @param cmd\n * @return {string} An absolute path of given command, or undefined.\n */\nconst isFilePath = (cmd: string): string | undefined => {\n return cmd.includes(path.sep) ? path.resolve(cmd) : undefined\n}\n\n/**\n * Just promisifies \"fs.access\"\n * @private\n * @param {string} filePath An absolute file path with an applicable extension appended.\n * @return {Promise} Resolves absolute path or empty string.\n */\nconst access = async (filePath: string): Promise => {\n try {\n await fs.access(filePath)\n return filePath\n } catch (_error) {\n return undefined\n }\n}\n\n/**\n * Resolves if the given file is executable or not, regarding \"PATHEXT\" to be applied.\n * @private\n * @param {string} absPath A file path to be checked.\n * @param {LookPathOption} options Options for lookPath.\n * @return {Promise} Resolves the absolute file path just checked, or undefined.\n */\nconst isExecutable = async (absPath: string, options: LookPathOption = {}): Promise => {\n const envVars = options.env || process.env\n const extension = (envVars.PATHEXT || '').split(path.delimiter).concat('')\n const bins = await Promise.all(extension.map(async ext => access(absPath + ext.toLowerCase())))\n return bins.find(bin => !!bin)\n}\n\n/**\n * Returns a list of directories on which the target command should be looked for.\n * @private\n * @param {string[]} options.include Will be added to \"PATH\" env.\n * @param {string[]} options.exclude Will be filtered from \"PATH\" env.\n * @return {string[]} Directories to dig into.\n */\nconst getDirsToWalkThrough = (options: LookPathOption): string[] => {\n const envVars = options.env || process.env\n const envName = process.platform === 'win32' ? 'Path' : 'PATH'\n const envPath = envVars[envName] || ''\n return envPath\n .split(path.delimiter)\n .concat(options.include || [])\n .filter(p => !(options.exclude || []).includes(p))\n}\n\n/**\n * Returns async promise with absolute file path of given command,\n * and resolves with undefined if the command not found.\n * @param {string} command Command name to look for.\n * @param {LookPathOption} opt Options for lookPath.\n * @return {Promise} Resolves absolute file path, or undefined if not found.\n */\nexport async function lookPath(command: string, opt: LookPathOption = {}): Promise {\n const directPath = isFilePath(command)\n if (directPath) return isExecutable(directPath, opt)\n\n const dirs = getDirsToWalkThrough(opt)\n const bins = await Promise.all(dirs.map(async dir => isExecutable(path.join(dir, command), opt)))\n return bins.find(bin => !!bin)\n}\n\n/**\n * Options for lookPath.\n */\nexport interface LookPathOption {\n /**\n * Additional paths to look for, would be dealt same as PATH env.\n * Example: ['/tmp/bin', 'usr/local/bin']\n */\n include?: string[]\n /**\n * Paths to exclude to look for.\n * Example: ['/mnt']\n */\n exclude?: string[]\n /**\n * Set of env var to be used ON BEHALF OF the existing env of your runtime.\n * If `include` or `exclude` are given, they will be applied to this env set.\n */\n env?: NodeJS.ProcessEnv\n}\n","import { exec as execNonPromise, ExecOptions } from 'node:child_process'\nimport * as fs from 'node:fs/promises'\nimport * as process from 'node:process'\nimport * as path from 'node:path'\nimport * as util from 'node:util'\nimport * as semver from 'semver'\nimport { lookPath } from './lookPath'\nimport { type ExecResult } from './models'\n\nexport interface IBuildAgent {\n agentName: string\n sourceDirVariable: string\n tempDirVariable: string\n cacheDirVariable: string\n\n sourceDir: string\n tempDir: string\n cacheDir: string\n\n addPath(inputPath: string): void\n\n debug(message: string): void\n\n info(message: string): void\n\n warn(message: string): void\n\n error(message: string): void\n\n exec(exec: string, args: string[]): Promise\n\n cacheToolDirectory(sourceDir: string, tool: string, version: string): Promise\n\n directoryExists(dir: string): Promise\n\n removeDirectory(dir: string): Promise\n\n fileExists(file: string): Promise\n\n findLocalTool(toolName: string, versionSpec: string): Promise\n\n getInput(input: string, required?: boolean): string\n\n getInput(input: Extract, required?: boolean): string\n\n getBooleanInput(input: Extract, required?: boolean): boolean\n\n getDelimitedInput(input: Extract, delimiter: string, required?: boolean): string[]\n\n getListInput(input: Extract, required?: boolean): string[]\n\n setSucceeded(message: string, done?: boolean): void\n\n setFailed(message: string, done?: boolean): void\n\n setOutput(name: string, value: string): void\n\n getVariable(name: string): string | undefined\n\n getVariableAsPath(name: string): string\n\n setVariable(name: string, value: string): void\n\n updateBuildNumber: (version: string) => void\n\n which(tool: string, check?: boolean): Promise\n}\n\nexport abstract class BuildAgentBase implements IBuildAgent {\n abstract agentName: string\n abstract sourceDirVariable: string\n abstract tempDirVariable: string\n abstract cacheDirVariable: string\n\n abstract debug(message: string): void\n\n abstract info(message: string): void\n\n abstract warn(message: string): void\n\n abstract error(message: string): void\n\n abstract setSucceeded(message: string, done?: boolean): void\n\n abstract setFailed(message: string, done?: boolean): void\n\n abstract setOutput(name: string, value: string): void\n\n abstract setVariable(name: string, value: string): void\n\n abstract updateBuildNumber: (version: string) => void\n\n get sourceDir(): string {\n return this.getVariableAsPath(this.sourceDirVariable)?.replace(/\\\\/g, '/')\n }\n\n get tempDir(): string {\n return this.getVariableAsPath(this.tempDirVariable)\n }\n\n get cacheDir(): string {\n return this.getVariableAsPath(this.cacheDirVariable)\n }\n\n addPath(inputPath: string): void {\n const envName = process.platform === 'win32' ? 'Path' : 'PATH'\n const newPath = inputPath + path.delimiter + process.env[envName]\n this.debug(`new Path: ${newPath}`)\n process.env[envName] = newPath\n process.env.Path = newPath\n this.info(`Updated PATH: ${process.env[envName]}`)\n }\n\n getInput(input: Extract, required?: boolean): string {\n const inputProp = input.replace(/ /g, '_').toUpperCase()\n const val = this.getVariable(`INPUT_${inputProp}`)\n if (required && !val) {\n throw new Error(`Input required and not supplied: ${inputProp}`)\n }\n return val.trim()\n }\n\n getBooleanInput(input: Extract, required?: boolean): boolean {\n const inputValue = this.getInput(input, required)\n return (inputValue || 'false').toLowerCase() === 'true'\n }\n\n getDelimitedInput(input: Extract, delimiter: string, required?: boolean): string[] {\n return this.getInput(input, required)\n .split(delimiter)\n .filter(x => {\n if (x) {\n return x.trim()\n }\n })\n }\n\n getListInput(input: Extract, required?: boolean): string[] {\n return this.getDelimitedInput(input, '\\n', required)\n }\n\n getVariable(name: string): string {\n const value = (process.env[name] || '').trim()\n this.debug(`getVariable - ${name}: ${value}`)\n return value.trim()\n }\n\n getVariableAsPath(name: string): string {\n return path.resolve(path.normalize(this.getVariable(name)))\n }\n\n async directoryExists(dir: string): Promise {\n try {\n await fs.access(dir)\n return (await fs.stat(dir)).isDirectory()\n } catch (_error) {\n return false\n }\n }\n\n async removeDirectory(dir: string): Promise {\n await fs.rm(dir, { recursive: true, force: true, maxRetries: 3, retryDelay: 1000 })\n }\n\n async fileExists(file: string): Promise {\n try {\n await fs.access(file)\n return (await fs.stat(file)).isFile()\n } catch (_error) {\n return false\n }\n }\n\n async cacheToolDirectory(sourceDir: string, tool: string, version: string): Promise {\n if (!tool) {\n throw new Error('tool is a required parameter')\n }\n if (!version) {\n throw new Error('version is a required parameter')\n }\n if (!sourceDir) {\n throw new Error('sourceDir is a required parameter')\n }\n\n const cacheRoot = this.cacheDir\n if (!cacheRoot) {\n this.debug('cache root not set')\n return ''\n }\n\n version = semver.clean(version) || version\n const destPath = path.join(cacheRoot, tool, version)\n if (await this.directoryExists(destPath)) {\n this.debug(`Destination directory ${destPath} already exists, removing`)\n await this.removeDirectory(destPath)\n }\n\n this.debug(`Copying ${sourceDir} to ${destPath}`)\n await fs.mkdir(destPath, { recursive: true })\n await fs.cp(sourceDir, destPath, { recursive: true, force: true })\n\n this.debug(`Caching ${tool}@${version} from ${sourceDir}`)\n return destPath\n }\n\n async findLocalTool(toolName: string, versionSpec: string): Promise {\n if (!toolName) {\n throw new Error('toolName is a required parameter')\n }\n if (!versionSpec) {\n throw new Error('versionSpec is a required parameter')\n }\n\n const cacheRoot = this.cacheDir\n if (!cacheRoot) {\n this.debug('cache root not set')\n return null\n }\n\n versionSpec = semver.clean(versionSpec) || versionSpec\n this.info(`Looking for local tool ${toolName}@${versionSpec}`)\n const toolPath = path.join(cacheRoot, toolName, versionSpec)\n if (!(await this.directoryExists(toolPath))) {\n this.info(`Directory ${toolPath} not found`)\n return null\n } else {\n this.info(`Found tool ${toolName}@${versionSpec} at ${toolPath}`)\n }\n\n return toolPath\n }\n\n async exec(cmd: string, args: string[]): Promise {\n const exec = util.promisify(execNonPromise)\n\n try {\n const commandOptions: ExecOptions = { maxBuffer: 1024 * 1024 * 10 } // 10MB\n const { stdout, stderr } = await exec(`${cmd} ${args.join(' ')}`, commandOptions)\n return {\n code: 0,\n error: null,\n stderr,\n stdout\n }\n } catch (e) {\n const error = e as Error & { code: number; stderr: string; stdout: string }\n return {\n code: error.code,\n error,\n stderr: error.stderr,\n stdout: error.stdout\n }\n }\n }\n\n async which(tool: string, _check?: boolean): Promise {\n this.debug(`looking for tool '${tool}' in PATH`)\n let toolPath = await lookPath(tool)\n if (toolPath) {\n toolPath = path.resolve(toolPath)\n this.debug(`found tool '${tool}' in PATH: ${toolPath}`)\n return toolPath\n }\n throw new Error(`Unable to locate executable file: ${tool}`)\n }\n}\n"],"names":["semver.clean","exec","execNonPromise"],"mappings":";;;;;;;AAWA,MAAM,UAAA,GAAa,CAAC,GAAoC,KAAA;AACpD,EAAO,OAAA,GAAA,CAAI,SAAS,IAAK,CAAA,GAAG,IAAI,IAAK,CAAA,OAAA,CAAQ,GAAG,CAAI,GAAA,KAAA,CAAA;AACxD,CAAA;AAQA,MAAM,MAAA,GAAS,OAAO,QAAkD,KAAA;AACpE,EAAI,IAAA;AACA,IAAM,MAAA,EAAA,CAAG,OAAO,QAAQ,CAAA;AACxB,IAAO,OAAA,QAAA;AAAA,WACF,MAAQ,EAAA;AACb,IAAO,OAAA,KAAA,CAAA;AAAA;AAEf,CAAA;AASA,MAAM,YAAe,GAAA,OAAO,OAAiB,EAAA,OAAA,GAA0B,EAAoC,KAAA;AACvG,EAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,GAAA,IAAO,OAAQ,CAAA,GAAA;AACvC,EAAM,MAAA,SAAA,GAAA,CAAa,QAAQ,OAAW,IAAA,EAAA,EAAI,MAAM,IAAK,CAAA,SAAS,CAAE,CAAA,MAAA,CAAO,EAAE,CAAA;AACzE,EAAA,MAAM,IAAO,GAAA,MAAM,OAAQ,CAAA,GAAA,CAAI,UAAU,GAAI,CAAA,OAAM,GAAO,KAAA,MAAA,CAAO,OAAU,GAAA,GAAA,CAAI,WAAY,EAAC,CAAC,CAAC,CAAA;AAC9F,EAAA,OAAO,IAAK,CAAA,IAAA,CAAK,CAAO,GAAA,KAAA,CAAC,CAAC,GAAG,CAAA;AACjC,CAAA;AASA,MAAM,oBAAA,GAAuB,CAAC,OAAsC,KAAA;AAChE,EAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,GAAA,IAAO,OAAQ,CAAA,GAAA;AACvC,EAAA,MAAM,OAAU,GAAA,OAAA,CAAQ,QAAa,KAAA,OAAA,GAAU,MAAS,GAAA,MAAA;AACxD,EAAM,MAAA,OAAA,GAAU,OAAQ,CAAA,OAAO,CAAK,IAAA,EAAA;AACpC,EAAO,OAAA,OAAA,CACF,MAAM,IAAK,CAAA,SAAS,EACpB,MAAO,CAAA,OAAA,CAAQ,WAAW,EAAE,EAC5B,MAAO,CAAA,CAAA,CAAA,KAAK,EAAE,OAAQ,CAAA,OAAA,IAAW,EAAI,EAAA,QAAA,CAAS,CAAC,CAAC,CAAA;AACzD,CAAA;AASA,eAAsB,QAAS,CAAA,OAAA,EAAiB,GAAsB,GAAA,EAAiC,EAAA;AACnG,EAAM,MAAA,UAAA,GAAa,WAAW,OAAO,CAAA;AACrC,EAAA,IAAI,UAAY,EAAA,OAAO,YAAa,CAAA,UAAA,EAAY,GAAG,CAAA;AAEnD,EAAM,MAAA,IAAA,GAAO,qBAAqB,GAAG,CAAA;AACrC,EAAA,MAAM,OAAO,MAAM,OAAA,CAAQ,GAAI,CAAA,IAAA,CAAK,IAAI,OAAM,GAAA,KAAO,YAAa,CAAA,IAAA,CAAK,KAAK,GAAK,EAAA,OAAO,CAAG,EAAA,GAAG,CAAC,CAAC,CAAA;AAChG,EAAA,OAAO,IAAK,CAAA,IAAA,CAAK,CAAO,GAAA,KAAA,CAAC,CAAC,GAAG,CAAA;AACjC;;ACPO,MAAe,cAAsC,CAAA;AAAA,EAwBxD,IAAI,SAAoB,GAAA;AACpB,IAAA,OAAO,KAAK,iBAAkB,CAAA,IAAA,CAAK,iBAAiB,CAAG,EAAA,OAAA,CAAQ,OAAO,GAAG,CAAA;AAAA;AAC7E,EAEA,IAAI,OAAkB,GAAA;AAClB,IAAO,OAAA,IAAA,CAAK,iBAAkB,CAAA,IAAA,CAAK,eAAe,CAAA;AAAA;AACtD,EAEA,IAAI,QAAmB,GAAA;AACnB,IAAO,OAAA,IAAA,CAAK,iBAAkB,CAAA,IAAA,CAAK,gBAAgB,CAAA;AAAA;AACvD,EAEA,QAAQ,SAAyB,EAAA;AAC7B,IAAA,MAAM,OAAU,GAAA,OAAA,CAAQ,QAAa,KAAA,OAAA,GAAU,MAAS,GAAA,MAAA;AACxD,IAAA,MAAM,UAAU,SAAY,GAAA,IAAA,CAAK,SAAY,GAAA,OAAA,CAAQ,IAAI,OAAO,CAAA;AAChE,IAAK,IAAA,CAAA,KAAA,CAAM,CAAa,UAAA,EAAA,OAAO,CAAE,CAAA,CAAA;AACjC,IAAQ,OAAA,CAAA,GAAA,CAAI,OAAO,CAAI,GAAA,OAAA;AACvB,IAAA,OAAA,CAAQ,IAAI,IAAO,GAAA,OAAA;AACnB,IAAA,IAAA,CAAK,KAAK,CAAiB,cAAA,EAAA,OAAA,CAAQ,GAAI,CAAA,OAAO,CAAC,CAAE,CAAA,CAAA;AAAA;AACrD,EAEA,QAAA,CAAY,OAAiC,QAA4B,EAAA;AACrE,IAAA,MAAM,YAAY,KAAM,CAAA,OAAA,CAAQ,IAAM,EAAA,GAAG,EAAE,WAAY,EAAA;AACvD,IAAA,MAAM,GAAM,GAAA,IAAA,CAAK,WAAY,CAAA,CAAA,MAAA,EAAS,SAAS,CAAE,CAAA,CAAA;AACjD,IAAI,IAAA,QAAA,IAAY,CAAC,GAAK,EAAA;AAClB,MAAA,MAAM,IAAI,KAAA,CAAM,CAAoC,iCAAA,EAAA,SAAS,CAAE,CAAA,CAAA;AAAA;AAEnE,IAAA,OAAO,IAAI,IAAK,EAAA;AAAA;AACpB,EAEA,eAAA,CAAmB,OAAiC,QAA6B,EAAA;AAC7E,IAAA,MAAM,UAAa,GAAA,IAAA,CAAK,QAAS,CAAA,KAAA,EAAO,QAAQ,CAAA;AAChD,IAAQ,OAAA,CAAA,UAAA,IAAc,OAAS,EAAA,WAAA,EAAkB,KAAA,MAAA;AAAA;AACrD,EAEA,iBAAA,CAAqB,KAAiC,EAAA,SAAA,EAAmB,QAA8B,EAAA;AACnG,IAAO,OAAA,IAAA,CAAK,SAAS,KAAO,EAAA,QAAQ,EAC/B,KAAM,CAAA,SAAS,CACf,CAAA,MAAA,CAAO,CAAK,CAAA,KAAA;AACT,MAAA,IAAI,CAAG,EAAA;AACH,QAAA,OAAO,EAAE,IAAK,EAAA;AAAA;AAClB,KACH,CAAA;AAAA;AACT,EAEA,YAAA,CAAgB,OAAiC,QAA8B,EAAA;AAC3E,IAAA,OAAO,IAAK,CAAA,iBAAA,CAAkB,KAAO,EAAA,IAAA,EAAM,QAAQ,CAAA;AAAA;AACvD,EAEA,YAAY,IAAsB,EAAA;AAC9B,IAAA,MAAM,SAAS,OAAQ,CAAA,GAAA,CAAI,IAAI,CAAA,IAAK,IAAI,IAAK,EAAA;AAC7C,IAAA,IAAA,CAAK,KAAM,CAAA,CAAA,cAAA,EAAiB,IAAI,CAAA,EAAA,EAAK,KAAK,CAAE,CAAA,CAAA;AAC5C,IAAA,OAAO,MAAM,IAAK,EAAA;AAAA;AACtB,EAEA,kBAAkB,IAAsB,EAAA;AACpC,IAAO,OAAA,IAAA,CAAK,QAAQ,IAAK,CAAA,SAAA,CAAU,KAAK,WAAY,CAAA,IAAI,CAAC,CAAC,CAAA;AAAA;AAC9D,EAEA,MAAM,gBAAgB,GAA+B,EAAA;AACjD,IAAI,IAAA;AACA,MAAM,MAAA,EAAA,CAAG,OAAO,GAAG,CAAA;AACnB,MAAA,OAAA,CAAQ,MAAM,EAAA,CAAG,IAAK,CAAA,GAAG,GAAG,WAAY,EAAA;AAAA,aACnC,MAAQ,EAAA;AACb,MAAO,OAAA,KAAA;AAAA;AACX;AACJ,EAEA,MAAM,gBAAgB,GAA4B,EAAA;AAC9C,IAAA,MAAM,EAAG,CAAA,EAAA,CAAG,GAAK,EAAA,EAAE,SAAW,EAAA,IAAA,EAAM,KAAO,EAAA,IAAA,EAAM,UAAY,EAAA,CAAA,EAAG,UAAY,EAAA,GAAA,EAAM,CAAA;AAAA;AACtF,EAEA,MAAM,WAAW,IAAgC,EAAA;AAC7C,IAAI,IAAA;AACA,MAAM,MAAA,EAAA,CAAG,OAAO,IAAI,CAAA;AACpB,MAAA,OAAA,CAAQ,MAAM,EAAA,CAAG,IAAK,CAAA,IAAI,GAAG,MAAO,EAAA;AAAA,aAC/B,MAAQ,EAAA;AACb,MAAO,OAAA,KAAA;AAAA;AACX;AACJ,EAEA,MAAM,kBAAA,CAAmB,SAAmB,EAAA,IAAA,EAAc,OAAkC,EAAA;AACxF,IAAA,IAAI,CAAC,IAAM,EAAA;AACP,MAAM,MAAA,IAAI,MAAM,8BAA8B,CAAA;AAAA;AAElD,IAAA,IAAI,CAAC,OAAS,EAAA;AACV,MAAM,MAAA,IAAI,MAAM,iCAAiC,CAAA;AAAA;AAErD,IAAA,IAAI,CAAC,SAAW,EAAA;AACZ,MAAM,MAAA,IAAI,MAAM,mCAAmC,CAAA;AAAA;AAGvD,IAAA,MAAM,YAAY,IAAK,CAAA,QAAA;AACvB,IAAA,IAAI,CAAC,SAAW,EAAA;AACZ,MAAA,IAAA,CAAK,MAAM,oBAAoB,CAAA;AAC/B,MAAO,OAAA,EAAA;AAAA;AAGX,IAAU,OAAA,GAAAA,mBAAa,CAAA,OAAO,CAAK,IAAA,OAAA;AACnC,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,IAAK,CAAA,SAAA,EAAW,MAAM,OAAO,CAAA;AACnD,IAAA,IAAI,MAAM,IAAA,CAAK,eAAgB,CAAA,QAAQ,CAAG,EAAA;AACtC,MAAK,IAAA,CAAA,KAAA,CAAM,CAAyB,sBAAA,EAAA,QAAQ,CAA2B,yBAAA,CAAA,CAAA;AACvE,MAAM,MAAA,IAAA,CAAK,gBAAgB,QAAQ,CAAA;AAAA;AAGvC,IAAA,IAAA,CAAK,KAAM,CAAA,CAAA,QAAA,EAAW,SAAS,CAAA,IAAA,EAAO,QAAQ,CAAE,CAAA,CAAA;AAChD,IAAA,MAAM,GAAG,KAAM,CAAA,QAAA,EAAU,EAAE,SAAA,EAAW,MAAM,CAAA;AAC5C,IAAM,MAAA,EAAA,CAAG,GAAG,SAAW,EAAA,QAAA,EAAU,EAAE,SAAW,EAAA,IAAA,EAAM,KAAO,EAAA,IAAA,EAAM,CAAA;AAEjE,IAAA,IAAA,CAAK,MAAM,CAAW,QAAA,EAAA,IAAI,IAAI,OAAO,CAAA,MAAA,EAAS,SAAS,CAAE,CAAA,CAAA;AACzD,IAAO,OAAA,QAAA;AAAA;AACX,EAEA,MAAM,aAAc,CAAA,QAAA,EAAkB,WAA6C,EAAA;AAC/E,IAAA,IAAI,CAAC,QAAU,EAAA;AACX,MAAM,MAAA,IAAI,MAAM,kCAAkC,CAAA;AAAA;AAEtD,IAAA,IAAI,CAAC,WAAa,EAAA;AACd,MAAM,MAAA,IAAI,MAAM,qCAAqC,CAAA;AAAA;AAGzD,IAAA,MAAM,YAAY,IAAK,CAAA,QAAA;AACvB,IAAA,IAAI,CAAC,SAAW,EAAA;AACZ,MAAA,IAAA,CAAK,MAAM,oBAAoB,CAAA;AAC/B,MAAO,OAAA,IAAA;AAAA;AAGX,IAAc,WAAA,GAAAA,mBAAa,CAAA,WAAW,CAAK,IAAA,WAAA;AAC3C,IAAA,IAAA,CAAK,IAAK,CAAA,CAAA,uBAAA,EAA0B,QAAQ,CAAA,CAAA,EAAI,WAAW,CAAE,CAAA,CAAA;AAC7D,IAAA,MAAM,QAAW,GAAA,IAAA,CAAK,IAAK,CAAA,SAAA,EAAW,UAAU,WAAW,CAAA;AAC3D,IAAA,IAAI,CAAE,MAAM,IAAK,CAAA,eAAA,CAAgB,QAAQ,CAAI,EAAA;AACzC,MAAK,IAAA,CAAA,IAAA,CAAK,CAAa,UAAA,EAAA,QAAQ,CAAY,UAAA,CAAA,CAAA;AAC3C,MAAO,OAAA,IAAA;AAAA,KACJ,MAAA;AACH,MAAA,IAAA,CAAK,KAAK,CAAc,WAAA,EAAA,QAAQ,IAAI,WAAW,CAAA,IAAA,EAAO,QAAQ,CAAE,CAAA,CAAA;AAAA;AAGpE,IAAO,OAAA,QAAA;AAAA;AACX,EAEA,MAAM,IAAK,CAAA,GAAA,EAAa,IAAqC,EAAA;AACzD,IAAM,MAAAC,MAAA,GAAO,IAAK,CAAA,SAAA,CAAUC,IAAc,CAAA;AAE1C,IAAI,IAAA;AACA,MAAA,MAAM,cAA8B,GAAA,EAAE,SAAW,EAAA,IAAA,GAAO,OAAO,EAAG,EAAA;AAClE,MAAA,MAAM,EAAE,MAAA,EAAQ,MAAO,EAAA,GAAI,MAAMD,MAAK,CAAA,CAAA,EAAG,GAAG,CAAA,CAAA,EAAI,IAAK,CAAA,IAAA,CAAK,GAAG,CAAC,IAAI,cAAc,CAAA;AAChF,MAAO,OAAA;AAAA,QACH,IAAM,EAAA,CAAA;AAAA,QACN,KAAO,EAAA,IAAA;AAAA,QACP,MAAA;AAAA,QACA;AAAA,OACJ;AAAA,aACK,CAAG,EAAA;AACR,MAAA,MAAM,KAAQ,GAAA,CAAA;AACd,MAAO,OAAA;AAAA,QACH,MAAM,KAAM,CAAA,IAAA;AAAA,QACZ,KAAA;AAAA,QACA,QAAQ,KAAM,CAAA,MAAA;AAAA,QACd,QAAQ,KAAM,CAAA;AAAA,OAClB;AAAA;AACJ;AACJ,EAEA,MAAM,KAAM,CAAA,IAAA,EAAc,MAAmC,EAAA;AACzD,IAAK,IAAA,CAAA,KAAA,CAAM,CAAqB,kBAAA,EAAA,IAAI,CAAW,SAAA,CAAA,CAAA;AAC/C,IAAI,IAAA,QAAA,GAAW,MAAM,QAAA,CAAS,IAAI,CAAA;AAClC,IAAA,IAAI,QAAU,EAAA;AACV,MAAW,QAAA,GAAA,IAAA,CAAK,QAAQ,QAAQ,CAAA;AAChC,MAAA,IAAA,CAAK,KAAM,CAAA,CAAA,YAAA,EAAe,IAAI,CAAA,WAAA,EAAc,QAAQ,CAAE,CAAA,CAAA;AACtD,MAAO,OAAA,QAAA;AAAA;AAEX,IAAA,MAAM,IAAI,KAAA,CAAM,CAAqC,kCAAA,EAAA,IAAI,CAAE,CAAA,CAAA;AAAA;AAEnE;;;;"} \ No newline at end of file +{"version":3,"file":"agents.mjs","sources":["../../../src/agents/common/lookPath.ts","../../../src/agents/common/build-agent.ts"],"sourcesContent":["import * as fs from 'node:fs/promises'\nimport * as path from 'node:path'\nimport * as process from 'node:process'\n\n/**\n * Sometimes, people want to look for local executable files\n * which are specified with either relative or absolute file path.\n * @private\n * @param cmd\n * @return {string} An absolute path of given command, or undefined.\n */\nconst isFilePath = (cmd: string): string | undefined => {\n return cmd.includes(path.sep) ? path.resolve(cmd) : undefined\n}\n\n/**\n * Just promisifies \"fs.access\"\n * @private\n * @param {string} filePath An absolute file path with an applicable extension appended.\n * @return {Promise} Resolves absolute path or empty string.\n */\nconst access = async (filePath: string): Promise => {\n try {\n await fs.access(filePath)\n return filePath\n } catch (_error) {\n return undefined\n }\n}\n\n/**\n * Resolves if the given file is executable or not, regarding \"PATHEXT\" to be applied.\n * @private\n * @param {string} absPath A file path to be checked.\n * @param {LookPathOption} options Options for lookPath.\n * @return {Promise} Resolves the absolute file path just checked, or undefined.\n */\nconst isExecutable = async (absPath: string, options: LookPathOption = {}): Promise => {\n const envVars = options.env || process.env\n const extension = (envVars.PATHEXT || '').split(path.delimiter).concat('')\n const bins = await Promise.all(extension.map(async ext => access(absPath + ext.toLowerCase())))\n return bins.find(bin => !!bin)\n}\n\n/**\n * Returns a list of directories on which the target command should be looked for.\n * @private\n * @param {string[]} options.include Will be added to \"PATH\" env.\n * @param {string[]} options.exclude Will be filtered from \"PATH\" env.\n * @return {string[]} Directories to dig into.\n */\nconst getDirsToWalkThrough = (options: LookPathOption): string[] => {\n const envVars = options.env || process.env\n const envName = process.platform === 'win32' ? 'Path' : 'PATH'\n const envPath = envVars[envName] || ''\n return envPath\n .split(path.delimiter)\n .concat(options.include || [])\n .filter(p => !(options.exclude || []).includes(p))\n}\n\n/**\n * Returns async promise with absolute file path of given command,\n * and resolves with undefined if the command not found.\n * @param {string} command Command name to look for.\n * @param {LookPathOption} opt Options for lookPath.\n * @return {Promise} Resolves absolute file path, or undefined if not found.\n */\nexport async function lookPath(command: string, opt: LookPathOption = {}): Promise {\n const directPath = isFilePath(command)\n if (directPath) return isExecutable(directPath, opt)\n\n const dirs = getDirsToWalkThrough(opt)\n const bins = await Promise.all(dirs.map(async dir => isExecutable(path.join(dir, command), opt)))\n return bins.find(bin => !!bin)\n}\n\n/**\n * Options for lookPath.\n */\nexport interface LookPathOption {\n /**\n * Additional paths to look for, would be dealt same as PATH env.\n * Example: ['/tmp/bin', 'usr/local/bin']\n */\n include?: string[]\n /**\n * Paths to exclude to look for.\n * Example: ['/mnt']\n */\n exclude?: string[]\n /**\n * Set of env var to be used ON BEHALF OF the existing env of your runtime.\n * If `include` or `exclude` are given, they will be applied to this env set.\n */\n env?: NodeJS.ProcessEnv\n}\n","import { exec as execNonPromise, ExecOptions } from 'node:child_process'\nimport * as fs from 'node:fs/promises'\nimport * as process from 'node:process'\nimport * as path from 'node:path'\nimport * as util from 'node:util'\nimport * as semver from 'semver'\nimport { lookPath } from './lookPath'\nimport { type ExecResult } from './models'\n\nexport interface IBuildAgent {\n agentName: string\n sourceDirVariable: string\n tempDirVariable: string\n cacheDirVariable: string\n\n sourceDir: string\n tempDir: string\n cacheDir: string\n\n addPath(inputPath: string): void\n\n debug(message: string): void\n\n info(message: string): void\n\n warn(message: string): void\n\n error(message: string): void\n\n exec(exec: string, args: string[]): Promise\n\n cacheToolDirectory(sourceDir: string, tool: string, version: string): Promise\n\n directoryExists(dir: string): Promise\n\n removeDirectory(dir: string): Promise\n\n fileExists(file: string): Promise\n\n findLocalTool(toolName: string, versionSpec: string): Promise\n\n getInput(input: string, required?: boolean): string\n\n getInput(input: Extract, required?: boolean): string\n\n getBooleanInput(input: Extract, required?: boolean): boolean\n\n getDelimitedInput(input: Extract, delimiter: string, required?: boolean): string[]\n\n getListInput(input: Extract, required?: boolean): string[]\n\n setSucceeded(message: string, done?: boolean): void\n\n setFailed(message: string, done?: boolean): void\n\n setOutput(name: string, value: string): void\n\n getVariable(name: string): string | undefined\n\n getVariableAsPath(name: string): string\n\n setVariable(name: string, value: string): void\n\n updateBuildNumber: (version: string) => void\n\n which(tool: string, check?: boolean): Promise\n}\n\nexport abstract class BuildAgentBase implements IBuildAgent {\n abstract agentName: string\n abstract sourceDirVariable: string\n abstract tempDirVariable: string\n abstract cacheDirVariable: string\n\n abstract debug(message: string): void\n\n abstract info(message: string): void\n\n abstract warn(message: string): void\n\n abstract error(message: string): void\n\n abstract setSucceeded(message: string, done?: boolean): void\n\n abstract setFailed(message: string, done?: boolean): void\n\n abstract setOutput(name: string, value: string): void\n\n abstract setVariable(name: string, value: string): void\n\n abstract updateBuildNumber: (version: string) => void\n\n get sourceDir(): string {\n return this.getVariableAsPath(this.sourceDirVariable)?.replace(/\\\\/g, '/')\n }\n\n get tempDir(): string {\n return this.getVariableAsPath(this.tempDirVariable)\n }\n\n get cacheDir(): string {\n return this.getVariableAsPath(this.cacheDirVariable)\n }\n\n addPath(inputPath: string): void {\n const envName = process.platform === 'win32' ? 'Path' : 'PATH'\n const newPath = inputPath + path.delimiter + process.env[envName]\n this.debug(`new Path: ${newPath}`)\n process.env[envName] = newPath\n process.env.Path = newPath\n this.info(`Updated PATH: ${process.env[envName]}`)\n }\n\n getInput(input: Extract, required?: boolean): string {\n const inputProp = input.replace(/ /g, '_').toUpperCase()\n const val = this.getVariable(`INPUT_${inputProp}`)\n if (required && !val) {\n throw new Error(`Input required and not supplied: ${inputProp}`)\n }\n return val.trim()\n }\n\n getBooleanInput(input: Extract, required?: boolean): boolean {\n const inputValue = this.getInput(input, required)\n return (inputValue || 'false').toLowerCase() === 'true'\n }\n\n getDelimitedInput(input: Extract, delimiter: string, required?: boolean): string[] {\n return this.getInput(input, required)\n .split(delimiter)\n .filter(x => {\n if (x) {\n return x.trim()\n }\n })\n }\n\n getListInput(input: Extract, required?: boolean): string[] {\n return this.getDelimitedInput(input, '\\n', required)\n }\n\n getVariable(name: string): string {\n const value = (process.env[name] || '').trim()\n this.debug(`getVariable - ${name}: ${value}`)\n return value.trim()\n }\n\n getVariableAsPath(name: string): string {\n return path.resolve(path.normalize(this.getVariable(name)))\n }\n\n async directoryExists(dir: string): Promise {\n try {\n await fs.access(dir)\n return (await fs.stat(dir)).isDirectory()\n } catch (_error) {\n return false\n }\n }\n\n async removeDirectory(dir: string): Promise {\n await fs.rm(dir, { recursive: true, force: true, maxRetries: 3, retryDelay: 1000 })\n }\n\n async fileExists(file: string): Promise {\n try {\n await fs.access(file)\n return (await fs.stat(file)).isFile()\n } catch (_error) {\n return false\n }\n }\n\n async cacheToolDirectory(sourceDir: string, tool: string, version: string): Promise {\n if (!tool) {\n throw new Error('tool is a required parameter')\n }\n if (!version) {\n throw new Error('version is a required parameter')\n }\n if (!sourceDir) {\n throw new Error('sourceDir is a required parameter')\n }\n\n const cacheRoot = this.cacheDir\n if (!cacheRoot) {\n this.debug('cache root not set')\n return ''\n }\n\n version = semver.clean(version) || version\n const destPath = path.join(cacheRoot, tool, version)\n if (await this.directoryExists(destPath)) {\n this.debug(`Destination directory ${destPath} already exists, removing`)\n await this.removeDirectory(destPath)\n }\n\n this.debug(`Copying ${sourceDir} to ${destPath}`)\n await fs.mkdir(destPath, { recursive: true })\n await fs.cp(sourceDir, destPath, { recursive: true, force: true })\n\n this.debug(`Caching ${tool}@${version} from ${sourceDir}`)\n return destPath\n }\n\n async findLocalTool(toolName: string, versionSpec: string): Promise {\n if (!toolName) {\n throw new Error('toolName is a required parameter')\n }\n if (!versionSpec) {\n throw new Error('versionSpec is a required parameter')\n }\n\n const cacheRoot = this.cacheDir\n if (!cacheRoot) {\n this.debug('cache root not set')\n return null\n }\n\n versionSpec = semver.clean(versionSpec) || versionSpec\n this.info(`Looking for local tool ${toolName}@${versionSpec}`)\n const toolPath = path.join(cacheRoot, toolName, versionSpec)\n if (!(await this.directoryExists(toolPath))) {\n this.info(`Directory ${toolPath} not found`)\n return null\n } else {\n this.info(`Found tool ${toolName}@${versionSpec} at ${toolPath}`)\n }\n\n return toolPath\n }\n\n async exec(cmd: string, args: string[]): Promise {\n const exec = util.promisify(execNonPromise)\n\n try {\n const commandOptions: ExecOptions = { maxBuffer: 1024 * 1024 * 10 } // 10MB\n const { stdout, stderr } = await exec(`${cmd} ${args.join(' ')}`, commandOptions)\n return {\n code: 0,\n error: null,\n stderr,\n stdout\n }\n } catch (e) {\n const error = e as Error & { code: number; stderr: string; stdout: string }\n return {\n code: error.code,\n error,\n stderr: error.stderr,\n stdout: error.stdout\n }\n }\n }\n\n async which(tool: string, _check?: boolean): Promise {\n this.debug(`looking for tool '${tool}' in PATH`)\n let toolPath = await lookPath(tool)\n if (toolPath) {\n toolPath = path.resolve(toolPath)\n this.debug(`found tool '${tool}' in PATH: ${toolPath}`)\n return toolPath\n }\n throw new Error(`Unable to locate executable file: ${tool}`)\n }\n}\n"],"names":["semver.clean","exec","execNonPromise"],"mappings":"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"} \ No newline at end of file diff --git a/dist/tools/libs/gitreleasemanager.mjs b/dist/tools/libs/gitreleasemanager.mjs index 21847950a..f0c6f99dc 100644 --- a/dist/tools/libs/gitreleasemanager.mjs +++ b/dist/tools/libs/gitreleasemanager.mjs @@ -1,5 +1,5 @@ import * as path from 'path'; -import { S as SettingsProvider, D as DotnetTool, R as RunnerBase } from './tools.mjs'; +import { S as SettingsProvider, D as DotnetTool, A as ArgumentsBuilder, R as RunnerBase } from './tools.mjs'; import 'node:crypto'; import 'node:fs/promises'; import 'node:os'; @@ -84,7 +84,7 @@ class GitReleaseManagerTool extends DotnetTool { return "GITRELEASEMANAGER_PATH"; } get versionRange() { - return ">=0.10.0 <0.20.0"; + return ">=0.19.0 <0.21.0"; } get settingsProvider() { return new GitReleaseManagerSettingsProvider(this.buildAgent); @@ -120,86 +120,86 @@ class GitReleaseManagerTool extends DotnetTool { return await this.executeTool(args); } async getCommonArguments(settings) { - const args = []; - args.push("--owner", settings.owner); - args.push("--repository", settings.repository); - args.push("--token", settings.token); + const builder = new ArgumentsBuilder(); + builder.addKeyValue("owner", settings.owner); + builder.addKeyValue("repository", settings.repository); + builder.addKeyValue("token", settings.token); settings.targetDirectory = await this.getRepoDir(settings); - args.push("--targetDirectory", settings.targetDirectory); + builder.addKeyValue("targetDirectory", settings.targetDirectory); if (settings.logFilePath) { - args.push("--logFilePath", settings.logFilePath); + builder.addKeyValue("logFilePath", settings.logFilePath); } - return args; + return builder.build(); } async getCreateArguments(settings) { - const args = ["create", ...await this.getCommonArguments(settings)]; + const builder = new ArgumentsBuilder().addArgument("create").addArguments(await this.getCommonArguments(settings)); if (settings.milestone) { - args.push("--milestone", settings.milestone); + builder.addKeyValue("milestone", settings.milestone); } if (settings.name) { - args.push("--name", settings.name); + builder.addKeyValue("name", settings.name); } if (settings.targetcommitish) { - args.push("--targetcommitish", settings.targetcommitish); + builder.addKeyValue("targetcommitish", settings.targetcommitish); } if (settings.inputFilePath) { if (await this.buildAgent.fileExists(settings.inputFilePath)) { - args.push("--inputFilePath", settings.inputFilePath); + builder.addKeyValue("inputFilePath", settings.inputFilePath); } else { throw new Error(`GitReleaseManager inputFilePath not found at ${settings.inputFilePath}`); } } if (settings.isPreRelease) { - args.push("--pre"); + builder.addFlag("pre"); } if (settings.assets && settings.assets.length > 0) { settings.assets = settings.assets.map((asset) => { return path.join(settings.targetDirectory, asset); }); - args.push("--assets", settings.assets.join(",")); + builder.addKeyValue("assets", settings.assets.join(",")); } - return args; + return builder.build(); } async getDiscardArguments(settings) { - const args = ["discard", ...await this.getCommonArguments(settings)]; + const builder = new ArgumentsBuilder().addArgument("discard").addArguments(await this.getCommonArguments(settings)); if (settings.milestone) { - args.push("--milestone", settings.milestone); + builder.addKeyValue("milestone", settings.milestone); } - return args; + return builder.build(); } async getCloseArguments(settings) { - const args = ["close", ...await this.getCommonArguments(settings)]; + const builder = new ArgumentsBuilder().addArgument("close").addArguments(await this.getCommonArguments(settings)); if (settings.milestone) { - args.push("--milestone", settings.milestone); + builder.addKeyValue("milestone", settings.milestone); } - return args; + return builder.build(); } async getOpenArguments(settings) { - const args = ["open", ...await this.getCommonArguments(settings)]; + const builder = new ArgumentsBuilder().addArgument("open").addArguments(await this.getCommonArguments(settings)); if (settings.milestone) { - args.push("--milestone", settings.milestone); + builder.addKeyValue("milestone", settings.milestone); } - return args; + return builder.build(); } async getPublishArguments(settings) { - const args = ["publish", ...await this.getCommonArguments(settings)]; + const builder = new ArgumentsBuilder().addArgument("publish").addArguments(await this.getCommonArguments(settings)); if (settings.milestone) { - args.push("--tagName", settings.milestone); + builder.addKeyValue("tagName", settings.milestone); } - return args; + return builder.build(); } async getAddAssetArguments(settings) { - const args = ["addasset", ...await this.getCommonArguments(settings)]; + const builder = new ArgumentsBuilder().addArgument("addasset").addArguments(await this.getCommonArguments(settings)); if (settings.milestone) { - args.push("--tagName", settings.milestone); + builder.addKeyValue("tagName", settings.milestone); } if (settings.assets && settings.assets.length > 0) { settings.assets = settings.assets.map((asset) => { return path.join(settings.targetDirectory, asset); }); - args.push("--assets", settings.assets.join(",")); + builder.addKeyValue("assets", settings.assets.join(",")); } - return args; + return builder.build(); } async getRepoDir(settings) { return await this.getRepoPath(settings.targetDirectory); diff --git a/dist/tools/libs/gitreleasemanager.mjs.map b/dist/tools/libs/gitreleasemanager.mjs.map index 3b9bd208c..a92d73f2a 100644 --- a/dist/tools/libs/gitreleasemanager.mjs.map +++ b/dist/tools/libs/gitreleasemanager.mjs.map @@ -1 +1 @@ -{"version":3,"file":"gitreleasemanager.mjs","sources":["../../../src/tools/gitreleasemanager/settings.ts","../../../src/tools/gitreleasemanager/tool.ts","../../../src/tools/gitreleasemanager/runner.ts"],"sourcesContent":["import { type ISettingsProvider, SettingsProvider } from '@tools/common'\nimport {\n type AddAssetSettings,\n type CloseSettings,\n type CreateSettings,\n type DiscardSettings,\n type OpenSettings,\n type PublishSettings,\n type CommonSettings\n} from './models'\nexport interface IGitReleaseManagerSettingsProvider extends ISettingsProvider {\n getCreateSettings(): CreateSettings\n\n getDiscardSettings(): DiscardSettings\n\n getCloseSettings(): CloseSettings\n\n getOpenSettings(): OpenSettings\n\n getPublishSettings(): PublishSettings\n\n getAddAssetSettings(): AddAssetSettings\n\n getCommonSettings(): CommonSettings\n}\n\nexport class GitReleaseManagerSettingsProvider extends SettingsProvider implements IGitReleaseManagerSettingsProvider {\n getCreateSettings(): CreateSettings {\n const name = this.buildAgent.getInput('name')\n const inputFilePath = this.buildAgent.getInput('inputFilePath')\n const isPreRelease = this.buildAgent.getBooleanInput('isPreRelease')\n const targetcommitish = this.buildAgent.getInput('targetcommitish')\n const assets = this.buildAgent.getListInput('assets')\n\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings,\n name,\n inputFilePath,\n isPreRelease,\n targetcommitish,\n assets\n }\n }\n\n getDiscardSettings(): DiscardSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getCloseSettings(): CloseSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getOpenSettings(): OpenSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getPublishSettings(): PublishSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getAddAssetSettings(): AddAssetSettings {\n const assets = this.buildAgent.getListInput('assets')\n\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings,\n assets\n }\n }\n\n getCommonSettings(): CommonSettings {\n const milestone = this.buildAgent.getInput('milestone')\n const owner = this.buildAgent.getInput('owner')\n const repository = this.buildAgent.getInput('repository')\n const token = this.buildAgent.getInput('token')\n const targetDirectory = this.buildAgent.getInput('targetDirectory')\n const logFilePath = this.buildAgent.getInput('logFilePath')\n\n return {\n owner,\n repository,\n token,\n targetDirectory,\n milestone,\n logFilePath\n }\n }\n}\n","import * as path from 'path'\n\nimport { DotnetTool } from '@tools/common'\nimport { type ExecResult } from '@agents/common'\n\nimport {\n type AddAssetSettings,\n type CloseSettings,\n type CreateSettings,\n type DiscardSettings,\n type OpenSettings,\n type PublishSettings,\n type CommonSettings\n} from './models'\nimport { GitReleaseManagerSettingsProvider, IGitReleaseManagerSettingsProvider } from './settings'\n\nexport class GitReleaseManagerTool extends DotnetTool {\n get packageName(): string {\n return 'GitReleaseManager.Tool'\n }\n\n get toolName(): string {\n return 'dotnet-gitreleasemanager'\n }\n\n get toolPathVariable(): string {\n return 'GITRELEASEMANAGER_PATH'\n }\n\n get versionRange(): string | null {\n return '>=0.10.0 <0.20.0'\n }\n\n get settingsProvider(): IGitReleaseManagerSettingsProvider {\n return new GitReleaseManagerSettingsProvider(this.buildAgent)\n }\n\n async create(): Promise {\n const settings = this.settingsProvider.getCreateSettings()\n const args = await this.getCreateArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async discard(): Promise {\n const settings = this.settingsProvider.getDiscardSettings()\n const args = await this.getDiscardArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async close(): Promise {\n const settings = this.settingsProvider.getCloseSettings()\n const args = await this.getCloseArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async open(): Promise {\n const settings = this.settingsProvider.getOpenSettings()\n const args = await this.getOpenArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async publish(): Promise {\n const settings = this.settingsProvider.getPublishSettings()\n const args = await this.getPublishArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async addAsset(): Promise {\n const settings = this.settingsProvider.getAddAssetSettings()\n const args = await this.getAddAssetArguments(settings)\n\n return await this.executeTool(args)\n }\n\n protected async getCommonArguments(settings: CommonSettings): Promise {\n const args: string[] = []\n\n args.push('--owner', settings.owner)\n args.push('--repository', settings.repository)\n args.push('--token', settings.token)\n\n settings.targetDirectory = await this.getRepoDir(settings)\n\n args.push('--targetDirectory', settings.targetDirectory)\n\n if (settings.logFilePath) {\n args.push('--logFilePath', settings.logFilePath)\n }\n return args\n }\n\n protected async getCreateArguments(settings: CreateSettings): Promise {\n const args: string[] = ['create', ...(await this.getCommonArguments(settings))]\n\n if (settings.milestone) {\n args.push('--milestone', settings.milestone)\n }\n if (settings.name) {\n args.push('--name', settings.name)\n }\n if (settings.targetcommitish) {\n args.push('--targetcommitish', settings.targetcommitish)\n }\n\n if (settings.inputFilePath) {\n if (await this.buildAgent.fileExists(settings.inputFilePath)) {\n args.push('--inputFilePath', settings.inputFilePath)\n } else {\n throw new Error(`GitReleaseManager inputFilePath not found at ${settings.inputFilePath}`)\n }\n }\n if (settings.isPreRelease) {\n args.push('--pre')\n }\n if (settings.assets && settings.assets.length > 0) {\n settings.assets = settings.assets.map(asset => {\n return path.join(settings.targetDirectory, asset)\n })\n\n args.push('--assets', settings.assets.join(','))\n }\n\n return args\n }\n\n protected async getDiscardArguments(settings: DiscardSettings): Promise {\n const args: string[] = ['discard', ...(await this.getCommonArguments(settings))]\n\n if (settings.milestone) {\n args.push('--milestone', settings.milestone)\n }\n\n return args\n }\n\n protected async getCloseArguments(settings: CloseSettings): Promise {\n const args: string[] = ['close', ...(await this.getCommonArguments(settings))]\n\n if (settings.milestone) {\n args.push('--milestone', settings.milestone)\n }\n\n return args\n }\n\n protected async getOpenArguments(settings: OpenSettings): Promise {\n const args: string[] = ['open', ...(await this.getCommonArguments(settings))]\n\n if (settings.milestone) {\n args.push('--milestone', settings.milestone)\n }\n\n return args\n }\n\n protected async getPublishArguments(settings: PublishSettings): Promise {\n const args: string[] = ['publish', ...(await this.getCommonArguments(settings))]\n\n if (settings.milestone) {\n args.push('--tagName', settings.milestone)\n }\n\n return args\n }\n\n protected async getAddAssetArguments(settings: AddAssetSettings): Promise {\n const args: string[] = ['addasset', ...(await this.getCommonArguments(settings))]\n\n if (settings.milestone) {\n args.push('--tagName', settings.milestone)\n }\n if (settings.assets && settings.assets.length > 0) {\n settings.assets = settings.assets.map(asset => {\n return path.join(settings.targetDirectory, asset)\n })\n\n args.push('--assets', settings.assets.join(','))\n }\n\n return args\n }\n\n protected async getRepoDir(settings: CommonSettings): Promise {\n return await this.getRepoPath(settings.targetDirectory)\n }\n}\n","import { type ExecResult, type IBuildAgent } from '@agents/common'\nimport { type Commands } from './models'\nimport { GitReleaseManagerTool } from './tool'\nimport { RunnerBase } from '../common/runner'\n\nexport class Runner extends RunnerBase {\n protected readonly tool: GitReleaseManagerTool\n\n constructor(protected readonly buildAgent: IBuildAgent) {\n super(buildAgent)\n this.tool = new GitReleaseManagerTool(this.buildAgent)\n }\n\n async run(command: Commands): Promise {\n switch (command) {\n case 'setup':\n return await this.setup()\n case 'addasset':\n return await this.addAsset()\n case 'open':\n return await this.open()\n case 'close':\n return await this.close()\n case 'create':\n return await this.create()\n case 'discard':\n return await this.discard()\n case 'publish':\n return await this.publish()\n }\n }\n\n private async setup(): Promise {\n return this.safeExecute(async () => {\n await this.tool.install()\n return { code: 0 }\n }, 'GitReleaseManager setup successfully')\n }\n\n private async create(): Promise {\n return this.safeExecute(async () => await this.tool.create(), 'GitReleaseManager created release successfully')\n }\n\n private async discard(): Promise {\n return this.safeExecute(async () => await this.tool.discard(), 'GitReleaseManager discarded release successfully')\n }\n\n private async close(): Promise {\n return this.safeExecute(async () => await this.tool.close(), 'GitReleaseManager closed release successfully')\n }\n\n private async open(): Promise {\n return this.safeExecute(async () => await this.tool.open(), 'GitReleaseManager opened release successfully')\n }\n\n private async publish(): Promise {\n return this.safeExecute(async () => await this.tool.publish(), 'GitReleaseManager published release successfully')\n }\n\n private async addAsset(): Promise {\n return this.safeExecute(async () => await this.tool.addAsset(), 'GitReleaseManager added assets to release successfully')\n }\n}\n"],"names":[],"mappings":";;;;;;;;AA0BO,MAAM,0CAA0C,gBAA+D,CAAA;AAAA,EAClH,iBAAoC,GAAA;AAChC,IAAA,MAAM,IAAO,GAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAyB,MAAM,CAAA;AAC5D,IAAA,MAAM,aAAgB,GAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAyB,eAAe,CAAA;AAC9E,IAAA,MAAM,YAAe,GAAA,IAAA,CAAK,UAAW,CAAA,eAAA,CAAgC,cAAc,CAAA;AACnF,IAAA,MAAM,eAAkB,GAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAyB,iBAAiB,CAAA;AAClF,IAAA,MAAM,MAAS,GAAA,IAAA,CAAK,UAAW,CAAA,YAAA,CAA6B,QAAQ,CAAA;AAEpE,IAAM,MAAA,cAAA,GAAiB,KAAK,iBAAkB,EAAA;AAC9C,IAAO,OAAA;AAAA,MACH,GAAG,cAAA;AAAA,MACH,IAAA;AAAA,MACA,aAAA;AAAA,MACA,YAAA;AAAA,MACA,eAAA;AAAA,MACA;AAAA,KACJ;AAAA;AACJ,EAEA,kBAAsC,GAAA;AAClC,IAAM,MAAA,cAAA,GAAiB,KAAK,iBAAkB,EAAA;AAC9C,IAAO,OAAA;AAAA,MACH,GAAG;AAAA,KACP;AAAA;AACJ,EAEA,gBAAkC,GAAA;AAC9B,IAAM,MAAA,cAAA,GAAiB,KAAK,iBAAkB,EAAA;AAC9C,IAAO,OAAA;AAAA,MACH,GAAG;AAAA,KACP;AAAA;AACJ,EAEA,eAAgC,GAAA;AAC5B,IAAM,MAAA,cAAA,GAAiB,KAAK,iBAAkB,EAAA;AAC9C,IAAO,OAAA;AAAA,MACH,GAAG;AAAA,KACP;AAAA;AACJ,EAEA,kBAAsC,GAAA;AAClC,IAAM,MAAA,cAAA,GAAiB,KAAK,iBAAkB,EAAA;AAC9C,IAAO,OAAA;AAAA,MACH,GAAG;AAAA,KACP;AAAA;AACJ,EAEA,mBAAwC,GAAA;AACpC,IAAA,MAAM,MAAS,GAAA,IAAA,CAAK,UAAW,CAAA,YAAA,CAA+B,QAAQ,CAAA;AAEtE,IAAM,MAAA,cAAA,GAAiB,KAAK,iBAAkB,EAAA;AAC9C,IAAO,OAAA;AAAA,MACH,GAAG,cAAA;AAAA,MACH;AAAA,KACJ;AAAA;AACJ,EAEA,iBAAoC,GAAA;AAChC,IAAA,MAAM,SAAY,GAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAyB,WAAW,CAAA;AACtE,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAyB,OAAO,CAAA;AAC9D,IAAA,MAAM,UAAa,GAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAyB,YAAY,CAAA;AACxE,IAAA,MAAM,KAAQ,GAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAyB,OAAO,CAAA;AAC9D,IAAA,MAAM,eAAkB,GAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAyB,iBAAiB,CAAA;AAClF,IAAA,MAAM,WAAc,GAAA,IAAA,CAAK,UAAW,CAAA,QAAA,CAAyB,aAAa,CAAA;AAE1E,IAAO,OAAA;AAAA,MACH,KAAA;AAAA,MACA,UAAA;AAAA,MACA,KAAA;AAAA,MACA,eAAA;AAAA,MACA,SAAA;AAAA,MACA;AAAA,KACJ;AAAA;AAER;;ACpFO,MAAM,8BAA8B,UAAW,CAAA;AAAA,EAClD,IAAI,WAAsB,GAAA;AACtB,IAAO,OAAA,wBAAA;AAAA;AACX,EAEA,IAAI,QAAmB,GAAA;AACnB,IAAO,OAAA,0BAAA;AAAA;AACX,EAEA,IAAI,gBAA2B,GAAA;AAC3B,IAAO,OAAA,wBAAA;AAAA;AACX,EAEA,IAAI,YAA8B,GAAA;AAC9B,IAAO,OAAA,kBAAA;AAAA;AACX,EAEA,IAAI,gBAAuD,GAAA;AACvD,IAAO,OAAA,IAAI,iCAAkC,CAAA,IAAA,CAAK,UAAU,CAAA;AAAA;AAChE,EAEA,MAAM,MAA8B,GAAA;AAChC,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,gBAAA,CAAiB,iBAAkB,EAAA;AACzD,IAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,kBAAA,CAAmB,QAAQ,CAAA;AAEnD,IAAO,OAAA,MAAM,IAAK,CAAA,WAAA,CAAY,IAAI,CAAA;AAAA;AACtC,EAEA,MAAM,OAA+B,GAAA;AACjC,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,gBAAA,CAAiB,kBAAmB,EAAA;AAC1D,IAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,mBAAA,CAAoB,QAAQ,CAAA;AAEpD,IAAO,OAAA,MAAM,IAAK,CAAA,WAAA,CAAY,IAAI,CAAA;AAAA;AACtC,EAEA,MAAM,KAA6B,GAAA;AAC/B,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,gBAAA,CAAiB,gBAAiB,EAAA;AACxD,IAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,iBAAA,CAAkB,QAAQ,CAAA;AAElD,IAAO,OAAA,MAAM,IAAK,CAAA,WAAA,CAAY,IAAI,CAAA;AAAA;AACtC,EAEA,MAAM,IAA4B,GAAA;AAC9B,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,gBAAA,CAAiB,eAAgB,EAAA;AACvD,IAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,gBAAA,CAAiB,QAAQ,CAAA;AAEjD,IAAO,OAAA,MAAM,IAAK,CAAA,WAAA,CAAY,IAAI,CAAA;AAAA;AACtC,EAEA,MAAM,OAA+B,GAAA;AACjC,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,gBAAA,CAAiB,kBAAmB,EAAA;AAC1D,IAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,mBAAA,CAAoB,QAAQ,CAAA;AAEpD,IAAO,OAAA,MAAM,IAAK,CAAA,WAAA,CAAY,IAAI,CAAA;AAAA;AACtC,EAEA,MAAM,QAAgC,GAAA;AAClC,IAAM,MAAA,QAAA,GAAW,IAAK,CAAA,gBAAA,CAAiB,mBAAoB,EAAA;AAC3D,IAAA,MAAM,IAAO,GAAA,MAAM,IAAK,CAAA,oBAAA,CAAqB,QAAQ,CAAA;AAErD,IAAO,OAAA,MAAM,IAAK,CAAA,WAAA,CAAY,IAAI,CAAA;AAAA;AACtC,EAEA,MAAgB,mBAAmB,QAA6C,EAAA;AAC5E,IAAA,MAAM,OAAiB,EAAC;AAExB,IAAK,IAAA,CAAA,IAAA,CAAK,SAAW,EAAA,QAAA,CAAS,KAAK,CAAA;AACnC,IAAK,IAAA,CAAA,IAAA,CAAK,cAAgB,EAAA,QAAA,CAAS,UAAU,CAAA;AAC7C,IAAK,IAAA,CAAA,IAAA,CAAK,SAAW,EAAA,QAAA,CAAS,KAAK,CAAA;AAEnC,IAAA,QAAA,CAAS,eAAkB,GAAA,MAAM,IAAK,CAAA,UAAA,CAAW,QAAQ,CAAA;AAEzD,IAAK,IAAA,CAAA,IAAA,CAAK,mBAAqB,EAAA,QAAA,CAAS,eAAe,CAAA;AAEvD,IAAA,IAAI,SAAS,WAAa,EAAA;AACtB,MAAK,IAAA,CAAA,IAAA,CAAK,eAAiB,EAAA,QAAA,CAAS,WAAW,CAAA;AAAA;AAEnD,IAAO,OAAA,IAAA;AAAA;AACX,EAEA,MAAgB,mBAAmB,QAA6C,EAAA;AAC5E,IAAM,MAAA,IAAA,GAAiB,CAAC,QAAU,EAAA,GAAI,MAAM,IAAK,CAAA,kBAAA,CAAmB,QAAQ,CAAE,CAAA;AAE9E,IAAA,IAAI,SAAS,SAAW,EAAA;AACpB,MAAK,IAAA,CAAA,IAAA,CAAK,aAAe,EAAA,QAAA,CAAS,SAAS,CAAA;AAAA;AAE/C,IAAA,IAAI,SAAS,IAAM,EAAA;AACf,MAAK,IAAA,CAAA,IAAA,CAAK,QAAU,EAAA,QAAA,CAAS,IAAI,CAAA;AAAA;AAErC,IAAA,IAAI,SAAS,eAAiB,EAAA;AAC1B,MAAK,IAAA,CAAA,IAAA,CAAK,mBAAqB,EAAA,QAAA,CAAS,eAAe,CAAA;AAAA;AAG3D,IAAA,IAAI,SAAS,aAAe,EAAA;AACxB,MAAA,IAAI,MAAM,IAAK,CAAA,UAAA,CAAW,UAAW,CAAA,QAAA,CAAS,aAAa,CAAG,EAAA;AAC1D,QAAK,IAAA,CAAA,IAAA,CAAK,iBAAmB,EAAA,QAAA,CAAS,aAAa,CAAA;AAAA,OAChD,MAAA;AACH,QAAA,MAAM,IAAI,KAAA,CAAM,CAAgD,6CAAA,EAAA,QAAA,CAAS,aAAa,CAAE,CAAA,CAAA;AAAA;AAC5F;AAEJ,IAAA,IAAI,SAAS,YAAc,EAAA;AACvB,MAAA,IAAA,CAAK,KAAK,OAAO,CAAA;AAAA;AAErB,IAAA,IAAI,QAAS,CAAA,MAAA,IAAU,QAAS,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAC/C,MAAA,QAAA,CAAS,MAAS,GAAA,QAAA,CAAS,MAAO,CAAA,GAAA,CAAI,CAAS,KAAA,KAAA;AAC3C,QAAA,OAAO,IAAK,CAAA,IAAA,CAAK,QAAS,CAAA,eAAA,EAAiB,KAAK,CAAA;AAAA,OACnD,CAAA;AAED,MAAA,IAAA,CAAK,KAAK,UAAY,EAAA,QAAA,CAAS,MAAO,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AAGnD,IAAO,OAAA,IAAA;AAAA;AACX,EAEA,MAAgB,oBAAoB,QAA8C,EAAA;AAC9E,IAAM,MAAA,IAAA,GAAiB,CAAC,SAAW,EAAA,GAAI,MAAM,IAAK,CAAA,kBAAA,CAAmB,QAAQ,CAAE,CAAA;AAE/E,IAAA,IAAI,SAAS,SAAW,EAAA;AACpB,MAAK,IAAA,CAAA,IAAA,CAAK,aAAe,EAAA,QAAA,CAAS,SAAS,CAAA;AAAA;AAG/C,IAAO,OAAA,IAAA;AAAA;AACX,EAEA,MAAgB,kBAAkB,QAA4C,EAAA;AAC1E,IAAM,MAAA,IAAA,GAAiB,CAAC,OAAS,EAAA,GAAI,MAAM,IAAK,CAAA,kBAAA,CAAmB,QAAQ,CAAE,CAAA;AAE7E,IAAA,IAAI,SAAS,SAAW,EAAA;AACpB,MAAK,IAAA,CAAA,IAAA,CAAK,aAAe,EAAA,QAAA,CAAS,SAAS,CAAA;AAAA;AAG/C,IAAO,OAAA,IAAA;AAAA;AACX,EAEA,MAAgB,iBAAiB,QAA2C,EAAA;AACxE,IAAM,MAAA,IAAA,GAAiB,CAAC,MAAQ,EAAA,GAAI,MAAM,IAAK,CAAA,kBAAA,CAAmB,QAAQ,CAAE,CAAA;AAE5E,IAAA,IAAI,SAAS,SAAW,EAAA;AACpB,MAAK,IAAA,CAAA,IAAA,CAAK,aAAe,EAAA,QAAA,CAAS,SAAS,CAAA;AAAA;AAG/C,IAAO,OAAA,IAAA;AAAA;AACX,EAEA,MAAgB,oBAAoB,QAA8C,EAAA;AAC9E,IAAM,MAAA,IAAA,GAAiB,CAAC,SAAW,EAAA,GAAI,MAAM,IAAK,CAAA,kBAAA,CAAmB,QAAQ,CAAE,CAAA;AAE/E,IAAA,IAAI,SAAS,SAAW,EAAA;AACpB,MAAK,IAAA,CAAA,IAAA,CAAK,WAAa,EAAA,QAAA,CAAS,SAAS,CAAA;AAAA;AAG7C,IAAO,OAAA,IAAA;AAAA;AACX,EAEA,MAAgB,qBAAqB,QAA+C,EAAA;AAChF,IAAM,MAAA,IAAA,GAAiB,CAAC,UAAY,EAAA,GAAI,MAAM,IAAK,CAAA,kBAAA,CAAmB,QAAQ,CAAE,CAAA;AAEhF,IAAA,IAAI,SAAS,SAAW,EAAA;AACpB,MAAK,IAAA,CAAA,IAAA,CAAK,WAAa,EAAA,QAAA,CAAS,SAAS,CAAA;AAAA;AAE7C,IAAA,IAAI,QAAS,CAAA,MAAA,IAAU,QAAS,CAAA,MAAA,CAAO,SAAS,CAAG,EAAA;AAC/C,MAAA,QAAA,CAAS,MAAS,GAAA,QAAA,CAAS,MAAO,CAAA,GAAA,CAAI,CAAS,KAAA,KAAA;AAC3C,QAAA,OAAO,IAAK,CAAA,IAAA,CAAK,QAAS,CAAA,eAAA,EAAiB,KAAK,CAAA;AAAA,OACnD,CAAA;AAED,MAAA,IAAA,CAAK,KAAK,UAAY,EAAA,QAAA,CAAS,MAAO,CAAA,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA;AAGnD,IAAO,OAAA,IAAA;AAAA;AACX,EAEA,MAAgB,WAAW,QAA2C,EAAA;AAClE,IAAA,OAAO,MAAM,IAAA,CAAK,WAAY,CAAA,QAAA,CAAS,eAAe,CAAA;AAAA;AAE9D;;ACzLO,MAAM,eAAe,UAAW,CAAA;AAAA,EAGnC,YAA+B,UAAyB,EAAA;AACpD,IAAA,KAAA,CAAM,UAAU,CAAA;AADW,IAAA,IAAA,CAAA,UAAA,GAAA,UAAA;AAE3B,IAAA,IAAA,CAAK,IAAO,GAAA,IAAI,qBAAsB,CAAA,IAAA,CAAK,UAAU,CAAA;AAAA;AACzD,EALmB,IAAA;AAAA,EAOnB,MAAM,IAAI,OAAwC,EAAA;AAC9C,IAAA,QAAQ,OAAS;AAAA,MACb,KAAK,OAAA;AACD,QAAO,OAAA,MAAM,KAAK,KAAM,EAAA;AAAA,MAC5B,KAAK,UAAA;AACD,QAAO,OAAA,MAAM,KAAK,QAAS,EAAA;AAAA,MAC/B,KAAK,MAAA;AACD,QAAO,OAAA,MAAM,KAAK,IAAK,EAAA;AAAA,MAC3B,KAAK,OAAA;AACD,QAAO,OAAA,MAAM,KAAK,KAAM,EAAA;AAAA,MAC5B,KAAK,QAAA;AACD,QAAO,OAAA,MAAM,KAAK,MAAO,EAAA;AAAA,MAC7B,KAAK,SAAA;AACD,QAAO,OAAA,MAAM,KAAK,OAAQ,EAAA;AAAA,MAC9B,KAAK,SAAA;AACD,QAAO,OAAA,MAAM,KAAK,OAAQ,EAAA;AAAA;AAClC;AACJ,EAEA,MAAc,KAA6B,GAAA;AACvC,IAAO,OAAA,IAAA,CAAK,YAAY,YAAY;AAChC,MAAM,MAAA,IAAA,CAAK,KAAK,OAAQ,EAAA;AACxB,MAAO,OAAA,EAAE,MAAM,CAAE,EAAA;AAAA,OAClB,sCAAsC,CAAA;AAAA;AAC7C,EAEA,MAAc,MAA8B,GAAA;AACxC,IAAO,OAAA,IAAA,CAAK,YAAY,YAAY,MAAM,KAAK,IAAK,CAAA,MAAA,IAAU,gDAAgD,CAAA;AAAA;AAClH,EAEA,MAAc,OAA+B,GAAA;AACzC,IAAO,OAAA,IAAA,CAAK,YAAY,YAAY,MAAM,KAAK,IAAK,CAAA,OAAA,IAAW,kDAAkD,CAAA;AAAA;AACrH,EAEA,MAAc,KAA6B,GAAA;AACvC,IAAO,OAAA,IAAA,CAAK,YAAY,YAAY,MAAM,KAAK,IAAK,CAAA,KAAA,IAAS,+CAA+C,CAAA;AAAA;AAChH,EAEA,MAAc,IAA4B,GAAA;AACtC,IAAO,OAAA,IAAA,CAAK,YAAY,YAAY,MAAM,KAAK,IAAK,CAAA,IAAA,IAAQ,+CAA+C,CAAA;AAAA;AAC/G,EAEA,MAAc,OAA+B,GAAA;AACzC,IAAO,OAAA,IAAA,CAAK,YAAY,YAAY,MAAM,KAAK,IAAK,CAAA,OAAA,IAAW,kDAAkD,CAAA;AAAA;AACrH,EAEA,MAAc,QAAgC,GAAA;AAC1C,IAAO,OAAA,IAAA,CAAK,YAAY,YAAY,MAAM,KAAK,IAAK,CAAA,QAAA,IAAY,wDAAwD,CAAA;AAAA;AAEhI;;;;"} \ No newline at end of file +{"version":3,"file":"gitreleasemanager.mjs","sources":["../../../src/tools/gitreleasemanager/settings.ts","../../../src/tools/gitreleasemanager/tool.ts","../../../src/tools/gitreleasemanager/runner.ts"],"sourcesContent":["import { type ISettingsProvider, SettingsProvider } from '@tools/common'\nimport {\n type AddAssetSettings,\n type CloseSettings,\n type CreateSettings,\n type DiscardSettings,\n type OpenSettings,\n type PublishSettings,\n type CommonSettings\n} from './models'\nexport interface IGitReleaseManagerSettingsProvider extends ISettingsProvider {\n getCreateSettings(): CreateSettings\n\n getDiscardSettings(): DiscardSettings\n\n getCloseSettings(): CloseSettings\n\n getOpenSettings(): OpenSettings\n\n getPublishSettings(): PublishSettings\n\n getAddAssetSettings(): AddAssetSettings\n\n getCommonSettings(): CommonSettings\n}\n\nexport class GitReleaseManagerSettingsProvider extends SettingsProvider implements IGitReleaseManagerSettingsProvider {\n getCreateSettings(): CreateSettings {\n const name = this.buildAgent.getInput('name')\n const inputFilePath = this.buildAgent.getInput('inputFilePath')\n const isPreRelease = this.buildAgent.getBooleanInput('isPreRelease')\n const targetcommitish = this.buildAgent.getInput('targetcommitish')\n const assets = this.buildAgent.getListInput('assets')\n\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings,\n name,\n inputFilePath,\n isPreRelease,\n targetcommitish,\n assets\n }\n }\n\n getDiscardSettings(): DiscardSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getCloseSettings(): CloseSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getOpenSettings(): OpenSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getPublishSettings(): PublishSettings {\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings\n }\n }\n\n getAddAssetSettings(): AddAssetSettings {\n const assets = this.buildAgent.getListInput('assets')\n\n const commonSettings = this.getCommonSettings()\n return {\n ...commonSettings,\n assets\n }\n }\n\n getCommonSettings(): CommonSettings {\n const milestone = this.buildAgent.getInput('milestone')\n const owner = this.buildAgent.getInput('owner')\n const repository = this.buildAgent.getInput('repository')\n const token = this.buildAgent.getInput('token')\n const targetDirectory = this.buildAgent.getInput('targetDirectory')\n const logFilePath = this.buildAgent.getInput('logFilePath')\n\n return {\n owner,\n repository,\n token,\n targetDirectory,\n milestone,\n logFilePath\n }\n }\n}\n","import * as path from 'path'\n\nimport { ArgumentsBuilder, DotnetTool } from '@tools/common'\nimport { type ExecResult } from '@agents/common'\n\nimport {\n type AddAssetSettings,\n type CloseSettings,\n type CreateSettings,\n type DiscardSettings,\n type OpenSettings,\n type PublishSettings,\n type CommonSettings\n} from './models'\nimport { GitReleaseManagerSettingsProvider, IGitReleaseManagerSettingsProvider } from './settings'\n\nexport class GitReleaseManagerTool extends DotnetTool {\n get packageName(): string {\n return 'GitReleaseManager.Tool'\n }\n\n get toolName(): string {\n return 'dotnet-gitreleasemanager'\n }\n\n get toolPathVariable(): string {\n return 'GITRELEASEMANAGER_PATH'\n }\n\n get versionRange(): string | null {\n return '>=0.19.0 <0.21.0'\n }\n\n get settingsProvider(): IGitReleaseManagerSettingsProvider {\n return new GitReleaseManagerSettingsProvider(this.buildAgent)\n }\n\n async create(): Promise {\n const settings = this.settingsProvider.getCreateSettings()\n const args = await this.getCreateArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async discard(): Promise {\n const settings = this.settingsProvider.getDiscardSettings()\n const args = await this.getDiscardArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async close(): Promise {\n const settings = this.settingsProvider.getCloseSettings()\n const args = await this.getCloseArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async open(): Promise {\n const settings = this.settingsProvider.getOpenSettings()\n const args = await this.getOpenArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async publish(): Promise {\n const settings = this.settingsProvider.getPublishSettings()\n const args = await this.getPublishArguments(settings)\n\n return await this.executeTool(args)\n }\n\n async addAsset(): Promise {\n const settings = this.settingsProvider.getAddAssetSettings()\n const args = await this.getAddAssetArguments(settings)\n\n return await this.executeTool(args)\n }\n\n protected async getCommonArguments(settings: CommonSettings): Promise {\n const builder = new ArgumentsBuilder()\n\n builder.addKeyValue('owner', settings.owner)\n builder.addKeyValue('repository', settings.repository)\n builder.addKeyValue('token', settings.token)\n\n settings.targetDirectory = await this.getRepoDir(settings)\n\n builder.addKeyValue('targetDirectory', settings.targetDirectory)\n\n if (settings.logFilePath) {\n builder.addKeyValue('logFilePath', settings.logFilePath)\n }\n\n return builder.build()\n }\n\n protected async getCreateArguments(settings: CreateSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('create').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n if (settings.name) {\n builder.addKeyValue('name', settings.name)\n }\n if (settings.targetcommitish) {\n builder.addKeyValue('targetcommitish', settings.targetcommitish)\n }\n\n if (settings.inputFilePath) {\n if (await this.buildAgent.fileExists(settings.inputFilePath)) {\n builder.addKeyValue('inputFilePath', settings.inputFilePath)\n } else {\n throw new Error(`GitReleaseManager inputFilePath not found at ${settings.inputFilePath}`)\n }\n }\n if (settings.isPreRelease) {\n builder.addFlag('pre')\n }\n if (settings.assets && settings.assets.length > 0) {\n settings.assets = settings.assets.map(asset => {\n return path.join(settings.targetDirectory, asset)\n })\n\n builder.addKeyValue('assets', settings.assets.join(','))\n }\n\n return builder.build()\n }\n\n protected async getDiscardArguments(settings: DiscardSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('discard').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getCloseArguments(settings: CloseSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('close').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getOpenArguments(settings: OpenSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('open').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('milestone', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getPublishArguments(settings: PublishSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('publish').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('tagName', settings.milestone)\n }\n\n return builder.build()\n }\n\n protected async getAddAssetArguments(settings: AddAssetSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument('addasset').addArguments(await this.getCommonArguments(settings))\n\n if (settings.milestone) {\n builder.addKeyValue('tagName', settings.milestone)\n }\n if (settings.assets && settings.assets.length > 0) {\n settings.assets = settings.assets.map(asset => {\n return path.join(settings.targetDirectory, asset)\n })\n\n builder.addKeyValue('assets', settings.assets.join(','))\n }\n\n return builder.build()\n }\n\n protected async getRepoDir(settings: CommonSettings): Promise {\n return await this.getRepoPath(settings.targetDirectory)\n }\n}\n","import { type ExecResult, type IBuildAgent } from '@agents/common'\nimport { type Commands } from './models'\nimport { GitReleaseManagerTool } from './tool'\nimport { RunnerBase } from '../common/runner'\n\nexport class Runner extends RunnerBase {\n protected readonly tool: GitReleaseManagerTool\n\n constructor(protected readonly buildAgent: IBuildAgent) {\n super(buildAgent)\n this.tool = new GitReleaseManagerTool(this.buildAgent)\n }\n\n async run(command: Commands): Promise {\n switch (command) {\n case 'setup':\n return await this.setup()\n case 'addasset':\n return await this.addAsset()\n case 'open':\n return await this.open()\n case 'close':\n return await this.close()\n case 'create':\n return await this.create()\n case 'discard':\n return await this.discard()\n case 'publish':\n return await this.publish()\n }\n }\n\n private async setup(): Promise {\n return this.safeExecute(async () => {\n await this.tool.install()\n return { code: 0 }\n }, 'GitReleaseManager setup successfully')\n }\n\n private async create(): Promise {\n return this.safeExecute(async () => await this.tool.create(), 'GitReleaseManager created release successfully')\n }\n\n private async discard(): Promise {\n return this.safeExecute(async () => await this.tool.discard(), 'GitReleaseManager discarded release successfully')\n }\n\n private async close(): Promise {\n return this.safeExecute(async () => await this.tool.close(), 'GitReleaseManager closed release successfully')\n }\n\n private async open(): Promise {\n return this.safeExecute(async () => await this.tool.open(), 'GitReleaseManager opened release successfully')\n }\n\n private async publish(): Promise {\n return this.safeExecute(async () => await this.tool.publish(), 'GitReleaseManager published release successfully')\n }\n\n private async addAsset(): Promise {\n return this.safeExecute(async () => await this.tool.addAsset(), 'GitReleaseManager added assets to release successfully')\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tools/libs/gitversion.mjs b/dist/tools/libs/gitversion.mjs index 223e3481d..18a9bd951 100644 --- a/dist/tools/libs/gitversion.mjs +++ b/dist/tools/libs/gitversion.mjs @@ -1,4 +1,4 @@ -import { S as SettingsProvider, D as DotnetTool, k as keysOf, R as RunnerBase } from './tools.mjs'; +import { S as SettingsProvider, D as DotnetTool, k as keysOf, A as ArgumentsBuilder, R as RunnerBase } from './tools.mjs'; import 'node:crypto'; import 'node:fs/promises'; import 'node:os'; @@ -16,6 +16,7 @@ class GitVersionSettingsProvider extends SettingsProvider { const overrideConfig = this.buildAgent.getListInput("overrideConfig"); const updateAssemblyInfo = this.buildAgent.getBooleanInput("updateAssemblyInfo"); const updateAssemblyInfoFilename = this.buildAgent.getInput("updateAssemblyInfoFilename"); + const updateProjectFiles = this.buildAgent.getBooleanInput("updateProjectFiles"); return { targetPath, disableCache, @@ -25,7 +26,8 @@ class GitVersionSettingsProvider extends SettingsProvider { configFilePath, overrideConfig, updateAssemblyInfo, - updateAssemblyInfoFilename + updateAssemblyInfoFilename, + updateProjectFiles }; } getCommandSettings() { @@ -51,7 +53,7 @@ class GitVersionTool extends DotnetTool { return "GITVERSION_PATH"; } get versionRange() { - return ">=5.2.0 <6.1.0"; + return ">=5.2.0 <7.0.0"; } get settingsProvider() { return new GitVersionSettingsProvider(this.buildAgent); @@ -99,7 +101,7 @@ class GitVersionTool extends DotnetTool { return await super.getRepoPath(settings.targetPath); } async getExecuteArguments(workDir, options) { - const args = [workDir, "/output", "json", "/l", "console"]; + const builder = new ArgumentsBuilder().addArgument(workDir).addArgument("/output").addArgument("json").addArgument("/l").addArgument("console"); const { useConfigFile, disableCache, @@ -107,18 +109,19 @@ class GitVersionTool extends DotnetTool { configFilePath, overrideConfig, updateAssemblyInfo, - updateAssemblyInfoFilename + updateAssemblyInfoFilename, + updateProjectFiles // } = options; if (disableCache) { - args.push("/nocache"); + builder.addArgument("/nocache"); } if (disableNormalization) { - args.push("/nonormalize"); + builder.addArgument("/nonormalize"); } if (useConfigFile) { if (await this.isValidInputFile("configFilePath", configFilePath)) { - args.push("/config", configFilePath); + builder.addArgument("/config").addArgument(configFilePath); } else { throw new Error(`GitVersion configuration file not found at ${configFilePath}`); } @@ -127,77 +130,31 @@ class GitVersionTool extends DotnetTool { for (let config of overrideConfig) { config = config.trim(); if (config.match(/([a-zA-Z0-9]+(-[a-zA-Z]+)*=[a-zA-Z0-9\- :.']*)/)) { - args.push("/overrideconfig", config); + builder.addArgument("/overrideconfig").addArgument(config); } } } if (updateAssemblyInfo) { - args.push("/updateassemblyinfo"); + builder.addArgument("/updateassemblyinfo"); if (updateAssemblyInfoFilename?.length > 0) { if (await this.isValidInputFile("updateAssemblyInfoFilename", updateAssemblyInfoFilename)) { - args.push(updateAssemblyInfoFilename); + builder.addArgument(updateAssemblyInfoFilename); } else { throw new Error(`AssemblyInfoFilename file not found at ${updateAssemblyInfoFilename}`); } } } - return args; + if (updateProjectFiles) { + builder.addArgument("/updateprojectfiles"); + } + return builder.build(); } getCommandArguments(workDir, options) { - let args = [workDir]; + const builder = new ArgumentsBuilder().addArgument(workDir); if (options.arguments) { - args = args.concat(this.argStringToArray(options.arguments)); - } - return args; - } - argStringToArray(argString) { - const args = []; - let inQuotes = false; - let escaped = false; - let lastCharWasSpace = true; - let arg = ""; - const append = (c) => { - if (escaped && c !== '"') { - arg += "\\"; - } - arg += c; - escaped = false; - }; - for (let i = 0; i < argString.length; i++) { - const c = argString.charAt(i); - if (c === " " && !inQuotes) { - if (!lastCharWasSpace) { - args.push(arg); - arg = ""; - } - lastCharWasSpace = true; - continue; - } else { - lastCharWasSpace = false; - } - if (c === '"') { - if (!escaped) { - inQuotes = !inQuotes; - } else { - append(c); - } - continue; - } - if (c === "\\" && escaped) { - append(c); - continue; - } - if (c === "\\" && inQuotes) { - escaped = true; - continue; - } - append(c); - lastCharWasSpace = false; - } - if (!lastCharWasSpace) { - args.push(arg.trim()); + builder.addArguments(ArgumentsBuilder.parseArgumentString(options.arguments)); } - return args; + return builder.build(); } async checkShallowClone(settings, workDir) { if (!settings.disableShallowCloneCheck) { diff --git a/dist/tools/libs/gitversion.mjs.map b/dist/tools/libs/gitversion.mjs.map index 126e10a3b..41241c74d 100644 --- a/dist/tools/libs/gitversion.mjs.map +++ b/dist/tools/libs/gitversion.mjs.map @@ -1 +1 @@ -{"version":3,"file":"gitversion.mjs","sources":["../../../src/tools/gitversion/settings.ts","../../../src/tools/gitversion/tool.ts","../../../src/tools/gitversion/runner.ts"],"sourcesContent":["import { type ISettingsProvider, SettingsProvider } from '@tools/common'\nimport { type CommandSettings, type ExecuteSettings } from './models'\n\nexport interface IGitVersionSettingsProvider extends ISettingsProvider {\n getExecuteSettings(): ExecuteSettings\n\n getCommandSettings(): CommandSettings\n}\n\nexport class GitVersionSettingsProvider extends SettingsProvider implements IGitVersionSettingsProvider {\n getExecuteSettings(): ExecuteSettings {\n const targetPath = this.buildAgent.getInput('targetPath')\n\n const disableCache = this.buildAgent.getBooleanInput('disableCache')\n const disableNormalization = this.buildAgent.getBooleanInput('disableNormalization')\n const disableShallowCloneCheck = this.buildAgent.getBooleanInput('disableShallowCloneCheck')\n\n const useConfigFile = this.buildAgent.getBooleanInput('useConfigFile')\n const configFilePath = this.buildAgent.getInput('configFilePath')\n const overrideConfig = this.buildAgent.getListInput('overrideConfig')\n\n const updateAssemblyInfo = this.buildAgent.getBooleanInput('updateAssemblyInfo')\n const updateAssemblyInfoFilename = this.buildAgent.getInput('updateAssemblyInfoFilename')\n\n return {\n targetPath,\n disableCache,\n disableNormalization,\n disableShallowCloneCheck,\n useConfigFile,\n configFilePath,\n overrideConfig,\n updateAssemblyInfo,\n updateAssemblyInfoFilename\n }\n }\n\n getCommandSettings(): CommandSettings {\n const targetPath = this.buildAgent.getInput('targetPath')\n const disableShallowCloneCheck = this.buildAgent.getBooleanInput('disableShallowCloneCheck')\n const args = this.buildAgent.getInput('arguments')\n\n return {\n targetPath,\n disableShallowCloneCheck,\n arguments: args\n }\n }\n}\n","import { type ExecResult } from '@agents/common'\nimport { DotnetTool, keysOf } from '@tools/common'\nimport { type CommandSettings, type ExecuteSettings, type GitVersionOutput } from './models'\nimport { GitVersionSettingsProvider, type IGitVersionSettingsProvider } from './settings'\n\nexport class GitVersionTool extends DotnetTool {\n get packageName(): string {\n return 'GitVersion.Tool'\n }\n\n get toolName(): string {\n return 'dotnet-gitversion'\n }\n\n get toolPathVariable(): string {\n return 'GITVERSION_PATH'\n }\n\n get versionRange(): string | null {\n return '>=5.2.0 <6.1.0'\n }\n\n get settingsProvider(): IGitVersionSettingsProvider {\n return new GitVersionSettingsProvider(this.buildAgent)\n }\n\n async executeJson(): Promise {\n const settings = this.settingsProvider.getExecuteSettings()\n const workDir = await this.getRepoDir(settings)\n\n await this.checkShallowClone(settings, workDir)\n\n const args = await this.getExecuteArguments(workDir, settings)\n\n await this.setDotnetRoot()\n return await this.executeTool(args)\n }\n\n async executeCommand(): Promise {\n const settings = this.settingsProvider.getCommandSettings()\n const workDir = await this.getRepoDir(settings)\n\n await this.checkShallowClone(settings, workDir)\n\n const args = this.getCommandArguments(workDir, settings)\n\n await this.setDotnetRoot()\n return await this.executeTool(args)\n }\n\n writeGitVersionToAgent(output: GitVersionOutput): void {\n for (const property of keysOf(output)) {\n const name = this.toCamelCase(property)\n try {\n let value = output[property]?.toString()\n if (value === '0') {\n value = '0'\n }\n this.buildAgent.setOutput(name, value)\n this.buildAgent.setOutput(`GitVersion_${property}`, value)\n this.buildAgent.setOutput(`GitVersion.${property}`, value)\n this.buildAgent.setVariable(name, value)\n this.buildAgent.setVariable(`GitVersion_${property}`, value)\n this.buildAgent.setVariable(`GitVersion.${property}`, value)\n } catch (_error) {\n this.buildAgent.error(`Unable to set output/variable for ${property}`)\n }\n }\n\n if (output.FullSemVer.endsWith('+0')) {\n output.FullSemVer = output.FullSemVer.slice(0, -2)\n }\n this.buildAgent.updateBuildNumber(output.FullSemVer)\n }\n\n protected async getRepoDir(settings: ExecuteSettings | CommandSettings): Promise {\n return await super.getRepoPath(settings.targetPath)\n }\n\n protected async getExecuteArguments(workDir: string, options: ExecuteSettings): Promise {\n const args = [workDir, '/output', 'json', '/l', 'console']\n\n const {\n useConfigFile,\n disableCache,\n disableNormalization,\n configFilePath,\n overrideConfig,\n updateAssemblyInfo,\n updateAssemblyInfoFilename\n //\n } = options\n\n if (disableCache) {\n args.push('/nocache')\n }\n\n if (disableNormalization) {\n args.push('/nonormalize')\n }\n\n if (useConfigFile) {\n if (await this.isValidInputFile('configFilePath', configFilePath)) {\n args.push('/config', configFilePath)\n } else {\n throw new Error(`GitVersion configuration file not found at ${configFilePath}`)\n }\n }\n\n if (overrideConfig) {\n for (let config of overrideConfig) {\n config = config.trim()\n if (config.match(/([a-zA-Z0-9]+(-[a-zA-Z]+)*=[a-zA-Z0-9\\- :.']*)/)) {\n args.push('/overrideconfig', config)\n }\n }\n }\n\n if (updateAssemblyInfo) {\n args.push('/updateassemblyinfo')\n\n // You can specify 'updateAssemblyInfo' without 'updateAssemblyInfoFilename'.\n if (updateAssemblyInfoFilename?.length > 0) {\n if (await this.isValidInputFile('updateAssemblyInfoFilename', updateAssemblyInfoFilename)) {\n args.push(updateAssemblyInfoFilename)\n } else {\n throw new Error(`AssemblyInfoFilename file not found at ${updateAssemblyInfoFilename}`)\n }\n }\n }\n\n return args\n }\n\n protected getCommandArguments(workDir: string, options: CommandSettings): string[] {\n let args = [workDir]\n\n if (options.arguments) {\n args = args.concat(this.argStringToArray(options.arguments))\n }\n return args\n }\n\n private argStringToArray(argString: string): string[] {\n const args: string[] = []\n\n let inQuotes = false\n let escaped = false\n let lastCharWasSpace = true\n let arg = ''\n\n const append = (c: string): void => {\n // we only escape double quotes.\n if (escaped && c !== '\"') {\n arg += '\\\\'\n }\n\n arg += c\n escaped = false\n }\n\n for (let i = 0; i < argString.length; i++) {\n const c = argString.charAt(i)\n\n if (c === ' ' && !inQuotes) {\n if (!lastCharWasSpace) {\n args.push(arg)\n arg = ''\n }\n lastCharWasSpace = true\n continue\n } else {\n lastCharWasSpace = false\n }\n\n if (c === '\"') {\n if (!escaped) {\n inQuotes = !inQuotes\n } else {\n append(c)\n }\n continue\n }\n\n if (c === '\\\\' && escaped) {\n append(c)\n continue\n }\n\n if (c === '\\\\' && inQuotes) {\n escaped = true\n continue\n }\n\n append(c)\n lastCharWasSpace = false\n }\n\n if (!lastCharWasSpace) {\n args.push(arg.trim())\n }\n\n return args\n }\n\n private async checkShallowClone(settings: ExecuteSettings | CommandSettings, workDir: string): Promise {\n if (!settings.disableShallowCloneCheck) {\n const isShallowResult = await this.execute('git', ['-C', workDir, 'rev-parse', '--is-shallow-repository'])\n if (isShallowResult.code === 0 && isShallowResult.stdout?.trim() === 'true') {\n throw new Error(\n 'The repository is shallow. Consider disabling shallow clones. See https://github.com/GitTools/actions/blob/main/docs/cloning.md for more information.'\n )\n }\n }\n }\n\n private toCamelCase(input: string): string {\n return input.replace(/^\\w|[A-Z]|\\b\\w|\\s+/g, function (match, index) {\n if (+match === 0) return '' // or if (/\\s+/.test(match)) for white spaces\n return index === 0 ? match.toLowerCase() : match.toUpperCase()\n })\n }\n}\n","import { type ExecResult, type IBuildAgent } from '@agents/common'\nimport { type Commands, type GitVersionOutput } from './models'\nimport { GitVersionTool } from './tool'\nimport { RunnerBase } from '../common/runner'\n\nexport class Runner extends RunnerBase {\n protected readonly tool: GitVersionTool\n\n constructor(protected readonly buildAgent: IBuildAgent) {\n super(buildAgent)\n this.tool = new GitVersionTool(this.buildAgent)\n }\n\n async run(command: Commands): Promise {\n switch (command) {\n case 'setup':\n return await this.setup()\n case 'execute':\n return await this.execute()\n case 'command':\n return await this.command()\n }\n }\n\n private async setup(): Promise {\n return this.safeExecute(async () => {\n await this.tool.install()\n return { code: 0 }\n }, 'GitVersion setup successfully')\n }\n\n private async execute(): Promise {\n return this.safeExecute(async () => {\n const result = await this.tool.executeJson()\n this.buildAgent.debug('Parsing GitVersion output')\n return this.processGitVersionOutput(result)\n }, 'GitVersion executed successfully')\n }\n\n private async command(): Promise {\n return this.safeExecute(async () => await this.tool.executeCommand(), 'GitVersion executed successfully')\n }\n\n private processGitVersionOutput(result: ExecResult): ExecResult {\n const stdout = result.stdout as string\n if (stdout.lastIndexOf('{') === -1 || stdout.lastIndexOf('}') === -1) {\n this.buildAgent.debug('GitVersion output is not valid JSON')\n this.buildAgent.setFailed('GitVersion output is not valid JSON', true)\n return {\n code: -1,\n error: new Error('GitVersion output is not valid JSON')\n }\n } else {\n const jsonOutput = stdout.substring(stdout.lastIndexOf('{'), stdout.lastIndexOf('}') + 1)\n\n const gitVersionOutput = JSON.parse(jsonOutput) as GitVersionOutput\n this.tool.writeGitVersionToAgent(gitVersionOutput)\n this.buildAgent.setSucceeded('GitVersion executed successfully', true)\n return result\n }\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"gitversion.mjs","sources":["../../../src/tools/gitversion/settings.ts","../../../src/tools/gitversion/tool.ts","../../../src/tools/gitversion/runner.ts"],"sourcesContent":["import { type ISettingsProvider, SettingsProvider } from '@tools/common'\nimport { type CommandSettings, type ExecuteSettings } from './models'\n\nexport interface IGitVersionSettingsProvider extends ISettingsProvider {\n getExecuteSettings(): ExecuteSettings\n\n getCommandSettings(): CommandSettings\n}\n\nexport class GitVersionSettingsProvider extends SettingsProvider implements IGitVersionSettingsProvider {\n getExecuteSettings(): ExecuteSettings {\n const targetPath = this.buildAgent.getInput('targetPath')\n\n const disableCache = this.buildAgent.getBooleanInput('disableCache')\n const disableNormalization = this.buildAgent.getBooleanInput('disableNormalization')\n const disableShallowCloneCheck = this.buildAgent.getBooleanInput('disableShallowCloneCheck')\n\n const useConfigFile = this.buildAgent.getBooleanInput('useConfigFile')\n const configFilePath = this.buildAgent.getInput('configFilePath')\n const overrideConfig = this.buildAgent.getListInput('overrideConfig')\n\n const updateAssemblyInfo = this.buildAgent.getBooleanInput('updateAssemblyInfo')\n const updateAssemblyInfoFilename = this.buildAgent.getInput('updateAssemblyInfoFilename')\n\n const updateProjectFiles = this.buildAgent.getBooleanInput('updateProjectFiles')\n\n return {\n targetPath,\n disableCache,\n disableNormalization,\n disableShallowCloneCheck,\n useConfigFile,\n configFilePath,\n overrideConfig,\n updateAssemblyInfo,\n updateAssemblyInfoFilename,\n updateProjectFiles\n }\n }\n\n getCommandSettings(): CommandSettings {\n const targetPath = this.buildAgent.getInput('targetPath')\n const disableShallowCloneCheck = this.buildAgent.getBooleanInput('disableShallowCloneCheck')\n const args = this.buildAgent.getInput('arguments')\n\n return {\n targetPath,\n disableShallowCloneCheck,\n arguments: args\n }\n }\n}\n","import { type ExecResult } from '@agents/common'\nimport { ArgumentsBuilder, DotnetTool, keysOf } from '@tools/common'\nimport { type CommandSettings, type ExecuteSettings, type GitVersionOutput } from './models'\nimport { GitVersionSettingsProvider, type IGitVersionSettingsProvider } from './settings'\n\nexport class GitVersionTool extends DotnetTool {\n get packageName(): string {\n return 'GitVersion.Tool'\n }\n\n get toolName(): string {\n return 'dotnet-gitversion'\n }\n\n get toolPathVariable(): string {\n return 'GITVERSION_PATH'\n }\n\n get versionRange(): string | null {\n return '>=5.2.0 <7.0.0'\n }\n\n get settingsProvider(): IGitVersionSettingsProvider {\n return new GitVersionSettingsProvider(this.buildAgent)\n }\n\n async executeJson(): Promise {\n const settings = this.settingsProvider.getExecuteSettings()\n const workDir = await this.getRepoDir(settings)\n\n await this.checkShallowClone(settings, workDir)\n\n const args = await this.getExecuteArguments(workDir, settings)\n\n await this.setDotnetRoot()\n return await this.executeTool(args)\n }\n\n async executeCommand(): Promise {\n const settings = this.settingsProvider.getCommandSettings()\n const workDir = await this.getRepoDir(settings)\n\n await this.checkShallowClone(settings, workDir)\n\n const args = this.getCommandArguments(workDir, settings)\n\n await this.setDotnetRoot()\n return await this.executeTool(args)\n }\n\n writeGitVersionToAgent(output: GitVersionOutput): void {\n for (const property of keysOf(output)) {\n const name = this.toCamelCase(property)\n try {\n let value = output[property]?.toString()\n if (value === '0') {\n value = '0'\n }\n this.buildAgent.setOutput(name, value)\n this.buildAgent.setOutput(`GitVersion_${property}`, value)\n this.buildAgent.setOutput(`GitVersion.${property}`, value)\n this.buildAgent.setVariable(name, value)\n this.buildAgent.setVariable(`GitVersion_${property}`, value)\n this.buildAgent.setVariable(`GitVersion.${property}`, value)\n } catch (_error) {\n this.buildAgent.error(`Unable to set output/variable for ${property}`)\n }\n }\n\n if (output.FullSemVer.endsWith('+0')) {\n output.FullSemVer = output.FullSemVer.slice(0, -2)\n }\n this.buildAgent.updateBuildNumber(output.FullSemVer)\n }\n\n protected async getRepoDir(settings: ExecuteSettings | CommandSettings): Promise {\n return await super.getRepoPath(settings.targetPath)\n }\n\n protected async getExecuteArguments(workDir: string, options: ExecuteSettings): Promise {\n const builder = new ArgumentsBuilder().addArgument(workDir).addArgument('/output').addArgument('json').addArgument('/l').addArgument('console')\n\n const {\n useConfigFile,\n disableCache,\n disableNormalization,\n configFilePath,\n overrideConfig,\n updateAssemblyInfo,\n updateAssemblyInfoFilename,\n updateProjectFiles\n //\n } = options\n\n if (disableCache) {\n builder.addArgument('/nocache')\n }\n\n if (disableNormalization) {\n builder.addArgument('/nonormalize')\n }\n\n if (useConfigFile) {\n if (await this.isValidInputFile('configFilePath', configFilePath)) {\n builder.addArgument('/config').addArgument(configFilePath)\n } else {\n throw new Error(`GitVersion configuration file not found at ${configFilePath}`)\n }\n }\n\n if (overrideConfig) {\n for (let config of overrideConfig) {\n config = config.trim()\n if (config.match(/([a-zA-Z0-9]+(-[a-zA-Z]+)*=[a-zA-Z0-9\\- :.']*)/)) {\n builder.addArgument('/overrideconfig').addArgument(config)\n }\n }\n }\n\n if (updateAssemblyInfo) {\n builder.addArgument('/updateassemblyinfo')\n\n // You can specify 'updateAssemblyInfo' without 'updateAssemblyInfoFilename'.\n if (updateAssemblyInfoFilename?.length > 0) {\n if (await this.isValidInputFile('updateAssemblyInfoFilename', updateAssemblyInfoFilename)) {\n builder.addArgument(updateAssemblyInfoFilename)\n } else {\n throw new Error(`AssemblyInfoFilename file not found at ${updateAssemblyInfoFilename}`)\n }\n }\n }\n\n if (updateProjectFiles) {\n builder.addArgument('/updateprojectfiles')\n }\n\n return builder.build()\n }\n\n protected getCommandArguments(workDir: string, options: CommandSettings): string[] {\n const builder = new ArgumentsBuilder().addArgument(workDir)\n\n if (options.arguments) {\n builder.addArguments(ArgumentsBuilder.parseArgumentString(options.arguments))\n }\n\n return builder.build()\n }\n\n private async checkShallowClone(settings: ExecuteSettings | CommandSettings, workDir: string): Promise {\n if (!settings.disableShallowCloneCheck) {\n const isShallowResult = await this.execute('git', ['-C', workDir, 'rev-parse', '--is-shallow-repository'])\n if (isShallowResult.code === 0 && isShallowResult.stdout?.trim() === 'true') {\n throw new Error(\n 'The repository is shallow. Consider disabling shallow clones. See https://github.com/GitTools/actions/blob/main/docs/cloning.md for more information.'\n )\n }\n }\n }\n\n private toCamelCase(input: string): string {\n return input.replace(/^\\w|[A-Z]|\\b\\w|\\s+/g, function (match, index) {\n if (+match === 0) return '' // or if (/\\s+/.test(match)) for white spaces\n return index === 0 ? match.toLowerCase() : match.toUpperCase()\n })\n }\n}\n","import { type ExecResult, type IBuildAgent } from '@agents/common'\nimport { type Commands, type GitVersionOutput } from './models'\nimport { GitVersionTool } from './tool'\nimport { RunnerBase } from '../common/runner'\n\nexport class Runner extends RunnerBase {\n protected readonly tool: GitVersionTool\n\n constructor(protected readonly buildAgent: IBuildAgent) {\n super(buildAgent)\n this.tool = new GitVersionTool(this.buildAgent)\n }\n\n async run(command: Commands): Promise {\n switch (command) {\n case 'setup':\n return await this.setup()\n case 'execute':\n return await this.execute()\n case 'command':\n return await this.command()\n }\n }\n\n private async setup(): Promise {\n return this.safeExecute(async () => {\n await this.tool.install()\n return { code: 0 }\n }, 'GitVersion setup successfully')\n }\n\n private async execute(): Promise {\n return this.safeExecute(async () => {\n const result = await this.tool.executeJson()\n this.buildAgent.debug('Parsing GitVersion output')\n return this.processGitVersionOutput(result)\n }, 'GitVersion executed successfully')\n }\n\n private async command(): Promise {\n return this.safeExecute(async () => await this.tool.executeCommand(), 'GitVersion executed successfully')\n }\n\n private processGitVersionOutput(result: ExecResult): ExecResult {\n const stdout = result.stdout as string\n if (stdout.lastIndexOf('{') === -1 || stdout.lastIndexOf('}') === -1) {\n this.buildAgent.debug('GitVersion output is not valid JSON')\n this.buildAgent.setFailed('GitVersion output is not valid JSON', true)\n return {\n code: -1,\n error: new Error('GitVersion output is not valid JSON')\n }\n } else {\n const jsonOutput = stdout.substring(stdout.lastIndexOf('{'), stdout.lastIndexOf('}') + 1)\n\n const gitVersionOutput = JSON.parse(jsonOutput) as GitVersionOutput\n this.tool.writeGitVersionToAgent(gitVersionOutput)\n this.buildAgent.setSucceeded('GitVersion executed successfully', true)\n return result\n }\n }\n}\n"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/tools/libs/semver.mjs b/dist/tools/libs/semver.mjs index 26d8054d4..697e5c53f 100644 --- a/dist/tools/libs/semver.mjs +++ b/dist/tools/libs/semver.mjs @@ -80,6 +80,7 @@ function requireRe () { const re = exports.re = []; const safeRe = exports.safeRe = []; const src = exports.src = []; + const safeSrc = exports.safeSrc = []; const t = exports.t = {}; let R = 0; @@ -112,6 +113,7 @@ function requireRe () { debug(name, index, value); t[name] = index; src[index] = value; + safeSrc[index] = safe; re[index] = new RegExp(value, isGlobal ? 'g' : undefined); safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined); }; @@ -353,7 +355,7 @@ function requireSemver$1 () { hasRequiredSemver$1 = 1; const debug = requireDebug(); const { MAX_LENGTH, MAX_SAFE_INTEGER } = requireConstants(); - const { safeRe: re, t } = requireRe(); + const { safeRe: re, safeSrc: src, t } = requireRe(); const parseOptions = requireParseOptions(); const { compareIdentifiers } = requireIdentifiers(); @@ -363,7 +365,7 @@ function requireSemver$1 () { if (version instanceof SemVer) { if (version.loose === !!options.loose && - version.includePrerelease === !!options.includePrerelease) { + version.includePrerelease === !!options.includePrerelease) { return version } else { version = version.version; @@ -529,6 +531,20 @@ function requireSemver$1 () { // preminor will bump the version up to the next minor release, and immediately // down to pre-release. premajor and prepatch work the same way. inc (release, identifier, identifierBase) { + if (release.startsWith('pre')) { + if (!identifier && identifierBase === false) { + throw new Error('invalid increment argument: identifier is empty') + } + // Avoid an invalid semver results + if (identifier) { + const r = new RegExp(`^${this.options.loose ? src[t.PRERELEASELOOSE] : src[t.PRERELEASE]}$`); + const match = `-${identifier}`.match(r); + if (!match || match[1] !== identifier) { + throw new Error(`invalid identifier: ${identifier}`) + } + } + } + switch (release) { case 'premajor': this.prerelease.length = 0; @@ -559,6 +575,12 @@ function requireSemver$1 () { } this.inc('pre', identifier, identifierBase); break + case 'release': + if (this.prerelease.length === 0) { + throw new Error(`version ${this.raw} is not a prerelease`) + } + this.prerelease.length = 0; + break case 'major': // If this is a pre-major version, bump up to the same major version. @@ -602,10 +624,6 @@ function requireSemver$1 () { case 'pre': { const base = Number(identifierBase) ? 1 : 0; - if (!identifier && identifierBase === false) { - throw new Error('invalid increment argument: identifier is empty') - } - if (this.prerelease.length === 0) { this.prerelease = [base]; } else { @@ -774,20 +792,13 @@ function requireDiff () { return 'major' } - // Otherwise it can be determined by checking the high version - - if (highVersion.patch) { - // anything higher than a patch bump would result in the wrong version + // If the main part has no difference + if (lowVersion.compareMain(highVersion) === 0) { + if (lowVersion.minor && !lowVersion.patch) { + return 'minor' + } return 'patch' } - - if (highVersion.minor) { - // anything higher than a minor bump would result in the wrong version - return 'minor' - } - - // bumping major/minor/patch all have same result - return 'major' } // add the `pre` prefix if we are going to a prerelease version diff --git a/dist/tools/libs/semver.mjs.map b/dist/tools/libs/semver.mjs.map index dd80c664c..71e0bd567 100644 --- a/dist/tools/libs/semver.mjs.map +++ b/dist/tools/libs/semver.mjs.map @@ -1 +1 @@ -{"version":3,"file":"semver.mjs","sources":["../../../node_modules/semver/internal/constants.js","../../../node_modules/semver/internal/debug.js","../../../node_modules/semver/internal/re.js","../../../node_modules/semver/internal/parse-options.js","../../../node_modules/semver/internal/identifiers.js","../../../node_modules/semver/classes/semver.js","../../../node_modules/semver/functions/parse.js","../../../node_modules/semver/functions/valid.js","../../../node_modules/semver/functions/clean.js","../../../node_modules/semver/functions/inc.js","../../../node_modules/semver/functions/diff.js","../../../node_modules/semver/functions/major.js","../../../node_modules/semver/functions/minor.js","../../../node_modules/semver/functions/patch.js","../../../node_modules/semver/functions/prerelease.js","../../../node_modules/semver/functions/compare.js","../../../node_modules/semver/functions/rcompare.js","../../../node_modules/semver/functions/compare-loose.js","../../../node_modules/semver/functions/compare-build.js","../../../node_modules/semver/functions/sort.js","../../../node_modules/semver/functions/rsort.js","../../../node_modules/semver/functions/gt.js","../../../node_modules/semver/functions/lt.js","../../../node_modules/semver/functions/eq.js","../../../node_modules/semver/functions/neq.js","../../../node_modules/semver/functions/gte.js","../../../node_modules/semver/functions/lte.js","../../../node_modules/semver/functions/cmp.js","../../../node_modules/semver/functions/coerce.js","../../../node_modules/semver/internal/lrucache.js","../../../node_modules/semver/classes/range.js","../../../node_modules/semver/classes/comparator.js","../../../node_modules/semver/functions/satisfies.js","../../../node_modules/semver/ranges/to-comparators.js","../../../node_modules/semver/ranges/max-satisfying.js","../../../node_modules/semver/ranges/min-satisfying.js","../../../node_modules/semver/ranges/min-version.js","../../../node_modules/semver/ranges/valid.js","../../../node_modules/semver/ranges/outside.js","../../../node_modules/semver/ranges/gtr.js","../../../node_modules/semver/ranges/ltr.js","../../../node_modules/semver/ranges/intersects.js","../../../node_modules/semver/ranges/simplify.js","../../../node_modules/semver/ranges/subset.js","../../../node_modules/semver/index.js"],"sourcesContent":["// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // Otherwise it can be determined by checking the high version\n\n if (highVersion.patch) {\n // anything higher than a patch bump would result in the wrong version\n return 'patch'\n }\n\n if (highVersion.minor) {\n // anything higher than a minor bump would result in the wrong version\n return 'minor'\n }\n\n // bumping major/minor/patch all have same result\n return 'major'\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","const SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n"],"names":["require$$0","require$$1","require$$2","require$$3","require$$4","semver","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","require$$39","require$$40"],"mappings":"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","x_google_ignoreList":[0,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]} \ No newline at end of file +{"version":3,"file":"semver.mjs","sources":["../../../node_modules/semver/internal/constants.js","../../../node_modules/semver/internal/debug.js","../../../node_modules/semver/internal/re.js","../../../node_modules/semver/internal/parse-options.js","../../../node_modules/semver/internal/identifiers.js","../../../node_modules/semver/classes/semver.js","../../../node_modules/semver/functions/parse.js","../../../node_modules/semver/functions/valid.js","../../../node_modules/semver/functions/clean.js","../../../node_modules/semver/functions/inc.js","../../../node_modules/semver/functions/diff.js","../../../node_modules/semver/functions/major.js","../../../node_modules/semver/functions/minor.js","../../../node_modules/semver/functions/patch.js","../../../node_modules/semver/functions/prerelease.js","../../../node_modules/semver/functions/compare.js","../../../node_modules/semver/functions/rcompare.js","../../../node_modules/semver/functions/compare-loose.js","../../../node_modules/semver/functions/compare-build.js","../../../node_modules/semver/functions/sort.js","../../../node_modules/semver/functions/rsort.js","../../../node_modules/semver/functions/gt.js","../../../node_modules/semver/functions/lt.js","../../../node_modules/semver/functions/eq.js","../../../node_modules/semver/functions/neq.js","../../../node_modules/semver/functions/gte.js","../../../node_modules/semver/functions/lte.js","../../../node_modules/semver/functions/cmp.js","../../../node_modules/semver/functions/coerce.js","../../../node_modules/semver/internal/lrucache.js","../../../node_modules/semver/classes/range.js","../../../node_modules/semver/classes/comparator.js","../../../node_modules/semver/functions/satisfies.js","../../../node_modules/semver/ranges/to-comparators.js","../../../node_modules/semver/ranges/max-satisfying.js","../../../node_modules/semver/ranges/min-satisfying.js","../../../node_modules/semver/ranges/min-version.js","../../../node_modules/semver/ranges/valid.js","../../../node_modules/semver/ranges/outside.js","../../../node_modules/semver/ranges/gtr.js","../../../node_modules/semver/ranges/ltr.js","../../../node_modules/semver/ranges/intersects.js","../../../node_modules/semver/ranges/simplify.js","../../../node_modules/semver/ranges/subset.js","../../../node_modules/semver/index.js"],"sourcesContent":["// Note: this is the semver.org version of the spec that it implements\n// Not necessarily the package version of this code.\nconst SEMVER_SPEC_VERSION = '2.0.0'\n\nconst MAX_LENGTH = 256\nconst MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER ||\n/* istanbul ignore next */ 9007199254740991\n\n// Max safe segment length for coercion.\nconst MAX_SAFE_COMPONENT_LENGTH = 16\n\n// Max safe length for a build identifier. The max length minus 6 characters for\n// the shortest version with a build 0.0.0+BUILD.\nconst MAX_SAFE_BUILD_LENGTH = MAX_LENGTH - 6\n\nconst RELEASE_TYPES = [\n 'major',\n 'premajor',\n 'minor',\n 'preminor',\n 'patch',\n 'prepatch',\n 'prerelease',\n]\n\nmodule.exports = {\n MAX_LENGTH,\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_SAFE_INTEGER,\n RELEASE_TYPES,\n SEMVER_SPEC_VERSION,\n FLAG_INCLUDE_PRERELEASE: 0b001,\n FLAG_LOOSE: 0b010,\n}\n","const debug = (\n typeof process === 'object' &&\n process.env &&\n process.env.NODE_DEBUG &&\n /\\bsemver\\b/i.test(process.env.NODE_DEBUG)\n) ? (...args) => console.error('SEMVER', ...args)\n : () => {}\n\nmodule.exports = debug\n","const {\n MAX_SAFE_COMPONENT_LENGTH,\n MAX_SAFE_BUILD_LENGTH,\n MAX_LENGTH,\n} = require('./constants')\nconst debug = require('./debug')\nexports = module.exports = {}\n\n// The actual regexps go on exports.re\nconst re = exports.re = []\nconst safeRe = exports.safeRe = []\nconst src = exports.src = []\nconst safeSrc = exports.safeSrc = []\nconst t = exports.t = {}\nlet R = 0\n\nconst LETTERDASHNUMBER = '[a-zA-Z0-9-]'\n\n// Replace some greedy regex tokens to prevent regex dos issues. These regex are\n// used internally via the safeRe object since all inputs in this library get\n// normalized first to trim and collapse all extra whitespace. The original\n// regexes are exported for userland consumption and lower level usage. A\n// future breaking change could export the safer regex only with a note that\n// all input should have extra whitespace removed.\nconst safeRegexReplacements = [\n ['\\\\s', 1],\n ['\\\\d', MAX_LENGTH],\n [LETTERDASHNUMBER, MAX_SAFE_BUILD_LENGTH],\n]\n\nconst makeSafeRegex = (value) => {\n for (const [token, max] of safeRegexReplacements) {\n value = value\n .split(`${token}*`).join(`${token}{0,${max}}`)\n .split(`${token}+`).join(`${token}{1,${max}}`)\n }\n return value\n}\n\nconst createToken = (name, value, isGlobal) => {\n const safe = makeSafeRegex(value)\n const index = R++\n debug(name, index, value)\n t[name] = index\n src[index] = value\n safeSrc[index] = safe\n re[index] = new RegExp(value, isGlobal ? 'g' : undefined)\n safeRe[index] = new RegExp(safe, isGlobal ? 'g' : undefined)\n}\n\n// The following Regular Expressions can be used for tokenizing,\n// validating, and parsing SemVer version strings.\n\n// ## Numeric Identifier\n// A single `0`, or a non-zero digit followed by zero or more digits.\n\ncreateToken('NUMERICIDENTIFIER', '0|[1-9]\\\\d*')\ncreateToken('NUMERICIDENTIFIERLOOSE', '\\\\d+')\n\n// ## Non-numeric Identifier\n// Zero or more digits, followed by a letter or hyphen, and then zero or\n// more letters, digits, or hyphens.\n\ncreateToken('NONNUMERICIDENTIFIER', `\\\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`)\n\n// ## Main Version\n// Three dot-separated numeric identifiers.\n\ncreateToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIER]})`)\n\ncreateToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})\\\\.` +\n `(${src[t.NUMERICIDENTIFIERLOOSE]})`)\n\n// ## Pre-release Version Identifier\n// A numeric identifier, or a non-numeric identifier.\n\ncreateToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\ncreateToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE]\n}|${src[t.NONNUMERICIDENTIFIER]})`)\n\n// ## Pre-release Version\n// Hyphen, followed by one or more dot-separated pre-release version\n// identifiers.\n\ncreateToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIER]})*))`)\n\ncreateToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]\n}(?:\\\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`)\n\n// ## Build Metadata Identifier\n// Any combination of digits, letters, or hyphens.\n\ncreateToken('BUILDIDENTIFIER', `${LETTERDASHNUMBER}+`)\n\n// ## Build Metadata\n// Plus sign, followed by one or more period-separated build metadata\n// identifiers.\n\ncreateToken('BUILD', `(?:\\\\+(${src[t.BUILDIDENTIFIER]\n}(?:\\\\.${src[t.BUILDIDENTIFIER]})*))`)\n\n// ## Full Version String\n// A main version, followed optionally by a pre-release version and\n// build metadata.\n\n// Note that the only major, minor, patch, and pre-release sections of\n// the version string are capturing groups. The build metadata is not a\n// capturing group, because it should not ever be used in version\n// comparison.\n\ncreateToken('FULLPLAIN', `v?${src[t.MAINVERSION]\n}${src[t.PRERELEASE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('FULL', `^${src[t.FULLPLAIN]}$`)\n\n// like full, but allows v1.2.3 and =1.2.3, which people do sometimes.\n// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty\n// common in the npm registry.\ncreateToken('LOOSEPLAIN', `[v=\\\\s]*${src[t.MAINVERSIONLOOSE]\n}${src[t.PRERELEASELOOSE]}?${\n src[t.BUILD]}?`)\n\ncreateToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`)\n\ncreateToken('GTLT', '((?:<|>)?=?)')\n\n// Something like \"2.*\" or \"1.2.x\".\n// Note that \"x.x\" is a valid xRange identifer, meaning \"any version\"\n// Only the first item is strictly required.\ncreateToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\\\*`)\ncreateToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\\\*`)\n\ncreateToken('XRANGEPLAIN', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIER]})` +\n `(?:${src[t.PRERELEASE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGEPLAINLOOSE', `[v=\\\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:\\\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` +\n `(?:${src[t.PRERELEASELOOSE]})?${\n src[t.BUILD]}?` +\n `)?)?`)\n\ncreateToken('XRANGE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAIN]}$`)\ncreateToken('XRANGELOOSE', `^${src[t.GTLT]}\\\\s*${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Coercion.\n// Extract anything that could conceivably be a part of a valid semver\ncreateToken('COERCEPLAIN', `${'(^|[^\\\\d])' +\n '(\\\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` +\n `(?:\\\\.(\\\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?`)\ncreateToken('COERCE', `${src[t.COERCEPLAIN]}(?:$|[^\\\\d])`)\ncreateToken('COERCEFULL', src[t.COERCEPLAIN] +\n `(?:${src[t.PRERELEASE]})?` +\n `(?:${src[t.BUILD]})?` +\n `(?:$|[^\\\\d])`)\ncreateToken('COERCERTL', src[t.COERCE], true)\ncreateToken('COERCERTLFULL', src[t.COERCEFULL], true)\n\n// Tilde ranges.\n// Meaning is \"reasonably at or greater than\"\ncreateToken('LONETILDE', '(?:~>?)')\n\ncreateToken('TILDETRIM', `(\\\\s*)${src[t.LONETILDE]}\\\\s+`, true)\nexports.tildeTrimReplace = '$1~'\n\ncreateToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// Caret ranges.\n// Meaning is \"at least and backwards compatible with\"\ncreateToken('LONECARET', '(?:\\\\^)')\n\ncreateToken('CARETTRIM', `(\\\\s*)${src[t.LONECARET]}\\\\s+`, true)\nexports.caretTrimReplace = '$1^'\n\ncreateToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`)\ncreateToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`)\n\n// A simple gt/lt/eq thing, or just \"\" to indicate \"any version\"\ncreateToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\\\s*(${src[t.LOOSEPLAIN]})$|^$`)\ncreateToken('COMPARATOR', `^${src[t.GTLT]}\\\\s*(${src[t.FULLPLAIN]})$|^$`)\n\n// An expression to strip any whitespace between the gtlt and the thing\n// it modifies, so that `> 1.2.3` ==> `>1.2.3`\ncreateToken('COMPARATORTRIM', `(\\\\s*)${src[t.GTLT]\n}\\\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true)\nexports.comparatorTrimReplace = '$1$2$3'\n\n// Something like `1.2.3 - 1.2.4`\n// Note that these all use the loose form, because they'll be\n// checked against either the strict or loose comparator form\n// later.\ncreateToken('HYPHENRANGE', `^\\\\s*(${src[t.XRANGEPLAIN]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAIN]})` +\n `\\\\s*$`)\n\ncreateToken('HYPHENRANGELOOSE', `^\\\\s*(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s+-\\\\s+` +\n `(${src[t.XRANGEPLAINLOOSE]})` +\n `\\\\s*$`)\n\n// Star ranges basically just allow anything at all.\ncreateToken('STAR', '(<|>)?=?\\\\s*\\\\*')\n// >=0.0.0 is like a star\ncreateToken('GTE0', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0\\\\s*$')\ncreateToken('GTE0PRE', '^\\\\s*>=\\\\s*0\\\\.0\\\\.0-0\\\\s*$')\n","// parse out just the options we care about\nconst looseOption = Object.freeze({ loose: true })\nconst emptyOpts = Object.freeze({ })\nconst parseOptions = options => {\n if (!options) {\n return emptyOpts\n }\n\n if (typeof options !== 'object') {\n return looseOption\n }\n\n return options\n}\nmodule.exports = parseOptions\n","const numeric = /^[0-9]+$/\nconst compareIdentifiers = (a, b) => {\n const anum = numeric.test(a)\n const bnum = numeric.test(b)\n\n if (anum && bnum) {\n a = +a\n b = +b\n }\n\n return a === b ? 0\n : (anum && !bnum) ? -1\n : (bnum && !anum) ? 1\n : a < b ? -1\n : 1\n}\n\nconst rcompareIdentifiers = (a, b) => compareIdentifiers(b, a)\n\nmodule.exports = {\n compareIdentifiers,\n rcompareIdentifiers,\n}\n","const debug = require('../internal/debug')\nconst { MAX_LENGTH, MAX_SAFE_INTEGER } = require('../internal/constants')\nconst { safeRe: re, safeSrc: src, t } = require('../internal/re')\n\nconst parseOptions = require('../internal/parse-options')\nconst { compareIdentifiers } = require('../internal/identifiers')\nclass SemVer {\n constructor (version, options) {\n options = parseOptions(options)\n\n if (version instanceof SemVer) {\n if (version.loose === !!options.loose &&\n version.includePrerelease === !!options.includePrerelease) {\n return version\n } else {\n version = version.version\n }\n } else if (typeof version !== 'string') {\n throw new TypeError(`Invalid version. Must be a string. Got type \"${typeof version}\".`)\n }\n\n if (version.length > MAX_LENGTH) {\n throw new TypeError(\n `version is longer than ${MAX_LENGTH} characters`\n )\n }\n\n debug('SemVer', version, options)\n this.options = options\n this.loose = !!options.loose\n // this isn't actually relevant for versions, but keep it so that we\n // don't run into trouble passing this.options around.\n this.includePrerelease = !!options.includePrerelease\n\n const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL])\n\n if (!m) {\n throw new TypeError(`Invalid Version: ${version}`)\n }\n\n this.raw = version\n\n // these are actually numbers\n this.major = +m[1]\n this.minor = +m[2]\n this.patch = +m[3]\n\n if (this.major > MAX_SAFE_INTEGER || this.major < 0) {\n throw new TypeError('Invalid major version')\n }\n\n if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) {\n throw new TypeError('Invalid minor version')\n }\n\n if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) {\n throw new TypeError('Invalid patch version')\n }\n\n // numberify any prerelease numeric ids\n if (!m[4]) {\n this.prerelease = []\n } else {\n this.prerelease = m[4].split('.').map((id) => {\n if (/^[0-9]+$/.test(id)) {\n const num = +id\n if (num >= 0 && num < MAX_SAFE_INTEGER) {\n return num\n }\n }\n return id\n })\n }\n\n this.build = m[5] ? m[5].split('.') : []\n this.format()\n }\n\n format () {\n this.version = `${this.major}.${this.minor}.${this.patch}`\n if (this.prerelease.length) {\n this.version += `-${this.prerelease.join('.')}`\n }\n return this.version\n }\n\n toString () {\n return this.version\n }\n\n compare (other) {\n debug('SemVer.compare', this.version, this.options, other)\n if (!(other instanceof SemVer)) {\n if (typeof other === 'string' && other === this.version) {\n return 0\n }\n other = new SemVer(other, this.options)\n }\n\n if (other.version === this.version) {\n return 0\n }\n\n return this.compareMain(other) || this.comparePre(other)\n }\n\n compareMain (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n return (\n compareIdentifiers(this.major, other.major) ||\n compareIdentifiers(this.minor, other.minor) ||\n compareIdentifiers(this.patch, other.patch)\n )\n }\n\n comparePre (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n // NOT having a prerelease is > having one\n if (this.prerelease.length && !other.prerelease.length) {\n return -1\n } else if (!this.prerelease.length && other.prerelease.length) {\n return 1\n } else if (!this.prerelease.length && !other.prerelease.length) {\n return 0\n }\n\n let i = 0\n do {\n const a = this.prerelease[i]\n const b = other.prerelease[i]\n debug('prerelease compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n compareBuild (other) {\n if (!(other instanceof SemVer)) {\n other = new SemVer(other, this.options)\n }\n\n let i = 0\n do {\n const a = this.build[i]\n const b = other.build[i]\n debug('build compare', i, a, b)\n if (a === undefined && b === undefined) {\n return 0\n } else if (b === undefined) {\n return 1\n } else if (a === undefined) {\n return -1\n } else if (a === b) {\n continue\n } else {\n return compareIdentifiers(a, b)\n }\n } while (++i)\n }\n\n // preminor will bump the version up to the next minor release, and immediately\n // down to pre-release. premajor and prepatch work the same way.\n inc (release, identifier, identifierBase) {\n if (release.startsWith('pre')) {\n if (!identifier && identifierBase === false) {\n throw new Error('invalid increment argument: identifier is empty')\n }\n // Avoid an invalid semver results\n if (identifier) {\n const r = new RegExp(`^${this.options.loose ? src[t.PRERELEASELOOSE] : src[t.PRERELEASE]}$`)\n const match = `-${identifier}`.match(r)\n if (!match || match[1] !== identifier) {\n throw new Error(`invalid identifier: ${identifier}`)\n }\n }\n }\n\n switch (release) {\n case 'premajor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor = 0\n this.major++\n this.inc('pre', identifier, identifierBase)\n break\n case 'preminor':\n this.prerelease.length = 0\n this.patch = 0\n this.minor++\n this.inc('pre', identifier, identifierBase)\n break\n case 'prepatch':\n // If this is already a prerelease, it will bump to the next version\n // drop any prereleases that might already exist, since they are not\n // relevant at this point.\n this.prerelease.length = 0\n this.inc('patch', identifier, identifierBase)\n this.inc('pre', identifier, identifierBase)\n break\n // If the input is a non-prerelease version, this acts the same as\n // prepatch.\n case 'prerelease':\n if (this.prerelease.length === 0) {\n this.inc('patch', identifier, identifierBase)\n }\n this.inc('pre', identifier, identifierBase)\n break\n case 'release':\n if (this.prerelease.length === 0) {\n throw new Error(`version ${this.raw} is not a prerelease`)\n }\n this.prerelease.length = 0\n break\n\n case 'major':\n // If this is a pre-major version, bump up to the same major version.\n // Otherwise increment major.\n // 1.0.0-5 bumps to 1.0.0\n // 1.1.0 bumps to 2.0.0\n if (\n this.minor !== 0 ||\n this.patch !== 0 ||\n this.prerelease.length === 0\n ) {\n this.major++\n }\n this.minor = 0\n this.patch = 0\n this.prerelease = []\n break\n case 'minor':\n // If this is a pre-minor version, bump up to the same minor version.\n // Otherwise increment minor.\n // 1.2.0-5 bumps to 1.2.0\n // 1.2.1 bumps to 1.3.0\n if (this.patch !== 0 || this.prerelease.length === 0) {\n this.minor++\n }\n this.patch = 0\n this.prerelease = []\n break\n case 'patch':\n // If this is not a pre-release version, it will increment the patch.\n // If it is a pre-release it will bump up to the same patch version.\n // 1.2.0-5 patches to 1.2.0\n // 1.2.0 patches to 1.2.1\n if (this.prerelease.length === 0) {\n this.patch++\n }\n this.prerelease = []\n break\n // This probably shouldn't be used publicly.\n // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.\n case 'pre': {\n const base = Number(identifierBase) ? 1 : 0\n\n if (this.prerelease.length === 0) {\n this.prerelease = [base]\n } else {\n let i = this.prerelease.length\n while (--i >= 0) {\n if (typeof this.prerelease[i] === 'number') {\n this.prerelease[i]++\n i = -2\n }\n }\n if (i === -1) {\n // didn't increment anything\n if (identifier === this.prerelease.join('.') && identifierBase === false) {\n throw new Error('invalid increment argument: identifier already exists')\n }\n this.prerelease.push(base)\n }\n }\n if (identifier) {\n // 1.2.0-beta.1 bumps to 1.2.0-beta.2,\n // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0\n let prerelease = [identifier, base]\n if (identifierBase === false) {\n prerelease = [identifier]\n }\n if (compareIdentifiers(this.prerelease[0], identifier) === 0) {\n if (isNaN(this.prerelease[1])) {\n this.prerelease = prerelease\n }\n } else {\n this.prerelease = prerelease\n }\n }\n break\n }\n default:\n throw new Error(`invalid increment argument: ${release}`)\n }\n this.raw = this.format()\n if (this.build.length) {\n this.raw += `+${this.build.join('.')}`\n }\n return this\n }\n}\n\nmodule.exports = SemVer\n","const SemVer = require('../classes/semver')\nconst parse = (version, options, throwErrors = false) => {\n if (version instanceof SemVer) {\n return version\n }\n try {\n return new SemVer(version, options)\n } catch (er) {\n if (!throwErrors) {\n return null\n }\n throw er\n }\n}\n\nmodule.exports = parse\n","const parse = require('./parse')\nconst valid = (version, options) => {\n const v = parse(version, options)\n return v ? v.version : null\n}\nmodule.exports = valid\n","const parse = require('./parse')\nconst clean = (version, options) => {\n const s = parse(version.trim().replace(/^[=v]+/, ''), options)\n return s ? s.version : null\n}\nmodule.exports = clean\n","const SemVer = require('../classes/semver')\n\nconst inc = (version, release, options, identifier, identifierBase) => {\n if (typeof (options) === 'string') {\n identifierBase = identifier\n identifier = options\n options = undefined\n }\n\n try {\n return new SemVer(\n version instanceof SemVer ? version.version : version,\n options\n ).inc(release, identifier, identifierBase).version\n } catch (er) {\n return null\n }\n}\nmodule.exports = inc\n","const parse = require('./parse.js')\n\nconst diff = (version1, version2) => {\n const v1 = parse(version1, null, true)\n const v2 = parse(version2, null, true)\n const comparison = v1.compare(v2)\n\n if (comparison === 0) {\n return null\n }\n\n const v1Higher = comparison > 0\n const highVersion = v1Higher ? v1 : v2\n const lowVersion = v1Higher ? v2 : v1\n const highHasPre = !!highVersion.prerelease.length\n const lowHasPre = !!lowVersion.prerelease.length\n\n if (lowHasPre && !highHasPre) {\n // Going from prerelease -> no prerelease requires some special casing\n\n // If the low version has only a major, then it will always be a major\n // Some examples:\n // 1.0.0-1 -> 1.0.0\n // 1.0.0-1 -> 1.1.1\n // 1.0.0-1 -> 2.0.0\n if (!lowVersion.patch && !lowVersion.minor) {\n return 'major'\n }\n\n // If the main part has no difference\n if (lowVersion.compareMain(highVersion) === 0) {\n if (lowVersion.minor && !lowVersion.patch) {\n return 'minor'\n }\n return 'patch'\n }\n }\n\n // add the `pre` prefix if we are going to a prerelease version\n const prefix = highHasPre ? 'pre' : ''\n\n if (v1.major !== v2.major) {\n return prefix + 'major'\n }\n\n if (v1.minor !== v2.minor) {\n return prefix + 'minor'\n }\n\n if (v1.patch !== v2.patch) {\n return prefix + 'patch'\n }\n\n // high and low are preleases\n return 'prerelease'\n}\n\nmodule.exports = diff\n","const SemVer = require('../classes/semver')\nconst major = (a, loose) => new SemVer(a, loose).major\nmodule.exports = major\n","const SemVer = require('../classes/semver')\nconst minor = (a, loose) => new SemVer(a, loose).minor\nmodule.exports = minor\n","const SemVer = require('../classes/semver')\nconst patch = (a, loose) => new SemVer(a, loose).patch\nmodule.exports = patch\n","const parse = require('./parse')\nconst prerelease = (version, options) => {\n const parsed = parse(version, options)\n return (parsed && parsed.prerelease.length) ? parsed.prerelease : null\n}\nmodule.exports = prerelease\n","const SemVer = require('../classes/semver')\nconst compare = (a, b, loose) =>\n new SemVer(a, loose).compare(new SemVer(b, loose))\n\nmodule.exports = compare\n","const compare = require('./compare')\nconst rcompare = (a, b, loose) => compare(b, a, loose)\nmodule.exports = rcompare\n","const compare = require('./compare')\nconst compareLoose = (a, b) => compare(a, b, true)\nmodule.exports = compareLoose\n","const SemVer = require('../classes/semver')\nconst compareBuild = (a, b, loose) => {\n const versionA = new SemVer(a, loose)\n const versionB = new SemVer(b, loose)\n return versionA.compare(versionB) || versionA.compareBuild(versionB)\n}\nmodule.exports = compareBuild\n","const compareBuild = require('./compare-build')\nconst sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose))\nmodule.exports = sort\n","const compareBuild = require('./compare-build')\nconst rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose))\nmodule.exports = rsort\n","const compare = require('./compare')\nconst gt = (a, b, loose) => compare(a, b, loose) > 0\nmodule.exports = gt\n","const compare = require('./compare')\nconst lt = (a, b, loose) => compare(a, b, loose) < 0\nmodule.exports = lt\n","const compare = require('./compare')\nconst eq = (a, b, loose) => compare(a, b, loose) === 0\nmodule.exports = eq\n","const compare = require('./compare')\nconst neq = (a, b, loose) => compare(a, b, loose) !== 0\nmodule.exports = neq\n","const compare = require('./compare')\nconst gte = (a, b, loose) => compare(a, b, loose) >= 0\nmodule.exports = gte\n","const compare = require('./compare')\nconst lte = (a, b, loose) => compare(a, b, loose) <= 0\nmodule.exports = lte\n","const eq = require('./eq')\nconst neq = require('./neq')\nconst gt = require('./gt')\nconst gte = require('./gte')\nconst lt = require('./lt')\nconst lte = require('./lte')\n\nconst cmp = (a, op, b, loose) => {\n switch (op) {\n case '===':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a === b\n\n case '!==':\n if (typeof a === 'object') {\n a = a.version\n }\n if (typeof b === 'object') {\n b = b.version\n }\n return a !== b\n\n case '':\n case '=':\n case '==':\n return eq(a, b, loose)\n\n case '!=':\n return neq(a, b, loose)\n\n case '>':\n return gt(a, b, loose)\n\n case '>=':\n return gte(a, b, loose)\n\n case '<':\n return lt(a, b, loose)\n\n case '<=':\n return lte(a, b, loose)\n\n default:\n throw new TypeError(`Invalid operator: ${op}`)\n }\n}\nmodule.exports = cmp\n","const SemVer = require('../classes/semver')\nconst parse = require('./parse')\nconst { safeRe: re, t } = require('../internal/re')\n\nconst coerce = (version, options) => {\n if (version instanceof SemVer) {\n return version\n }\n\n if (typeof version === 'number') {\n version = String(version)\n }\n\n if (typeof version !== 'string') {\n return null\n }\n\n options = options || {}\n\n let match = null\n if (!options.rtl) {\n match = version.match(options.includePrerelease ? re[t.COERCEFULL] : re[t.COERCE])\n } else {\n // Find the right-most coercible string that does not share\n // a terminus with a more left-ward coercible string.\n // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4'\n // With includePrerelease option set, '1.2.3.4-rc' wants to coerce '2.3.4-rc', not '2.3.4'\n //\n // Walk through the string checking with a /g regexp\n // Manually set the index so as to pick up overlapping matches.\n // Stop when we get a match that ends at the string end, since no\n // coercible string can be more right-ward without the same terminus.\n const coerceRtlRegex = options.includePrerelease ? re[t.COERCERTLFULL] : re[t.COERCERTL]\n let next\n while ((next = coerceRtlRegex.exec(version)) &&\n (!match || match.index + match[0].length !== version.length)\n ) {\n if (!match ||\n next.index + next[0].length !== match.index + match[0].length) {\n match = next\n }\n coerceRtlRegex.lastIndex = next.index + next[1].length + next[2].length\n }\n // leave it in a clean state\n coerceRtlRegex.lastIndex = -1\n }\n\n if (match === null) {\n return null\n }\n\n const major = match[2]\n const minor = match[3] || '0'\n const patch = match[4] || '0'\n const prerelease = options.includePrerelease && match[5] ? `-${match[5]}` : ''\n const build = options.includePrerelease && match[6] ? `+${match[6]}` : ''\n\n return parse(`${major}.${minor}.${patch}${prerelease}${build}`, options)\n}\nmodule.exports = coerce\n","class LRUCache {\n constructor () {\n this.max = 1000\n this.map = new Map()\n }\n\n get (key) {\n const value = this.map.get(key)\n if (value === undefined) {\n return undefined\n } else {\n // Remove the key from the map and add it to the end\n this.map.delete(key)\n this.map.set(key, value)\n return value\n }\n }\n\n delete (key) {\n return this.map.delete(key)\n }\n\n set (key, value) {\n const deleted = this.delete(key)\n\n if (!deleted && value !== undefined) {\n // If cache is full, delete the least recently used item\n if (this.map.size >= this.max) {\n const firstKey = this.map.keys().next().value\n this.delete(firstKey)\n }\n\n this.map.set(key, value)\n }\n\n return this\n }\n}\n\nmodule.exports = LRUCache\n","const SPACE_CHARACTERS = /\\s+/g\n\n// hoisted class for cyclic dependency\nclass Range {\n constructor (range, options) {\n options = parseOptions(options)\n\n if (range instanceof Range) {\n if (\n range.loose === !!options.loose &&\n range.includePrerelease === !!options.includePrerelease\n ) {\n return range\n } else {\n return new Range(range.raw, options)\n }\n }\n\n if (range instanceof Comparator) {\n // just put it in the set and return\n this.raw = range.value\n this.set = [[range]]\n this.formatted = undefined\n return this\n }\n\n this.options = options\n this.loose = !!options.loose\n this.includePrerelease = !!options.includePrerelease\n\n // First reduce all whitespace as much as possible so we do not have to rely\n // on potentially slow regexes like \\s*. This is then stored and used for\n // future error messages as well.\n this.raw = range.trim().replace(SPACE_CHARACTERS, ' ')\n\n // First, split on ||\n this.set = this.raw\n .split('||')\n // map the range to a 2d array of comparators\n .map(r => this.parseRange(r.trim()))\n // throw out any comparator lists that are empty\n // this generally means that it was not a valid range, which is allowed\n // in loose mode, but will still throw if the WHOLE range is invalid.\n .filter(c => c.length)\n\n if (!this.set.length) {\n throw new TypeError(`Invalid SemVer Range: ${this.raw}`)\n }\n\n // if we have any that are not the null set, throw out null sets.\n if (this.set.length > 1) {\n // keep the first one, in case they're all null sets\n const first = this.set[0]\n this.set = this.set.filter(c => !isNullSet(c[0]))\n if (this.set.length === 0) {\n this.set = [first]\n } else if (this.set.length > 1) {\n // if we have any that are *, then the range is just *\n for (const c of this.set) {\n if (c.length === 1 && isAny(c[0])) {\n this.set = [c]\n break\n }\n }\n }\n }\n\n this.formatted = undefined\n }\n\n get range () {\n if (this.formatted === undefined) {\n this.formatted = ''\n for (let i = 0; i < this.set.length; i++) {\n if (i > 0) {\n this.formatted += '||'\n }\n const comps = this.set[i]\n for (let k = 0; k < comps.length; k++) {\n if (k > 0) {\n this.formatted += ' '\n }\n this.formatted += comps[k].toString().trim()\n }\n }\n }\n return this.formatted\n }\n\n format () {\n return this.range\n }\n\n toString () {\n return this.range\n }\n\n parseRange (range) {\n // memoize range parsing for performance.\n // this is a very hot path, and fully deterministic.\n const memoOpts =\n (this.options.includePrerelease && FLAG_INCLUDE_PRERELEASE) |\n (this.options.loose && FLAG_LOOSE)\n const memoKey = memoOpts + ':' + range\n const cached = cache.get(memoKey)\n if (cached) {\n return cached\n }\n\n const loose = this.options.loose\n // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4`\n const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE]\n range = range.replace(hr, hyphenReplace(this.options.includePrerelease))\n debug('hyphen replace', range)\n\n // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5`\n range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace)\n debug('comparator trim', range)\n\n // `~ 1.2.3` => `~1.2.3`\n range = range.replace(re[t.TILDETRIM], tildeTrimReplace)\n debug('tilde trim', range)\n\n // `^ 1.2.3` => `^1.2.3`\n range = range.replace(re[t.CARETTRIM], caretTrimReplace)\n debug('caret trim', range)\n\n // At this point, the range is completely trimmed and\n // ready to be split into comparators.\n\n let rangeList = range\n .split(' ')\n .map(comp => parseComparator(comp, this.options))\n .join(' ')\n .split(/\\s+/)\n // >=0.0.0 is equivalent to *\n .map(comp => replaceGTE0(comp, this.options))\n\n if (loose) {\n // in loose mode, throw out any that are not valid comparators\n rangeList = rangeList.filter(comp => {\n debug('loose invalid filter', comp, this.options)\n return !!comp.match(re[t.COMPARATORLOOSE])\n })\n }\n debug('range list', rangeList)\n\n // if any comparators are the null set, then replace with JUST null set\n // if more than one comparator, remove any * comparators\n // also, don't include the same comparator more than once\n const rangeMap = new Map()\n const comparators = rangeList.map(comp => new Comparator(comp, this.options))\n for (const comp of comparators) {\n if (isNullSet(comp)) {\n return [comp]\n }\n rangeMap.set(comp.value, comp)\n }\n if (rangeMap.size > 1 && rangeMap.has('')) {\n rangeMap.delete('')\n }\n\n const result = [...rangeMap.values()]\n cache.set(memoKey, result)\n return result\n }\n\n intersects (range, options) {\n if (!(range instanceof Range)) {\n throw new TypeError('a Range is required')\n }\n\n return this.set.some((thisComparators) => {\n return (\n isSatisfiable(thisComparators, options) &&\n range.set.some((rangeComparators) => {\n return (\n isSatisfiable(rangeComparators, options) &&\n thisComparators.every((thisComparator) => {\n return rangeComparators.every((rangeComparator) => {\n return thisComparator.intersects(rangeComparator, options)\n })\n })\n )\n })\n )\n })\n }\n\n // if ANY of the sets match ALL of its comparators, then pass\n test (version) {\n if (!version) {\n return false\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n for (let i = 0; i < this.set.length; i++) {\n if (testSet(this.set[i], version, this.options)) {\n return true\n }\n }\n return false\n }\n}\n\nmodule.exports = Range\n\nconst LRU = require('../internal/lrucache')\nconst cache = new LRU()\n\nconst parseOptions = require('../internal/parse-options')\nconst Comparator = require('./comparator')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst {\n safeRe: re,\n t,\n comparatorTrimReplace,\n tildeTrimReplace,\n caretTrimReplace,\n} = require('../internal/re')\nconst { FLAG_INCLUDE_PRERELEASE, FLAG_LOOSE } = require('../internal/constants')\n\nconst isNullSet = c => c.value === '<0.0.0-0'\nconst isAny = c => c.value === ''\n\n// take a set of comparators and determine whether there\n// exists a version which can satisfy it\nconst isSatisfiable = (comparators, options) => {\n let result = true\n const remainingComparators = comparators.slice()\n let testComparator = remainingComparators.pop()\n\n while (result && remainingComparators.length) {\n result = remainingComparators.every((otherComparator) => {\n return testComparator.intersects(otherComparator, options)\n })\n\n testComparator = remainingComparators.pop()\n }\n\n return result\n}\n\n// comprised of xranges, tildes, stars, and gtlt's at this point.\n// already replaced the hyphen ranges\n// turn into a set of JUST comparators.\nconst parseComparator = (comp, options) => {\n debug('comp', comp, options)\n comp = replaceCarets(comp, options)\n debug('caret', comp)\n comp = replaceTildes(comp, options)\n debug('tildes', comp)\n comp = replaceXRanges(comp, options)\n debug('xrange', comp)\n comp = replaceStars(comp, options)\n debug('stars', comp)\n return comp\n}\n\nconst isX = id => !id || id.toLowerCase() === 'x' || id === '*'\n\n// ~, ~> --> * (any, kinda silly)\n// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0\n// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0\n// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0\n// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0\n// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0\n// ~0.0.1 --> >=0.0.1 <0.1.0-0\nconst replaceTildes = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceTilde(c, options))\n .join(' ')\n}\n\nconst replaceTilde = (comp, options) => {\n const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE]\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('tilde', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0 <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n // ~1.2 == >=1.2.0 <1.3.0-0\n ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0`\n } else if (pr) {\n debug('replaceTilde pr', pr)\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n } else {\n // ~1.2.3 == >=1.2.3 <1.3.0-0\n ret = `>=${M}.${m}.${p\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('tilde return', ret)\n return ret\n })\n}\n\n// ^ --> * (any, kinda silly)\n// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0\n// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0\n// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0\n// ^1.2.3 --> >=1.2.3 <2.0.0-0\n// ^1.2.0 --> >=1.2.0 <2.0.0-0\n// ^0.0.1 --> >=0.0.1 <0.0.2-0\n// ^0.1.0 --> >=0.1.0 <0.2.0-0\nconst replaceCarets = (comp, options) => {\n return comp\n .trim()\n .split(/\\s+/)\n .map((c) => replaceCaret(c, options))\n .join(' ')\n}\n\nconst replaceCaret = (comp, options) => {\n debug('caret', comp, options)\n const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET]\n const z = options.includePrerelease ? '-0' : ''\n return comp.replace(r, (_, M, m, p, pr) => {\n debug('caret', comp, _, M, m, p, pr)\n let ret\n\n if (isX(M)) {\n ret = ''\n } else if (isX(m)) {\n ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0`\n } else if (isX(p)) {\n if (M === '0') {\n ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0`\n } else {\n ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0`\n }\n } else if (pr) {\n debug('replaceCaret pr', pr)\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p}-${pr\n } <${+M + 1}.0.0-0`\n }\n } else {\n debug('no pr')\n if (M === '0') {\n if (m === '0') {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${m}.${+p + 1}-0`\n } else {\n ret = `>=${M}.${m}.${p\n }${z} <${M}.${+m + 1}.0-0`\n }\n } else {\n ret = `>=${M}.${m}.${p\n } <${+M + 1}.0.0-0`\n }\n }\n\n debug('caret return', ret)\n return ret\n })\n}\n\nconst replaceXRanges = (comp, options) => {\n debug('replaceXRanges', comp, options)\n return comp\n .split(/\\s+/)\n .map((c) => replaceXRange(c, options))\n .join(' ')\n}\n\nconst replaceXRange = (comp, options) => {\n comp = comp.trim()\n const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE]\n return comp.replace(r, (ret, gtlt, M, m, p, pr) => {\n debug('xRange', comp, ret, gtlt, M, m, p, pr)\n const xM = isX(M)\n const xm = xM || isX(m)\n const xp = xm || isX(p)\n const anyX = xp\n\n if (gtlt === '=' && anyX) {\n gtlt = ''\n }\n\n // if we're including prereleases in the match, then we need\n // to fix this to -0, the lowest possible prerelease value\n pr = options.includePrerelease ? '-0' : ''\n\n if (xM) {\n if (gtlt === '>' || gtlt === '<') {\n // nothing is allowed\n ret = '<0.0.0-0'\n } else {\n // nothing is forbidden\n ret = '*'\n }\n } else if (gtlt && anyX) {\n // we know patch is an x, because we have any x at all.\n // replace X with 0\n if (xm) {\n m = 0\n }\n p = 0\n\n if (gtlt === '>') {\n // >1 => >=2.0.0\n // >1.2 => >=1.3.0\n gtlt = '>='\n if (xm) {\n M = +M + 1\n m = 0\n p = 0\n } else {\n m = +m + 1\n p = 0\n }\n } else if (gtlt === '<=') {\n // <=0.7.x is actually <0.8.0, since any 0.7.x should\n // pass. Similarly, <=7.x is actually <8.0.0, etc.\n gtlt = '<'\n if (xm) {\n M = +M + 1\n } else {\n m = +m + 1\n }\n }\n\n if (gtlt === '<') {\n pr = '-0'\n }\n\n ret = `${gtlt + M}.${m}.${p}${pr}`\n } else if (xm) {\n ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0`\n } else if (xp) {\n ret = `>=${M}.${m}.0${pr\n } <${M}.${+m + 1}.0-0`\n }\n\n debug('xRange return', ret)\n\n return ret\n })\n}\n\n// Because * is AND-ed with everything else in the comparator,\n// and '' means \"any version\", just remove the *s entirely.\nconst replaceStars = (comp, options) => {\n debug('replaceStars', comp, options)\n // Looseness is ignored here. star is always as loose as it gets!\n return comp\n .trim()\n .replace(re[t.STAR], '')\n}\n\nconst replaceGTE0 = (comp, options) => {\n debug('replaceGTE0', comp, options)\n return comp\n .trim()\n .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '')\n}\n\n// This function is passed to string.replace(re[t.HYPHENRANGE])\n// M, m, patch, prerelease, build\n// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5\n// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do\n// 1.2 - 3.4 => >=1.2.0 <3.5.0-0\n// TODO build?\nconst hyphenReplace = incPr => ($0,\n from, fM, fm, fp, fpr, fb,\n to, tM, tm, tp, tpr) => {\n if (isX(fM)) {\n from = ''\n } else if (isX(fm)) {\n from = `>=${fM}.0.0${incPr ? '-0' : ''}`\n } else if (isX(fp)) {\n from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}`\n } else if (fpr) {\n from = `>=${from}`\n } else {\n from = `>=${from}${incPr ? '-0' : ''}`\n }\n\n if (isX(tM)) {\n to = ''\n } else if (isX(tm)) {\n to = `<${+tM + 1}.0.0-0`\n } else if (isX(tp)) {\n to = `<${tM}.${+tm + 1}.0-0`\n } else if (tpr) {\n to = `<=${tM}.${tm}.${tp}-${tpr}`\n } else if (incPr) {\n to = `<${tM}.${tm}.${+tp + 1}-0`\n } else {\n to = `<=${to}`\n }\n\n return `${from} ${to}`.trim()\n}\n\nconst testSet = (set, version, options) => {\n for (let i = 0; i < set.length; i++) {\n if (!set[i].test(version)) {\n return false\n }\n }\n\n if (version.prerelease.length && !options.includePrerelease) {\n // Find the set of versions that are allowed to have prereleases\n // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0\n // That should allow `1.2.3-pr.2` to pass.\n // However, `1.2.4-alpha.notready` should NOT be allowed,\n // even though it's within the range set by the comparators.\n for (let i = 0; i < set.length; i++) {\n debug(set[i].semver)\n if (set[i].semver === Comparator.ANY) {\n continue\n }\n\n if (set[i].semver.prerelease.length > 0) {\n const allowed = set[i].semver\n if (allowed.major === version.major &&\n allowed.minor === version.minor &&\n allowed.patch === version.patch) {\n return true\n }\n }\n }\n\n // Version has a -pre, but it's not one of the ones we like.\n return false\n }\n\n return true\n}\n","const ANY = Symbol('SemVer ANY')\n// hoisted class for cyclic dependency\nclass Comparator {\n static get ANY () {\n return ANY\n }\n\n constructor (comp, options) {\n options = parseOptions(options)\n\n if (comp instanceof Comparator) {\n if (comp.loose === !!options.loose) {\n return comp\n } else {\n comp = comp.value\n }\n }\n\n comp = comp.trim().split(/\\s+/).join(' ')\n debug('comparator', comp, options)\n this.options = options\n this.loose = !!options.loose\n this.parse(comp)\n\n if (this.semver === ANY) {\n this.value = ''\n } else {\n this.value = this.operator + this.semver.version\n }\n\n debug('comp', this)\n }\n\n parse (comp) {\n const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR]\n const m = comp.match(r)\n\n if (!m) {\n throw new TypeError(`Invalid comparator: ${comp}`)\n }\n\n this.operator = m[1] !== undefined ? m[1] : ''\n if (this.operator === '=') {\n this.operator = ''\n }\n\n // if it literally is just '>' or '' then allow anything.\n if (!m[2]) {\n this.semver = ANY\n } else {\n this.semver = new SemVer(m[2], this.options.loose)\n }\n }\n\n toString () {\n return this.value\n }\n\n test (version) {\n debug('Comparator.test', version, this.options.loose)\n\n if (this.semver === ANY || version === ANY) {\n return true\n }\n\n if (typeof version === 'string') {\n try {\n version = new SemVer(version, this.options)\n } catch (er) {\n return false\n }\n }\n\n return cmp(version, this.operator, this.semver, this.options)\n }\n\n intersects (comp, options) {\n if (!(comp instanceof Comparator)) {\n throw new TypeError('a Comparator is required')\n }\n\n if (this.operator === '') {\n if (this.value === '') {\n return true\n }\n return new Range(comp.value, options).test(this.value)\n } else if (comp.operator === '') {\n if (comp.value === '') {\n return true\n }\n return new Range(this.value, options).test(comp.semver)\n }\n\n options = parseOptions(options)\n\n // Special cases where nothing can possibly be lower\n if (options.includePrerelease &&\n (this.value === '<0.0.0-0' || comp.value === '<0.0.0-0')) {\n return false\n }\n if (!options.includePrerelease &&\n (this.value.startsWith('<0.0.0') || comp.value.startsWith('<0.0.0'))) {\n return false\n }\n\n // Same direction increasing (> or >=)\n if (this.operator.startsWith('>') && comp.operator.startsWith('>')) {\n return true\n }\n // Same direction decreasing (< or <=)\n if (this.operator.startsWith('<') && comp.operator.startsWith('<')) {\n return true\n }\n // same SemVer and both sides are inclusive (<= or >=)\n if (\n (this.semver.version === comp.semver.version) &&\n this.operator.includes('=') && comp.operator.includes('=')) {\n return true\n }\n // opposite directions less than\n if (cmp(this.semver, '<', comp.semver, options) &&\n this.operator.startsWith('>') && comp.operator.startsWith('<')) {\n return true\n }\n // opposite directions greater than\n if (cmp(this.semver, '>', comp.semver, options) &&\n this.operator.startsWith('<') && comp.operator.startsWith('>')) {\n return true\n }\n return false\n }\n}\n\nmodule.exports = Comparator\n\nconst parseOptions = require('../internal/parse-options')\nconst { safeRe: re, t } = require('../internal/re')\nconst cmp = require('../functions/cmp')\nconst debug = require('../internal/debug')\nconst SemVer = require('./semver')\nconst Range = require('./range')\n","const Range = require('../classes/range')\nconst satisfies = (version, range, options) => {\n try {\n range = new Range(range, options)\n } catch (er) {\n return false\n }\n return range.test(version)\n}\nmodule.exports = satisfies\n","const Range = require('../classes/range')\n\n// Mostly just for testing and legacy API reasons\nconst toComparators = (range, options) =>\n new Range(range, options).set\n .map(comp => comp.map(c => c.value).join(' ').trim().split(' '))\n\nmodule.exports = toComparators\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\n\nconst maxSatisfying = (versions, range, options) => {\n let max = null\n let maxSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!max || maxSV.compare(v) === -1) {\n // compare(max, v, true)\n max = v\n maxSV = new SemVer(max, options)\n }\n }\n })\n return max\n}\nmodule.exports = maxSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst minSatisfying = (versions, range, options) => {\n let min = null\n let minSV = null\n let rangeObj = null\n try {\n rangeObj = new Range(range, options)\n } catch (er) {\n return null\n }\n versions.forEach((v) => {\n if (rangeObj.test(v)) {\n // satisfies(v, range, options)\n if (!min || minSV.compare(v) === 1) {\n // compare(min, v, true)\n min = v\n minSV = new SemVer(min, options)\n }\n }\n })\n return min\n}\nmodule.exports = minSatisfying\n","const SemVer = require('../classes/semver')\nconst Range = require('../classes/range')\nconst gt = require('../functions/gt')\n\nconst minVersion = (range, loose) => {\n range = new Range(range, loose)\n\n let minver = new SemVer('0.0.0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = new SemVer('0.0.0-0')\n if (range.test(minver)) {\n return minver\n }\n\n minver = null\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let setMin = null\n comparators.forEach((comparator) => {\n // Clone to avoid manipulating the comparator's semver object.\n const compver = new SemVer(comparator.semver.version)\n switch (comparator.operator) {\n case '>':\n if (compver.prerelease.length === 0) {\n compver.patch++\n } else {\n compver.prerelease.push(0)\n }\n compver.raw = compver.format()\n /* fallthrough */\n case '':\n case '>=':\n if (!setMin || gt(compver, setMin)) {\n setMin = compver\n }\n break\n case '<':\n case '<=':\n /* Ignore maximum versions */\n break\n /* istanbul ignore next */\n default:\n throw new Error(`Unexpected operation: ${comparator.operator}`)\n }\n })\n if (setMin && (!minver || gt(minver, setMin))) {\n minver = setMin\n }\n }\n\n if (minver && range.test(minver)) {\n return minver\n }\n\n return null\n}\nmodule.exports = minVersion\n","const Range = require('../classes/range')\nconst validRange = (range, options) => {\n try {\n // Return '*' instead of '' so that truthiness works.\n // This will throw if it's invalid anyway\n return new Range(range, options).range || '*'\n } catch (er) {\n return null\n }\n}\nmodule.exports = validRange\n","const SemVer = require('../classes/semver')\nconst Comparator = require('../classes/comparator')\nconst { ANY } = Comparator\nconst Range = require('../classes/range')\nconst satisfies = require('../functions/satisfies')\nconst gt = require('../functions/gt')\nconst lt = require('../functions/lt')\nconst lte = require('../functions/lte')\nconst gte = require('../functions/gte')\n\nconst outside = (version, range, hilo, options) => {\n version = new SemVer(version, options)\n range = new Range(range, options)\n\n let gtfn, ltefn, ltfn, comp, ecomp\n switch (hilo) {\n case '>':\n gtfn = gt\n ltefn = lte\n ltfn = lt\n comp = '>'\n ecomp = '>='\n break\n case '<':\n gtfn = lt\n ltefn = gte\n ltfn = gt\n comp = '<'\n ecomp = '<='\n break\n default:\n throw new TypeError('Must provide a hilo val of \"<\" or \">\"')\n }\n\n // If it satisfies the range it is not outside\n if (satisfies(version, range, options)) {\n return false\n }\n\n // From now on, variable terms are as if we're in \"gtr\" mode.\n // but note that everything is flipped for the \"ltr\" function.\n\n for (let i = 0; i < range.set.length; ++i) {\n const comparators = range.set[i]\n\n let high = null\n let low = null\n\n comparators.forEach((comparator) => {\n if (comparator.semver === ANY) {\n comparator = new Comparator('>=0.0.0')\n }\n high = high || comparator\n low = low || comparator\n if (gtfn(comparator.semver, high.semver, options)) {\n high = comparator\n } else if (ltfn(comparator.semver, low.semver, options)) {\n low = comparator\n }\n })\n\n // If the edge version comparator has a operator then our version\n // isn't outside it\n if (high.operator === comp || high.operator === ecomp) {\n return false\n }\n\n // If the lowest version comparator has an operator and our version\n // is less than it then it isn't higher than the range\n if ((!low.operator || low.operator === comp) &&\n ltefn(version, low.semver)) {\n return false\n } else if (low.operator === ecomp && ltfn(version, low.semver)) {\n return false\n }\n }\n return true\n}\n\nmodule.exports = outside\n","// Determine if version is greater than all the versions possible in the range.\nconst outside = require('./outside')\nconst gtr = (version, range, options) => outside(version, range, '>', options)\nmodule.exports = gtr\n","const outside = require('./outside')\n// Determine if version is less than all the versions possible in the range\nconst ltr = (version, range, options) => outside(version, range, '<', options)\nmodule.exports = ltr\n","const Range = require('../classes/range')\nconst intersects = (r1, r2, options) => {\n r1 = new Range(r1, options)\n r2 = new Range(r2, options)\n return r1.intersects(r2, options)\n}\nmodule.exports = intersects\n","// given a set of versions and a range, create a \"simplified\" range\n// that includes the same versions that the original range does\n// If the original range is shorter than the simplified one, return that.\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\nmodule.exports = (versions, range, options) => {\n const set = []\n let first = null\n let prev = null\n const v = versions.sort((a, b) => compare(a, b, options))\n for (const version of v) {\n const included = satisfies(version, range, options)\n if (included) {\n prev = version\n if (!first) {\n first = version\n }\n } else {\n if (prev) {\n set.push([first, prev])\n }\n prev = null\n first = null\n }\n }\n if (first) {\n set.push([first, null])\n }\n\n const ranges = []\n for (const [min, max] of set) {\n if (min === max) {\n ranges.push(min)\n } else if (!max && min === v[0]) {\n ranges.push('*')\n } else if (!max) {\n ranges.push(`>=${min}`)\n } else if (min === v[0]) {\n ranges.push(`<=${max}`)\n } else {\n ranges.push(`${min} - ${max}`)\n }\n }\n const simplified = ranges.join(' || ')\n const original = typeof range.raw === 'string' ? range.raw : String(range)\n return simplified.length < original.length ? simplified : range\n}\n","const Range = require('../classes/range.js')\nconst Comparator = require('../classes/comparator.js')\nconst { ANY } = Comparator\nconst satisfies = require('../functions/satisfies.js')\nconst compare = require('../functions/compare.js')\n\n// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff:\n// - Every simple range `r1, r2, ...` is a null set, OR\n// - Every simple range `r1, r2, ...` which is not a null set is a subset of\n// some `R1, R2, ...`\n//\n// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff:\n// - If c is only the ANY comparator\n// - If C is only the ANY comparator, return true\n// - Else if in prerelease mode, return false\n// - else replace c with `[>=0.0.0]`\n// - If C is only the ANY comparator\n// - if in prerelease mode, return true\n// - else replace C with `[>=0.0.0]`\n// - Let EQ be the set of = comparators in c\n// - If EQ is more than one, return true (null set)\n// - Let GT be the highest > or >= comparator in c\n// - Let LT be the lowest < or <= comparator in c\n// - If GT and LT, and GT.semver > LT.semver, return true (null set)\n// - If any C is a = range, and GT or LT are set, return false\n// - If EQ\n// - If GT, and EQ does not satisfy GT, return true (null set)\n// - If LT, and EQ does not satisfy LT, return true (null set)\n// - If EQ satisfies every C, return true\n// - Else return false\n// - If GT\n// - If GT.semver is lower than any > or >= comp in C, return false\n// - If GT is >=, and GT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the GT.semver tuple, return false\n// - If LT\n// - If LT.semver is greater than any < or <= comp in C, return false\n// - If LT is <=, and LT.semver does not satisfy every C, return false\n// - If GT.semver has a prerelease, and not in prerelease mode\n// - If no C has a prerelease and the LT.semver tuple, return false\n// - Else return true\n\nconst subset = (sub, dom, options = {}) => {\n if (sub === dom) {\n return true\n }\n\n sub = new Range(sub, options)\n dom = new Range(dom, options)\n let sawNonNull = false\n\n OUTER: for (const simpleSub of sub.set) {\n for (const simpleDom of dom.set) {\n const isSub = simpleSubset(simpleSub, simpleDom, options)\n sawNonNull = sawNonNull || isSub !== null\n if (isSub) {\n continue OUTER\n }\n }\n // the null set is a subset of everything, but null simple ranges in\n // a complex range should be ignored. so if we saw a non-null range,\n // then we know this isn't a subset, but if EVERY simple range was null,\n // then it is a subset.\n if (sawNonNull) {\n return false\n }\n }\n return true\n}\n\nconst minimumVersionWithPreRelease = [new Comparator('>=0.0.0-0')]\nconst minimumVersion = [new Comparator('>=0.0.0')]\n\nconst simpleSubset = (sub, dom, options) => {\n if (sub === dom) {\n return true\n }\n\n if (sub.length === 1 && sub[0].semver === ANY) {\n if (dom.length === 1 && dom[0].semver === ANY) {\n return true\n } else if (options.includePrerelease) {\n sub = minimumVersionWithPreRelease\n } else {\n sub = minimumVersion\n }\n }\n\n if (dom.length === 1 && dom[0].semver === ANY) {\n if (options.includePrerelease) {\n return true\n } else {\n dom = minimumVersion\n }\n }\n\n const eqSet = new Set()\n let gt, lt\n for (const c of sub) {\n if (c.operator === '>' || c.operator === '>=') {\n gt = higherGT(gt, c, options)\n } else if (c.operator === '<' || c.operator === '<=') {\n lt = lowerLT(lt, c, options)\n } else {\n eqSet.add(c.semver)\n }\n }\n\n if (eqSet.size > 1) {\n return null\n }\n\n let gtltComp\n if (gt && lt) {\n gtltComp = compare(gt.semver, lt.semver, options)\n if (gtltComp > 0) {\n return null\n } else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) {\n return null\n }\n }\n\n // will iterate one or zero times\n for (const eq of eqSet) {\n if (gt && !satisfies(eq, String(gt), options)) {\n return null\n }\n\n if (lt && !satisfies(eq, String(lt), options)) {\n return null\n }\n\n for (const c of dom) {\n if (!satisfies(eq, String(c), options)) {\n return false\n }\n }\n\n return true\n }\n\n let higher, lower\n let hasDomLT, hasDomGT\n // if the subset has a prerelease, we need a comparator in the superset\n // with the same tuple and a prerelease, or it's not a subset\n let needDomLTPre = lt &&\n !options.includePrerelease &&\n lt.semver.prerelease.length ? lt.semver : false\n let needDomGTPre = gt &&\n !options.includePrerelease &&\n gt.semver.prerelease.length ? gt.semver : false\n // exception: <1.2.3-0 is the same as <1.2.3\n if (needDomLTPre && needDomLTPre.prerelease.length === 1 &&\n lt.operator === '<' && needDomLTPre.prerelease[0] === 0) {\n needDomLTPre = false\n }\n\n for (const c of dom) {\n hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>='\n hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<='\n if (gt) {\n if (needDomGTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomGTPre.major &&\n c.semver.minor === needDomGTPre.minor &&\n c.semver.patch === needDomGTPre.patch) {\n needDomGTPre = false\n }\n }\n if (c.operator === '>' || c.operator === '>=') {\n higher = higherGT(gt, c, options)\n if (higher === c && higher !== gt) {\n return false\n }\n } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) {\n return false\n }\n }\n if (lt) {\n if (needDomLTPre) {\n if (c.semver.prerelease && c.semver.prerelease.length &&\n c.semver.major === needDomLTPre.major &&\n c.semver.minor === needDomLTPre.minor &&\n c.semver.patch === needDomLTPre.patch) {\n needDomLTPre = false\n }\n }\n if (c.operator === '<' || c.operator === '<=') {\n lower = lowerLT(lt, c, options)\n if (lower === c && lower !== lt) {\n return false\n }\n } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) {\n return false\n }\n }\n if (!c.operator && (lt || gt) && gtltComp !== 0) {\n return false\n }\n }\n\n // if there was a < or >, and nothing in the dom, then must be false\n // UNLESS it was limited by another range in the other direction.\n // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0\n if (gt && hasDomLT && !lt && gtltComp !== 0) {\n return false\n }\n\n if (lt && hasDomGT && !gt && gtltComp !== 0) {\n return false\n }\n\n // we needed a prerelease range in a specific tuple, but didn't get one\n // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0,\n // because it includes prereleases in the 1.2.3 tuple\n if (needDomGTPre || needDomLTPre) {\n return false\n }\n\n return true\n}\n\n// >=1.2.3 is lower than >1.2.3\nconst higherGT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp > 0 ? a\n : comp < 0 ? b\n : b.operator === '>' && a.operator === '>=' ? b\n : a\n}\n\n// <=1.2.3 is higher than <1.2.3\nconst lowerLT = (a, b, options) => {\n if (!a) {\n return b\n }\n const comp = compare(a.semver, b.semver, options)\n return comp < 0 ? a\n : comp > 0 ? b\n : b.operator === '<' && a.operator === '<=' ? b\n : a\n}\n\nmodule.exports = subset\n","// just pre-load all the stuff that index.js lazily exports\nconst internalRe = require('./internal/re')\nconst constants = require('./internal/constants')\nconst SemVer = require('./classes/semver')\nconst identifiers = require('./internal/identifiers')\nconst parse = require('./functions/parse')\nconst valid = require('./functions/valid')\nconst clean = require('./functions/clean')\nconst inc = require('./functions/inc')\nconst diff = require('./functions/diff')\nconst major = require('./functions/major')\nconst minor = require('./functions/minor')\nconst patch = require('./functions/patch')\nconst prerelease = require('./functions/prerelease')\nconst compare = require('./functions/compare')\nconst rcompare = require('./functions/rcompare')\nconst compareLoose = require('./functions/compare-loose')\nconst compareBuild = require('./functions/compare-build')\nconst sort = require('./functions/sort')\nconst rsort = require('./functions/rsort')\nconst gt = require('./functions/gt')\nconst lt = require('./functions/lt')\nconst eq = require('./functions/eq')\nconst neq = require('./functions/neq')\nconst gte = require('./functions/gte')\nconst lte = require('./functions/lte')\nconst cmp = require('./functions/cmp')\nconst coerce = require('./functions/coerce')\nconst Comparator = require('./classes/comparator')\nconst Range = require('./classes/range')\nconst satisfies = require('./functions/satisfies')\nconst toComparators = require('./ranges/to-comparators')\nconst maxSatisfying = require('./ranges/max-satisfying')\nconst minSatisfying = require('./ranges/min-satisfying')\nconst minVersion = require('./ranges/min-version')\nconst validRange = require('./ranges/valid')\nconst outside = require('./ranges/outside')\nconst gtr = require('./ranges/gtr')\nconst ltr = require('./ranges/ltr')\nconst intersects = require('./ranges/intersects')\nconst simplifyRange = require('./ranges/simplify')\nconst subset = require('./ranges/subset')\nmodule.exports = {\n parse,\n valid,\n clean,\n inc,\n diff,\n major,\n minor,\n patch,\n prerelease,\n compare,\n rcompare,\n compareLoose,\n compareBuild,\n sort,\n rsort,\n gt,\n lt,\n eq,\n neq,\n gte,\n lte,\n cmp,\n coerce,\n Comparator,\n Range,\n satisfies,\n toComparators,\n maxSatisfying,\n minSatisfying,\n minVersion,\n validRange,\n outside,\n gtr,\n ltr,\n intersects,\n simplifyRange,\n subset,\n SemVer,\n re: internalRe.re,\n src: internalRe.src,\n tokens: internalRe.t,\n SEMVER_SPEC_VERSION: constants.SEMVER_SPEC_VERSION,\n RELEASE_TYPES: constants.RELEASE_TYPES,\n compareIdentifiers: identifiers.compareIdentifiers,\n rcompareIdentifiers: identifiers.rcompareIdentifiers,\n}\n"],"names":["require$$0","require$$1","require$$2","require$$3","require$$4","semver","require$$5","require$$6","require$$7","require$$8","require$$9","require$$10","require$$11","require$$12","require$$13","require$$14","require$$15","require$$16","require$$17","require$$18","require$$19","require$$20","require$$21","require$$22","require$$23","require$$24","require$$25","require$$26","require$$27","require$$28","require$$29","require$$30","require$$31","require$$32","require$$33","require$$34","require$$35","require$$36","require$$37","require$$38","require$$39","require$$40"],"mappings":"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","x_google_ignoreList":[0,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]} \ No newline at end of file diff --git a/dist/tools/libs/tools.mjs b/dist/tools/libs/tools.mjs index da74b3128..68bb14e76 100644 --- a/dist/tools/libs/tools.mjs +++ b/dist/tools/libs/tools.mjs @@ -4,6 +4,165 @@ import * as os from 'node:os'; import * as path from 'node:path'; import { s as semverExports } from './semver.mjs'; +class ArgumentsBuilder { + args = []; + isWindows = os.platform() === "win32"; + /** + * Adds a simple argument without a key + * @param value The argument value + */ + addArgument(value) { + if (value) { + this.args.push(this.escapeArgument(value)); + } + return this; + } + /** + * Adds multiple arguments + * @param values The argument values + */ + addArguments(values) { + for (const value of values) { + this.addArgument(value); + } + return this; + } + /** + * Adds a flag argument (--flag) + * @param key The flag name + */ + addFlag(key) { + if (key) { + this.args.push(`--${key}`); + } + return this; + } + /** + * Adds a key-value argument (--key value) + * @param key The argument key + * @param value The argument value + */ + addKeyValue(key, value) { + if (key && value !== void 0 && value !== null) { + this.args.push(`--${key}`); + this.args.push(this.escapeArgument(value)); + } + return this; + } + /** + * Adds an equals-style argument (--key=value) + * @param key The argument key + * @param value The argument value + */ + addKeyValueEquals(key, value) { + if (key && value !== void 0 && value !== null) { + this.args.push(`--${key}=${this.escapeArgument(value)}`); + } + return this; + } + /** + * Adds a comma-separated list (--key value1,value2,value3) + * @param key The argument key + * @param values The list of values + */ + addCommaList(key, values) { + if (key && values && values.length > 0) { + const escapedValues = values.map((v) => this.escapeArgument(v)); + this.args.push(`--${key}`); + this.args.push(escapedValues.join(",")); + } + return this; + } + /** + * Escapes an argument value based on the current OS + * @param value The argument value to escape + * @returns The escaped argument value + */ + escapeArgument(value) { + if (!value) return value; + if (!this.needsEscaping(value)) return value; + if (this.isWindows) { + return `"${value.replace(/"/g, '\\"')}"`; + } else { + return `'${value.replace(/'/g, "'\\''")}'`; + } + } + /** + * Determines if a value needs to be escaped + * @param value The value to check + * @returns True if the value needs escaping + */ + needsEscaping(value) { + const windowsNeedsEscaping = /[\s&|<>^(){}[\]"']/; + const unixNeedsEscaping = /[\s$\\`&|<>(){}[\]"']/; + if (this.isWindows) { + return windowsNeedsEscaping.test(value); + } + return unixNeedsEscaping.test(value); + } + /** + * Returns the built argument array + */ + build() { + return [...this.args]; + } + /** + * Parses an argument string into an array + * @param argString The argument string to parse + * @returns Array of parsed arguments + */ + static parseArgumentString(argString) { + const args = []; + let inQuotes = false; + let escaped = false; + let lastCharWasSpace = true; + let arg = ""; + const append = (c) => { + if (escaped && c !== '"' && c !== "\\") { + arg += "\\"; + } + arg += c; + escaped = false; + }; + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i); + if (c === " " && !inQuotes) { + if (!lastCharWasSpace) { + args.push(arg); + arg = ""; + } + lastCharWasSpace = true; + continue; + } else { + lastCharWasSpace = false; + } + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes; + } else { + append(c); + } + continue; + } + if (c === "\\" && escaped) { + arg += "\\"; + escaped = false; + continue; + } + if (c === "\\" && inQuotes) { + escaped = true; + continue; + } + append(c); + lastCharWasSpace = false; + } + if (!lastCharWasSpace) { + args.push(arg.trim()); + } + return args; + } +} + class DotnetTool { constructor(buildAgent) { this.buildAgent = buildAgent; @@ -61,6 +220,49 @@ class DotnetTool { this.buildAgent.info(`Command: ${cmd} ${args.join(" ")}`); return await this.buildAgent.exec(cmd, args); } + async findToolExecutable(toolBasePath) { + const toolName = os.platform() === "win32" ? `${this.toolName}.exe` : this.toolName; + const toolPath = path.join(toolBasePath, toolName); + if (await this.buildAgent.fileExists(toolPath)) { + return toolPath; + } + const arch = os.arch(); + this.buildAgent.debug(`Current system architecture: ${arch}`); + const archPaths = []; + if (arch === "x64") { + archPaths.push(path.join(toolBasePath, "x64", toolName)); + } else if (arch === "arm64") { + archPaths.push(path.join(toolBasePath, "arm64", toolName)); + } + if (os.platform() === "darwin" && arch === "arm64") { + archPaths.push(path.join(toolBasePath, "osx-arm64", toolName)); + } else if (os.platform() === "darwin" && arch === "x64") { + archPaths.push(path.join(toolBasePath, "osx-x64", toolName)); + } + for (const archPath of archPaths) { + if (await this.buildAgent.fileExists(archPath)) { + this.buildAgent.debug(`Found tool in architecture-specific directory: ${archPath}`); + return archPath; + } + } + try { + const entries = await fs.readdir(toolBasePath, { withFileTypes: true }); + for (const entry of entries) { + if (entry.isDirectory()) { + const nestedPath = path.join(toolBasePath, entry.name, toolName); + if (await this.buildAgent.fileExists(nestedPath)) { + this.buildAgent.debug(`Found tool in subdirectory: ${entry.name}`); + return nestedPath; + } + } + } + } catch (error) { + if (error instanceof Error) { + this.buildAgent.debug(`Error reading subdirectories: ${error.message}`); + } + } + return null; + } async setDotnetRoot() { if (os.platform() !== "win32" && !this.buildAgent.getVariable("DOTNET_ROOT")) { let dotnetPath = await this.buildAgent.which("dotnet", true); @@ -73,10 +275,17 @@ class DotnetTool { } } async executeTool(args) { + const variablePath = this.buildAgent.getVariableAsPath(this.toolPathVariable); let toolPath; - const variableAsPath = this.buildAgent.getVariableAsPath(this.toolPathVariable); - if (variableAsPath) { - toolPath = path.join(variableAsPath, os.platform() === "win32" ? `${this.toolName}.exe` : this.toolName); + if (variablePath) { + const foundExecutable = await this.findToolExecutable(variablePath); + if (foundExecutable) { + toolPath = foundExecutable; + this.buildAgent.debug(`Found tool executable at: ${toolPath}`); + } else { + toolPath = path.join(variablePath, os.platform() === "win32" ? `${this.toolName}.exe` : this.toolName); + this.buildAgent.debug(`Defaulting to expected tool path: ${toolPath}`); + } } if (!toolPath) { toolPath = await this.buildAgent.which(this.toolName, true); @@ -98,13 +307,16 @@ class DotnetTool { if (!targetPath) { workDir = srcDir; } else { + if (!path.isAbsolute(targetPath)) { + targetPath = path.resolve(targetPath); + } if (await this.buildAgent.directoryExists(targetPath)) { workDir = targetPath; } else { throw new Error(`Directory not found at ${targetPath}`); } } - return workDir.replace(/\\/g, "/"); + return path.normalize(workDir); } async queryLatestMatch(toolName, versionSpec, includePrerelease) { this.buildAgent.info( @@ -141,11 +353,11 @@ class DotnetTool { if (!tempDirectory) { throw new Error("Unable to create temp directory"); } - const args = ["tool", "install", toolName, "--tool-path", tempDirectory, "--version", semverVersion]; + const builder = new ArgumentsBuilder().addArgument("tool").addArgument("install").addArgument(toolName).addKeyValue("tool-path", tempDirectory).addKeyValue("version", semverVersion); if (ignoreFailedSources) { - args.push("--ignore-failed-sources"); + builder.addFlag("ignore-failed-sources"); } - const result = await this.execute("dotnet", args); + const result = await this.execute("dotnet", builder.build()); const status = result.code === 0 ? "success" : "failure"; const message = result.code === 0 ? result.stdout : result.stderr; this.buildAgent.debug(`Tool install result: ${status} ${message}`); @@ -238,5 +450,5 @@ class RunnerBase { } } -export { DotnetTool as D, RunnerBase as R, SettingsProvider as S, keysOf as k }; +export { ArgumentsBuilder as A, DotnetTool as D, RunnerBase as R, SettingsProvider as S, keysOf as k }; //# sourceMappingURL=tools.mjs.map diff --git a/dist/tools/libs/tools.mjs.map b/dist/tools/libs/tools.mjs.map index 654346813..c69b5b764 100644 --- a/dist/tools/libs/tools.mjs.map +++ b/dist/tools/libs/tools.mjs.map @@ -1 +1 @@ -{"version":3,"file":"tools.mjs","sources":["../../../src/tools/common/dotnet-tool.ts","../../../src/tools/common/settings.ts","../../../src/tools/common/index.ts","../../../src/tools/common/runner.ts"],"sourcesContent":["import * as crypto from 'node:crypto'\nimport * as fs from 'node:fs/promises'\nimport * as os from 'node:os'\nimport * as path from 'node:path'\n\nimport * as semver from 'semver'\nimport { type IBuildAgent, type ExecResult } from '@agents/common'\nimport { ISettingsProvider } from './settings'\nimport { NugetVersions } from './models'\n\nexport interface IDotnetTool {\n toolName: string\n\n disableTelemetry(): void\n\n install(): Promise\n}\n\nexport abstract class DotnetTool implements IDotnetTool {\n private static readonly nugetRoot: string = 'https://azuresearch-usnc.nuget.org/query'\n\n constructor(protected buildAgent: IBuildAgent) {}\n\n abstract get packageName(): string\n\n abstract get toolName(): string\n\n abstract get toolPathVariable(): string\n\n abstract get versionRange(): string | null\n\n abstract get settingsProvider(): ISettingsProvider\n\n disableTelemetry(): void {\n this.buildAgent.info('Disable Telemetry')\n this.buildAgent.setVariable('DOTNET_CLI_TELEMETRY_OPTOUT', 'true')\n this.buildAgent.setVariable('DOTNET_NOLOGO', 'true')\n }\n\n async install(): Promise {\n const dotnetExePath = await this.buildAgent.which('dotnet', true)\n this.buildAgent.debug(`whichPath: ${dotnetExePath}`)\n await this.setDotnetRoot()\n\n const setupSettings = this.settingsProvider.getSetupSettings()\n\n let version: string | null = semver.clean(setupSettings.versionSpec) || setupSettings.versionSpec\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`Acquiring ${this.packageName} for version spec: ${version}`)\n this.buildAgent.info('--------------------------')\n\n if (!this.isExplicitVersion(version)) {\n version = await this.queryLatestMatch(this.packageName, version, setupSettings.includePrerelease)\n if (!version) {\n throw new Error(`Unable to find ${this.packageName} version '${version}'.`)\n }\n }\n\n if (this.versionRange && !semver.satisfies(version, this.versionRange, { includePrerelease: setupSettings.includePrerelease })) {\n throw new Error(\n `Version spec '${setupSettings.versionSpec}' resolved as '${version}' does not satisfy the range '${this.versionRange}'.` +\n 'See https://github.com/GitTools/actions/blob/main/docs/versions.md for more information.'\n )\n }\n\n let toolPath: string | null = null\n if (!setupSettings.preferLatestVersion) {\n // Let's try and resolve the version locally first\n toolPath = await this.buildAgent.findLocalTool(this.packageName, version)\n if (toolPath) {\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`${this.packageName} version: ${version} found in local cache at ${toolPath}.`)\n this.buildAgent.info('--------------------------')\n }\n }\n\n if (!toolPath) {\n // Download, extract, cache\n toolPath = await this.installTool(this.packageName, version, setupSettings.ignoreFailedSources)\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`${this.packageName} version: ${version} installed.`)\n this.buildAgent.info('--------------------------')\n }\n\n // Prepend the tool's path. This prepends the PATH for the current process and\n // instructs the agent to prepend for each task that follows.\n this.buildAgent.info(`Prepending ${toolPath} to PATH`)\n this.buildAgent.addPath(toolPath)\n\n const pathVariable = this.toolPathVariable\n this.buildAgent.info(`Set ${pathVariable} to ${toolPath}`)\n this.buildAgent.setVariable(pathVariable, toolPath)\n this.buildAgent.setSucceeded(`${this.toolName} installed successfully`, true)\n\n return toolPath\n }\n\n protected async execute(cmd: string, args: string[]): Promise {\n this.buildAgent.info(`Command: ${cmd} ${args.join(' ')}`)\n return await this.buildAgent.exec(cmd, args)\n }\n\n protected async setDotnetRoot(): Promise {\n if (os.platform() !== 'win32' && !this.buildAgent.getVariable('DOTNET_ROOT')) {\n let dotnetPath = await this.buildAgent.which('dotnet', true)\n\n const stats = await fs.lstat(dotnetPath)\n if (stats.isSymbolicLink()) {\n dotnetPath = (await fs.readlink(dotnetPath)) || dotnetPath\n }\n const dotnetRoot = path.dirname(dotnetPath)\n this.buildAgent.setVariable('DOTNET_ROOT', dotnetRoot)\n }\n }\n\n protected async executeTool(args: string[]): Promise {\n let toolPath: string | undefined\n const variableAsPath = this.buildAgent.getVariableAsPath(this.toolPathVariable)\n if (variableAsPath) {\n toolPath = path.join(variableAsPath, os.platform() === 'win32' ? `${this.toolName}.exe` : this.toolName)\n }\n if (!toolPath) {\n toolPath = await this.buildAgent.which(this.toolName, true)\n }\n\n args = ['--roll-forward Major', ...args]\n return await this.execute(toolPath, args)\n }\n\n protected async isValidInputFile(input: string, file: string): Promise {\n return this.filePathSupplied(input) && (await this.buildAgent.fileExists(file))\n }\n\n protected filePathSupplied(file: string): boolean {\n const pathValue = path.resolve(this.buildAgent.getInput(file) || '')\n const repoRoot = this.buildAgent.sourceDir\n return pathValue !== repoRoot\n }\n\n protected async getRepoPath(targetPath: string): Promise {\n const srcDir = this.buildAgent.sourceDir || '.'\n let workDir: string\n if (!targetPath) {\n workDir = srcDir\n } else {\n if (await this.buildAgent.directoryExists(targetPath)) {\n workDir = targetPath\n } else {\n throw new Error(`Directory not found at ${targetPath}`)\n }\n }\n return workDir.replace(/\\\\/g, '/')\n }\n\n private async queryLatestMatch(toolName: string, versionSpec: string, includePrerelease: boolean): Promise {\n this.buildAgent.info(\n `Querying tool versions for ${toolName}${versionSpec ? `@${versionSpec}` : ''} ${includePrerelease ? 'including pre-releases' : ''}`\n )\n\n const toolNameParam = encodeURIComponent(toolName.toLowerCase())\n const prereleaseParam = includePrerelease ? 'true' : 'false'\n const downloadPath = `${DotnetTool.nugetRoot}?q=${toolNameParam}&prerelease=${prereleaseParam}&semVerLevel=2.0.0&take=1`\n\n const response = await fetch(downloadPath)\n\n if (!response || !response.ok) {\n this.buildAgent.info(`failed to query latest version for ${toolName} from ${downloadPath}. Status code: ${response ? response.status : 'unknown'}`)\n return null\n }\n\n const { data } = (await response.json()) as NugetVersions\n\n const versions = data[0].versions.map(x => x.version)\n if (!versions || !versions.length) {\n return null\n }\n\n this.buildAgent.debug(`got versions: ${versions.join(', ')}`)\n\n const version = semver.maxSatisfying(versions, versionSpec, { includePrerelease })\n if (version) {\n this.buildAgent.info(`Found matching version: ${version}`)\n } else {\n this.buildAgent.info('match not found')\n }\n\n return version\n }\n\n private async installTool(toolName: string, version: string, ignoreFailedSources: boolean): Promise {\n const semverVersion = semver.clean(version)\n if (!semverVersion) {\n throw new Error(`Invalid version spec: ${version}`)\n }\n\n const tempDirectory = await this.createTempDirectory()\n\n if (!tempDirectory) {\n throw new Error('Unable to create temp directory')\n }\n\n const args = ['tool', 'install', toolName, '--tool-path', tempDirectory, '--version', semverVersion]\n if (ignoreFailedSources) {\n args.push('--ignore-failed-sources')\n }\n\n const result = await this.execute('dotnet', args)\n const status = result.code === 0 ? 'success' : 'failure'\n const message = result.code === 0 ? result.stdout : result.stderr\n\n this.buildAgent.debug(`Tool install result: ${status} ${message}`)\n\n if (result.code !== 0) {\n throw new Error(message)\n }\n\n const toolPath = await this.buildAgent.cacheToolDirectory(tempDirectory, toolName, semverVersion)\n this.buildAgent.debug(`Cached tool path: ${toolPath}`)\n this.buildAgent.debug(`Cleaning up temp directory: ${tempDirectory}`)\n await this.buildAgent.removeDirectory(tempDirectory)\n\n return toolPath\n }\n\n async createTempDirectory(): Promise {\n const tempRootDir = this.buildAgent.tempDir\n if (!tempRootDir) {\n throw new Error('Temp directory not set')\n }\n\n const uuid = crypto.randomUUID()\n const tempPath = path.join(tempRootDir, uuid)\n this.buildAgent.debug(`Creating temp directory ${tempPath}`)\n await fs.mkdir(tempPath, { recursive: true })\n return tempPath\n }\n\n private isExplicitVersion(versionSpec: string): boolean {\n const cleanedVersionSpec = semver.clean(versionSpec)\n const valid = semver.valid(cleanedVersionSpec) != null\n this.buildAgent.debug(`Is version explicit? ${valid}`)\n\n return valid\n }\n}\n","import { type IBuildAgent } from '@agents/common'\nimport { type SetupSettings } from './models'\n\nexport interface ISettingsProvider {\n getSetupSettings(): SetupSettings\n}\n\nexport class SettingsProvider implements ISettingsProvider {\n constructor(protected buildAgent: IBuildAgent) {}\n\n getSetupSettings(): SetupSettings {\n const versionSpec = this.buildAgent.getInput('versionSpec')\n const includePrerelease = this.buildAgent.getBooleanInput('includePrerelease')\n const ignoreFailedSources = this.buildAgent.getBooleanInput('ignoreFailedSources')\n const preferLatestVersion = this.buildAgent.getBooleanInput('preferLatestVersion')\n\n return {\n versionSpec,\n includePrerelease,\n ignoreFailedSources,\n preferLatestVersion\n }\n }\n}\n","export * from './models'\nexport * from './dotnet-tool'\nexport * from './settings'\n\nexport const keysOf = Object.keys as (obj: T) => (keyof T)[]\n","import type { IRunner } from './models.ts'\nimport { ExecResult, IBuildAgent } from '@agents/common'\nimport { IDotnetTool } from './dotnet-tool.ts'\n\nexport abstract class RunnerBase implements IRunner {\n protected abstract tool: IDotnetTool\n\n abstract run(command: string): Promise\n\n protected constructor(protected readonly buildAgent: IBuildAgent) {}\n\n protected disableTelemetry(): void {\n this.buildAgent.info(`Running on: '${this.buildAgent.agentName}'`)\n this.buildAgent.debug('Disabling telemetry')\n this.tool.disableTelemetry()\n }\n\n protected async safeExecute(action: () => Promise, successMessage: string): Promise {\n try {\n this.disableTelemetry()\n const result = await action()\n\n this.buildAgent.info(`${this.tool.toolName} Output:`)\n this.buildAgent.info('-------------------')\n this.buildAgent.info(result.stdout as string)\n this.buildAgent.info('-------------------')\n if (result.code === 0) {\n this.buildAgent.debug(`${this.tool.toolName} succeeded`)\n this.buildAgent.setSucceeded(successMessage, true)\n return result\n } else {\n this.buildAgent.debug(`${this.tool.toolName} failed`)\n this.buildAgent.error(result.stderr as string)\n this.buildAgent.setFailed(result.stderr as string, true)\n return result\n }\n } catch (error) {\n if (error instanceof Error) {\n this.buildAgent.debug(`${this.tool.toolName} failed`)\n this.buildAgent.error(error.message)\n this.buildAgent.setFailed(error.message, true)\n }\n return {\n code: -1,\n error: error as Error\n }\n }\n }\n}\n"],"names":["semver.clean","semver.satisfies","semver.maxSatisfying","semver.valid"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"tools.mjs","sources":["../../../src/tools/common/arguments-builder.ts","../../../src/tools/common/dotnet-tool.ts","../../../src/tools/common/settings.ts","../../../src/tools/common/index.ts","../../../src/tools/common/runner.ts"],"sourcesContent":["import * as os from 'node:os'\n\nexport class ArgumentsBuilder {\n private readonly args: string[] = []\n private readonly isWindows: boolean = os.platform() === 'win32'\n\n /**\n * Adds a simple argument without a key\n * @param value The argument value\n */\n addArgument(value: string): this {\n if (value) {\n this.args.push(this.escapeArgument(value))\n }\n return this\n }\n\n /**\n * Adds multiple arguments\n * @param values The argument values\n */\n addArguments(values: string[]): this {\n for (const value of values) {\n this.addArgument(value)\n }\n return this\n }\n\n /**\n * Adds a flag argument (--flag)\n * @param key The flag name\n */\n addFlag(key: string): this {\n if (key) {\n this.args.push(`--${key}`)\n }\n return this\n }\n\n /**\n * Adds a key-value argument (--key value)\n * @param key The argument key\n * @param value The argument value\n */\n addKeyValue(key: string, value?: string | null): this {\n if (key && value !== undefined && value !== null) {\n this.args.push(`--${key}`)\n this.args.push(this.escapeArgument(value))\n }\n return this\n }\n\n /**\n * Adds an equals-style argument (--key=value)\n * @param key The argument key\n * @param value The argument value\n */\n addKeyValueEquals(key: string, value?: string | null): this {\n if (key && value !== undefined && value !== null) {\n this.args.push(`--${key}=${this.escapeArgument(value)}`)\n }\n return this\n }\n\n /**\n * Adds a comma-separated list (--key value1,value2,value3)\n * @param key The argument key\n * @param values The list of values\n */\n addCommaList(key: string, values?: string[]): this {\n if (key && values && values.length > 0) {\n const escapedValues = values.map(v => this.escapeArgument(v))\n this.args.push(`--${key}`)\n this.args.push(escapedValues.join(','))\n }\n return this\n }\n\n /**\n * Escapes an argument value based on the current OS\n * @param value The argument value to escape\n * @returns The escaped argument value\n */\n private escapeArgument(value: string): string {\n if (!value) return value\n\n // No need to escape if it doesn't contain spaces or special chars\n if (!this.needsEscaping(value)) return value\n\n if (this.isWindows) {\n // On Windows, wrap in double quotes and escape inner double quotes with backslash\n return `\"${value.replace(/\"/g, '\\\\\"')}\"`\n } else {\n // On Unix, wrap in single quotes and escape inner single quotes\n // Escaping single quotes in bash requires closing the quote, adding an escaped quote, and reopening\n return `'${value.replace(/'/g, \"'\\\\''\")}'`\n }\n }\n\n /**\n * Determines if a value needs to be escaped\n * @param value The value to check\n * @returns True if the value needs escaping\n */\n private needsEscaping(value: string): boolean {\n const windowsNeedsEscaping = /[\\s&|<>^(){}[\\]\"']/\n const unixNeedsEscaping = /[\\s$\\\\`&|<>(){}[\\]\"']/\n if (this.isWindows) {\n return windowsNeedsEscaping.test(value)\n }\n return unixNeedsEscaping.test(value)\n }\n\n /**\n * Returns the built argument array\n */\n build(): string[] {\n return [...this.args]\n }\n\n /**\n * Parses an argument string into an array\n * @param argString The argument string to parse\n * @returns Array of parsed arguments\n */\n static parseArgumentString(argString: string): string[] {\n const args: string[] = []\n\n let inQuotes = false\n let escaped = false\n let lastCharWasSpace = true\n let arg = ''\n\n const append = (c: string): void => {\n // Only add a backslash for escaped characters other than quotes or backslashes\n if (escaped && c !== '\"' && c !== '\\\\') {\n arg += '\\\\'\n }\n\n arg += c\n escaped = false\n }\n\n for (let i = 0; i < argString.length; i++) {\n const c = argString.charAt(i)\n\n if (c === ' ' && !inQuotes) {\n if (!lastCharWasSpace) {\n args.push(arg)\n arg = ''\n }\n lastCharWasSpace = true\n continue\n } else {\n lastCharWasSpace = false\n }\n\n if (c === '\"') {\n if (!escaped) {\n inQuotes = !inQuotes\n } else {\n append(c)\n }\n continue\n }\n\n if (c === '\\\\' && escaped) {\n // Double backslash becomes a single backslash\n arg += '\\\\'\n escaped = false\n continue\n }\n\n if (c === '\\\\' && inQuotes) {\n escaped = true\n continue\n }\n\n append(c)\n lastCharWasSpace = false\n }\n\n if (!lastCharWasSpace) {\n args.push(arg.trim())\n }\n\n return args\n }\n}\n","import * as crypto from 'node:crypto'\nimport * as fs from 'node:fs/promises'\nimport * as os from 'node:os'\nimport * as path from 'node:path'\n\nimport * as semver from 'semver'\nimport { type IBuildAgent, type ExecResult } from '@agents/common'\nimport { ISettingsProvider } from './settings'\nimport { NugetVersions } from './models'\nimport { ArgumentsBuilder } from './arguments-builder'\n\nexport interface IDotnetTool {\n toolName: string\n\n disableTelemetry(): void\n\n install(): Promise\n}\n\nexport abstract class DotnetTool implements IDotnetTool {\n private static readonly nugetRoot: string = 'https://azuresearch-usnc.nuget.org/query'\n\n constructor(protected buildAgent: IBuildAgent) {}\n\n abstract get packageName(): string\n\n abstract get toolName(): string\n\n abstract get toolPathVariable(): string\n\n abstract get versionRange(): string | null\n\n abstract get settingsProvider(): ISettingsProvider\n\n disableTelemetry(): void {\n this.buildAgent.info('Disable Telemetry')\n this.buildAgent.setVariable('DOTNET_CLI_TELEMETRY_OPTOUT', 'true')\n this.buildAgent.setVariable('DOTNET_NOLOGO', 'true')\n }\n\n async install(): Promise {\n const dotnetExePath = await this.buildAgent.which('dotnet', true)\n this.buildAgent.debug(`whichPath: ${dotnetExePath}`)\n await this.setDotnetRoot()\n\n const setupSettings = this.settingsProvider.getSetupSettings()\n\n let version: string | null = semver.clean(setupSettings.versionSpec) || setupSettings.versionSpec\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`Acquiring ${this.packageName} for version spec: ${version}`)\n this.buildAgent.info('--------------------------')\n\n if (!this.isExplicitVersion(version)) {\n version = await this.queryLatestMatch(this.packageName, version, setupSettings.includePrerelease)\n if (!version) {\n throw new Error(`Unable to find ${this.packageName} version '${version}'.`)\n }\n }\n\n if (this.versionRange && !semver.satisfies(version, this.versionRange, { includePrerelease: setupSettings.includePrerelease })) {\n throw new Error(\n `Version spec '${setupSettings.versionSpec}' resolved as '${version}' does not satisfy the range '${this.versionRange}'.` +\n 'See https://github.com/GitTools/actions/blob/main/docs/versions.md for more information.'\n )\n }\n\n let toolPath: string | null = null\n if (!setupSettings.preferLatestVersion) {\n // Let's try and resolve the version locally first\n toolPath = await this.buildAgent.findLocalTool(this.packageName, version)\n if (toolPath) {\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`${this.packageName} version: ${version} found in local cache at ${toolPath}.`)\n this.buildAgent.info('--------------------------')\n }\n }\n\n if (!toolPath) {\n // Download, extract, cache\n toolPath = await this.installTool(this.packageName, version, setupSettings.ignoreFailedSources)\n this.buildAgent.info('--------------------------')\n this.buildAgent.info(`${this.packageName} version: ${version} installed.`)\n this.buildAgent.info('--------------------------')\n }\n\n // Prepend the tool's path. This prepends the PATH for the current process and\n // instructs the agent to prepend for each task that follows.\n this.buildAgent.info(`Prepending ${toolPath} to PATH`)\n this.buildAgent.addPath(toolPath)\n\n const pathVariable = this.toolPathVariable\n this.buildAgent.info(`Set ${pathVariable} to ${toolPath}`)\n this.buildAgent.setVariable(pathVariable, toolPath)\n this.buildAgent.setSucceeded(`${this.toolName} installed successfully`, true)\n\n return toolPath\n }\n\n protected async execute(cmd: string, args: string[]): Promise {\n this.buildAgent.info(`Command: ${cmd} ${args.join(' ')}`)\n return await this.buildAgent.exec(cmd, args)\n }\n\n protected async findToolExecutable(toolBasePath: string): Promise {\n const toolName = os.platform() === 'win32' ? `${this.toolName}.exe` : this.toolName\n\n // Check in the base path first\n const toolPath = path.join(toolBasePath, toolName)\n if (await this.buildAgent.fileExists(toolPath)) {\n return toolPath\n }\n\n // Get current system architecture\n const arch = os.arch()\n this.buildAgent.debug(`Current system architecture: ${arch}`)\n\n // Map node's architecture names to .NET's architecture folders\n const archPaths = []\n\n // Add primary architecture path based on current architecture\n if (arch === 'x64') {\n archPaths.push(path.join(toolBasePath, 'x64', toolName))\n } else if (arch === 'arm64') {\n archPaths.push(path.join(toolBasePath, 'arm64', toolName))\n }\n\n // Add platform-specific architecture paths\n if (os.platform() === 'darwin' && arch === 'arm64') {\n archPaths.push(path.join(toolBasePath, 'osx-arm64', toolName))\n } else if (os.platform() === 'darwin' && arch === 'x64') {\n archPaths.push(path.join(toolBasePath, 'osx-x64', toolName))\n }\n\n // Try each architecture-specific path\n for (const archPath of archPaths) {\n if (await this.buildAgent.fileExists(archPath)) {\n this.buildAgent.debug(`Found tool in architecture-specific directory: ${archPath}`)\n return archPath\n }\n }\n\n // Check in any other subdirectory as a fallback\n try {\n const entries = await fs.readdir(toolBasePath, { withFileTypes: true })\n for (const entry of entries) {\n if (entry.isDirectory()) {\n const nestedPath = path.join(toolBasePath, entry.name, toolName)\n if (await this.buildAgent.fileExists(nestedPath)) {\n this.buildAgent.debug(`Found tool in subdirectory: ${entry.name}`)\n return nestedPath\n }\n }\n }\n } catch (error) {\n if (error instanceof Error) {\n this.buildAgent.debug(`Error reading subdirectories: ${error.message}`)\n }\n }\n\n return null\n }\n\n protected async setDotnetRoot(): Promise {\n if (os.platform() !== 'win32' && !this.buildAgent.getVariable('DOTNET_ROOT')) {\n let dotnetPath = await this.buildAgent.which('dotnet', true)\n\n const stats = await fs.lstat(dotnetPath)\n if (stats.isSymbolicLink()) {\n dotnetPath = (await fs.readlink(dotnetPath)) || dotnetPath\n }\n const dotnetRoot = path.dirname(dotnetPath)\n this.buildAgent.setVariable('DOTNET_ROOT', dotnetRoot)\n }\n }\n\n protected async executeTool(args: string[]): Promise {\n // First, check if we have a path variable set\n const variablePath = this.buildAgent.getVariableAsPath(this.toolPathVariable)\n let toolPath: string | undefined\n\n if (variablePath) {\n // Try to find the executable in the path or its subdirectories\n const foundExecutable = await this.findToolExecutable(variablePath)\n if (foundExecutable) {\n toolPath = foundExecutable\n this.buildAgent.debug(`Found tool executable at: ${toolPath}`)\n } else {\n // Fallback to old behavior if executable not found\n toolPath = path.join(variablePath, os.platform() === 'win32' ? `${this.toolName}.exe` : this.toolName)\n this.buildAgent.debug(`Defaulting to expected tool path: ${toolPath}`)\n }\n }\n\n // If we still don't have a path, try to find it in PATH\n if (!toolPath) {\n toolPath = await this.buildAgent.which(this.toolName, true)\n }\n\n args = ['--roll-forward Major', ...args]\n return await this.execute(toolPath, args)\n }\n\n protected async isValidInputFile(input: string, file: string): Promise {\n return this.filePathSupplied(input) && (await this.buildAgent.fileExists(file))\n }\n\n protected filePathSupplied(file: string): boolean {\n const pathValue = path.resolve(this.buildAgent.getInput(file) || '')\n const repoRoot = this.buildAgent.sourceDir\n return pathValue !== repoRoot\n }\n\n protected async getRepoPath(targetPath: string): Promise {\n const srcDir = this.buildAgent.sourceDir || '.'\n let workDir: string\n if (!targetPath) {\n workDir = srcDir\n } else {\n if (!path.isAbsolute(targetPath)) {\n targetPath = path.resolve(targetPath)\n }\n if (await this.buildAgent.directoryExists(targetPath)) {\n workDir = targetPath\n } else {\n throw new Error(`Directory not found at ${targetPath}`)\n }\n }\n return path.normalize(workDir)\n }\n\n private async queryLatestMatch(toolName: string, versionSpec: string, includePrerelease: boolean): Promise {\n this.buildAgent.info(\n `Querying tool versions for ${toolName}${versionSpec ? `@${versionSpec}` : ''} ${includePrerelease ? 'including pre-releases' : ''}`\n )\n\n const toolNameParam = encodeURIComponent(toolName.toLowerCase())\n const prereleaseParam = includePrerelease ? 'true' : 'false'\n const downloadPath = `${DotnetTool.nugetRoot}?q=${toolNameParam}&prerelease=${prereleaseParam}&semVerLevel=2.0.0&take=1`\n\n const response = await fetch(downloadPath)\n\n if (!response || !response.ok) {\n this.buildAgent.info(`failed to query latest version for ${toolName} from ${downloadPath}. Status code: ${response ? response.status : 'unknown'}`)\n return null\n }\n\n const { data } = (await response.json()) as NugetVersions\n\n const versions = data[0].versions.map(x => x.version)\n if (!versions || !versions.length) {\n return null\n }\n\n this.buildAgent.debug(`got versions: ${versions.join(', ')}`)\n\n const version = semver.maxSatisfying(versions, versionSpec, { includePrerelease })\n if (version) {\n this.buildAgent.info(`Found matching version: ${version}`)\n } else {\n this.buildAgent.info('match not found')\n }\n\n return version\n }\n\n private async installTool(toolName: string, version: string, ignoreFailedSources: boolean): Promise {\n const semverVersion = semver.clean(version)\n if (!semverVersion) {\n throw new Error(`Invalid version spec: ${version}`)\n }\n\n const tempDirectory = await this.createTempDirectory()\n\n if (!tempDirectory) {\n throw new Error('Unable to create temp directory')\n }\n\n const builder = new ArgumentsBuilder()\n .addArgument('tool')\n .addArgument('install')\n .addArgument(toolName)\n .addKeyValue('tool-path', tempDirectory)\n .addKeyValue('version', semverVersion)\n\n if (ignoreFailedSources) {\n builder.addFlag('ignore-failed-sources')\n }\n\n const result = await this.execute('dotnet', builder.build())\n const status = result.code === 0 ? 'success' : 'failure'\n const message = result.code === 0 ? result.stdout : result.stderr\n\n this.buildAgent.debug(`Tool install result: ${status} ${message}`)\n\n if (result.code !== 0) {\n throw new Error(message)\n }\n\n const toolPath = await this.buildAgent.cacheToolDirectory(tempDirectory, toolName, semverVersion)\n this.buildAgent.debug(`Cached tool path: ${toolPath}`)\n this.buildAgent.debug(`Cleaning up temp directory: ${tempDirectory}`)\n await this.buildAgent.removeDirectory(tempDirectory)\n\n return toolPath\n }\n\n async createTempDirectory(): Promise {\n const tempRootDir = this.buildAgent.tempDir\n if (!tempRootDir) {\n throw new Error('Temp directory not set')\n }\n\n const uuid = crypto.randomUUID()\n const tempPath = path.join(tempRootDir, uuid)\n this.buildAgent.debug(`Creating temp directory ${tempPath}`)\n await fs.mkdir(tempPath, { recursive: true })\n return tempPath\n }\n\n private isExplicitVersion(versionSpec: string): boolean {\n const cleanedVersionSpec = semver.clean(versionSpec)\n const valid = semver.valid(cleanedVersionSpec) != null\n this.buildAgent.debug(`Is version explicit? ${valid}`)\n\n return valid\n }\n}\n","import { type IBuildAgent } from '@agents/common'\nimport { type SetupSettings } from './models'\n\nexport interface ISettingsProvider {\n getSetupSettings(): SetupSettings\n}\n\nexport class SettingsProvider implements ISettingsProvider {\n constructor(protected buildAgent: IBuildAgent) {}\n\n getSetupSettings(): SetupSettings {\n const versionSpec = this.buildAgent.getInput('versionSpec')\n const includePrerelease = this.buildAgent.getBooleanInput('includePrerelease')\n const ignoreFailedSources = this.buildAgent.getBooleanInput('ignoreFailedSources')\n const preferLatestVersion = this.buildAgent.getBooleanInput('preferLatestVersion')\n\n return {\n versionSpec,\n includePrerelease,\n ignoreFailedSources,\n preferLatestVersion\n }\n }\n}\n","export * from './models'\nexport * from './dotnet-tool'\nexport * from './settings'\nexport * from './arguments-builder'\n\nexport const keysOf = Object.keys as (obj: T) => (keyof T)[]\n","import type { IRunner } from './models.ts'\nimport { ExecResult, IBuildAgent } from '@agents/common'\nimport { IDotnetTool } from './dotnet-tool.ts'\n\nexport abstract class RunnerBase implements IRunner {\n protected abstract tool: IDotnetTool\n\n abstract run(command: string): Promise\n\n protected constructor(protected readonly buildAgent: IBuildAgent) {}\n\n protected disableTelemetry(): void {\n this.buildAgent.info(`Running on: '${this.buildAgent.agentName}'`)\n this.buildAgent.debug('Disabling telemetry')\n this.tool.disableTelemetry()\n }\n\n protected async safeExecute(action: () => Promise, successMessage: string): Promise {\n try {\n this.disableTelemetry()\n const result = await action()\n\n this.buildAgent.info(`${this.tool.toolName} Output:`)\n this.buildAgent.info('-------------------')\n this.buildAgent.info(result.stdout as string)\n this.buildAgent.info('-------------------')\n if (result.code === 0) {\n this.buildAgent.debug(`${this.tool.toolName} succeeded`)\n this.buildAgent.setSucceeded(successMessage, true)\n return result\n } else {\n this.buildAgent.debug(`${this.tool.toolName} failed`)\n this.buildAgent.error(result.stderr as string)\n this.buildAgent.setFailed(result.stderr as string, true)\n return result\n }\n } catch (error) {\n if (error instanceof Error) {\n this.buildAgent.debug(`${this.tool.toolName} failed`)\n this.buildAgent.error(error.message)\n this.buildAgent.setFailed(error.message, true)\n }\n return {\n code: -1,\n error: error as Error\n }\n }\n }\n}\n"],"names":["semver.clean","semver.satisfies","semver.maxSatisfying","semver.valid"],"mappings":"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"} \ No newline at end of file diff --git a/dist/tools/local/agent.mjs b/dist/tools/local/agent.mjs index 4dab82500..8eff52bf6 100644 --- a/dist/tools/local/agent.mjs +++ b/dist/tools/local/agent.mjs @@ -1,4 +1,5 @@ import * as process from 'node:process'; +import os from 'node:os'; import { B as BuildAgentBase } from '../libs/agents.mjs'; class BuildAgent extends BuildAgentBase { @@ -7,16 +8,16 @@ class BuildAgent extends BuildAgentBase { tempDirVariable = "AGENT_TEMP_DIR"; cacheDirVariable = "AGENT_TOOLS_DIR"; debug = (message) => { - process.stdout.write(`[debug] ${message}`); + process.stdout.write(`[debug] ${message}${os.EOL}`); }; info = (message) => { - process.stdout.write(`[info] - ${message}`); + process.stdout.write(`[info] - ${message}${os.EOL}`); }; warn = (message) => { - process.stderr.write(`[warn] - ${message}`); + process.stderr.write(`[warn] - ${message}${os.EOL}`); }; error = (message) => { - process.stderr.write(`[error] - ${message}`); + process.stderr.write(`[error] - ${message}${os.EOL}`); }; setSucceeded = (message, done) => this.info(`setSucceeded - ${message} - ${done}`); setFailed = (message, done) => this.error(`setFailed - ${message} - ${done}`); diff --git a/dist/tools/local/agent.mjs.map b/dist/tools/local/agent.mjs.map index 540dc042c..789c25eb7 100644 --- a/dist/tools/local/agent.mjs.map +++ b/dist/tools/local/agent.mjs.map @@ -1 +1 @@ -{"version":3,"file":"agent.mjs","sources":["../../../src/agents/local/build-agent.ts"],"sourcesContent":["import * as process from 'node:process'\n\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'Local'\n\n sourceDirVariable = 'AGENT_SOURCE_DIR'\n tempDirVariable = 'AGENT_TEMP_DIR'\n cacheDirVariable = 'AGENT_TOOLS_DIR'\n\n debug = (message: string): void => {\n process.stdout.write(`[debug] ${message}`)\n }\n\n info = (message: string): void => {\n process.stdout.write(`[info] - ${message}`)\n }\n\n warn = (message: string): void => {\n process.stderr.write(`[warn] - ${message}`)\n }\n\n error = (message: string): void => {\n process.stderr.write(`[error] - ${message}`)\n }\n\n setSucceeded = (message: string, done?: boolean): void => this.info(`setSucceeded - ${message} - ${done}`)\n\n setFailed = (message: string, done?: boolean): void => this.error(`setFailed - ${message} - ${done}`)\n\n setOutput = (name: string, value: string): void => this.debug(`setOutput - ${name} - ${value}`)\n\n setVariable(name: string, value: string): void {\n this.debug(`setVariable - ${name} - ${value}`)\n process.env[name] = value\n }\n\n updateBuildNumber = (version: string): void => this.debug(`updateBuildNumber - ${version}`)\n}\n"],"names":[],"mappings":";;;AAIO,MAAM,mBAAmB,cAAsC,CAAA;AAAA,EAClE,SAAY,GAAA,OAAA;AAAA,EAEZ,iBAAoB,GAAA,kBAAA;AAAA,EACpB,eAAkB,GAAA,gBAAA;AAAA,EAClB,gBAAmB,GAAA,iBAAA;AAAA,EAEnB,KAAA,GAAQ,CAAC,OAA0B,KAAA;AAC/B,IAAA,OAAA,CAAQ,MAAO,CAAA,KAAA,CAAM,CAAW,QAAA,EAAA,OAAO,CAAE,CAAA,CAAA;AAAA,GAC7C;AAAA,EAEA,IAAA,GAAO,CAAC,OAA0B,KAAA;AAC9B,IAAA,OAAA,CAAQ,MAAO,CAAA,KAAA,CAAM,CAAY,SAAA,EAAA,OAAO,CAAE,CAAA,CAAA;AAAA,GAC9C;AAAA,EAEA,IAAA,GAAO,CAAC,OAA0B,KAAA;AAC9B,IAAA,OAAA,CAAQ,MAAO,CAAA,KAAA,CAAM,CAAY,SAAA,EAAA,OAAO,CAAE,CAAA,CAAA;AAAA,GAC9C;AAAA,EAEA,KAAA,GAAQ,CAAC,OAA0B,KAAA;AAC/B,IAAA,OAAA,CAAQ,MAAO,CAAA,KAAA,CAAM,CAAa,UAAA,EAAA,OAAO,CAAE,CAAA,CAAA;AAAA,GAC/C;AAAA,EAEA,YAAA,GAAe,CAAC,OAAA,EAAiB,IAAyB,KAAA,IAAA,CAAK,KAAK,CAAkB,eAAA,EAAA,OAAO,CAAM,GAAA,EAAA,IAAI,CAAE,CAAA,CAAA;AAAA,EAEzG,SAAA,GAAY,CAAC,OAAA,EAAiB,IAAyB,KAAA,IAAA,CAAK,MAAM,CAAe,YAAA,EAAA,OAAO,CAAM,GAAA,EAAA,IAAI,CAAE,CAAA,CAAA;AAAA,EAEpG,SAAA,GAAY,CAAC,IAAA,EAAc,KAAwB,KAAA,IAAA,CAAK,MAAM,CAAe,YAAA,EAAA,IAAI,CAAM,GAAA,EAAA,KAAK,CAAE,CAAA,CAAA;AAAA,EAE9F,WAAA,CAAY,MAAc,KAAqB,EAAA;AAC3C,IAAA,IAAA,CAAK,KAAM,CAAA,CAAA,cAAA,EAAiB,IAAI,CAAA,GAAA,EAAM,KAAK,CAAE,CAAA,CAAA;AAC7C,IAAQ,OAAA,CAAA,GAAA,CAAI,IAAI,CAAI,GAAA,KAAA;AAAA;AACxB,EAEA,oBAAoB,CAAC,OAAA,KAA0B,KAAK,KAAM,CAAA,CAAA,oBAAA,EAAuB,OAAO,CAAE,CAAA,CAAA;AAC9F;;;;"} \ No newline at end of file +{"version":3,"file":"agent.mjs","sources":["../../../src/agents/local/build-agent.ts"],"sourcesContent":["import * as process from 'node:process'\nimport os from 'node:os'\n\nimport { BuildAgentBase, type IBuildAgent } from '@agents/common'\n\nexport class BuildAgent extends BuildAgentBase implements IBuildAgent {\n agentName = 'Local'\n\n sourceDirVariable = 'AGENT_SOURCE_DIR'\n tempDirVariable = 'AGENT_TEMP_DIR'\n cacheDirVariable = 'AGENT_TOOLS_DIR'\n\n debug = (message: string): void => {\n process.stdout.write(`[debug] ${message}${os.EOL}`)\n }\n\n info = (message: string): void => {\n process.stdout.write(`[info] - ${message}${os.EOL}`)\n }\n\n warn = (message: string): void => {\n process.stderr.write(`[warn] - ${message}${os.EOL}`)\n }\n\n error = (message: string): void => {\n process.stderr.write(`[error] - ${message}${os.EOL}`)\n }\n\n setSucceeded = (message: string, done?: boolean): void => this.info(`setSucceeded - ${message} - ${done}`)\n\n setFailed = (message: string, done?: boolean): void => this.error(`setFailed - ${message} - ${done}`)\n\n setOutput = (name: string, value: string): void => this.debug(`setOutput - ${name} - ${value}`)\n\n setVariable(name: string, value: string): void {\n this.debug(`setVariable - ${name} - ${value}`)\n process.env[name] = value\n }\n\n updateBuildNumber = (version: string): void => this.debug(`updateBuildNumber - ${version}`)\n}\n"],"names":[],"mappings":";;;;AAKO,MAAM,mBAAmB,cAAsC,CAAA;AAAA,EAClE,SAAY,GAAA,OAAA;AAAA,EAEZ,iBAAoB,GAAA,kBAAA;AAAA,EACpB,eAAkB,GAAA,gBAAA;AAAA,EAClB,gBAAmB,GAAA,iBAAA;AAAA,EAEnB,KAAA,GAAQ,CAAC,OAA0B,KAAA;AAC/B,IAAA,OAAA,CAAQ,OAAO,KAAM,CAAA,CAAA,QAAA,EAAW,OAAO,CAAG,EAAA,EAAA,CAAG,GAAG,CAAE,CAAA,CAAA;AAAA,GACtD;AAAA,EAEA,IAAA,GAAO,CAAC,OAA0B,KAAA;AAC9B,IAAA,OAAA,CAAQ,OAAO,KAAM,CAAA,CAAA,SAAA,EAAY,OAAO,CAAG,EAAA,EAAA,CAAG,GAAG,CAAE,CAAA,CAAA;AAAA,GACvD;AAAA,EAEA,IAAA,GAAO,CAAC,OAA0B,KAAA;AAC9B,IAAA,OAAA,CAAQ,OAAO,KAAM,CAAA,CAAA,SAAA,EAAY,OAAO,CAAG,EAAA,EAAA,CAAG,GAAG,CAAE,CAAA,CAAA;AAAA,GACvD;AAAA,EAEA,KAAA,GAAQ,CAAC,OAA0B,KAAA;AAC/B,IAAA,OAAA,CAAQ,OAAO,KAAM,CAAA,CAAA,UAAA,EAAa,OAAO,CAAG,EAAA,EAAA,CAAG,GAAG,CAAE,CAAA,CAAA;AAAA,GACxD;AAAA,EAEA,YAAA,GAAe,CAAC,OAAA,EAAiB,IAAyB,KAAA,IAAA,CAAK,KAAK,CAAkB,eAAA,EAAA,OAAO,CAAM,GAAA,EAAA,IAAI,CAAE,CAAA,CAAA;AAAA,EAEzG,SAAA,GAAY,CAAC,OAAA,EAAiB,IAAyB,KAAA,IAAA,CAAK,MAAM,CAAe,YAAA,EAAA,OAAO,CAAM,GAAA,EAAA,IAAI,CAAE,CAAA,CAAA;AAAA,EAEpG,SAAA,GAAY,CAAC,IAAA,EAAc,KAAwB,KAAA,IAAA,CAAK,MAAM,CAAe,YAAA,EAAA,IAAI,CAAM,GAAA,EAAA,KAAK,CAAE,CAAA,CAAA;AAAA,EAE9F,WAAA,CAAY,MAAc,KAAqB,EAAA;AAC3C,IAAA,IAAA,CAAK,KAAM,CAAA,CAAA,cAAA,EAAiB,IAAI,CAAA,GAAA,EAAM,KAAK,CAAE,CAAA,CAAA;AAC7C,IAAQ,OAAA,CAAA,GAAA,CAAI,IAAI,CAAI,GAAA,KAAA;AAAA;AACxB,EAEA,oBAAoB,CAAC,OAAA,KAA0B,KAAK,KAAM,CAAA,CAAA,oBAAA,EAAuB,OAAO,CAAE,CAAA,CAAA;AAC9F;;;;"} \ No newline at end of file diff --git a/docs/examples/azure/gitreleasemanager/addasset.md b/docs/examples/azure/gitreleasemanager/addasset.md index 0821d3c61..77a301d7a 100644 --- a/docs/examples/azure/gitreleasemanager/addasset.md +++ b/docs/examples/azure/gitreleasemanager/addasset.md @@ -2,7 +2,7 @@ ```yaml steps: - - task: gitreleasemanager/addasset@3.1.10 + - task: gitreleasemanager/addasset@3.2.0 inputs: token: '$(GITHUB_TOKEN)' owner: 'someOwner' diff --git a/docs/examples/azure/gitreleasemanager/close.md b/docs/examples/azure/gitreleasemanager/close.md index e1d2e51ad..00fc47904 100644 --- a/docs/examples/azure/gitreleasemanager/close.md +++ b/docs/examples/azure/gitreleasemanager/close.md @@ -2,7 +2,7 @@ ```yaml steps: - - task: gitreleasemanager/close@3.1.10 + - task: gitreleasemanager/close@3.2.0 inputs: token: '$(GITHUB_TOKEN)' owner: 'someOwner' diff --git a/docs/examples/azure/gitreleasemanager/create.md b/docs/examples/azure/gitreleasemanager/create.md index f113a7623..ff90c7e0d 100644 --- a/docs/examples/azure/gitreleasemanager/create.md +++ b/docs/examples/azure/gitreleasemanager/create.md @@ -2,7 +2,7 @@ ```yaml steps: - - task: gitreleasemanager/create@3.1.10 + - task: gitreleasemanager/create@3.2.0 displayName: Create release with GitReleaseManager inputs: token: $(GITHUB_TOKEN) diff --git a/docs/examples/azure/gitreleasemanager/discard.md b/docs/examples/azure/gitreleasemanager/discard.md index d4c3b9cde..5a8792b53 100644 --- a/docs/examples/azure/gitreleasemanager/discard.md +++ b/docs/examples/azure/gitreleasemanager/discard.md @@ -2,7 +2,7 @@ ```yaml steps: - - task: gitreleasemanager/discard@3.1.10 + - task: gitreleasemanager/discard@3.2.0 inputs: token: '$(GITHUB_TOKEN)' owner: 'someOwner' diff --git a/docs/examples/azure/gitreleasemanager/open.md b/docs/examples/azure/gitreleasemanager/open.md index 65dba1799..9b7bf3c9a 100644 --- a/docs/examples/azure/gitreleasemanager/open.md +++ b/docs/examples/azure/gitreleasemanager/open.md @@ -2,7 +2,7 @@ ```yaml steps: - - task: gitreleasemanager/open@3.1.10 + - task: gitreleasemanager/open@3.2.0 inputs: token: '$(GITHUB_TOKEN)' owner: 'someOwner' diff --git a/docs/examples/azure/gitreleasemanager/publish.md b/docs/examples/azure/gitreleasemanager/publish.md index 7b5ac4852..e8ef79b9a 100644 --- a/docs/examples/azure/gitreleasemanager/publish.md +++ b/docs/examples/azure/gitreleasemanager/publish.md @@ -2,7 +2,7 @@ ```yaml steps: - - task: gitreleasemanager/publish@3.1.10 + - task: gitreleasemanager/publish@3.2.0 inputs: token: '$(GITHUB_TOKEN)' owner: 'someOwner' diff --git a/docs/examples/azure/gitreleasemanager/setup.md b/docs/examples/azure/gitreleasemanager/setup.md index 1c61072d5..36d98c711 100644 --- a/docs/examples/azure/gitreleasemanager/setup.md +++ b/docs/examples/azure/gitreleasemanager/setup.md @@ -2,7 +2,7 @@ Find out how to use the **gitreleasemanager/setup** task using the examples below. -> The examples use version _3.1.10_ of the GitReleaseManager Setup task. It is recommended to use the latest released version in your own workflows. +> The examples use version _3.2.0_ of the GitReleaseManager Setup task. It is recommended to use the latest released version in your own workflows. ## Inputs @@ -10,7 +10,7 @@ The Setup GitReleaseManager action accepts the following inputs: ```yaml versionSpec: - description: Required version in the form of 0.18.x or exact version like 0.18.0. + description: Required version in the form of 0.20.x or exact version like 0.20.0. required: true default: '' includePrerelease: @@ -25,37 +25,37 @@ ignoreFailedSources: ### Example 1 -Install the latest GitReleaseManager 0.18.x version. +Install the latest GitReleaseManager 0.20.x version. ```yaml steps: - - task: gitreleasemanager/setup@3.1.10 + - task: gitreleasemanager/setup@3.2.0 displayName: Install GitReleaseManager inputs: - versionSpec: '0.18.x' + versionSpec: '0.20.x' ``` ### Example 2 -Install specific GitReleaseManager version 0.18.0. +Install specific GitReleaseManager version 0.20.0. ```yaml steps: - - task: gitreleasemanager/setup@3.1.10 + - task: gitreleasemanager/setup@3.2.0 displayName: Install GitReleaseManager inputs: - versionSpec: '0.18.0' + versionSpec: '0.20.0' ``` ### Example 3 -Install the latest GitReleaseManager 0.18.x version even it there is a cached version matching the versionSpec. +Install the latest GitReleaseManager 0.20.x version even it there is a cached version matching the versionSpec. ```yaml steps: - - task: gitreleasemanager/setup@3.1.10 + - task: gitreleasemanager/setup@3.2.0 displayName: Install GitReleaseManager inputs: - versionSpec: '0.18.x' + versionSpec: '0.20.x' preferLatestVersion: true ``` diff --git a/docs/examples/azure/gitversion/command.md b/docs/examples/azure/gitversion/command.md index 629404aa4..da5d131ae 100644 --- a/docs/examples/azure/gitversion/command.md +++ b/docs/examples/azure/gitversion/command.md @@ -10,15 +10,15 @@ steps: - checkout: self fetchDepth: 0 - - task: gitversion/setup@3.1.10 + - task: gitversion/setup@3.2.0 displayName: Install GitVersion inputs: - versionSpec: '6.0.x' + versionSpec: '6.3.x' ``` These steps are omitted from the examples for brevity. -> The examples use version _3.1.10_ of the GitVersion Command task. It is recommended to use the latest released version in your own workflows. +> The examples use version _3.2.0_ of the GitVersion Command task. It is recommended to use the latest released version in your own workflows. ## Inputs @@ -50,9 +50,9 @@ arguments: ```yaml steps: - # gitversion/setup@3.1.10 task omitted for brevity. + # gitversion/setup@3.2.0 task omitted for brevity. - - task: gitversion/command@3.1.10 + - task: gitversion/command@3.2.0 displayName: Display GitVersion config inputs: arguments: '/showConfig' @@ -67,9 +67,9 @@ steps: ```yaml steps: - # gitversion/setup@3.1.10 task omitted for brevity. + # gitversion/setup@3.2.0 task omitted for brevity. - - task: gitversion/command@3.1.10 + - task: gitversion/command@3.2.0 displayName: Output the FullSemVer variable inputs: arguments: '/showvariable FullSemVer' @@ -84,9 +84,9 @@ steps: ```yaml steps: - # gitversion/setup@3.1.10 task omitted for brevity. + # gitversion/setup@3.2.0 task omitted for brevity. - - task: gitversion/command@3.1.10 + - task: gitversion/command@3.2.0 displayName: Output the formatted version inputs: arguments: '/format {Major}.{Minor}' # any Output Variable can be used here diff --git a/docs/examples/azure/gitversion/execute.md b/docs/examples/azure/gitversion/execute.md index 80636664c..a6790aea7 100644 --- a/docs/examples/azure/gitversion/execute.md +++ b/docs/examples/azure/gitversion/execute.md @@ -10,15 +10,15 @@ steps: - checkout: self fetchDepth: 0 - - task: gitversion/setup@3.1.10 + - task: gitversion/setup@3.2.0 displayName: Install GitVersion inputs: - versionSpec: '6.0.x' + versionSpec: '6.3.x' ``` These steps are omitted from the examples for brevity. -> The examples use version _3.1.10_ of the GitVersion Execute task. It is recommended to use the latest released version in your own workflows. +> The examples use version _3.2.0_ of the GitVersion Execute task. It is recommended to use the latest released version in your own workflows. ## Inputs @@ -53,7 +53,7 @@ overrideConfig: description: | Optional override for the configuration file. This should be newline-separated key-value pairs, e.g.: update-build-number=false - next-version=3.1.10 + next-version=3.2.0 required: false default: '' updateAssemblyInfo: @@ -64,6 +64,10 @@ updateAssemblyInfoFilename: description: Update versions in specified file required: false default: '' +updateProjectFiles: + description: Whether to update versions in all project files + required: false + default: 'false' ``` ## Outputs @@ -114,9 +118,10 @@ The Execute GitVersion task creates the following job-scoped variables and multi ```yaml steps: - # gitversion/setup@3.1.10 task omitted for brevity. + # gitversion/setup@3.2.0 task omitted for brevity. - - task: gitversion/execute@3.1.10 + - task: gitversion/execute@3.2.0 + name: version_step # step id used as a reference for output values displayName: Determine Version ``` @@ -129,10 +134,11 @@ steps: ```yaml steps: - # gitversion/setup@3.1.10 task omitted for brevity. + # gitversion/setup@3.2.0 task omitted for brevity. - - task: gitversion/execute@3.1.10 + - task: gitversion/execute@3.2.0 displayName: Determine Version + name: version_step # step id used as a reference for output values inputs: useConfigFile: true @@ -158,10 +164,11 @@ branches: ```yaml steps: - # gitversion/setup@3.1.10 task omitted for brevity. + # gitversion/setup@3.2.0 task omitted for brevity. - - task: gitversion/execute@3.1.10 + - task: gitversion/execute@3.2.0 displayName: Determine Version + name: version_step # step id used as a reference for output values inputs: useConfigFile: true configFilePath: 'VersionConfig.yml' @@ -176,10 +183,11 @@ steps: ```yaml steps: - # gitversion/setup@3.1.10 task omitted for brevity. + # gitversion/setup@3.2.0 task omitted for brevity. - - task: gitversion/execute@3.1.10 + - task: gitversion/execute@3.2.0 displayName: Determine Version + name: version_step # step id used as a reference for output values inputs: disableCache: true disableNormalization: true @@ -194,10 +202,11 @@ steps: ```yaml steps: - # gitversion/setup@3.1.10 task omitted for brevity. + # gitversion/setup@3.2.0 task omitted for brevity. - - task: gitversion/execute@3.1.10 + - task: gitversion/execute@3.2.0 displayName: Determine Version + name: version_step # step id used as a reference for output values inputs: updateAssemblyInfo: true ``` @@ -211,14 +220,33 @@ steps: ```yaml steps: - # gitversion/setup@3.1.10 task omitted for brevity. + # gitversion/setup@3.2.0 task omitted for brevity. - - task: gitversion/execute@3.1.10 + - task: gitversion/execute@3.2.0 displayName: Determine Version + name: version_step # step id used as a reference for output values inputs: overrideConfig: | update-build-number=false - next-version=3.1.10 + next-version=3.2.0 +``` + + + +### Example 7 + +
+ Calculate the version for the build. Update the version in the project files. + +```yaml +steps: + # gitversion/setup@3.2.0 task omitted for brevity. + + - task: gitversion/execute@3.2.0 + displayName: Determine Version + name: version_step # step id used as a reference for output values + inputs: + updateProjectFiles: true ```
@@ -235,7 +263,7 @@ The multi-job output variables can be accessed across jobs and stages, in both c **GitVersion also automatically updates the pre-defined Build variable `Build.BuildNumber`.** You can disable the default behavior by setting the `update-build-number` to `false` in the configuration file or by using the `overrideConfig` input. -### Example 7 +### Example 8
Calculate the version for the build and use the output in a subsequent steps within the same job. @@ -245,19 +273,19 @@ jobs: - job: GitVersion_v6_same_job displayName: GitVersion v6 (same job) pool: - vmImage: ubuntu-latest + vmImage: ubuntu-24.04 steps: - checkout: self fetchDepth: 0 - - task: gitversion/setup@3.1.10 + - task: gitversion/setup@3.2.0 displayName: Install GitVersion inputs: - versionSpec: '6.0.x' + versionSpec: '6.3.x' - - task: gitversion/execute@3.1.10 + - task: gitversion/execute@3.2.0 displayName: Determine Version - name: version_step # step id used as reference for output values + name: version_step # step id used as a reference for output values inputs: overrideConfig: | update-build-number=false @@ -305,7 +333,7 @@ jobs:
-### Example 8 +### Example 9
Calculate the version for the build and use the output in a subsequent job. @@ -315,19 +343,19 @@ jobs: - job: GitVersion_v6_cross_job displayName: GitVersion v6 (cross job) pool: - vmImage: ubuntu-latest + vmImage: ubuntu-24.04 steps: - checkout: self fetchDepth: 0 - - task: gitversion/setup@3.1.10 + - task: gitversion/setup@3.2.0 displayName: Install GitVersion inputs: - versionSpec: '6.0.x' + versionSpec: '6.3.x' - - task: gitversion/execute@3.1.10 + - task: gitversion/execute@3.2.0 displayName: Determine Version - name: version_step # step id used as reference for output values + name: version_step # step id used as a reference for output values inputs: overrideConfig: | update-build-number=false @@ -339,7 +367,7 @@ jobs: variables: myvar_fullSemVer: $[ dependencies.GitVersion_v6_cross_job.outputs['version_step.fullSemVer'] ] pool: - vmImage: ubuntu-latest + vmImage: ubuntu-24.04 steps: - pwsh: | echo "FullSemVer (myvar_fullSemVer) : $(myvar_fullSemVer)" @@ -368,7 +396,7 @@ jobs: variables: myvar_GitVersion_FullSemVer: $[ dependencies.GitVersion_v6_cross_job.outputs['version_step.GitVersion_FullSemVer'] ] pool: - vmImage: ubuntu-latest + vmImage: ubuntu-24.04 steps: - pwsh: | echo "FullSemVer (myvar_GitVersion_FullSemVer) : $(myvar_GitVersion_FullSemVer)" @@ -393,7 +421,7 @@ jobs:
-### Example 9 +### Example 10
Calculate the version for the build and use the output in a subsequent stage. @@ -406,19 +434,19 @@ stages: - job: GitVersion_v6_cross_stage_producer displayName: GitVersion v6 (cross stage producer) pool: - vmImage: ubuntu-latest + vmImage: ubuntu-24.04 steps: - checkout: self fetchDepth: 0 - - task: gitversion/setup@3.1.10 + - task: gitversion/setup@3.2.0 displayName: Install GitVersion inputs: - versionSpec: '6.0.x' + versionSpec: '6.3.x' - - task: gitversion/execute@3.1.10 + - task: gitversion/execute@3.2.0 displayName: Determine Version - name: version_step # step id used as reference for output values + name: version_step # step id used as a reference for output values inputs: overrideConfig: | update-build-number=false @@ -432,7 +460,7 @@ stages: variables: myvar_fullSemVer: $[ stageDependencies.GitVersion_v6_cross_stage.GitVersion_v6_cross_stage_producer.outputs['version_step.fullSemVer'] ] pool: - vmImage: ubuntu-latest + vmImage: ubuntu-24.04 steps: - pwsh: | echo "FullSemVer (myvar_fullSemVer) : $(myvar_fullSemVer)" @@ -463,7 +491,7 @@ stages: variables: myvar_GitVersion_FullSemVer: $[ stageDependencies.GitVersion_v6_cross_stage.GitVersion_v6_cross_stage_producer.outputs['version_step.GitVersion_FullSemVer'] ] pool: - vmImage: ubuntu-latest + vmImage: ubuntu-24.04 steps: - pwsh: | echo "FullSemVer (myvar_GitVersion_FullSemVer) : $(myvar_GitVersion_FullSemVer)" diff --git a/docs/examples/azure/gitversion/setup.md b/docs/examples/azure/gitversion/setup.md index 47da34196..22023e564 100644 --- a/docs/examples/azure/gitversion/setup.md +++ b/docs/examples/azure/gitversion/setup.md @@ -2,7 +2,7 @@ Find out how to use the **gitversion/setup** task using the examples below. -> The examples use version _3.1.10_ of the GitVersion Setup task. It is recommended to use the latest released version in your own workflows. +> The examples use version _3.2.0_ of the GitVersion Setup task. It is recommended to use the latest released version in your own workflows. ## Inputs @@ -10,7 +10,7 @@ The Setup GitVersion task accepts the following inputs: ```yaml versionSpec: - description: Required version in the form of 6.0.x or exact version like 6.0.0. + description: Required version in the form of 6.3.x or exact version like 6.3.0. required: true default: '' includePrerelease: @@ -45,10 +45,10 @@ Install the latest GitVersion 6 version. ```yaml steps: - - task: gitversion/setup@3.1.10 + - task: gitversion/setup@3.2.0 displayName: Install GitVersion inputs: - versionSpec: '6.0.x' + versionSpec: '6.3.x' ``` ### Example 2 @@ -57,7 +57,7 @@ Install GitVersion 6.0.0. ```yaml steps: - - task: gitversion/setup@3.1.10 + - task: gitversion/setup@3.2.0 displayName: Install GitVersion inputs: versionSpec: '6.0.0' @@ -69,10 +69,10 @@ Install the latest GitVersion 6 pre-release version. For example **6.0.0-beta.6 ```yaml steps: - - task: gitversion/setup@3.1.10 + - task: gitversion/setup@3.2.0 displayName: Install GitVersion inputs: - versionSpec: '6.0.x' + versionSpec: '6.3.x' includePrerelease: true ``` @@ -82,9 +82,9 @@ Install the latest GitVersion 6 version even it there is a cached version matchi ```yaml steps: - - task: gitversion/setup@3.1.10 + - task: gitversion/setup@3.2.0 displayName: Install GitVersion inputs: - versionSpec: '6.0.x' + versionSpec: '6.3.x' preferLatestVersion: true ``` diff --git a/docs/examples/github/gitreleasemanager/addasset.md b/docs/examples/github/gitreleasemanager/addasset.md index 4f3b1682b..e7a6410e1 100644 --- a/docs/examples/github/gitreleasemanager/addasset.md +++ b/docs/examples/github/gitreleasemanager/addasset.md @@ -2,7 +2,7 @@ ```yaml steps: - - uses: gittools/actions/gitreleasemanager/addasset@v3.1.10 + - uses: gittools/actions/gitreleasemanager/addasset@v3.2.0 name: Add asset to a release with GitReleaseManager with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/examples/github/gitreleasemanager/close.md b/docs/examples/github/gitreleasemanager/close.md index 02611cc95..34ec06d44 100644 --- a/docs/examples/github/gitreleasemanager/close.md +++ b/docs/examples/github/gitreleasemanager/close.md @@ -2,7 +2,7 @@ ```yaml steps: - - uses: gittools/actions/gitreleasemanager/close@v3.1.10 + - uses: gittools/actions/gitreleasemanager/close@v3.2.0 name: Close release with GitReleaseManager with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/examples/github/gitreleasemanager/create.md b/docs/examples/github/gitreleasemanager/create.md index 939b5caef..d6a902b9a 100644 --- a/docs/examples/github/gitreleasemanager/create.md +++ b/docs/examples/github/gitreleasemanager/create.md @@ -2,7 +2,7 @@ ```yaml steps: - - uses: gittools/actions/gitreleasemanager/create@v3.1.10 + - uses: gittools/actions/gitreleasemanager/create@v3.2.0 name: Create release with GitReleaseManager with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/examples/github/gitreleasemanager/discard.md b/docs/examples/github/gitreleasemanager/discard.md index 2884ebdd6..d00793d42 100644 --- a/docs/examples/github/gitreleasemanager/discard.md +++ b/docs/examples/github/gitreleasemanager/discard.md @@ -2,7 +2,7 @@ ```yaml steps: - - uses: gittools/actions/gitreleasemanager/discard@v3.1.10 + - uses: gittools/actions/gitreleasemanager/discard@v3.2.0 name: Discard release with GitReleaseManager with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/examples/github/gitreleasemanager/open.md b/docs/examples/github/gitreleasemanager/open.md index f2fb5d378..9018d312a 100644 --- a/docs/examples/github/gitreleasemanager/open.md +++ b/docs/examples/github/gitreleasemanager/open.md @@ -2,7 +2,7 @@ ```yaml steps: - - uses: gittools/actions/gitreleasemanager/open@v3.1.10 + - uses: gittools/actions/gitreleasemanager/open@v3.2.0 name: Open release with GitReleaseManager with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/examples/github/gitreleasemanager/publish.md b/docs/examples/github/gitreleasemanager/publish.md index 14bba7ec3..ab23f3527 100644 --- a/docs/examples/github/gitreleasemanager/publish.md +++ b/docs/examples/github/gitreleasemanager/publish.md @@ -2,7 +2,7 @@ ```yaml steps: - - uses: gittools/actions/gitreleasemanager/publish@v3.1.10 + - uses: gittools/actions/gitreleasemanager/publish@v3.2.0 name: Publish release with GitReleaseManager with: token: ${{ secrets.GITHUB_TOKEN }} diff --git a/docs/examples/github/gitreleasemanager/setup.md b/docs/examples/github/gitreleasemanager/setup.md index a8284f51b..22dd00e39 100644 --- a/docs/examples/github/gitreleasemanager/setup.md +++ b/docs/examples/github/gitreleasemanager/setup.md @@ -2,7 +2,7 @@ Find out how to use the **gitreleasemanager/setup** action using the examples below. -> The examples use version _3.1.10_ of the GitReleaseManager Setup action. It is recommended to use the latest released version in your own workflows. +> The examples use version _3.2.0_ of the GitReleaseManager Setup action. It is recommended to use the latest released version in your own workflows. ## Inputs @@ -10,7 +10,7 @@ The Setup GitReleaseManager action accepts the following inputs: ```yaml versionSpec: - description: Required version in the form of 0.18.x or exact version like 0.18.0. + description: Required version in the form of 0.20.x or exact version like 0.20.0. required: true default: '' includePrerelease: @@ -25,37 +25,37 @@ ignoreFailedSources: ### Example 1 -Install the latest GitReleaseManager 0.18.x version. +Install the latest GitReleaseManager 0.20.x version. ```yaml steps: - name: Install GitReleaseManager - uses: gittools/actions/gitreleasemanager/setup@v3.1.10 + uses: gittools/actions/gitreleasemanager/setup@v3.2.0 with: - versionSpec: '0.18.x' + versionSpec: '0.20.x' ``` ### Example 2 -Install specific GitReleaseManager version 0.18.0. +Install specific GitReleaseManager version 0.20.0. ```yaml steps: - name: Install GitReleaseManager - uses: gittools/actions/gitreleasemanager/setup@v3.1.10 + uses: gittools/actions/gitreleasemanager/setup@v3.2.0 with: - versionSpec: '0.18.0' + versionSpec: '0.20.0' ``` ### Example 3 -Install the latest GitReleaseManager 0.18.x version even it there is a cached version matching the versionSpec.~~~~ +Install the latest GitReleaseManager 0.20.x version even it there is a cached version matching the versionSpec.~~~~ ```yaml steps: - name: Install GitReleaseManager - uses: gittools/actions/gitreleasemanager/setup@v3.1.10 + uses: gittools/actions/gitreleasemanager/setup@v3.2.0 with: - versionSpec: '0.18.x' + versionSpec: '0.20.x' preferLatestVersion: true ``` diff --git a/docs/examples/github/gitversion/command.md b/docs/examples/github/gitversion/command.md index ce96a1d34..eb4af9fc3 100644 --- a/docs/examples/github/gitversion/command.md +++ b/docs/examples/github/gitversion/command.md @@ -13,14 +13,14 @@ steps: fetch-depth: 0 - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v3.1.10 + uses: gittools/actions/gitversion/setup@v3.2.0 with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' ``` These steps are omitted from the examples for brevity. -> The examples use version _3.1.10_ of the GitVersion Command action. It is recommended to use the latest released version in your own workflows. +> The examples use version _3.2.0_ of the GitVersion Command action. It is recommended to use the latest released version in your own workflows. ## Inputs @@ -52,10 +52,10 @@ arguments: ```yaml steps: - # gittools/actions/gitversion/setup@v3.1.10 action omitted for brevity. + # gittools/actions/gitversion/setup@v3.2.0 action omitted for brevity. - name: Display GitVersion config - uses: gittools/actions/gitversion/command@v3.1.10 + uses: gittools/actions/gitversion/command@v3.2.0 with: useConfigFile: true arguments: '/showConfig' @@ -70,10 +70,10 @@ steps: ```yaml steps: - # gittools/actions/gitversion/setup@v3.1.10 action omitted for brevity. + # gittools/actions/gitversion/setup@v3.2.0 action omitted for brevity. - name: Output the FullSemVer variable - uses: gittools/actions/gitversion/command@v3.1.10 + uses: gittools/actions/gitversion/command@v3.2.0 with: arguments: '/showvariable FullSemVer' ``` @@ -87,10 +87,10 @@ steps: ```yaml steps: - # gittools/actions/gitversion/setup@v3.1.10 action omitted for brevity. + # gittools/actions/gitversion/setup@v3.2.0 action omitted for brevity. - name: Output the formatted version - uses: gittools/actions/gitversion/command@v3.1.10 + uses: gittools/actions/gitversion/command@v3.2.0 with: arguments: '/format {Major}.{Minor}' # any Output Variable can be used here ``` diff --git a/docs/examples/github/gitversion/execute.md b/docs/examples/github/gitversion/execute.md index 02bd27c6f..17265b27a 100644 --- a/docs/examples/github/gitversion/execute.md +++ b/docs/examples/github/gitversion/execute.md @@ -13,14 +13,14 @@ steps: fetch-depth: 0 - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v3.1.10 + uses: gittools/actions/gitversion/setup@v3.2.0 with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' ``` These steps are omitted from the examples for brevity. -> The examples use version _3.1.10_ of the GitVersion Execute action. It is recommended to use the latest released version in your own workflows. +> The examples use version _3.2.0_ of the GitVersion Execute action. It is recommended to use the latest released version in your own workflows. ## Inputs @@ -55,7 +55,7 @@ overrideConfig: description: | Optional override for the configuration file. This should be newline-separated key-value pairs, e.g.: update-build-number=false - next-version=3.1.10 + next-version=3.2.0 required: false default: '' updateAssemblyInfo: @@ -66,6 +66,10 @@ updateAssemblyInfoFilename: description: Update versions in specified file required: false default: '' +updateProjectFiles: + description: Whether to update versions in the project files + required: false + default: 'false' ``` ## Outputs @@ -116,10 +120,11 @@ The Execute GitVersion action creates the following outputs: ```yaml steps: - # gittools/actions/gitversion/setup@v3.1.10 action omitted for brevity. + # gittools/actions/gitversion/setup@v3.2.0 action omitted for brevity. - name: Determine Version - uses: gittools/actions/gitversion/execute@v3.1.10 + id: version_step # step id used as a reference for output values + uses: gittools/actions/gitversion/execute@v3.2.0 ```
@@ -132,7 +137,8 @@ steps: ```yaml steps: - name: Determine Version - uses: gittools/actions/gitversion/execute@v3.1.10 + id: version_step # step id used as a reference for output values + uses: gittools/actions/gitversion/execute@v3.2.0 with: useConfigFile: true ``` @@ -157,10 +163,11 @@ branches: ```yaml steps: - # gittools/actions/gitversion/setup@v3.1.10 action omitted for brevity. + # gittools/actions/gitversion/setup@v3.2.0 action omitted for brevity. - name: Determine Version - uses: gittools/actions/gitversion/execute@v3.1.10 + id: version_step # step id used as a reference for output values + uses: gittools/actions/gitversion/execute@v3.2.0 with: useConfigFile: true configFilePath: VersionConfig.yml @@ -175,10 +182,11 @@ steps: ```yaml steps: - # gittools/actions/gitversion/setup@v3.1.10 action omitted for brevity. + # gittools/actions/gitversion/setup@v3.2.0 action omitted for brevity. - name: Determine Version - uses: gittools/actions/gitversion/execute@v3.1.10 + id: version_step # step id used as a reference for output values + uses: gittools/actions/gitversion/execute@v3.2.0 with: disableCache: true disableNormalization: true @@ -193,10 +201,10 @@ steps: ```yaml steps: - # gittools/actions/gitversion/setup@v3.1.10 action omitted for brevity. + # gittools/actions/gitversion/setup@v3.2.0 action omitted for brevity. - name: Determine Version - uses: gittools/actions/gitversion/execute@v3.1.10 + uses: gittools/actions/gitversion/execute@v3.2.0 with: updateAssemblyInfo: true ``` @@ -210,14 +218,33 @@ steps: ```yaml steps: - # gittools/actions/gitversion/setup@v3.1.10 action omitted for brevity. + # gittools/actions/gitversion/setup@v3.2.0 action omitted for brevity. - name: Determine Version - uses: gittools/actions/gitversion/execute@v3.1.10 + id: version_step # step id used as a reference for output values + uses: gittools/actions/gitversion/execute@v3.2.0 with: overrideConfig: | update-build-number=false - next-version=3.1.10 + next-version=3.2.0 +``` + + + +### Example 7 + +
+ Calculate the version for the build. Update the version in the project files. + +```yaml +steps: + # gittools/actions/gitversion/setup@v3.2.0 action omitted for brevity. + + - name: Determine Version + id: version_step # step id used as a reference for output values + uses: gittools/actions/gitversion/execute@v3.2.0 + with: + updateProjectFiles: true ```
@@ -229,7 +256,7 @@ where `` is the ID assigned to the step that calls the action, by subsequent The action also creates environment variables of the form `${{ env. }}` or `${{ env.GitVersion_ }}` for use by other steps in the same job. -### Example 7 +### Example 8
Calculate the version for the build and use the output in a subsequent steps within the same job. @@ -238,7 +265,7 @@ The action also creates environment variables of the form `${{ env. jobs: GitVersion_v6_same_job: name: GitVersion v6 (same job) - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 steps: - name: Checkout uses: actions/checkout@v4 @@ -246,13 +273,13 @@ jobs: fetch-depth: 0 - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v3.1.10 + uses: gittools/actions/gitversion/setup@v3.2.0 with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' - name: Determine Version - id: version_step # step id used as reference for output values - uses: gittools/actions/gitversion/execute@v3.1.10 + id: version_step # step id used as a reference for output values + uses: gittools/actions/gitversion/execute@v3.2.0 - run: | echo "FullSemVer (env.fullSemVer) : ${{ env.fullSemVer }}" @@ -313,7 +340,7 @@ jobs:
-### Example 8 +### Example 9
Calculate the version for the build and use the output in a subsequent job. @@ -322,7 +349,7 @@ jobs: jobs: GitVersion_v6_cross_job: name: GitVersion v6 (cross job) - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 outputs: branchName: ${{ steps.version_step.outputs.branchName }} fullSemVer: ${{ steps.version_step.outputs.fullSemVer }} @@ -336,18 +363,18 @@ jobs: fetch-depth: 0 - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v3.1.10 + uses: gittools/actions/gitversion/setup@v3.2.0 with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' - name: Determine Version - id: version_step # step id used as reference for output values - uses: gittools/actions/gitversion/execute@v3.1.10 + id: version_step # step id used as a reference for output values + uses: gittools/actions/gitversion/execute@v3.2.0 GitVersion_v6_cross_job_consumer_without_prefix: name: GitVersion v6 (cross job consumer) - without prefix needs: GitVersion_v6_cross_job - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: contains(needs.GitVersion_v6_cross_job.outputs['branchName'], 'main') env: myvar_fullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.fullSemVer }} @@ -403,7 +430,7 @@ jobs: GitVersion_v6_cross_job_consumer_with_prefix: name: GitVersion v6 (cross job consumer) - with prefix needs: GitVersion_v6_cross_job - runs-on: ubuntu-latest + runs-on: ubuntu-24.04 if: contains(needs.GitVersion_v6_cross_job.outputs['GitVersion_BranchName'], 'main') env: myvar_GitVersion_FullSemVer: ${{ needs.GitVersion_v6_cross_job.outputs.GitVersion_FullSemVer }} diff --git a/docs/examples/github/gitversion/setup.md b/docs/examples/github/gitversion/setup.md index 6976efd35..ab0f63398 100644 --- a/docs/examples/github/gitversion/setup.md +++ b/docs/examples/github/gitversion/setup.md @@ -2,7 +2,7 @@ Find out how to use the **gitversion/setup** action using the examples below. -> The examples use version _3.1.10_ of the GitVersion Setup action. It is recommended to use the latest released version in your own workflows. +> The examples use version _3.2.0_ of the GitVersion Setup action. It is recommended to use the latest released version in your own workflows. ## Inputs @@ -10,7 +10,7 @@ The Setup GitVersion action accepts the following inputs: ```yaml versionSpec: - description: Required version in the form of 6.0.x or exact version like 6.0.0. + description: Required version in the form of 6.3.x or exact version like 6.3.0. required: true default: '' includePrerelease: @@ -45,9 +45,9 @@ Install the latest GitVersion 6 version. ```yaml steps: - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v3.1.10 + uses: gittools/actions/gitversion/setup@v3.2.0 with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' ``` ### Example 2 @@ -57,7 +57,7 @@ Install GitVersion 6.0.0. ```yaml steps: - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v3.1.10 + uses: gittools/actions/gitversion/setup@v3.2.0 with: versionSpec: '6.0.0' ``` @@ -69,9 +69,9 @@ Install the latest GitVersion 6 pre-release version. For example **6.0.0-beta.6 ```yaml steps: - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v3.1.10 + uses: gittools/actions/gitversion/setup@v3.2.0 with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' includePrerelease: true ``` @@ -82,8 +82,8 @@ Install the latest GitVersion 6 version even it there is a cached version matchi ```yaml steps: - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v3.1.10 + uses: gittools/actions/gitversion/setup@v3.2.0 with: - versionSpec: '6.0.x' + versionSpec: '6.3.x' preferLatestVersion: true ``` diff --git a/docs/versions.md b/docs/versions.md index b3ebf4712..c51eb828e 100644 --- a/docs/versions.md +++ b/docs/versions.md @@ -2,6 +2,6 @@ | GitTools/actions | GitVersion | GitReleaseManager | Node.js | Azure DevOps Agent | |------------------|------------------|--------------------|--------------------|:-------------------------:| -| v1.x | `>=5.2.0 <6.1.0` | `>=0.10.0 <0.18.0` | `>=0.10.0 <0.20.0` | 2.220.0 | +| v1.x | `>=5.2.0 <6.1.0` | `>=0.10.0 <0.19.0` | `>=0.10.0 <0.20.0` | 2.220.0 | | v2.x | `>=5.2.0 <6.1.0` | `>=0.10.0 <0.20.0` | `>=0.20.0` | 3.224.0 | -| v3.x | `>=5.2.0 <6.1.0` | `>=0.18.0 <0.20.0` | `>=0.20.0` | 3.224.0 | +| v3.x | `>=5.2.0 <7.0.0` | `>=0.19.0 <0.21.0` | `>=0.20.0` | 3.224.0 | diff --git a/envs/gitversion/setup/azure.env b/envs/gitversion/setup/azure.env index 539fcfc97..bed388637 100644 --- a/envs/gitversion/setup/azure.env +++ b/envs/gitversion/setup/azure.env @@ -4,4 +4,4 @@ AGENT_TOOLSDIRECTORY=./.test/tools INPUT_IGNOREFAILEDSOURCES=true INPUT_INCLUDEPRERELEASE=false INPUT_PREFERLATESTVERSION=false -INPUT_VERSIONSPEC=6.0.x +INPUT_VERSIONSPEC=6.3.x diff --git a/envs/gitversion/setup/github.env b/envs/gitversion/setup/github.env index dc6fdf7e8..c742f4658 100644 --- a/envs/gitversion/setup/github.env +++ b/envs/gitversion/setup/github.env @@ -4,4 +4,4 @@ RUNNER_TOOL_CACHE=./.test/tools INPUT_IGNOREFAILEDSOURCES=true INPUT_INCLUDEPRERELEASE=false INPUT_PREFERLATESTVERSION=false -INPUT_VERSIONSPEC=6.0.x +INPUT_VERSIONSPEC=6.3.x diff --git a/envs/gitversion/setup/local.env b/envs/gitversion/setup/local.env index 5961d31d7..531171d6e 100644 --- a/envs/gitversion/setup/local.env +++ b/envs/gitversion/setup/local.env @@ -4,4 +4,4 @@ AGENT_TOOLS_DIR=./.test/tools INPUT_IGNOREFAILEDSOURCES=true INPUT_INCLUDEPRERELEASE=false INPUT_PREFERLATESTVERSION=false -INPUT_VERSIONSPEC=6.0.x +INPUT_VERSIONSPEC=6.3.x diff --git a/gitreleasemanager/setup/action.yml b/gitreleasemanager/setup/action.yml index 2e875ff91..9c0739184 100644 --- a/gitreleasemanager/setup/action.yml +++ b/gitreleasemanager/setup/action.yml @@ -9,7 +9,7 @@ runs: main: main.mjs inputs: versionSpec: - description: Required version in the form of 0.18.x or exact version like 0.18.0 + description: Required version in the form of 0.20.x or exact version like 0.20.0 required: true default: '' includePrerelease: diff --git a/gitversion/execute/action.yml b/gitversion/execute/action.yml index f8178f752..ed1847d12 100644 --- a/gitversion/execute/action.yml +++ b/gitversion/execute/action.yml @@ -47,6 +47,10 @@ inputs: description: Update versions in specified file required: false default: '' + updateProjectFiles: + description: Whether to update versions in the project files + required: false + default: 'false' outputs: major: # id of output description: 'The Major value' diff --git a/gitversion/setup/action.yml b/gitversion/setup/action.yml index 3cf09aabc..0a9997a6d 100644 --- a/gitversion/setup/action.yml +++ b/gitversion/setup/action.yml @@ -10,7 +10,7 @@ runs: inputs: versionSpec: - description: Required version in the form of 6.0.x or exact version like 6.0.0 + description: Required version in the form of 6.3.x or exact version like 6.3.0 required: true default: '' includePrerelease: diff --git a/package-lock.json b/package-lock.json index 357f74b17..f0b8a6974 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,41 +1,41 @@ { "name": "gittools-actions", - "version": "3.1.10", + "version": "3.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "gittools-actions", - "version": "3.1.10", + "version": "3.2.0", "dependencies": { - "semver": "^7.6.3" + "semver": "^7.7.1" }, "devDependencies": { - "@eslint/js": "^9.18.0", - "@stylistic/eslint-plugin": "^2.13.0", - "@types/eslint__js": "^8.42.3", - "@types/node": "^22.10.7", - "@types/semver": "^7.5.8", - "@vitest/eslint-plugin": "^1.1.25", - "dotenv": "^16.4.7", - "eslint": "^9.18.0", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-prettier": "^5.2.3", - "glob": "^11.0.1", - "globals": "^15.14.0", + "@eslint/js": "^9.25.1", + "@stylistic/eslint-plugin": "^4.2.0", + "@types/eslint__js": "^9.14.0", + "@types/node": "^22.15.1", + "@types/semver": "^7.7.0", + "@vitest/eslint-plugin": "^1.1.43", + "dotenv": "^16.5.0", + "eslint": "^9.25.1", + "eslint-config-prettier": "^10.1.2", + "eslint-plugin-prettier": "^5.2.6", + "glob": "^11.0.2", + "globals": "^16.0.0", "husky": "^9.1.7", - "lint-staged": "^15.4.1", - "markdownlint-cli": "^0.43.0", + "lint-staged": "^15.5.1", + "markdownlint-cli": "^0.44.0", "npm-run-all2": "^7.0.2", - "prettier": "^3.4.2", + "prettier": "^3.5.3", "simple-git": "^3.27.0", - "tfx-cli": "^0.18.0", - "typescript": "^5.7.3", - "typescript-eslint": "^8.21.0", - "vite": "^6.0.11", - "vite-node": "^3.0.3", + "tfx-cli": "^0.21.1", + "typescript": "^5.8.3", + "typescript-eslint": "^8.31.0", + "vite": "^6.3.3", + "vite-node": "^3.1.2", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.0.3" + "vitest": "^3.1.2" }, "engines": { "node": ">=20.0.0" @@ -51,13 +51,14 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.24.2.tgz", - "integrity": "sha512-thpVCb/rhxE/BnMLQ7GReQLLN8q9qbHmI55F4489/ByVg2aQaQ6kbcLb6FHkocZzQhxc4gx0sCk0tJkKBFzDhA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz", + "integrity": "sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "aix" @@ -67,13 +68,14 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.24.2.tgz", - "integrity": "sha512-tmwl4hJkCfNHwFB3nBa8z1Uy3ypZpxqxfTQOcHX+xRByyYgunVbZ9MzUUfb0RxaHIMnbHagwAxuTL+tnNM+1/Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.0.tgz", + "integrity": "sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -83,13 +85,14 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.24.2.tgz", - "integrity": "sha512-cNLgeqCqV8WxfcTIOeL4OAtSmL8JjcN6m09XIgro1Wi7cF4t/THaWEa7eL5CMoMBdjoHOTh/vwTO/o2TRXIyzg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz", + "integrity": "sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -99,13 +102,14 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.24.2.tgz", - "integrity": "sha512-B6Q0YQDqMx9D7rvIcsXfmJfvUYLoP722bgfBlO5cGvNVb5V/+Y7nhBE3mHV9OpxBf4eAS2S68KZztiPaWq4XYw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.0.tgz", + "integrity": "sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "android" @@ -115,13 +119,14 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.24.2.tgz", - "integrity": "sha512-kj3AnYWc+CekmZnS5IPu9D+HWtUI49hbnyqk0FLEJDbzCIQt7hg7ucF1SQAilhtYpIujfaHr6O0UHlzzSPdOeA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz", + "integrity": "sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -131,13 +136,14 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.24.2.tgz", - "integrity": "sha512-WeSrmwwHaPkNR5H3yYfowhZcbriGqooyu3zI/3GGpF8AyUdsrrP0X6KumITGA9WOyiJavnGZUwPGvxvwfWPHIA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz", + "integrity": "sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "darwin" @@ -147,13 +153,14 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.24.2.tgz", - "integrity": "sha512-UN8HXjtJ0k/Mj6a9+5u6+2eZ2ERD7Edt1Q9IZiB5UZAIdPnVKDoG7mdTVGhHJIeEml60JteamR3qhsr1r8gXvg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz", + "integrity": "sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -163,13 +170,14 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.24.2.tgz", - "integrity": "sha512-TvW7wE/89PYW+IevEJXZ5sF6gJRDY/14hyIGFXdIucxCsbRmLUcjseQu1SyTko+2idmCw94TgyaEZi9HUSOe3Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz", + "integrity": "sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "freebsd" @@ -179,13 +187,14 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.24.2.tgz", - "integrity": "sha512-n0WRM/gWIdU29J57hJyUdIsk0WarGd6To0s+Y+LwvlC55wt+GT/OgkwoXCXvIue1i1sSNWblHEig00GBWiJgfA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz", + "integrity": "sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==", "cpu": [ "arm" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -195,13 +204,14 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.24.2.tgz", - "integrity": "sha512-7HnAD6074BW43YvvUmE/35Id9/NB7BeX5EoNkK9obndmZBUk8xmJJeU7DwmUeN7tkysslb2eSl6CTrYz6oEMQg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz", + "integrity": "sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -211,13 +221,14 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.24.2.tgz", - "integrity": "sha512-sfv0tGPQhcZOgTKO3oBE9xpHuUqguHvSo4jl+wjnKwFpapx+vUDcawbwPNuBIAYdRAvIDBfZVvXprIj3HA+Ugw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz", + "integrity": "sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -227,13 +238,14 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.24.2.tgz", - "integrity": "sha512-CN9AZr8kEndGooS35ntToZLTQLHEjtVB5n7dl8ZcTZMonJ7CCfStrYhrzF97eAecqVbVJ7APOEe18RPI4KLhwQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz", + "integrity": "sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==", "cpu": [ "loong64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -243,13 +255,14 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.24.2.tgz", - "integrity": "sha512-iMkk7qr/wl3exJATwkISxI7kTcmHKE+BlymIAbHO8xanq/TjHaaVThFF6ipWzPHryoFsesNQJPE/3wFJw4+huw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz", + "integrity": "sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==", "cpu": [ "mips64el" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -259,13 +272,14 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.24.2.tgz", - "integrity": "sha512-shsVrgCZ57Vr2L8mm39kO5PPIb+843FStGt7sGGoqiiWYconSxwTiuswC1VJZLCjNiMLAMh34jg4VSEQb+iEbw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz", + "integrity": "sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==", "cpu": [ "ppc64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -275,13 +289,14 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.24.2.tgz", - "integrity": "sha512-4eSFWnU9Hhd68fW16GD0TINewo1L6dRrB+oLNNbYyMUAeOD2yCK5KXGK1GH4qD/kT+bTEXjsyTCiJGHPZ3eM9Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz", + "integrity": "sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==", "cpu": [ "riscv64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -291,13 +306,14 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.24.2.tgz", - "integrity": "sha512-S0Bh0A53b0YHL2XEXC20bHLuGMOhFDO6GN4b3YjRLK//Ep3ql3erpNcPlEFed93hsQAjAQDNsvcK+hV90FubSw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz", + "integrity": "sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==", "cpu": [ "s390x" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -307,13 +323,14 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.24.2.tgz", - "integrity": "sha512-8Qi4nQcCTbLnK9WoMjdC9NiTG6/E38RNICU6sUNqK0QFxCYgoARqVqxdFmWkdonVsvGqWhmm7MO0jyTqLqwj0Q==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz", + "integrity": "sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "linux" @@ -323,13 +340,14 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.24.2.tgz", - "integrity": "sha512-wuLK/VztRRpMt9zyHSazyCVdCXlpHkKm34WUyinD2lzK07FAHTq0KQvZZlXikNWkDGoT6x3TD51jKQ7gMVpopw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz", + "integrity": "sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -339,13 +357,14 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.24.2.tgz", - "integrity": "sha512-VefFaQUc4FMmJuAxmIHgUmfNiLXY438XrL4GDNV1Y1H/RW3qow68xTwjZKfj/+Plp9NANmzbH5R40Meudu8mmw==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz", + "integrity": "sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "netbsd" @@ -355,13 +374,14 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.24.2.tgz", - "integrity": "sha512-YQbi46SBct6iKnszhSvdluqDmxCJA+Pu280Av9WICNwQmMxV7nLRHZfjQzwbPs3jeWnuAhE9Jy0NrnJ12Oz+0A==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz", + "integrity": "sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -371,13 +391,14 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.24.2.tgz", - "integrity": "sha512-+iDS6zpNM6EnJyWv0bMGLWSWeXGN/HTaF/LXHXHwejGsVi+ooqDfMCCTerNFxEkM3wYVcExkeGXNqshc9iMaOA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz", + "integrity": "sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "openbsd" @@ -387,13 +408,14 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.24.2.tgz", - "integrity": "sha512-hTdsW27jcktEvpwNHJU4ZwWFGkz2zRJUz8pvddmXPtXDzVKTTINmlmga3ZzwcuMpUvLw7JkLy9QLKyGpD2Yxig==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz", + "integrity": "sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "sunos" @@ -403,13 +425,14 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.24.2.tgz", - "integrity": "sha512-LihEQ2BBKVFLOC9ZItT9iFprsE9tqjDjnbulhHoFxYQtQfai7qfluVODIYxt1PgdoyQkz23+01rzwNwYfutxUQ==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz", + "integrity": "sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==", "cpu": [ "arm64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -419,13 +442,14 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.24.2.tgz", - "integrity": "sha512-q+iGUwfs8tncmFC9pcnD5IvRHAzmbwQ3GPS5/ceCyHdjXubwQWI12MKWSNSMYLJMq23/IUCvJMS76PDqXe1fxA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz", + "integrity": "sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==", "cpu": [ "ia32" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -435,13 +459,14 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.24.2.tgz", - "integrity": "sha512-7VTgWzgMGvup6aSqDPLiW5zHaxYJGTO4OokMjIlrCtf+VpEL+cXKtCvg723iguPYI5oaUNdS+/V7OU2gvXVWEg==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz", + "integrity": "sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==", "cpu": [ "x64" ], "dev": true, + "license": "MIT", "optional": true, "os": [ "win32" @@ -475,12 +500,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.0.tgz", - "integrity": "sha512-zdHg2FPIFNKPdcHWtiNT+jEFCHYVplAXRDlQDyqy0zGx/q2parwh7brGJSiTxRk/TSMkbM//zt/f5CHgyTyaSQ==", + "version": "0.20.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", + "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.4", + "@eslint/object-schema": "^2.1.6", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -493,6 +519,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -503,6 +530,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -510,11 +538,22 @@ "node": "*" } }, + "node_modules/@eslint/config-helpers": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.1.tgz", + "integrity": "sha512-RI17tsD2frtDu/3dmI7QRrD4bedNKPM08ziRYaC5AhkGrzIAJelm9kJU1TznK+apx6V+cqRz8tfpEeG3oIyjxw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, "node_modules/@eslint/core": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.10.0.tgz", - "integrity": "sha512-gFHJ+xBOo4G3WRlR1e/3G8A6/KZAH6zcE/hkLRCZTi/B9avAG365QhFA8uOGzTMqgTghpn7/fSnscW++dpMSAw==", + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.13.0.tgz", + "integrity": "sha512-yfkgDw1KR66rkT5A8ci4irzDysN7FRpq3ttJolR88OqQikAWqwA8j5VZyas+vjyBNFIJ7MfybJ9plMILI2UrCw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "@types/json-schema": "^7.0.15" }, @@ -523,10 +562,11 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz", - "integrity": "sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.3.2", @@ -550,6 +590,7 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "dev": true, + "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -560,6 +601,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -572,6 +614,7 @@ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, + "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -580,30 +623,33 @@ } }, "node_modules/@eslint/js": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.18.0.tgz", - "integrity": "sha512-fK6L7rxcq6/z+AaQMtiFTkvbHkBLNlwyRxHpKawP0x3u9+NC6MQTnFW+AdpwC6gfHTW0051cokQgtTN2FqlxQA==", + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.25.1.tgz", + "integrity": "sha512-dEIwmjntEx8u3Uvv+kr3PDeeArL8Hw07H9kyYxCjnM9pBjfEhk6uLXSchxxzgiwtRhhzVzqmUSDFBOi1TuZ7qg==", "dev": true, + "license": "MIT", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/object-schema": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", - "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.5.tgz", - "integrity": "sha512-lB05FkqEdUg2AA0xEbUz0SnkXT1LcCTa438W4IWTUh4hdOnVbQyOJ81OrDXsJk/LSiJHubgGEFoR5EHq1NsH1A==", + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.8.tgz", + "integrity": "sha512-ZAoA40rNMPwSm+AeHpCq8STiNAwzWLJuP8Xv4CHIc9wv/PSuExjMrmjfYNj682vW0OOiZ1HKxzvjQr9XZIisQA==", "dev": true, + "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.10.0", + "@eslint/core": "^0.13.0", "levn": "^0.4.1" }, "engines": { @@ -659,10 +705,11 @@ } }, "node_modules/@humanwhocodes/retry": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz", - "integrity": "sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", + "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=18.18" }, @@ -786,9 +833,9 @@ } }, "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.0.tgz", + "integrity": "sha512-vsJDAkYR6qCPu+ioGScGiMYR7LvZYIXh/dlQeviqoTWNCVfKTLYD/LkNWH4Mxsv2a5vpIRc77FN5DnmK1eBggQ==", "dev": true, "license": "MIT", "engines": { @@ -799,9 +846,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.27.4.tgz", - "integrity": "sha512-2Y3JT6f5MrQkICUyRVCw4oa0sutfAsgaSsb0Lmmy1Wi2y7X5vT9Euqw4gOsCyy0YfKURBg35nhUKZS4mDcfULw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.40.0.tgz", + "integrity": "sha512-+Fbls/diZ0RDerhE8kyC6hjADCXA1K4yVNlH0EYfd2XjyH0UGgzaQ8MlT0pCXAThfxv3QUAczHaL+qSv1E4/Cg==", "cpu": [ "arm" ], @@ -813,9 +860,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.27.4.tgz", - "integrity": "sha512-wzKRQXISyi9UdCVRqEd0H4cMpzvHYt1f/C3CoIjES6cG++RHKhrBj2+29nPF0IB5kpy9MS71vs07fvrNGAl/iA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.40.0.tgz", + "integrity": "sha512-PPA6aEEsTPRz+/4xxAmaoWDqh67N7wFbgFUJGMnanCFs0TV99M0M8QhhaSCks+n6EbQoFvLQgYOGXxlMGQe/6w==", "cpu": [ "arm64" ], @@ -827,9 +874,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.27.4.tgz", - "integrity": "sha512-PlNiRQapift4LNS8DPUHuDX/IdXiLjf8mc5vdEmUR0fF/pyy2qWwzdLjB+iZquGr8LuN4LnUoSEvKRwjSVYz3Q==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.40.0.tgz", + "integrity": "sha512-GwYOcOakYHdfnjjKwqpTGgn5a6cUX7+Ra2HeNj/GdXvO2VJOOXCiYYlRFU4CubFM67EhbmzLOmACKEfvp3J1kQ==", "cpu": [ "arm64" ], @@ -841,9 +888,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.27.4.tgz", - "integrity": "sha512-o9bH2dbdgBDJaXWJCDTNDYa171ACUdzpxSZt+u/AAeQ20Nk5x+IhA+zsGmrQtpkLiumRJEYef68gcpn2ooXhSQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.40.0.tgz", + "integrity": "sha512-CoLEGJ+2eheqD9KBSxmma6ld01czS52Iw0e2qMZNpPDlf7Z9mj8xmMemxEucinev4LgHalDPczMyxzbq+Q+EtA==", "cpu": [ "x64" ], @@ -855,9 +902,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.27.4.tgz", - "integrity": "sha512-NBI2/i2hT9Q+HySSHTBh52da7isru4aAAo6qC3I7QFVsuhxi2gM8t/EI9EVcILiHLj1vfi+VGGPaLOUENn7pmw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.40.0.tgz", + "integrity": "sha512-r7yGiS4HN/kibvESzmrOB/PxKMhPTlz+FcGvoUIKYoTyGd5toHp48g1uZy1o1xQvybwwpqpe010JrcGG2s5nkg==", "cpu": [ "arm64" ], @@ -869,9 +916,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.27.4.tgz", - "integrity": "sha512-wYcC5ycW2zvqtDYrE7deary2P2UFmSh85PUpAx+dwTCO9uw3sgzD6Gv9n5X4vLaQKsrfTSZZ7Z7uynQozPVvWA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.40.0.tgz", + "integrity": "sha512-mVDxzlf0oLzV3oZOr0SMJ0lSDd3xC4CmnWJ8Val8isp9jRGl5Dq//LLDSPFrasS7pSm6m5xAcKaw3sHXhBjoRw==", "cpu": [ "x64" ], @@ -883,9 +930,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.27.4.tgz", - "integrity": "sha512-9OwUnK/xKw6DyRlgx8UizeqRFOfi9mf5TYCw1uolDaJSbUmBxP85DE6T4ouCMoN6pXw8ZoTeZCSEfSaYo+/s1w==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.40.0.tgz", + "integrity": "sha512-y/qUMOpJxBMy8xCXD++jeu8t7kzjlOCkoxxajL58G62PJGBZVl/Gwpm7JK9+YvlB701rcQTzjUZ1JgUoPTnoQA==", "cpu": [ "arm" ], @@ -897,9 +944,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.27.4.tgz", - "integrity": "sha512-Vgdo4fpuphS9V24WOV+KwkCVJ72u7idTgQaBoLRD0UxBAWTF9GWurJO9YD9yh00BzbkhpeXtm6na+MvJU7Z73A==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.40.0.tgz", + "integrity": "sha512-GoCsPibtVdJFPv/BOIvBKO/XmwZLwaNWdyD8TKlXuqp0veo2sHE+A/vpMQ5iSArRUz/uaoj4h5S6Pn0+PdhRjg==", "cpu": [ "arm" ], @@ -911,9 +958,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.27.4.tgz", - "integrity": "sha512-pleyNgyd1kkBkw2kOqlBx+0atfIIkkExOTiifoODo6qKDSpnc6WzUY5RhHdmTdIJXBdSnh6JknnYTtmQyobrVg==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.40.0.tgz", + "integrity": "sha512-L5ZLphTjjAD9leJzSLI7rr8fNqJMlGDKlazW2tX4IUF9P7R5TMQPElpH82Q7eNIDQnQlAyiNVfRPfP2vM5Avvg==", "cpu": [ "arm64" ], @@ -925,9 +972,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.27.4.tgz", - "integrity": "sha512-caluiUXvUuVyCHr5DxL8ohaaFFzPGmgmMvwmqAITMpV/Q+tPoaHZ/PWa3t8B2WyoRcIIuu1hkaW5KkeTDNSnMA==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.40.0.tgz", + "integrity": "sha512-ATZvCRGCDtv1Y4gpDIXsS+wfFeFuLwVxyUBSLawjgXK2tRE6fnsQEkE4csQQYWlBlsFztRzCnBvWVfcae/1qxQ==", "cpu": [ "arm64" ], @@ -938,10 +985,24 @@ "linux" ] }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.40.0.tgz", + "integrity": "sha512-wG9e2XtIhd++QugU5MD9i7OnpaVb08ji3P1y/hNbxrQ3sYEelKJOq1UJ5dXczeo6Hj2rfDEL5GdtkMSVLa/AOg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.27.4.tgz", - "integrity": "sha512-FScrpHrO60hARyHh7s1zHE97u0KlT/RECzCKAdmI+LEoC1eDh/RDji9JgFqyO+wPDb86Oa/sXkily1+oi4FzJQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.40.0.tgz", + "integrity": "sha512-vgXfWmj0f3jAUvC7TZSU/m/cOE558ILWDzS7jBhiCAFpY2WEBn5jqgbqvmzlMjtp8KlLcBlXVD2mkTSEQE6Ixw==", "cpu": [ "ppc64" ], @@ -953,9 +1014,23 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.27.4.tgz", - "integrity": "sha512-qyyprhyGb7+RBfMPeww9FlHwKkCXdKHeGgSqmIXw9VSUtvyFZ6WZRtnxgbuz76FK7LyoN8t/eINRbPUcvXB5fw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.40.0.tgz", + "integrity": "sha512-uJkYTugqtPZBS3Z136arevt/FsKTF/J9dEMTX/cwR7lsAW4bShzI2R0pJVw+hcBTWF4dxVckYh72Hk3/hWNKvA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.40.0.tgz", + "integrity": "sha512-rKmSj6EXQRnhSkE22+WvrqOqRtk733x3p5sWpZilhmjnkHkpeCgWsFFo0dGnUGeA+OZjRl3+VYq+HyCOEuwcxQ==", "cpu": [ "riscv64" ], @@ -967,9 +1042,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.27.4.tgz", - "integrity": "sha512-PFz+y2kb6tbh7m3A7nA9++eInGcDVZUACulf/KzDtovvdTizHpZaJty7Gp0lFwSQcrnebHOqxF1MaKZd7psVRg==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.40.0.tgz", + "integrity": "sha512-SpnYlAfKPOoVsQqmTFJ0usx0z84bzGOS9anAC0AZ3rdSo3snecihbhFTlJZ8XMwzqAcodjFU4+/SM311dqE5Sw==", "cpu": [ "s390x" ], @@ -981,9 +1056,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.27.4.tgz", - "integrity": "sha512-Ni8mMtfo+o/G7DVtweXXV/Ol2TFf63KYjTtoZ5f078AUgJTmaIJnj4JFU7TK/9SVWTaSJGxPi5zMDgK4w+Ez7Q==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", + "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", "cpu": [ "x64" ], @@ -995,9 +1070,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.27.4.tgz", - "integrity": "sha512-5AeeAF1PB9TUzD+3cROzFTnAJAcVUGLuR8ng0E0WXGkYhp6RD6L+6szYVX+64Rs0r72019KHZS1ka1q+zU/wUw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.40.0.tgz", + "integrity": "sha512-HZvjpiUmSNx5zFgwtQAV1GaGazT2RWvqeDi0hV+AtC8unqqDSsaFjPxfsO6qPtKRRg25SisACWnJ37Yio8ttaw==", "cpu": [ "x64" ], @@ -1009,9 +1084,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.27.4.tgz", - "integrity": "sha512-yOpVsA4K5qVwu2CaS3hHxluWIK5HQTjNV4tWjQXluMiiiu4pJj4BN98CvxohNCpcjMeTXk/ZMJBRbgRg8HBB6A==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.40.0.tgz", + "integrity": "sha512-UtZQQI5k/b8d7d3i9AZmA/t+Q4tk3hOC0tMOMSq2GlMYOfxbesxG4mJSeDp0EHs30N9bsfwUvs3zF4v/RzOeTQ==", "cpu": [ "arm64" ], @@ -1023,9 +1098,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.27.4.tgz", - "integrity": "sha512-KtwEJOaHAVJlxV92rNYiG9JQwQAdhBlrjNRp7P9L8Cb4Rer3in+0A+IPhJC9y68WAi9H0sX4AiG2NTsVlmqJeQ==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.40.0.tgz", + "integrity": "sha512-+m03kvI2f5syIqHXCZLPVYplP8pQch9JHyXKZ3AGMKlg8dCyr2PKHjwRLiW53LTrN/Nc3EqHOKxUxzoSPdKddA==", "cpu": [ "ia32" ], @@ -1037,9 +1112,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.27.4.tgz", - "integrity": "sha512-3j4jx1TppORdTAoBJRd+/wJRGCPC0ETWkXOecJ6PPZLj6SptXkrXcNqdj0oclbKML6FkQltdz7bBA3rUSirZug==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.40.0.tgz", + "integrity": "sha512-lpPE1cLfP5oPzVjKMx10pgBmKELQnFJXHgvtHCtuJWOv8MxqdEIMNtgHgBFf7Ea2/7EuVwa9fodWUfXAlXZLZQ==", "cpu": [ "x64" ], @@ -1051,12 +1126,13 @@ ] }, "node_modules/@stylistic/eslint-plugin": { - "version": "2.13.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-2.13.0.tgz", - "integrity": "sha512-RnO1SaiCFHn666wNz2QfZEFxvmiNRqhzaMXHXxXXKt+MEP7aajlPxUSMIQpKAaJfverpovEYqjBOXDq6dDcaOQ==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-4.2.0.tgz", + "integrity": "sha512-8hXezgz7jexGHdo5WN6JBEIPHCSFyyU4vgbxevu4YLVS5vl+sxqAAGyXSzfNDyR6xMNSH5H1x67nsXcYMOHtZA==", "dev": true, + "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.13.0", + "@typescript-eslint/utils": "^8.23.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "estraverse": "^5.3.0", @@ -1066,7 +1142,7 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" }, "peerDependencies": { - "eslint": ">=8.40.0" + "eslint": ">=9.0.0" } }, "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { @@ -1093,31 +1169,44 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/ms": "*" + } + }, "node_modules/@types/eslint": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", "dev": true, "license": "MIT", + "optional": true, + "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" } }, "node_modules/@types/eslint__js": { - "version": "8.42.3", - "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-8.42.3.tgz", - "integrity": "sha512-alfG737uhmPdnvkrLdZLcEKJ/B8s9Y4hrZ+YAdzUeoArBlSUERA2E87ROfOaS4jd/C45fzOoZzidLc1IPwLqOw==", + "version": "9.14.0", + "resolved": "https://registry.npmjs.org/@types/eslint__js/-/eslint__js-9.14.0.tgz", + "integrity": "sha512-s0jepCjOJWB/GKcuba4jISaVpBudw3ClXJ3fUK4tugChUMQsp6kSwuA8Dcx6wFd/JsJqcY8n4rEpa5RTHs5ypA==", + "deprecated": "This is a stub types definition. @eslint/js provides its own type definitions, so you do not need this installed.", "dev": true, "license": "MIT", "dependencies": { - "@types/eslint": "*" + "@eslint/js": "*" } }, "node_modules/@types/estree": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", - "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "dev": true, "license": "MIT" }, @@ -1128,37 +1217,60 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/katex": { + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", + "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/node": { - "version": "22.10.7", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.10.7.tgz", - "integrity": "sha512-V09KvXxFiutGp6B7XkpaDXlNadZxrzajcY50EuoLIpQ6WWYCSvf19lVIazzfIzQvhUN2HjX12spLojTnhuKlGg==", + "version": "22.15.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.1.tgz", + "integrity": "sha512-gSZyd0Qmv7qvbd2fJ9HGdYmv1yhNdelIA4YOtN6vkcmSwFhthxSEsBgU/JYZcXjWT6DFzoATcHrc52Ckh8SeRA==", "dev": true, + "license": "MIT", "dependencies": { - "undici-types": "~6.20.0" + "undici-types": "~6.21.0" } }, "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "dev": true + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", + "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==", + "dev": true, + "license": "MIT" }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.21.0.tgz", - "integrity": "sha512-eTH+UOR4I7WbdQnG4Z48ebIA6Bgi7WO8HvFEneeYBxG8qCOYgTOFPSg6ek9ITIDvGjDQzWHcoWHCDO2biByNzA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.31.0.tgz", + "integrity": "sha512-evaQJZ/J/S4wisevDvC1KFZkPzRetH8kYZbkgcTRyql3mcKsf+ZFDV1BVWUGTCAW5pQHoqn5gK5b8kn7ou9aFQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.21.0", - "@typescript-eslint/type-utils": "8.21.0", - "@typescript-eslint/utils": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.0", + "@typescript-eslint/scope-manager": "8.31.0", + "@typescript-eslint/type-utils": "8.31.0", + "@typescript-eslint/utils": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.0.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1170,20 +1282,20 @@ "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": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.21.0.tgz", - "integrity": "sha512-Wy+/sdEH9kI3w9civgACwabHbKl+qIOu0uFZ9IMKzX3Jpv9og0ZBJrZExGrPpFAY7rWsXuxs5e7CPPP17A4eYA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.31.0.tgz", + "integrity": "sha512-67kYYShjBR0jNI5vsf/c3WG4u+zDnCTHTPqVMQguffaWWFs7artgwKmfwdifl+r6XyM5LYLas/dInj2T0SgJyw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.21.0", - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/typescript-estree": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.0", + "@typescript-eslint/scope-manager": "8.31.0", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/typescript-estree": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0", "debug": "^4.3.4" }, "engines": { @@ -1195,18 +1307,18 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.21.0.tgz", - "integrity": "sha512-G3IBKz0/0IPfdeGRMbp+4rbjfSSdnGkXsM/pFZA8zM9t9klXDnB/YnKOBQ0GoPmoROa4bCq2NeHgJa5ydsQ4mA==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.31.0.tgz", + "integrity": "sha512-knO8UyF78Nt8O/B64i7TlGXod69ko7z6vJD9uhSlm0qkAbGeRUSudcm0+K/4CrRjrpiHfBCjMWlc08Vav1xwcw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.0" + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1217,16 +1329,16 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.21.0.tgz", - "integrity": "sha512-95OsL6J2BtzoBxHicoXHxgk3z+9P3BEcQTpBKriqiYzLKnM2DeSqs+sndMKdamU8FosiadQFT3D+BSL9EKnAJQ==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.31.0.tgz", + "integrity": "sha512-DJ1N1GdjI7IS7uRlzJuEDCgDQix3ZVYVtgeWEyhyn4iaoitpMBX6Ndd488mXSx0xah/cONAkEaYyylDyAeHMHg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.21.0", - "@typescript-eslint/utils": "8.21.0", + "@typescript-eslint/typescript-estree": "8.31.0", + "@typescript-eslint/utils": "8.31.0", "debug": "^4.3.4", - "ts-api-utils": "^2.0.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1237,13 +1349,13 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.21.0.tgz", - "integrity": "sha512-PAL6LUuQwotLW2a8VsySDBwYMm129vFm4tMVlylzdoTybTHaAi0oBp7Ac6LhSrHHOdLM3efH+nAR6hAWoMF89A==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.31.0.tgz", + "integrity": "sha512-Ch8oSjVyYyJxPQk8pMiP2FFGYatqXQfQIaMp+TpuuLlDachRWpUAeEu1u9B/v/8LToehUIWyiKcA/w5hUFRKuQ==", "dev": true, "license": "MIT", "engines": { @@ -1255,20 +1367,20 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.21.0.tgz", - "integrity": "sha512-x+aeKh/AjAArSauz0GiQZsjT8ciadNMHdkUSwBB9Z6PrKc/4knM4g3UfHml6oDJmKC88a6//cdxnO/+P2LkMcg==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.31.0.tgz", + "integrity": "sha512-xLmgn4Yl46xi6aDSZ9KkyfhhtnYI15/CvHbpOy/eR5NWhK/BK8wc709KKwhAR0m4ZKRP7h07bm4BWUYOCuRpQQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/visitor-keys": "8.21.0", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/visitor-keys": "8.31.0", "debug": "^4.3.4", "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", - "ts-api-utils": "^2.0.0" + "ts-api-utils": "^2.0.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1278,20 +1390,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.21.0.tgz", - "integrity": "sha512-xcXBfcq0Kaxgj7dwejMbFyq7IOHgpNMtVuDveK7w3ZGwG9owKzhALVwKpTF2yrZmEwl9SWdetf3fxNzJQaVuxw==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.31.0.tgz", + "integrity": "sha512-qi6uPLt9cjTFxAb1zGNgTob4x9ur7xC6mHQJ8GwEzGMGE9tYniublmJaowOJ9V2jUzxrltTPfdG2nKlWsq0+Ww==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "8.21.0", - "@typescript-eslint/types": "8.21.0", - "@typescript-eslint/typescript-estree": "8.21.0" + "@typescript-eslint/scope-manager": "8.31.0", + "@typescript-eslint/types": "8.31.0", + "@typescript-eslint/typescript-estree": "8.31.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1302,17 +1414,17 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.21.0.tgz", - "integrity": "sha512-BkLMNpdV6prozk8LlyK/SOoWLmUFi+ZD+pcqti9ILCbVvHGk1ui1g4jJOc2WDLaeExz2qWwojxlPce5PljcT3w==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.31.0.tgz", + "integrity": "sha512-QcGHmlRHWOl93o64ZUMNewCdwKGU6WItOU52H0djgNmn1EOrhVudrDzXz4OycCRSCPwFCDrE2iIt5vmuUdHxuQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.21.0", + "@typescript-eslint/types": "8.31.0", "eslint-visitor-keys": "^4.2.0" }, "engines": { @@ -1337,12 +1449,13 @@ } }, "node_modules/@vitest/eslint-plugin": { - "version": "1.1.25", - "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.1.25.tgz", - "integrity": "sha512-u8DpDnMbPcqBmJOB4PeEtn6q7vKmLVTLFMpzoxSAo0hjYdl4iYSHRleqwPQo0ywc7UV0S6RKIahYRQ3BnZdMVw==", + "version": "1.1.43", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.1.43.tgz", + "integrity": "sha512-OLoUMO67Yg+kr7E6SjF5+Qvl2f6uNJ7ImQYnXT8WgnPiZE41ZQBsnzn70jehXrhFVadphHs2smk+yl0TFKLV5Q==", "dev": true, + "license": "MIT", "peerDependencies": { - "@typescript-eslint/utils": ">= 8.0", + "@typescript-eslint/utils": ">= 8.24.0", "eslint": ">= 8.57.0", "typescript": ">= 5.0.0", "vitest": "*" @@ -1357,15 +1470,15 @@ } }, "node_modules/@vitest/expect": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.0.3.tgz", - "integrity": "sha512-SbRCHU4qr91xguu+dH3RUdI5dC86zm8aZWydbp961aIR7G8OYNN6ZiayFuf9WAngRbFOfdrLHCGgXTj3GtoMRQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.2.tgz", + "integrity": "sha512-O8hJgr+zREopCAqWl3uCVaOdqJwZ9qaDwUP7vy3Xigad0phZe9APxKhPcDNqYYi0rX5oMvwJMSCAXY2afqeTSA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.3", - "@vitest/utils": "3.0.3", - "chai": "^5.1.2", + "@vitest/spy": "3.1.2", + "@vitest/utils": "3.1.2", + "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, "funding": { @@ -1373,13 +1486,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.0.3.tgz", - "integrity": "sha512-XT2XBc4AN9UdaxJAeIlcSZ0ILi/GzmG5G8XSly4gaiqIvPV3HMTSIDZWJVX6QRJ0PX1m+W8Cy0K9ByXNb/bPIA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.2.tgz", + "integrity": "sha512-kOtd6K2lc7SQ0mBqYv/wdGedlqPdM/B38paPY+OwJ1XiNi44w3Fpog82UfOibmHaV9Wod18A09I9SCKLyDMqgw==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.0.3", + "@vitest/spy": "3.1.2", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -1400,9 +1513,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.0.3.tgz", - "integrity": "sha512-gCrM9F7STYdsDoNjGgYXKPq4SkSxwwIU5nkaQvdUxiQ0EcNlez+PdKOVIsUJvh9P9IeIFmjn4IIREWblOBpP2Q==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.2.tgz", + "integrity": "sha512-R0xAiHuWeDjTSB3kQ3OQpT8Rx3yhdOAIm/JM4axXxnG7Q/fS8XUwggv/A4xzbQA+drYRjzkMnpYnOGAc4oeq8w==", "dev": true, "license": "MIT", "dependencies": { @@ -1413,38 +1526,38 @@ } }, "node_modules/@vitest/runner": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.0.3.tgz", - "integrity": "sha512-Rgi2kOAk5ZxWZlwPguRJFOBmWs6uvvyAAR9k3MvjRvYrG7xYvKChZcmnnpJCS98311CBDMqsW9MzzRFsj2gX3g==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.2.tgz", + "integrity": "sha512-bhLib9l4xb4sUMPXnThbnhX2Yi8OutBMA8Yahxa7yavQsFDtwY/jrUZwpKp2XH9DhRFJIeytlyGpXCqZ65nR+g==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.0.3", - "pathe": "^2.0.1" + "@vitest/utils": "3.1.2", + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.0.3.tgz", - "integrity": "sha512-kNRcHlI4txBGztuJfPEJ68VezlPAXLRT1u5UCx219TU3kOG2DplNxhWLwDf2h6emwmTPogzLnGVwP6epDaJN6Q==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.2.tgz", + "integrity": "sha512-Q1qkpazSF/p4ApZg1vfZSQ5Yw6OCQxVMVrLjslbLFA1hMDrT2uxtqMaw8Tc/jy5DLka1sNs1Y7rBcftMiaSH/Q==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.3", + "@vitest/pretty-format": "3.1.2", "magic-string": "^0.30.17", - "pathe": "^2.0.1" + "pathe": "^2.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/spy": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.0.3.tgz", - "integrity": "sha512-7/dgux8ZBbF7lEIKNnEqQlyRaER9nkAL9eTmdKJkDO3hS8p59ATGwKOCUDHcBLKr7h/oi/6hP+7djQk8049T2A==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.2.tgz", + "integrity": "sha512-OEc5fSXMws6sHVe4kOFyDSj/+4MSwst0ib4un0DlcYgQvRuYQ0+M2HyqGaauUMnjq87tmUaMNDxKQx7wNfVqPA==", "dev": true, "license": "MIT", "dependencies": { @@ -1455,14 +1568,14 @@ } }, "node_modules/@vitest/utils": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.0.3.tgz", - "integrity": "sha512-f+s8CvyzPtMFY1eZKkIHGhPsQgYo5qCm6O8KZoim9qm1/jT64qBgGpO5tHscNH6BzRHM+edLNOP+3vO8+8pE/A==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.2.tgz", + "integrity": "sha512-5GGd0ytZ7BH3H6JTj9Kw7Prn1Nbg0wZVrIvou+UWxm54d+WoXXgAgjFJ8wn3LdagWLFSEfpPeyYrByZaGEZHLg==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.0.3", - "loupe": "^3.1.2", + "@vitest/pretty-format": "3.1.2", + "loupe": "^3.1.3", "tinyrainbow": "^2.0.0" }, "funding": { @@ -1496,6 +1609,7 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dev": true, + "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -1796,13 +1910,17 @@ } }, "node_modules/azure-devops-node-api": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-10.2.2.tgz", - "integrity": "sha512-4TVv2X7oNStT0vLaEfExmy3J4/CzfuXolEcQl/BRUmvGySqKStTG2O55/hUQ0kM7UJlZBLgniM0SBq4d/WkKow==", + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-14.1.0.tgz", + "integrity": "sha512-QhpgjH1LQ+vgDJ7oBwcmsZ3+o4ZpjLVilw0D3oJQpYpRzN+L39lk5jZDLJ464hLUgsDzWn/Ksv7zLLMKLfoBzA==", "dev": true, + "license": "MIT", "dependencies": { "tunnel": "0.0.6", - "typed-rest-client": "^1.8.4" + "typed-rest-client": "2.1.0" + }, + "engines": { + "node": ">= 16.0.0" } }, "node_modules/balanced-match": { @@ -1945,19 +2063,51 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/callsites": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/chai": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.1.2.tgz", - "integrity": "sha512-aGtmf24DW6MLHHG5gCx4zaI3uBq3KRtxeVs0DjFH6Z0rDNbsvTxFASFvdj79pxjxZ8/5u3PIiN3IwEIQkiiuPw==", + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", "dev": true, "license": "MIT", "dependencies": { @@ -1987,6 +2137,39 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/check-error": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", @@ -2132,10 +2315,11 @@ } }, "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } @@ -2297,6 +2481,20 @@ } } }, + "node_modules/decode-named-character-reference": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", + "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/deep-eql": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", @@ -2356,10 +2554,45 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dotenv": { - "version": "16.4.7", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.7.tgz", - "integrity": "sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==", + "version": "16.5.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.5.0.tgz", + "integrity": "sha512-m/C+AwOAr9/W1UOIZUo232ejMNnJAJtYQjUbHoNTBNTJSvqzzDh7vnrei3o3r3m9blf6ZoDkvcw0VmozNRFJxg==", "dev": true, "license": "BSD-2-Clause", "engines": { @@ -2369,6 +2602,21 @@ "url": "https://dotenvx.com" } }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -2395,6 +2643,7 @@ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", "dev": true, + "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -2482,13 +2731,11 @@ "dev": true }, "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.2.4" - }, + "license": "MIT", "engines": { "node": ">= 0.4" } @@ -2509,10 +2756,11 @@ "dev": true }, "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", "dev": true, + "license": "MIT", "dependencies": { "es-errors": "^1.3.0" }, @@ -2552,11 +2800,12 @@ } }, "node_modules/esbuild": { - "version": "0.24.2", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.24.2.tgz", - "integrity": "sha512-+9egpBW8I3CD5XPe0n6BfT5fxLzxrlDzqydF3aviG+9ni1lDC/OvMHcxqEFV0+LANZG5R1bFMWfUrjVsdwxJvA==", + "version": "0.25.0", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz", + "integrity": "sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==", "dev": true, "hasInstallScript": true, + "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -2564,31 +2813,31 @@ "node": ">=18" }, "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/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" } }, "node_modules/escape-string-regexp": { @@ -2604,21 +2853,23 @@ } }, "node_modules/eslint": { - "version": "9.18.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.18.0.tgz", - "integrity": "sha512-+waTfRWQlSbpt3KWE+CjrPPYnbq9kfZIYUqapc0uBXyjTp8aYXZDsUH16m39Ryq3NjAVP4tjuF7KaukeqoCoaA==", + "version": "9.25.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.25.1.tgz", + "integrity": "sha512-E6Mtz9oGQWDCpV12319d59n4tx9zOTXSTmc8BLVxBx+G/0RdM5MvEEJLU9c0+aleoePYYgVTOsRblx433qmhWQ==", "dev": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.19.0", - "@eslint/core": "^0.10.0", - "@eslint/eslintrc": "^3.2.0", - "@eslint/js": "9.18.0", - "@eslint/plugin-kit": "^0.2.5", + "@eslint/config-array": "^0.20.0", + "@eslint/config-helpers": "^0.2.1", + "@eslint/core": "^0.13.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.25.1", + "@eslint/plugin-kit": "^0.2.8", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.1", + "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", @@ -2626,7 +2877,7 @@ "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.2.0", + "eslint-scope": "^8.3.0", "eslint-visitor-keys": "^4.2.0", "espree": "^10.3.0", "esquery": "^1.5.0", @@ -2663,25 +2914,27 @@ } }, "node_modules/eslint-config-prettier": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", - "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.2.tgz", + "integrity": "sha512-Epgp/EofAUeEpIdZkW60MHKvPyru1ruQJxPL+WIycnaPApuseK0Zpkrh/FwL9oIpQvIhJwV7ptOy0DWUjTlCiA==", "dev": true, + "license": "MIT", "bin": { - "eslint-config-prettier": "build/bin/cli.js" + "eslint-config-prettier": "bin/cli.js" }, "peerDependencies": { "eslint": ">=7.0.0" } }, "node_modules/eslint-plugin-prettier": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz", - "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==", + "version": "5.2.6", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.6.tgz", + "integrity": "sha512-mUcf7QG2Tjk7H055Jk0lGBjbgDnfrvqjhXh9t2xLMSCjZVcw9Rb1V6sVNXO0th3jgeO7zllWPTNRil3JW94TnQ==", "dev": true, + "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.9.1" + "synckit": "^0.11.0" }, "engines": { "node": "^14.18.0 || >=16.0.0" @@ -2692,7 +2945,7 @@ "peerDependencies": { "@types/eslint": ">=8.0.0", "eslint": ">=8.0.0", - "eslint-config-prettier": "*", + "eslint-config-prettier": ">= 7.0.0 <10.0.0 || >=10.1.0", "prettier": ">=3.0.0" }, "peerDependenciesMeta": { @@ -2705,10 +2958,11 @@ } }, "node_modules/eslint-scope": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz", - "integrity": "sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", + "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -2814,6 +3068,7 @@ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "estraverse": "^5.2.0" }, @@ -2935,10 +3190,11 @@ } }, "node_modules/expect-type": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.1.0.tgz", - "integrity": "sha512-bFi65yM+xZgk+u/KRIpekdSYkTB5W1pEf0Lt8Q8Msh7b+eQ7LXVtIB1Bkm4fvclDEL1b2CZkMhv2mOeF8tMdkA==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=12.0.0" } @@ -2956,7 +3212,8 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-diff": { "version": "1.3.0", @@ -2999,7 +3256,8 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/fast-levenshtein": { "version": "2.0.6", @@ -3008,9 +3266,9 @@ "dev": true }, "node_modules/fastq": { - "version": "1.18.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.18.0.tgz", - "integrity": "sha512-QKHXPW0hD8g4UET03SdOdunzSouc9N4AuHdsX8XNcTsuz+yYFILVNIX4l9yHABMhiEI9Db0JTTIpu0wB+Y1QQw==", + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", "dev": true, "license": "ISC", "dependencies": { @@ -3181,16 +3439,22 @@ } }, "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", "dev": true, + "license": "MIT", "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", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -3199,6 +3463,20 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, "node_modules/get-stdin": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", @@ -3238,10 +3516,11 @@ } }, "node_modules/glob": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz", - "integrity": "sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==", + "version": "11.0.2", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.0.2.tgz", + "integrity": "sha512-YT7U7Vye+t5fZ/QMkBFrTJ7ZQxInIUjwyAjVj84CYXqgBdv30MFUPGnBR6sQaVq6Is15wYJUsnzTuWaGRBhBAQ==", "dev": true, + "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", "jackspeak": "^4.0.1", @@ -3288,10 +3567,11 @@ } }, "node_modules/globals": { - "version": "15.14.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.14.0.tgz", - "integrity": "sha512-OkToC372DtlQeje9/zHIo5CT8lRP/FUgEOKBEhU4e0abL7J7CD24fD9ohiLN5hagG/kWCYj4K5oaxxtj2Z0Dig==", + "version": "16.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-16.0.0.tgz", + "integrity": "sha512-iInW14XItCXET01CQFqudPOWP2jYMl7T+QRQT+UNcR/iQncN/F0UNpgd76iFkBPgNQb4+X3LV9tLJYzwh+Gl3A==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -3322,12 +3602,13 @@ "dev": true }, "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" + "license": "MIT", + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -3389,10 +3670,11 @@ } }, "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -3487,10 +3769,11 @@ "dev": true }, "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", "dev": true, + "license": "MIT", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -3560,6 +3843,32 @@ "node": ">= 0.10" } }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-array-buffer": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", @@ -3661,6 +3970,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -3691,6 +4011,17 @@ "node": ">=0.10.0" } }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "dev": true, + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/is-negative-zero": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", @@ -3878,6 +4209,13 @@ "integrity": "sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==", "dev": true }, + "node_modules/js-md4": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", + "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", + "dev": true, + "license": "MIT" + }, "node_modules/js-yaml": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", @@ -3925,7 +4263,8 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", @@ -3960,6 +4299,33 @@ "setimmediate": "^1.0.5" } }, + "node_modules/katex": { + "version": "0.16.21", + "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.21.tgz", + "integrity": "sha512-XvqR7FgOHtWupfMiigNzmh+MgUVmDGU2kXZm899ZkPfcuoPuFxyHmXsgATDpFZDAXCI8tvinaVcDo8PIIJSo4A==", + "dev": true, + "funding": [ + "https://opencollective.com/katex", + "https://github.com/sponsors/katex" + ], + "license": "MIT", + "dependencies": { + "commander": "^8.3.0" + }, + "bin": { + "katex": "cli.js" + } + }, + "node_modules/katex/node_modules/commander": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12" + } + }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -4022,26 +4388,28 @@ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", "dev": true, + "license": "MIT", "dependencies": { "uc.micro": "^2.0.0" } }, "node_modules/lint-staged": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.4.1.tgz", - "integrity": "sha512-P8yJuVRyLrm5KxCtFx+gjI5Bil+wO7wnTl7C3bXhvtTaAFGirzeB24++D0wGoUwxrUKecNiehemgCob9YL39NA==", - "dev": true, - "dependencies": { - "chalk": "~5.4.1", - "commander": "~12.1.0", - "debug": "~4.4.0", - "execa": "~8.0.1", - "lilconfig": "~3.1.3", - "listr2": "~8.2.5", - "micromatch": "~4.0.8", - "pidtree": "~0.6.0", - "string-argv": "~0.3.2", - "yaml": "~2.6.1" + "version": "15.5.1", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.1.tgz", + "integrity": "sha512-6m7u8mue4Xn6wK6gZvSCQwBvMBR36xfY24nF5bMTf2MHDYG6S3yhJuOgdYVw99hsjyDt2d4z168b3naI8+NWtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.4.1", + "commander": "^13.1.0", + "debug": "^4.4.0", + "execa": "^8.0.1", + "lilconfig": "^3.1.3", + "listr2": "^8.2.5", + "micromatch": "^4.0.8", + "pidtree": "^0.6.0", + "string-argv": "^0.3.2", + "yaml": "^2.7.0" }, "bin": { "lint-staged": "bin/lint-staged.js" @@ -4413,9 +4781,9 @@ } }, "node_modules/loupe": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.2.tgz", - "integrity": "sha512-23I4pFZHmAemUnz8WZXbYRSKYj801VDaNv9ETuMh7IrMc7VuVVSo+Z9iLE3ni30+U48iDWfi30d3twAXBYmnCg==", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", "dev": true, "license": "MIT" }, @@ -4443,6 +4811,7 @@ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", "dev": true, + "license": "MIT", "dependencies": { "argparse": "^2.0.1", "entities": "^4.4.0", @@ -4456,13 +4825,21 @@ } }, "node_modules/markdownlint": { - "version": "0.36.1", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.36.1.tgz", - "integrity": "sha512-s73fU2CQN7WCgjhaQUQ8wYESQNzGRNOKDd+3xgVqu8kuTEhmwepd/mxOv1LR2oV046ONrTLBFsM7IoKWNvmy5g==", + "version": "0.37.4", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.37.4.tgz", + "integrity": "sha512-u00joA/syf3VhWh6/ybVFkib5Zpj2e5KB/cfCei8fkSRuums6nyisTWGqjTWIOFoFwuXoTBQQiqlB4qFKp8ncQ==", "dev": true, + "license": "MIT", "dependencies": { "markdown-it": "14.1.0", - "markdownlint-micromark": "0.1.12" + "micromark": "4.0.1", + "micromark-core-commonmark": "2.0.2", + "micromark-extension-directive": "3.0.2", + "micromark-extension-gfm-autolink-literal": "2.1.0", + "micromark-extension-gfm-footnote": "2.1.0", + "micromark-extension-gfm-table": "2.1.0", + "micromark-extension-math": "3.1.0", + "micromark-util-types": "2.0.1" }, "engines": { "node": ">=18" @@ -4472,19 +4849,20 @@ } }, "node_modules/markdownlint-cli": { - "version": "0.43.0", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.43.0.tgz", - "integrity": "sha512-6vwurKK4B21eyYzwgX6ph13cZS7hE6LZfcS8QyD722CyxVD2RtAvbZK2p7k+FZbbKORulEuwl+hJaEq1l6/hoQ==", + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.44.0.tgz", + "integrity": "sha512-ZJTAONlvF9NkrIBltCdW15DxN9UTbPiKMEqAh2EU2gwIFlrCMavyCEPPO121cqfYOrLUJWW8/XKWongstmmTeQ==", "dev": true, + "license": "MIT", "dependencies": { - "commander": "~12.1.0", - "glob": "~11.0.0", - "ignore": "~6.0.2", - "js-yaml": "^4.1.0", + "commander": "~13.1.0", + "glob": "~10.4.5", + "ignore": "~7.0.3", + "js-yaml": "~4.1.0", "jsonc-parser": "~3.3.1", - "jsonpointer": "5.0.1", - "markdownlint": "~0.36.1", - "minimatch": "~10.0.1", + "jsonpointer": "~5.0.1", + "markdownlint": "~0.37.4", + "minimatch": "~9.0.5", "run-con": "~1.3.2", "smol-toml": "~1.3.1" }, @@ -4495,84 +4873,666 @@ "node": ">=18" } }, + "node_modules/markdownlint-cli/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/markdownlint-cli/node_modules/ignore": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-6.0.2.tgz", - "integrity": "sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.3.tgz", + "integrity": "sha512-bAH5jbK/F3T3Jls4I0SO1hmPR0dKU0a7+SY6n1yzRtG54FLO8d6w/nxLFX2Nb7dBu6cCWXPaAME6cYqFUMmuCA==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } }, - "node_modules/markdownlint-cli/node_modules/minimatch": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz", - "integrity": "sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==", + "node_modules/markdownlint-cli/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/markdownlint-cli/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/markdownlint-cli/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/meow": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", + "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.1.tgz", + "integrity": "sha512-eBPdkcoCNvYcxQOAKAlceo5SNdzZWfF+FcSupREAzdAh9rRmE239CEQAiTwIgblwnoM8zzj35sZ5ZwvSEOF6Kw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.2.tgz", + "integrity": "sha512-FKjQKbxd1cibWMM1P9N+H8TwlgGgSkWZMmfuVucLCHaYqeSvJ0hFeHsIa65pA2nYbes0f8LDHPMrd9X7Ujxg9w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-directive": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-directive/-/micromark-extension-directive-3.0.2.tgz", + "integrity": "sha512-wjcXHgk+PPdmvR58Le9d7zQYWy+vKEU9Se44p2CrCDPiLr2FMyiT4Fyb5UFKFC66wGB3kPlgD7q3TnoqPS7SZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "parse-entities": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dev": true, + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.0.tgz", + "integrity": "sha512-Ub2ncQv+fwD70/l4ou27b4YzfNaCJOvyX4HxXU15m7mpYY+rjuWzsLIPZHJL253Z643RpbcP1oeIJlQ/SKW67g==", + "dev": true, + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-math": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", + "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/katex": "^0.16.0", + "devlop": "^1.0.0", + "katex": "^0.16.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/markdownlint-micromark": { - "version": "0.1.12", - "resolved": "https://registry.npmjs.org/markdownlint-micromark/-/markdownlint-micromark-0.1.12.tgz", - "integrity": "sha512-RlB6EwMGgc0sxcIhOQ2+aq7Zw1V2fBnzbXKGgYK/mVWdT7cz34fteKSwfYeo4rL6+L/q2tyC9QtD/PgZbkdyJQ==", + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/DavidAnson" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-types": "^2.0.0" } }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", - "dev": true - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", "dev": true, - "engines": { - "node": ">= 0.10.0" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", + "node_modules/micromark-util-subtokenize": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.0.4.tgz", + "integrity": "sha512-N6hXjrin2GTJDe3MVjf5FuXpm12PGm80BrUAeub9XFXca8JZbP+oIwY4LJSVwFUCL1IPm/WwSVUN7goFHmSGGQ==", "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/micromark-util-types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.1.tgz", + "integrity": "sha512-534m2WhVTddrcKVepwmVEVnUAmtrx9bfIjNoQHRqfnvdaHQiFytEhJoTgpWJvDEXCO5gLTQh3wYC1PgOJA4NSQ==", "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "license": "MIT" }, "node_modules/micromatch": { "version": "4.0.8", @@ -4613,6 +5573,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true, + "license": "ISC" + }, "node_modules/minimatch": { "version": "9.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", @@ -4800,10 +5767,11 @@ } }, "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", "dev": true, + "license": "MIT", "engines": { "node": ">= 0.4" }, @@ -4983,6 +5951,7 @@ "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, + "license": "MIT", "dependencies": { "callsites": "^3.0.0" }, @@ -4990,6 +5959,26 @@ "node": ">=6" } }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -5040,10 +6029,11 @@ } }, "node_modules/pathe": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.1.tgz", - "integrity": "sha512-6jpjMpOth5S9ITVu5clZ7NOgHNsv5vRQdheL9ztp2vZmM6fRbLvyua1tiBIL4lk8SAe3ARzeXEly6siXCjDHDw==", - "dev": true + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" }, "node_modules/pathval": { "version": "2.0.0", @@ -5096,9 +6086,9 @@ } }, "node_modules/postcss": { - "version": "8.4.49", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.49.tgz", - "integrity": "sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==", + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz", + "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==", "dev": true, "funding": [ { @@ -5116,7 +6106,7 @@ ], "license": "MIT", "dependencies": { - "nanoid": "^3.3.7", + "nanoid": "^3.3.8", "picocolors": "^1.1.1", "source-map-js": "^1.2.1" }, @@ -5134,9 +6124,9 @@ } }, "node_modules/prettier": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", - "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz", + "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, "license": "MIT", "bin": { @@ -5201,6 +6191,7 @@ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -5210,17 +6201,19 @@ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/qs": { - "version": "6.12.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.3.tgz", - "integrity": "sha512-AWJm14H1vVaO/iNZ4/hO+HyaTehuy9nRqVdkTqlJt0HWvBiBIEXFmb4C0DGeYo3Xes9rrEW+TxHsaigCbN5ICQ==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.0.6" + "side-channel": "^1.1.0" }, "engines": { "node": ">=0.6" @@ -5354,6 +6347,7 @@ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, + "license": "MIT", "engines": { "node": ">=4" } @@ -5392,9 +6386,9 @@ } }, "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, "license": "MIT", "engines": { @@ -5419,13 +6413,13 @@ "license": "MIT" }, "node_modules/rollup": { - "version": "4.27.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.27.4.tgz", - "integrity": "sha512-RLKxqHEMjh/RGLsDxAEsaLO3mWgyoU6x9w6n1ikAzet4B3gI2/3yP6PWY2p9QzRTh6MfEIXB3MwsOY0Iv3vNrw==", + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.40.0.tgz", + "integrity": "sha512-Noe455xmA96nnqH5piFtLobsGbCij7Tu+tb3c1vYjNbTkfzGqXqQXG3wJaYXkRZuQ0vEYN4bhwg7QnIrqB5B+w==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.6" + "@types/estree": "1.0.7" }, "bin": { "rollup": "dist/bin/rollup" @@ -5435,24 +6429,26 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.27.4", - "@rollup/rollup-android-arm64": "4.27.4", - "@rollup/rollup-darwin-arm64": "4.27.4", - "@rollup/rollup-darwin-x64": "4.27.4", - "@rollup/rollup-freebsd-arm64": "4.27.4", - "@rollup/rollup-freebsd-x64": "4.27.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.27.4", - "@rollup/rollup-linux-arm-musleabihf": "4.27.4", - "@rollup/rollup-linux-arm64-gnu": "4.27.4", - "@rollup/rollup-linux-arm64-musl": "4.27.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.27.4", - "@rollup/rollup-linux-riscv64-gnu": "4.27.4", - "@rollup/rollup-linux-s390x-gnu": "4.27.4", - "@rollup/rollup-linux-x64-gnu": "4.27.4", - "@rollup/rollup-linux-x64-musl": "4.27.4", - "@rollup/rollup-win32-arm64-msvc": "4.27.4", - "@rollup/rollup-win32-ia32-msvc": "4.27.4", - "@rollup/rollup-win32-x64-msvc": "4.27.4", + "@rollup/rollup-android-arm-eabi": "4.40.0", + "@rollup/rollup-android-arm64": "4.40.0", + "@rollup/rollup-darwin-arm64": "4.40.0", + "@rollup/rollup-darwin-x64": "4.40.0", + "@rollup/rollup-freebsd-arm64": "4.40.0", + "@rollup/rollup-freebsd-x64": "4.40.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.40.0", + "@rollup/rollup-linux-arm-musleabihf": "4.40.0", + "@rollup/rollup-linux-arm64-gnu": "4.40.0", + "@rollup/rollup-linux-arm64-musl": "4.40.0", + "@rollup/rollup-linux-loongarch64-gnu": "4.40.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-gnu": "4.40.0", + "@rollup/rollup-linux-riscv64-musl": "4.40.0", + "@rollup/rollup-linux-s390x-gnu": "4.40.0", + "@rollup/rollup-linux-x64-gnu": "4.40.0", + "@rollup/rollup-linux-x64-musl": "4.40.0", + "@rollup/rollup-win32-arm64-msvc": "4.40.0", + "@rollup/rollup-win32-ia32-msvc": "4.40.0", + "@rollup/rollup-win32-x64-msvc": "4.40.0", "fsevents": "~2.3.2" } }, @@ -5543,9 +6539,10 @@ "dev": true }, "node_modules/semver": { - "version": "7.6.3", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", - "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -5682,15 +6679,73 @@ } }, "node_modules/side-channel": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", - "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", "dev": true, + "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "object-inspect": "^1.13.1" + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" }, "engines": { "node": ">= 0.4" @@ -5813,10 +6868,11 @@ "dev": true }, "node_modules/std-env": { - "version": "3.8.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.8.0.tgz", - "integrity": "sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==", - "dev": true + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "dev": true, + "license": "MIT" }, "node_modules/string_decoder": { "version": "1.1.1", @@ -6034,20 +7090,20 @@ } }, "node_modules/synckit": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", - "integrity": "sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==", + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.1.tgz", + "integrity": "sha512-fWZqNBZNNFp/7mTUy1fSsydhKsAKJ+u90Nk7kOK5Gcq9vObaqLBLjWFDBkyVU9Vvc6Y71VbOevMuGhqv02bT+Q==", "dev": true, "license": "MIT", "dependencies": { - "@pkgr/core": "^0.1.0", - "tslib": "^2.6.2" + "@pkgr/core": "^0.2.0", + "tslib": "^2.8.1" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/unts" + "url": "https://opencollective.com/synckit" } }, "node_modules/tar-stream": { @@ -6069,14 +7125,15 @@ } }, "node_modules/tfx-cli": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/tfx-cli/-/tfx-cli-0.18.0.tgz", - "integrity": "sha512-VnUkuFQgU8kcnkP/FKWQFrjVF2+BbXl6+6mGTf05/LHrz/nSNQA0ckBKqFdW/7W/ElSnRkMkhm8UXInn7cFnsw==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/tfx-cli/-/tfx-cli-0.21.1.tgz", + "integrity": "sha512-tQD3XqynSmlR1Teawp6ogUNSXLXsmRfSNSRXXcQ/FePGRp09avIGsZfiF8F03NwzzhMU2HSqbGThY2vc94OBEw==", "dev": true, + "license": "MIT", "dependencies": { "app-root-path": "1.0.0", "archiver": "2.0.3", - "azure-devops-node-api": "^10.2.2", + "azure-devops-node-api": "^14.0.0", "clipboardy": "~1.2.3", "colors": "~1.3.0", "glob": "7.1.2", @@ -6158,6 +7215,51 @@ "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", "dev": true }, + "node_modules/tinyglobby": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.13.tgz", + "integrity": "sha512-mEwzpUgrLySlveBwEVDMKk5B57bhLPYovRfPAXD5gA/98Opn0rCDj3GtLwFvCvH5RK9uPCExUROW5NjDwvqkxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinyglobby/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/tinyglobby/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/tinypool": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", @@ -6250,10 +7352,11 @@ } }, "node_modules/ts-api-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.0.tgz", - "integrity": "sha512-xCt/TOAc+EOHS1XPnijD3/yzpH6qg2xppZO1YDqGoVsNXfQfzHpOdNuXwrwOU8u4ITXJyDCTyt8w5g1sZv9ynQ==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.0.1.tgz", + "integrity": "sha512-dnlgjFSVetynI8nzgJ+qF62efpglpWRk8isUEWZGWlJYySCTD6aKvbUDu+zbPeDakk3bg5H4XpitHukgfL1m9w==", "dev": true, + "license": "MIT", "engines": { "node": ">=18.12" }, @@ -6282,9 +7385,9 @@ } }, "node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "dev": true, "license": "0BSD" }, @@ -6293,6 +7396,7 @@ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", "dev": true, + "license": "MIT", "engines": { "node": ">=0.6.11 <=0.7.0 || >=0.7.3" } @@ -6383,21 +7487,28 @@ } }, "node_modules/typed-rest-client": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", - "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-2.1.0.tgz", + "integrity": "sha512-Nel9aPbgSzRxfs1+4GoSB4wexCF+4Axlk7OSGVQCMa+4fWcyxIsN/YNmkp0xTT2iQzMD98h8yFLav/cNaULmRA==", "dev": true, + "license": "MIT", "dependencies": { - "qs": "^6.9.1", + "des.js": "^1.1.0", + "js-md4": "^0.3.2", + "qs": "^6.10.3", "tunnel": "0.0.6", "underscore": "^1.12.1" + }, + "engines": { + "node": ">= 16.0.0" } }, "node_modules/typescript": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.3.tgz", - "integrity": "sha512-84MVSjMEHP+FQRPy3pX9sTVV/INIex71s9TL2Gm5FG/WG1SqXeKyZ0k7/blY/4FdOzI12CBy1vGc4og/eus0fw==", + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "dev": true, + "license": "Apache-2.0", "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -6407,15 +7518,15 @@ } }, "node_modules/typescript-eslint": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.21.0.tgz", - "integrity": "sha512-txEKYY4XMKwPXxNkN8+AxAdX6iIJAPiJbHE/FpQccs/sxw8Lf26kqwC3cn0xkHlW8kEbLhkhCsjWuMveaY9Rxw==", + "version": "8.31.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.31.0.tgz", + "integrity": "sha512-u+93F0sB0An8WEAPtwxVhFby573E8ckdjwUUQUj9QA4v8JAvgtoDdIyYR3XFwFHq2W1KJ1AurwJCO+w+Y1ixyQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.21.0", - "@typescript-eslint/parser": "8.21.0", - "@typescript-eslint/utils": "8.21.0" + "@typescript-eslint/eslint-plugin": "8.31.0", + "@typescript-eslint/parser": "8.31.0", + "@typescript-eslint/utils": "8.31.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -6426,14 +7537,15 @@ }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.8.0" + "typescript": ">=4.8.4 <5.9.0" } }, "node_modules/uc.micro": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/unbox-primitive": { "version": "1.0.2", @@ -6451,15 +7563,16 @@ } }, "node_modules/underscore": { - "version": "1.13.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", - "dev": true + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "dev": true, + "license": "MIT" }, "node_modules/undici-types": { - "version": "6.20.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.20.0.tgz", - "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "dev": true, "license": "MIT" }, @@ -6468,6 +7581,7 @@ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" } @@ -6516,15 +7630,18 @@ } }, "node_modules/vite": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.0.11.tgz", - "integrity": "sha512-4VL9mQPKoHy4+FE0NnRE/kbY51TOfaknxAjt3fJbGJxhIpBZiqVzlZDEesWWsuREXHwNdAoOFZ9MkPEVXczHwg==", + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.3.tgz", + "integrity": "sha512-5nXH+QsELbFKhsEfWLkHrvgRpTdGJzqOZ+utSdmPTvwHmvU6ITTm3xx+mRusihkcI8GeC7lCDyn3kDtiki9scw==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.24.2", - "postcss": "^8.4.49", - "rollup": "^4.23.0" + "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", + "postcss": "^8.5.3", + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" @@ -6588,16 +7705,16 @@ } }, "node_modules/vite-node": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.0.3.tgz", - "integrity": "sha512-0sQcwhwAEw/UJGojbhOrnq3HtiZ3tC7BzpAa0lx3QaTX0S3YX70iGcik25UBdB96pmdwjyY2uyKNYruxCDmiEg==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.2.tgz", + "integrity": "sha512-/8iMryv46J3aK13iUXsei5G/A3CUlW4665THCPS+K8xAaqrVWiGB4RfXMQXCLjpK9P2eK//BczrVkn5JLAk6DA==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", "debug": "^4.4.0", "es-module-lexer": "^1.6.0", - "pathe": "^2.0.1", + "pathe": "^2.0.3", "vite": "^5.0.0 || ^6.0.0" }, "bin": { @@ -6629,32 +7746,61 @@ } } }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.4", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.4.tgz", + "integrity": "sha512-1NZP+GK4GfuAv3PqKvxQRDMjdSRZjnkq7KfhlNrCNNlZ0ygQFpebfrnfnq/W7fpUnAv9aGWmY1zKx7FYL3gwhg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vitest": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.0.3.tgz", - "integrity": "sha512-dWdwTFUW9rcnL0LyF2F+IfvNQWB0w9DERySCk8VMG75F8k25C7LsZoh6XfCjPvcR8Nb+Lqi9JKr6vnzH7HSrpQ==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.2.tgz", + "integrity": "sha512-WaxpJe092ID1C0mr+LH9MmNrhfzi8I65EX/NRU/Ld016KqQNRgxSOlGNP1hHN+a/F8L15Mh8klwaF77zR3GeDQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.0.3", - "@vitest/mocker": "3.0.3", - "@vitest/pretty-format": "^3.0.3", - "@vitest/runner": "3.0.3", - "@vitest/snapshot": "3.0.3", - "@vitest/spy": "3.0.3", - "@vitest/utils": "3.0.3", - "chai": "^5.1.2", + "@vitest/expect": "3.1.2", + "@vitest/mocker": "3.1.2", + "@vitest/pretty-format": "^3.1.2", + "@vitest/runner": "3.1.2", + "@vitest/snapshot": "3.1.2", + "@vitest/spy": "3.1.2", + "@vitest/utils": "3.1.2", + "chai": "^5.2.0", "debug": "^4.4.0", - "expect-type": "^1.1.0", + "expect-type": "^1.2.1", "magic-string": "^0.30.17", - "pathe": "^2.0.1", - "std-env": "^3.8.0", + "pathe": "^2.0.3", + "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.13", "tinypool": "^1.0.2", "tinyrainbow": "^2.0.0", "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.0.3", + "vite-node": "3.1.2", "why-is-node-running": "^2.3.0" }, "bin": { @@ -6668,9 +7814,10 @@ }, "peerDependencies": { "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.0.3", - "@vitest/ui": "3.0.3", + "@vitest/browser": "3.1.2", + "@vitest/ui": "3.1.2", "happy-dom": "*", "jsdom": "*" }, @@ -6678,6 +7825,9 @@ "@edge-runtime/vm": { "optional": true }, + "@types/debug": { + "optional": true + }, "@types/node": { "optional": true }, @@ -6949,9 +8099,9 @@ "dev": true }, "node_modules/yaml": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.6.1.tgz", - "integrity": "sha512-7r0XPzioN/Q9kXBro/XPnA6kznR73DHq+GXh5ON7ZozRO6aMjbmiBuKste2wslTFkC5d1dw0GooOCepZXJ2SAg==", + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.0.tgz", + "integrity": "sha512-+hSoy/QHluxmC9kCIJyL/uyFmLmc+e5CFR5Wa+bpIhIj85LVb9ZH2nVnqrHoSvKogwODv0ClqZkmiSSaIH5LTA==", "dev": true, "license": "ISC", "bin": { diff --git a/package.json b/package.json index 00a8f04e0..7fb873bdc 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "gittools-actions", - "version": "3.1.10", + "version": "3.2.0", "description": "Easy Semantic Versioning (https://semver.org) for projects using Git", "repository": { "type": "git", @@ -47,34 +47,34 @@ "prepare": "husky" }, "devDependencies": { - "@eslint/js": "^9.18.0", - "@stylistic/eslint-plugin": "^2.13.0", - "@types/eslint__js": "^8.42.3", - "@types/node": "^22.10.7", - "@types/semver": "^7.5.8", - "@vitest/eslint-plugin": "^1.1.25", - "dotenv": "^16.4.7", - "eslint": "^9.18.0", - "eslint-config-prettier": "^10.0.1", - "eslint-plugin-prettier": "^5.2.3", - "glob": "^11.0.1", - "globals": "^15.14.0", + "@eslint/js": "^9.25.1", + "@stylistic/eslint-plugin": "^4.2.0", + "@types/eslint__js": "^9.14.0", + "@types/node": "^22.15.1", + "@types/semver": "^7.7.0", + "@vitest/eslint-plugin": "^1.1.43", + "dotenv": "^16.5.0", + "eslint": "^9.25.1", + "eslint-config-prettier": "^10.1.2", + "eslint-plugin-prettier": "^5.2.6", + "glob": "^11.0.2", + "globals": "^16.0.0", "husky": "^9.1.7", - "lint-staged": "^15.4.1", - "markdownlint-cli": "^0.43.0", + "lint-staged": "^15.5.1", + "markdownlint-cli": "^0.44.0", "npm-run-all2": "^7.0.2", - "prettier": "^3.4.2", + "prettier": "^3.5.3", "simple-git": "^3.27.0", - "tfx-cli": "^0.18.0", - "typescript": "^5.7.3", - "typescript-eslint": "^8.21.0", - "vite": "^6.0.11", - "vite-node": "^3.0.3", + "tfx-cli": "^0.21.1", + "typescript": "^5.8.3", + "typescript-eslint": "^8.31.0", + "vite": "^6.3.3", + "vite-node": "^3.1.2", "vite-tsconfig-paths": "^5.1.4", - "vitest": "^3.0.3" + "vitest": "^3.1.2" }, "dependencies": { - "semver": "^7.6.3" + "semver": "^7.7.1" }, "lint-staged": { "*.ts": ["eslint --fix", "prettier --write"], diff --git a/src/__tests__/agents/github/build-agent.spec.ts b/src/__tests__/agents/github/build-agent.spec.ts index 1d10cad74..b32665b1e 100644 --- a/src/__tests__/agents/github/build-agent.spec.ts +++ b/src/__tests__/agents/github/build-agent.spec.ts @@ -108,7 +108,7 @@ describe.skipIf(isGitHubActions)('build-agent/github', () => { const expected = prepareKeyValueMessage('name', 'value') expect(appendFileSyncSpy).toHaveBeenCalledTimes(1) - expect(appendFileSyncSpy).toHaveBeenCalledWith('test.env', expected + os.EOL, { encoding: 'utf8' }) + expect(appendFileSyncSpy).toHaveBeenCalledWith('test.env', `${expected}${os.EOL}`, { encoding: 'utf8' }) expect(spy).toHaveBeenCalledTimes(2) expect(spy).toHaveBeenCalledWith(`::set-output name=name::value${os.EOL}`) @@ -142,7 +142,7 @@ describe.skipIf(isGitHubActions)('build-agent/github', () => { const expected = prepareKeyValueMessage('name', 'value') expect(appendFileSyncSpy).toHaveBeenCalledTimes(1) - expect(appendFileSyncSpy).toHaveBeenCalledWith('test.env', expected + os.EOL, { encoding: 'utf8' }) + expect(appendFileSyncSpy).toHaveBeenCalledWith('test.env', `${expected}${os.EOL}`, { encoding: 'utf8' }) expect(spy).toHaveBeenCalledTimes(1) expect(spy).toHaveBeenCalledWith(`::set-env name=name::value${os.EOL}`) diff --git a/src/__tests__/agents/local/build-agent.spec.ts b/src/__tests__/agents/local/build-agent.spec.ts index 41cf8c77c..cdadf888a 100644 --- a/src/__tests__/agents/local/build-agent.spec.ts +++ b/src/__tests__/agents/local/build-agent.spec.ts @@ -2,6 +2,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest' import { BuildAgent } from '@agents/local' import process from 'node:process' +import os from 'node:os' describe('build-agent/local', () => { let agent: BuildAgent @@ -35,7 +36,7 @@ describe('build-agent/local', () => { agent.debug('test') expect(spy).toHaveBeenCalledTimes(1) - expect(spy).toHaveBeenCalledWith('[debug] test') + expect(spy).toHaveBeenCalledWith(`[debug] test${os.EOL}`) }) it('should log info', () => { @@ -43,7 +44,7 @@ describe('build-agent/local', () => { agent.info('test') expect(spy).toHaveBeenCalledTimes(1) - expect(spy).toHaveBeenCalledWith('[info] - test') + expect(spy).toHaveBeenCalledWith(`[info] - test${os.EOL}`) }) it('should log warn', () => { @@ -51,7 +52,7 @@ describe('build-agent/local', () => { agent.warn('test') expect(spy).toHaveBeenCalledTimes(1) - expect(spy).toHaveBeenCalledWith('[warn] - test') + expect(spy).toHaveBeenCalledWith(`[warn] - test${os.EOL}`) }) it('should log error', () => { @@ -59,7 +60,7 @@ describe('build-agent/local', () => { agent.error('test') expect(spy).toHaveBeenCalledTimes(1) - expect(spy).toHaveBeenCalledWith('[error] - test') + expect(spy).toHaveBeenCalledWith(`[error] - test${os.EOL}`) }) it('should set succeeded', () => { diff --git a/src/__tests__/tools/common/arguments-builder.spec.ts b/src/__tests__/tools/common/arguments-builder.spec.ts new file mode 100644 index 000000000..272c76dd2 --- /dev/null +++ b/src/__tests__/tools/common/arguments-builder.spec.ts @@ -0,0 +1,247 @@ +import { beforeEach, describe, expect, test, vi } from 'vitest' +import { ArgumentsBuilder } from '@tools/common' + +// Use vi.hoisted to declare the mock before the vi.mock call is hoisted +const mockPlatform = vi.hoisted(() => vi.fn()) + +// Mock node:os module +vi.mock('node:os', () => ({ + platform: mockPlatform +})) + +describe('ArgumentsBuilder', () => { + beforeEach(() => { + vi.resetAllMocks() + }) + + describe('Windows environment', () => { + beforeEach(() => { + mockPlatform.mockReturnValue('win32') + }) + + test('basic argument without spaces', () => { + const args = new ArgumentsBuilder().addArgument('simple').build() + + expect(args).toEqual(['simple']) + }) + + test('argument with spaces', () => { + const args = new ArgumentsBuilder().addArgument('argument with spaces').build() + + expect(args).toEqual(['"argument with spaces"']) + }) + + test('argument with double quotes', () => { + const args = new ArgumentsBuilder().addArgument('argument "with" quotes').build() + + expect(args).toEqual(['"argument \\"with\\" quotes"']) + }) + + test('argument with special characters', () => { + const args = new ArgumentsBuilder().addArgument('argument&with|special').build() + + expect(args).toEqual(['"argument&with|special"']) + }) + + test('multiple arguments', () => { + const args = new ArgumentsBuilder().addArgument('first').addArgument('second with space').addFlag('flag').addKeyValue('key', 'value').build() + + expect(args).toEqual(['first', '"second with space"', '--flag', '--key', 'value']) + }) + + test('addArguments method', () => { + const args = new ArgumentsBuilder().addArguments(['arg1', 'arg2 with space', 'arg3']).build() + + expect(args).toEqual(['arg1', '"arg2 with space"', 'arg3']) + }) + + test('addFlag method', () => { + const args = new ArgumentsBuilder().addFlag('flag').addFlag('another-flag').build() + + expect(args).toEqual(['--flag', '--another-flag']) + }) + + test('addKeyValue method', () => { + const args = new ArgumentsBuilder().addKeyValue('key', 'value').addKeyValue('key2', 'value with spaces').build() + + expect(args).toEqual(['--key', 'value', '--key2', '"value with spaces"']) + }) + + test('addKeyValueEquals method', () => { + const args = new ArgumentsBuilder().addKeyValueEquals('key', 'value').addKeyValueEquals('key2', 'value with spaces').build() + + expect(args).toEqual(['--key=value', '--key2="value with spaces"']) + }) + + test('addCommaList method', () => { + const args = new ArgumentsBuilder().addCommaList('list', ['value1', 'value2', 'value with space']).build() + + expect(args).toEqual(['--list', 'value1,value2,"value with space"']) + }) + + test('null or undefined arguments are ignored', () => { + const args = new ArgumentsBuilder().addKeyValue('key', null).addKeyValue('another', undefined).addCommaList('list', []).build() + + expect(args).toEqual([]) + }) + + test('empty string arguments are ignored', () => { + const args = new ArgumentsBuilder().addArgument('').addFlag('').build() + + expect(args).toEqual([]) + }) + }) + + describe('Unix environment', () => { + beforeEach(() => { + mockPlatform.mockReturnValue('linux') + }) + + test('basic argument without spaces', () => { + const args = new ArgumentsBuilder().addArgument('simple').build() + + expect(args).toEqual(['simple']) + }) + + test('argument with spaces', () => { + const args = new ArgumentsBuilder().addArgument('argument with spaces').build() + + expect(args).toEqual(["'argument with spaces'"]) + }) + + test('argument with single quotes', () => { + const args = new ArgumentsBuilder().addArgument("argument 'with' quotes").build() + + expect(args).toEqual(["'argument '\\''with'\\'' quotes'"]) + }) + + test('argument with special characters', () => { + const args = new ArgumentsBuilder().addArgument('argument&with|special').build() + + expect(args).toEqual(["'argument&with|special'"]) + }) + + test('addKeyValue with special characters', () => { + const args = new ArgumentsBuilder().addKeyValue('key', "value with 'quotes'").build() + + expect(args).toEqual(['--key', "'value with '\\''quotes'\\'''"]) + }) + + test('addKeyValueEquals with special characters', () => { + const args = new ArgumentsBuilder().addKeyValueEquals('key', "value with 'quotes'").build() + + expect(args).toEqual(["--key='value with '\\''quotes'\\'''"]) + }) + }) + + describe('parseArgumentString', () => { + test('parses simple arguments', () => { + const result = ArgumentsBuilder.parseArgumentString('arg1 arg2 arg3') + expect(result).toEqual(['arg1', 'arg2', 'arg3']) + }) + + test('parses quoted arguments', () => { + const result = ArgumentsBuilder.parseArgumentString('arg1 "arg with space" arg3') + expect(result).toEqual(['arg1', 'arg with space', 'arg3']) + }) + + test('handles escaped quotes', () => { + const result = ArgumentsBuilder.parseArgumentString('arg1 "arg \\"with\\" quotes" arg3') + expect(result).toEqual(['arg1', 'arg "with" quotes', 'arg3']) + }) + + test('handles escaped backslashes', () => { + // In JS, '\\\\' represents two backslashes in a string + // So the input is effectively: arg1 "arg \\ with backslash" arg3 + const result = ArgumentsBuilder.parseArgumentString('arg1 "arg \\\\ with backslash" arg3') + + // Log for debugging + console.log('Expected:', ['arg1', 'arg \\ with backslash', 'arg3']) + console.log('Actual:', result) + + expect(result).toEqual(['arg1', 'arg \\ with backslash', 'arg3']) + }) + + // Add more explicit test to verify backslash handling + test('handles multiple escaped backslashes', () => { + // This represents: arg1 "arg \\\\ with multiple backslashes" arg3 + const result = ArgumentsBuilder.parseArgumentString('arg1 "arg \\\\\\\\ with multiple backslashes" arg3') + expect(result).toEqual(['arg1', 'arg \\\\ with multiple backslashes', 'arg3']) + }) + + test('ignores multiple spaces outside quotes', () => { + const result = ArgumentsBuilder.parseArgumentString('arg1 arg2 arg3') + expect(result).toEqual(['arg1', 'arg2', 'arg3']) + }) + + test('preserves spaces inside quotes', () => { + const result = ArgumentsBuilder.parseArgumentString('arg1 " spaced out " arg3') + expect(result).toEqual(['arg1', ' spaced out ', 'arg3']) + }) + + test('handles empty string', () => { + const result = ArgumentsBuilder.parseArgumentString('') + expect(result).toEqual([]) + }) + + test('handles string with only spaces', () => { + const result = ArgumentsBuilder.parseArgumentString(' ') + expect(result).toEqual([]) + }) + }) + + describe('complex scenarios', () => { + beforeEach(() => { + mockPlatform.mockReturnValue('win32') + }) + + test('complex command with multiple types of arguments', () => { + const args = new ArgumentsBuilder() + .addArgument('command') + .addFlag('verbose') + .addKeyValue('input', 'file with spaces.txt') + .addKeyValueEquals('format', 'json') + .addCommaList('tags', ['tag1', 'tag with space', 'tag with "quotes"']) + .build() + + expect(args).toEqual([ + 'command', + '--verbose', + '--input', + '"file with spaces.txt"', + '--format=json', + '--tags', + 'tag1,"tag with space","tag with \\"quotes\\""' + ]) + }) + + test('command with path characters', () => { + // Test Windows paths + const args = new ArgumentsBuilder().addArgument('C:\\Program Files\\App\\tool.exe').addKeyValue('output', 'D:\\My Documents\\output.txt').build() + + expect(args).toEqual(['"C:\\Program Files\\App\\tool.exe"', '--output', '"D:\\My Documents\\output.txt"']) + }) + }) + + describe('Unix paths and commands', () => { + beforeEach(() => { + mockPlatform.mockReturnValue('linux') + }) + + test('command with Unix paths', () => { + const args = new ArgumentsBuilder() + .addArgument('/usr/local/bin/tool') + .addKeyValue('config', '/etc/app/config.json') + .addKeyValue('output', '/home/user/Documents/output file.txt') + .build() + + expect(args).toEqual(['/usr/local/bin/tool', '--config', '/etc/app/config.json', '--output', "'/home/user/Documents/output file.txt'"]) + }) + + test('command with environmental variables', () => { + const args = new ArgumentsBuilder().addArgument('tool').addKeyValue('home', '$HOME/files').addKeyValue('user', '$(whoami)').build() + + expect(args).toEqual(['tool', '--home', "'$HOME/files'", '--user', "'$(whoami)'"]) + }) + }) +}) diff --git a/src/__tests__/tools/common/dotnet-tool.spec.ts b/src/__tests__/tools/common/dotnet-tool.spec.ts new file mode 100644 index 000000000..93b1e1508 --- /dev/null +++ b/src/__tests__/tools/common/dotnet-tool.spec.ts @@ -0,0 +1,307 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' +import * as os from 'node:os' +import * as path from 'node:path' +import * as fs from 'node:fs/promises' +import * as process from 'node:process' +import { DotnetTool, ISettingsProvider } from '@tools/common' +import { IBuildAgent } from '@agents/common' +import { Dirent } from 'node:fs' + +// Mock modules +vi.mock('node:os') +vi.mock('node:fs/promises') + +// Create a test implementation of the abstract class +class TestDotnetTool extends DotnetTool { + get packageName(): string { + return 'test-package' + } + + get toolName(): string { + return 'test-tool' + } + + get toolPathVariable(): string { + return 'TEST_TOOL_PATH' + } + + async getRepoPath(targetPath: string): Promise { + return super.getRepoPath(targetPath) + } + + get versionRange(): string | null { + return null + } + + get settingsProvider(): ISettingsProvider { + return { + getSetupSettings: () => ({ + versionSpec: '1.0.0', + includePrerelease: false, + preferLatestVersion: false, + ignoreFailedSources: false + }) + } + } + + // Expose protected methods for testing + async testFindToolExecutable(toolBasePath: string): Promise { + return this.findToolExecutable(toolBasePath) + } +} + +// Helper function to mock build agent +function createMockBuildAgent(): IBuildAgent { + const mockFileExists = vi.fn().mockResolvedValue(false) + return { + info: vi.fn(), + debug: vi.fn(), + warning: vi.fn(), + error: vi.fn(), + setSucceeded: vi.fn(), + setFailed: vi.fn(), + getInput: vi.fn(), + getBooleanInput: vi.fn(), + setOutput: vi.fn(), + setVariable: vi.fn(), + getVariable: vi.fn().mockReturnValue(undefined), + getVariableAsPath: vi.fn(), + addPath: vi.fn(), + which: vi.fn(), + exec: vi.fn().mockResolvedValue({ code: 0, stdout: '', stderr: '' }), + getExecOutput: vi.fn(), + fileExists: mockFileExists, + directoryExists: vi.fn(), + findLocalTool: vi.fn(), + cacheToolDirectory: vi.fn(), + removeDirectory: vi.fn(), + sourceDir: '/source', + tempDir: '/temp', + workDir: '/work', + runnerDir: '/runner' + } as unknown as IBuildAgent +} + +describe('DotnetTool', () => { + let buildAgent: IBuildAgent + let tool: TestDotnetTool + + beforeEach(() => { + vi.resetAllMocks() + buildAgent = createMockBuildAgent() + tool = new TestDotnetTool(buildAgent) + }) + + describe('findToolExecutable', () => { + function setupMockFileExists(mockFileExists: ReturnType, filePath: string): void { + mockFileExists.mockImplementation(async (path: string) => { + return Promise.resolve(path === filePath) + }) + buildAgent.fileExists = mockFileExists as unknown as typeof buildAgent.fileExists + } + + it('should return tool path when executable exists in base path', async () => { + const basePath = '/tools/test-tool' + const toolPath = path.join(basePath, 'test-tool') + setupMockFileExists(vi.fn(), toolPath) + + const result = await tool.testFindToolExecutable(basePath) + + expect(result).toBe(toolPath) + }) + + it('should return windows executable path when on windows', async () => { + vi.mocked(os.platform).mockReturnValue('win32') + const basePath = '/tools/test-tool' + const toolPath = path.join(basePath, 'test-tool.exe') + setupMockFileExists(vi.fn(), toolPath) + + const result = await tool.testFindToolExecutable(basePath) + + expect(result).toBe(toolPath) + }) + + it('should check architecture-specific paths for x64', async () => { + vi.mocked(os.arch).mockReturnValue('x64') + vi.mocked(os.platform).mockReturnValue('linux') + + const basePath = '/tools/test-tool' + const x64Path = path.join(basePath, 'x64', 'test-tool') + setupMockFileExists(vi.fn(), x64Path) + + const result = await tool.testFindToolExecutable(basePath) + + expect(result).toBe(x64Path) + }) + + it('should check architecture-specific paths for arm64', async () => { + vi.mocked(os.arch).mockReturnValue('arm64') + vi.mocked(os.platform).mockReturnValue('linux') + + const basePath = '/tools/test-tool' + const arm64Path = path.join(basePath, 'arm64', 'test-tool') + setupMockFileExists(vi.fn(), arm64Path) + + const result = await tool.testFindToolExecutable(basePath) + + expect(result).toBe(arm64Path) + }) + + it('should check macOS-specific paths for x64', async () => { + vi.mocked(os.arch).mockReturnValue('x64') + vi.mocked(os.platform).mockReturnValue('darwin') + + const basePath = '/tools/test-tool' + const osxX64Path = path.join(basePath, 'osx-x64', 'test-tool') + setupMockFileExists(vi.fn(), osxX64Path) + + const result = await tool.testFindToolExecutable(basePath) + + expect(result).toBe(osxX64Path) + }) + + it('should check macOS-specific paths for arm64', async () => { + vi.mocked(os.arch).mockReturnValue('arm64') + vi.mocked(os.platform).mockReturnValue('darwin') + + const basePath = '/tools/test-tool' + const osxArm64Path = path.join(basePath, 'osx-arm64', 'test-tool') + setupMockFileExists(vi.fn(), osxArm64Path) + + const result = await tool.testFindToolExecutable(basePath) + + expect(result).toBe(osxArm64Path) + }) + + it('should search subdirectories as fallback', async () => { + vi.mocked(os.arch).mockReturnValue('x64') + vi.mocked(os.platform).mockReturnValue('linux') + + const basePath = '/tools/test-tool' + const customDirPath = path.join(basePath, 'custom-dir', 'test-tool') + + const mockFileExists = vi.fn().mockImplementation(async (filePath: string) => { + return Promise.resolve(filePath === customDirPath) + }) + + buildAgent.fileExists = mockFileExists as unknown as typeof buildAgent.fileExists + + vi.mocked(fs.readdir).mockResolvedValue([ + { name: 'custom-dir', isDirectory: () => true } as unknown as Dirent, + { name: 'not-a-dir', isDirectory: () => false } as unknown as Dirent + ]) + + const result = await tool.testFindToolExecutable(basePath) + + expect(result).toBe(customDirPath) + }) + + it('should handle errors when reading subdirectories', async () => { + vi.mocked(os.arch).mockReturnValue('x64') + vi.mocked(os.platform).mockReturnValue('linux') + + const basePath = '/tools/test-tool' + + const mockFileExists = vi.fn().mockResolvedValue(false) + const mockDebug = vi.fn() + + buildAgent.fileExists = mockFileExists as unknown as typeof buildAgent.fileExists + buildAgent.debug = mockDebug + + vi.mocked(fs.readdir).mockRejectedValue(new Error('Permission denied')) + + const result = await tool.testFindToolExecutable(basePath) + + expect(result).toBeNull() + }) + + it('should return null when executable not found anywhere', async () => { + vi.mocked(os.arch).mockReturnValue('x64') + vi.mocked(os.platform).mockReturnValue('linux') + + const basePath = '/tools/test-tool' + + const mockFileExists = vi.fn().mockResolvedValue(false) + buildAgent.fileExists = mockFileExists as unknown as typeof buildAgent.fileExists + + vi.mocked(fs.readdir).mockResolvedValue([]) + + const result = await tool.testFindToolExecutable(basePath) + + expect(result).toBeNull() + }) + }) + + describe('disableTelemetry', () => { + it('should set telemetry environment variables', () => { + const mockInfo = vi.fn() + const mockSetVariable = vi.fn() + + buildAgent.info = mockInfo + buildAgent.setVariable = mockSetVariable + + tool.disableTelemetry() + + expect(mockInfo).toHaveBeenCalledWith('Disable Telemetry') + expect(mockSetVariable).toHaveBeenCalledWith('DOTNET_CLI_TELEMETRY_OPTOUT', 'true') + expect(mockSetVariable).toHaveBeenCalledWith('DOTNET_NOLOGO', 'true') + }) + }) + + describe('getRepoDir', () => { + it('should return correct repo dir for empty target path, takes build agent sourceDir', async () => { + const buildAgent = { + sourceDir: '/workdir' + } as IBuildAgent + tool = new TestDotnetTool(buildAgent) + const repoDir = await tool.getRepoPath('') + expect(repoDir).toBe(path.normalize('/workdir')) + }) + + it('should return correct repo dir for empty target path, takes default', async () => { + const buildAgent = { + sourceDir: '' + } as IBuildAgent + tool = new TestDotnetTool(buildAgent) + const repoDir = await tool.getRepoPath('') + expect(repoDir).toBe('.') + }) + + it('should return correct repo dir for existing absolute target path', async () => { + const buildAgent = { + async directoryExists(_file: string): Promise { + return Promise.resolve(true) + } + } as IBuildAgent + tool = new TestDotnetTool(buildAgent) + const repoDir = await tool.getRepoPath('/targetDir') + expect(repoDir).toBe(path.normalize('/targetDir')) + }) + + it('should return correct repo dir for existing relative target path', async () => { + const targetPath = 'targetDir' + const buildAgent = { + async directoryExists(_file: string): Promise { + return Promise.resolve(true) + } + } as IBuildAgent + tool = new TestDotnetTool(buildAgent) + const repoDir = await tool.getRepoPath(targetPath) + const resolvedPath = path.join(process.cwd(), 'targetDir') + expect(repoDir).toBe(resolvedPath) + }) + + it('should throw error for non-existing target path', async () => { + const wrongDir = 'wrongdir' + const buildAgent = { + async directoryExists(_file: string): Promise { + return Promise.resolve(false) + } + } as IBuildAgent + tool = new TestDotnetTool(buildAgent) + + const resolvedPath = path.join(process.cwd(), wrongDir) + await expect(tool.getRepoPath(wrongDir)).rejects.toThrowError(`Directory not found at ${resolvedPath}`) + }) + }) +}) diff --git a/src/__tests__/tools/common/settings.spec.ts b/src/__tests__/tools/common/settings.spec.ts index 9310d1dbe..0fc1c55a1 100644 --- a/src/__tests__/tools/common/settings.spec.ts +++ b/src/__tests__/tools/common/settings.spec.ts @@ -6,7 +6,7 @@ import { expectValidSettings } from './utils' describe('SettingsProvider', () => { it('should return SetupSettings', () => { const settings: SetupSettings = { - versionSpec: '6.0.x', + versionSpec: '6.3.x', includePrerelease: false, ignoreFailedSources: true, preferLatestVersion: false diff --git a/src/__tests__/tools/gitreleasemanager/runner.spec.ts b/src/__tests__/tools/gitreleasemanager/runner.spec.ts index 1d35e0b47..bdbe07ad7 100644 --- a/src/__tests__/tools/gitreleasemanager/runner.spec.ts +++ b/src/__tests__/tools/gitreleasemanager/runner.spec.ts @@ -14,7 +14,7 @@ describe('GitReleaseManager Runner', () => { const toolPathVariable = 'GITRELEASEMANAGER_PATH' const toolName = 'dotnet-gitreleasemanager' - const versionSpec = '0.x' + const versionSpec = '0.20.x' function testOnAgent(agent: IBuildAgent): void { let version: string diff --git a/src/__tests__/tools/gitreleasemanager/tool.spec.ts b/src/__tests__/tools/gitreleasemanager/tool.spec.ts index 2f784570b..7bcd05a8c 100644 --- a/src/__tests__/tools/gitreleasemanager/tool.spec.ts +++ b/src/__tests__/tools/gitreleasemanager/tool.spec.ts @@ -72,71 +72,19 @@ describe('GitReleaseManagerTool', () => { }) it('should return correct version range', () => { - expect(tool.versionRange).toBe('>=0.10.0 <0.20.0') + expect(tool.versionRange).toBe('>=0.19.0 <0.21.0') }) it('should have settings provider defined', () => { expect(tool.settingsProvider).toBeDefined() }) - describe('getRepoDir', () => { - it('should return correct repo dir for empty target path, takes build agent sourceDir', async () => { - const buildAgent = { - sourceDir: 'workdir' - } as IBuildAgent - tool = new TestGitReleaseManagerTool(buildAgent) - const repoDir = await tool.getRepoDir({ - targetDirectory: '' - } as CommonSettings) - expect(repoDir).toBe('workdir') - }) - - it('should return correct repo dir for empty target path, takes default', async () => { - const buildAgent = { - sourceDir: '' - } as IBuildAgent - tool = new TestGitReleaseManagerTool(buildAgent) - const repoDir = await tool.getRepoDir({ - targetDirectory: '' - } as CommonSettings) - expect(repoDir).toBe('.') - }) - - it('should return correct repo dir for existing target path', async () => { - const buildAgent = { - async directoryExists(_file: string): Promise { - return Promise.resolve(true) - } - } as IBuildAgent - tool = new TestGitReleaseManagerTool(buildAgent) - const repoDir = await tool.getRepoDir({ - targetDirectory: 'targetDir' - } as CommonSettings) - expect(repoDir).toBe('targetDir') - }) - - it('should throw error for non-existing target path', async () => { - const wrongDir = 'wrongdir' - const buildAgent = { - async directoryExists(_file: string): Promise { - return Promise.resolve(false) - } - } as IBuildAgent - tool = new TestGitReleaseManagerTool(buildAgent) - await expect( - tool.getRepoDir({ - targetDirectory: wrongDir - } as CommonSettings) - ).rejects.toThrowError(`Directory not found at ${wrongDir}`) - }) - }) - describe('getArguments', () => { const commonSettings = { owner: 'owner', repository: 'repo', token: 'token', - targetDirectory: 'targetDirectory', + targetDirectory: '/targetDirectory', logFilePath: './logFilePath' } as CommonSettings @@ -171,28 +119,11 @@ describe('GitReleaseManagerTool', () => { '--token', 'token', '--targetDirectory', - 'targetDirectory', + path.normalize('/targetDirectory'), '--logFilePath', './logFilePath' ]) }) - - it('should throw error for non-existing target path', async () => { - tool = new TestGitReleaseManagerTool({ - async directoryExists(_file: string): Promise { - return Promise.resolve(false) - } - } as IBuildAgent) - - const wrongDir = 'wrongdir' - - await expect( - tool.getCommonArguments({ - ...commonSettings, - targetDirectory: wrongDir - } as CommonSettings) - ).rejects.toThrowError(`Directory not found at ${wrongDir}`) - }) }) describe('getCreateArguments', () => { @@ -217,7 +148,7 @@ describe('GitReleaseManagerTool', () => { '--token', 'token', '--targetDirectory', - 'targetDirectory', + path.normalize('/targetDirectory'), '--logFilePath', './createLogFilePath', '--milestone', @@ -230,7 +161,7 @@ describe('GitReleaseManagerTool', () => { 'inputFilePath', '--pre', '--assets', - `${path.join('targetDirectory', 'asset1')},${path.join('targetDirectory', 'asset2')}` + `${path.join('/targetDirectory', 'asset1')},${path.join('/targetDirectory', 'asset2')}` ]) }) }) @@ -251,7 +182,7 @@ describe('GitReleaseManagerTool', () => { '--token', 'token', '--targetDirectory', - 'targetDirectory', + path.normalize('/targetDirectory'), '--logFilePath', './logFilePath', '--milestone', @@ -276,7 +207,7 @@ describe('GitReleaseManagerTool', () => { '--token', 'token', '--targetDirectory', - 'targetDirectory', + path.normalize('/targetDirectory'), '--logFilePath', './logFilePath', '--milestone', @@ -301,7 +232,7 @@ describe('GitReleaseManagerTool', () => { '--token', 'token', '--targetDirectory', - 'targetDirectory', + path.normalize('/targetDirectory'), '--logFilePath', './logFilePath', '--milestone', @@ -326,7 +257,7 @@ describe('GitReleaseManagerTool', () => { '--token', 'token', '--targetDirectory', - 'targetDirectory', + path.normalize('/targetDirectory'), '--logFilePath', './logFilePath', '--tagName', @@ -352,13 +283,13 @@ describe('GitReleaseManagerTool', () => { '--token', 'token', '--targetDirectory', - 'targetDirectory', + path.normalize('/targetDirectory'), '--logFilePath', './logFilePath', '--tagName', 'milestone', '--assets', - `${path.join('targetDirectory', 'asset1')},${path.join('targetDirectory', 'asset2')}` + `${path.join('/targetDirectory', 'asset1')},${path.join('/targetDirectory', 'asset2')}` ]) }) }) diff --git a/src/__tests__/tools/gitversion/runner.spec.ts b/src/__tests__/tools/gitversion/runner.spec.ts index 1a99507c7..c78831a06 100644 --- a/src/__tests__/tools/gitversion/runner.spec.ts +++ b/src/__tests__/tools/gitversion/runner.spec.ts @@ -16,7 +16,7 @@ describe('GitVersion Runner', () => { const toolPathVariable = 'GITVERSION_PATH' const toolName = 'dotnet-gitversion' - const versionSpec = '6.0.x' + const versionSpec = '6.3.x' function testOnAgent(agent: IBuildAgent): void { let version: string @@ -84,7 +84,7 @@ describe('GitVersion Runner', () => { expect(getEnv('patch')).toBeDefined() }) - it.sequential('should output Major variable', async () => { + it.sequential('should output Sha variable', async () => { setEnv(toolPathVariable, toolPath) setInputs({ diff --git a/src/__tests__/tools/gitversion/settings.spec.ts b/src/__tests__/tools/gitversion/settings.spec.ts index d45055363..ff729a61d 100644 --- a/src/__tests__/tools/gitversion/settings.spec.ts +++ b/src/__tests__/tools/gitversion/settings.spec.ts @@ -14,7 +14,8 @@ describe('GitVersion settings', () => { configFilePath: 'path', overrideConfig: ['update-build-number=false'], updateAssemblyInfo: true, - updateAssemblyInfoFilename: 'path' + updateAssemblyInfoFilename: 'path', + updateProjectFiles: true } const buildAgent = { diff --git a/src/__tests__/tools/gitversion/tool.spec.ts b/src/__tests__/tools/gitversion/tool.spec.ts index 6e31e4543..f816e7f60 100644 --- a/src/__tests__/tools/gitversion/tool.spec.ts +++ b/src/__tests__/tools/gitversion/tool.spec.ts @@ -41,7 +41,7 @@ describe('GitVersionTool', () => { }) it('should return correct version range', () => { - expect(tool.versionRange).toBe('>=5.2.0 <6.1.0') + expect(tool.versionRange).toBe('>=5.2.0 <7.0.0') }) it('should have settings provider defined', () => { @@ -112,58 +112,6 @@ describe('GitVersionTool', () => { }) }) - describe('getRepoDir', () => { - it('should return correct repo dir for empty target path, takes build agent sourceDir', async () => { - const buildAgent = { - sourceDir: 'workdir' - } as IBuildAgent - tool = new TestGitVersionTool(buildAgent) - const repoDir = await tool.getRepoDir({ - targetPath: '' - } as ExecuteSettings | CommandSettings) - expect(repoDir).toBe('workdir') - }) - - it('should return correct repo dir for empty target path, takes default', async () => { - const buildAgent = { - sourceDir: '' - } as IBuildAgent - tool = new TestGitVersionTool(buildAgent) - const repoDir = await tool.getRepoDir({ - targetPath: '' - } as ExecuteSettings | CommandSettings) - expect(repoDir).toBe('.') - }) - - it('should return correct repo dir for existing target path', async () => { - const buildAgent = { - async directoryExists(_file: string): Promise { - return Promise.resolve(true) - } - } as IBuildAgent - tool = new TestGitVersionTool(buildAgent) - const repoDir = await tool.getRepoDir({ - targetPath: 'targetDir' - } as ExecuteSettings | CommandSettings) - expect(repoDir).toBe('targetDir') - }) - - it('should throw error for non-existing target path', async () => { - const wrongDir = 'wrongdir' - const buildAgent = { - async directoryExists(_file: string): Promise { - return Promise.resolve(false) - } - } as IBuildAgent - tool = new TestGitVersionTool(buildAgent) - await expect( - tool.getRepoDir({ - targetPath: wrongDir - } as ExecuteSettings | CommandSettings) - ).rejects.toThrowError(`Directory not found at ${wrongDir}`) - }) - }) - describe('getExecuteArguments', () => { it('should return correct arguments for empty settings', async () => { const args = await tool.getExecuteArguments('workdir', {} as ExecuteSettings) @@ -251,6 +199,14 @@ describe('GitVersionTool', () => { } as ExecuteSettings) expect(args).toEqual(['workdir', '/output', 'json', '/l', 'console', '/config', 'workdir/GitVersion.yml', '/updateassemblyinfo', 'AssemblyInfo.cs']) }) + + it('should return correct arguments for settings with project files', async () => { + tool.init(true) + const args = await tool.getExecuteArguments('workdir', { + updateProjectFiles: true + } as ExecuteSettings) + expect(args).toEqual(['workdir', '/output', 'json', '/l', 'console', '/updateprojectfiles']) + }) }) describe('getCommandArguments', () => { diff --git a/src/agents/azure/build-agent.ts b/src/agents/azure/build-agent.ts index 5a43f0f62..a26e4de7f 100644 --- a/src/agents/azure/build-agent.ts +++ b/src/agents/azure/build-agent.ts @@ -16,7 +16,7 @@ export class BuildAgent extends BuildAgentBase implements IBuildAgent { } info = (message: string): void => { - process.stdout.write(message + os.EOL) + process.stdout.write(`${message}${os.EOL}`) } debug = (message: string): void => issueCommand('task.debug', {}, message) diff --git a/src/agents/azure/command.ts b/src/agents/azure/command.ts index 3f2d39ff2..349a024b5 100644 --- a/src/agents/azure/command.ts +++ b/src/agents/azure/command.ts @@ -23,7 +23,7 @@ export enum TaskResult { **/ export function issueCommand(command: string, properties: CommandProperties, message: string): void { const cmd = new Command(command, properties, message) - process.stdout.write(cmd.toString() + os.EOL) + process.stdout.write(`${cmd.toString()}${os.EOL}`) } class Command { diff --git a/src/agents/github/build-agent.ts b/src/agents/github/build-agent.ts index 38e153f11..4a243b7ef 100644 --- a/src/agents/github/build-agent.ts +++ b/src/agents/github/build-agent.ts @@ -23,7 +23,7 @@ export class BuildAgent extends BuildAgentBase implements IBuildAgent { debug = (message: string): void => issueCommand('debug', {}, message) info = (message: string): void => { - process.stdout.write(message + os.EOL) + process.stdout.write(`${message}${os.EOL}`) } warn = (message: string): void => issueCommand('warning', {}, message) diff --git a/src/agents/github/command.ts b/src/agents/github/command.ts index af06eec40..46e7da434 100644 --- a/src/agents/github/command.ts +++ b/src/agents/github/command.ts @@ -18,7 +18,7 @@ export type CommandProperties = Record */ export function issueCommand(command: string, properties: CommandProperties, message: string): void { const cmd = new Command(command, properties, message) - process.stdout.write(cmd.toString() + os.EOL) + process.stdout.write(`${cmd.toString()}${os.EOL}`) } export function issueFileCommand(command: string, message: string | object): void { diff --git a/src/agents/local/build-agent.ts b/src/agents/local/build-agent.ts index 1a516770a..9ec6fe8a2 100644 --- a/src/agents/local/build-agent.ts +++ b/src/agents/local/build-agent.ts @@ -1,4 +1,5 @@ import * as process from 'node:process' +import os from 'node:os' import { BuildAgentBase, type IBuildAgent } from '@agents/common' @@ -10,19 +11,19 @@ export class BuildAgent extends BuildAgentBase implements IBuildAgent { cacheDirVariable = 'AGENT_TOOLS_DIR' debug = (message: string): void => { - process.stdout.write(`[debug] ${message}`) + process.stdout.write(`[debug] ${message}${os.EOL}`) } info = (message: string): void => { - process.stdout.write(`[info] - ${message}`) + process.stdout.write(`[info] - ${message}${os.EOL}`) } warn = (message: string): void => { - process.stderr.write(`[warn] - ${message}`) + process.stderr.write(`[warn] - ${message}${os.EOL}`) } error = (message: string): void => { - process.stderr.write(`[error] - ${message}`) + process.stderr.write(`[error] - ${message}${os.EOL}`) } setSucceeded = (message: string, done?: boolean): void => this.info(`setSucceeded - ${message} - ${done}`) diff --git a/src/tools/common/arguments-builder.ts b/src/tools/common/arguments-builder.ts new file mode 100644 index 000000000..4a78bebda --- /dev/null +++ b/src/tools/common/arguments-builder.ts @@ -0,0 +1,189 @@ +import * as os from 'node:os' + +export class ArgumentsBuilder { + private readonly args: string[] = [] + private readonly isWindows: boolean = os.platform() === 'win32' + + /** + * Adds a simple argument without a key + * @param value The argument value + */ + addArgument(value: string): this { + if (value) { + this.args.push(this.escapeArgument(value)) + } + return this + } + + /** + * Adds multiple arguments + * @param values The argument values + */ + addArguments(values: string[]): this { + for (const value of values) { + this.addArgument(value) + } + return this + } + + /** + * Adds a flag argument (--flag) + * @param key The flag name + */ + addFlag(key: string): this { + if (key) { + this.args.push(`--${key}`) + } + return this + } + + /** + * Adds a key-value argument (--key value) + * @param key The argument key + * @param value The argument value + */ + addKeyValue(key: string, value?: string | null): this { + if (key && value !== undefined && value !== null) { + this.args.push(`--${key}`) + this.args.push(this.escapeArgument(value)) + } + return this + } + + /** + * Adds an equals-style argument (--key=value) + * @param key The argument key + * @param value The argument value + */ + addKeyValueEquals(key: string, value?: string | null): this { + if (key && value !== undefined && value !== null) { + this.args.push(`--${key}=${this.escapeArgument(value)}`) + } + return this + } + + /** + * Adds a comma-separated list (--key value1,value2,value3) + * @param key The argument key + * @param values The list of values + */ + addCommaList(key: string, values?: string[]): this { + if (key && values && values.length > 0) { + const escapedValues = values.map(v => this.escapeArgument(v)) + this.args.push(`--${key}`) + this.args.push(escapedValues.join(',')) + } + return this + } + + /** + * Escapes an argument value based on the current OS + * @param value The argument value to escape + * @returns The escaped argument value + */ + private escapeArgument(value: string): string { + if (!value) return value + + // No need to escape if it doesn't contain spaces or special chars + if (!this.needsEscaping(value)) return value + + if (this.isWindows) { + // On Windows, wrap in double quotes and escape inner double quotes with backslash + return `"${value.replace(/"/g, '\\"')}"` + } else { + // On Unix, wrap in single quotes and escape inner single quotes + // Escaping single quotes in bash requires closing the quote, adding an escaped quote, and reopening + return `'${value.replace(/'/g, "'\\''")}'` + } + } + + /** + * Determines if a value needs to be escaped + * @param value The value to check + * @returns True if the value needs escaping + */ + private needsEscaping(value: string): boolean { + const windowsNeedsEscaping = /[\s&|<>^(){}[\]"']/ + const unixNeedsEscaping = /[\s$\\`&|<>(){}[\]"']/ + if (this.isWindows) { + return windowsNeedsEscaping.test(value) + } + return unixNeedsEscaping.test(value) + } + + /** + * Returns the built argument array + */ + build(): string[] { + return [...this.args] + } + + /** + * Parses an argument string into an array + * @param argString The argument string to parse + * @returns Array of parsed arguments + */ + static parseArgumentString(argString: string): string[] { + const args: string[] = [] + + let inQuotes = false + let escaped = false + let lastCharWasSpace = true + let arg = '' + + const append = (c: string): void => { + // Only add a backslash for escaped characters other than quotes or backslashes + if (escaped && c !== '"' && c !== '\\') { + arg += '\\' + } + + arg += c + escaped = false + } + + for (let i = 0; i < argString.length; i++) { + const c = argString.charAt(i) + + if (c === ' ' && !inQuotes) { + if (!lastCharWasSpace) { + args.push(arg) + arg = '' + } + lastCharWasSpace = true + continue + } else { + lastCharWasSpace = false + } + + if (c === '"') { + if (!escaped) { + inQuotes = !inQuotes + } else { + append(c) + } + continue + } + + if (c === '\\' && escaped) { + // Double backslash becomes a single backslash + arg += '\\' + escaped = false + continue + } + + if (c === '\\' && inQuotes) { + escaped = true + continue + } + + append(c) + lastCharWasSpace = false + } + + if (!lastCharWasSpace) { + args.push(arg.trim()) + } + + return args + } +} diff --git a/src/tools/common/dotnet-tool.ts b/src/tools/common/dotnet-tool.ts index 702f73429..d4439c5f1 100644 --- a/src/tools/common/dotnet-tool.ts +++ b/src/tools/common/dotnet-tool.ts @@ -7,6 +7,7 @@ import * as semver from 'semver' import { type IBuildAgent, type ExecResult } from '@agents/common' import { ISettingsProvider } from './settings' import { NugetVersions } from './models' +import { ArgumentsBuilder } from './arguments-builder' export interface IDotnetTool { toolName: string @@ -100,6 +101,65 @@ export abstract class DotnetTool implements IDotnetTool { return await this.buildAgent.exec(cmd, args) } + protected async findToolExecutable(toolBasePath: string): Promise { + const toolName = os.platform() === 'win32' ? `${this.toolName}.exe` : this.toolName + + // Check in the base path first + const toolPath = path.join(toolBasePath, toolName) + if (await this.buildAgent.fileExists(toolPath)) { + return toolPath + } + + // Get current system architecture + const arch = os.arch() + this.buildAgent.debug(`Current system architecture: ${arch}`) + + // Map node's architecture names to .NET's architecture folders + const archPaths = [] + + // Add primary architecture path based on current architecture + if (arch === 'x64') { + archPaths.push(path.join(toolBasePath, 'x64', toolName)) + } else if (arch === 'arm64') { + archPaths.push(path.join(toolBasePath, 'arm64', toolName)) + } + + // Add platform-specific architecture paths + if (os.platform() === 'darwin' && arch === 'arm64') { + archPaths.push(path.join(toolBasePath, 'osx-arm64', toolName)) + } else if (os.platform() === 'darwin' && arch === 'x64') { + archPaths.push(path.join(toolBasePath, 'osx-x64', toolName)) + } + + // Try each architecture-specific path + for (const archPath of archPaths) { + if (await this.buildAgent.fileExists(archPath)) { + this.buildAgent.debug(`Found tool in architecture-specific directory: ${archPath}`) + return archPath + } + } + + // Check in any other subdirectory as a fallback + try { + const entries = await fs.readdir(toolBasePath, { withFileTypes: true }) + for (const entry of entries) { + if (entry.isDirectory()) { + const nestedPath = path.join(toolBasePath, entry.name, toolName) + if (await this.buildAgent.fileExists(nestedPath)) { + this.buildAgent.debug(`Found tool in subdirectory: ${entry.name}`) + return nestedPath + } + } + } + } catch (error) { + if (error instanceof Error) { + this.buildAgent.debug(`Error reading subdirectories: ${error.message}`) + } + } + + return null + } + protected async setDotnetRoot(): Promise { if (os.platform() !== 'win32' && !this.buildAgent.getVariable('DOTNET_ROOT')) { let dotnetPath = await this.buildAgent.which('dotnet', true) @@ -114,11 +174,24 @@ export abstract class DotnetTool implements IDotnetTool { } protected async executeTool(args: string[]): Promise { + // First, check if we have a path variable set + const variablePath = this.buildAgent.getVariableAsPath(this.toolPathVariable) let toolPath: string | undefined - const variableAsPath = this.buildAgent.getVariableAsPath(this.toolPathVariable) - if (variableAsPath) { - toolPath = path.join(variableAsPath, os.platform() === 'win32' ? `${this.toolName}.exe` : this.toolName) + + if (variablePath) { + // Try to find the executable in the path or its subdirectories + const foundExecutable = await this.findToolExecutable(variablePath) + if (foundExecutable) { + toolPath = foundExecutable + this.buildAgent.debug(`Found tool executable at: ${toolPath}`) + } else { + // Fallback to old behavior if executable not found + toolPath = path.join(variablePath, os.platform() === 'win32' ? `${this.toolName}.exe` : this.toolName) + this.buildAgent.debug(`Defaulting to expected tool path: ${toolPath}`) + } } + + // If we still don't have a path, try to find it in PATH if (!toolPath) { toolPath = await this.buildAgent.which(this.toolName, true) } @@ -143,13 +216,16 @@ export abstract class DotnetTool implements IDotnetTool { if (!targetPath) { workDir = srcDir } else { + if (!path.isAbsolute(targetPath)) { + targetPath = path.resolve(targetPath) + } if (await this.buildAgent.directoryExists(targetPath)) { workDir = targetPath } else { throw new Error(`Directory not found at ${targetPath}`) } } - return workDir.replace(/\\/g, '/') + return path.normalize(workDir) } private async queryLatestMatch(toolName: string, versionSpec: string, includePrerelease: boolean): Promise { @@ -199,12 +275,18 @@ export abstract class DotnetTool implements IDotnetTool { throw new Error('Unable to create temp directory') } - const args = ['tool', 'install', toolName, '--tool-path', tempDirectory, '--version', semverVersion] + const builder = new ArgumentsBuilder() + .addArgument('tool') + .addArgument('install') + .addArgument(toolName) + .addKeyValue('tool-path', tempDirectory) + .addKeyValue('version', semverVersion) + if (ignoreFailedSources) { - args.push('--ignore-failed-sources') + builder.addFlag('ignore-failed-sources') } - const result = await this.execute('dotnet', args) + const result = await this.execute('dotnet', builder.build()) const status = result.code === 0 ? 'success' : 'failure' const message = result.code === 0 ? result.stdout : result.stderr diff --git a/src/tools/common/index.ts b/src/tools/common/index.ts index 26c10a8ce..a9073f47c 100644 --- a/src/tools/common/index.ts +++ b/src/tools/common/index.ts @@ -1,5 +1,6 @@ export * from './models' export * from './dotnet-tool' export * from './settings' +export * from './arguments-builder' export const keysOf = Object.keys as (obj: T) => (keyof T)[] diff --git a/src/tools/gitreleasemanager/tool.ts b/src/tools/gitreleasemanager/tool.ts index c8eb1f497..89e8851b3 100644 --- a/src/tools/gitreleasemanager/tool.ts +++ b/src/tools/gitreleasemanager/tool.ts @@ -1,6 +1,6 @@ import * as path from 'path' -import { DotnetTool } from '@tools/common' +import { ArgumentsBuilder, DotnetTool } from '@tools/common' import { type ExecResult } from '@agents/common' import { @@ -28,7 +28,7 @@ export class GitReleaseManagerTool extends DotnetTool { } get versionRange(): string | null { - return '>=0.10.0 <0.20.0' + return '>=0.19.0 <0.21.0' } get settingsProvider(): IGitReleaseManagerSettingsProvider { @@ -78,111 +78,112 @@ export class GitReleaseManagerTool extends DotnetTool { } protected async getCommonArguments(settings: CommonSettings): Promise { - const args: string[] = [] + const builder = new ArgumentsBuilder() - args.push('--owner', settings.owner) - args.push('--repository', settings.repository) - args.push('--token', settings.token) + builder.addKeyValue('owner', settings.owner) + builder.addKeyValue('repository', settings.repository) + builder.addKeyValue('token', settings.token) settings.targetDirectory = await this.getRepoDir(settings) - args.push('--targetDirectory', settings.targetDirectory) + builder.addKeyValue('targetDirectory', settings.targetDirectory) if (settings.logFilePath) { - args.push('--logFilePath', settings.logFilePath) + builder.addKeyValue('logFilePath', settings.logFilePath) } - return args + + return builder.build() } protected async getCreateArguments(settings: CreateSettings): Promise { - const args: string[] = ['create', ...(await this.getCommonArguments(settings))] + const builder = new ArgumentsBuilder().addArgument('create').addArguments(await this.getCommonArguments(settings)) if (settings.milestone) { - args.push('--milestone', settings.milestone) + builder.addKeyValue('milestone', settings.milestone) } if (settings.name) { - args.push('--name', settings.name) + builder.addKeyValue('name', settings.name) } if (settings.targetcommitish) { - args.push('--targetcommitish', settings.targetcommitish) + builder.addKeyValue('targetcommitish', settings.targetcommitish) } if (settings.inputFilePath) { if (await this.buildAgent.fileExists(settings.inputFilePath)) { - args.push('--inputFilePath', settings.inputFilePath) + builder.addKeyValue('inputFilePath', settings.inputFilePath) } else { throw new Error(`GitReleaseManager inputFilePath not found at ${settings.inputFilePath}`) } } if (settings.isPreRelease) { - args.push('--pre') + builder.addFlag('pre') } if (settings.assets && settings.assets.length > 0) { settings.assets = settings.assets.map(asset => { return path.join(settings.targetDirectory, asset) }) - args.push('--assets', settings.assets.join(',')) + builder.addKeyValue('assets', settings.assets.join(',')) } - return args + return builder.build() } protected async getDiscardArguments(settings: DiscardSettings): Promise { - const args: string[] = ['discard', ...(await this.getCommonArguments(settings))] + const builder = new ArgumentsBuilder().addArgument('discard').addArguments(await this.getCommonArguments(settings)) if (settings.milestone) { - args.push('--milestone', settings.milestone) + builder.addKeyValue('milestone', settings.milestone) } - return args + return builder.build() } protected async getCloseArguments(settings: CloseSettings): Promise { - const args: string[] = ['close', ...(await this.getCommonArguments(settings))] + const builder = new ArgumentsBuilder().addArgument('close').addArguments(await this.getCommonArguments(settings)) if (settings.milestone) { - args.push('--milestone', settings.milestone) + builder.addKeyValue('milestone', settings.milestone) } - return args + return builder.build() } protected async getOpenArguments(settings: OpenSettings): Promise { - const args: string[] = ['open', ...(await this.getCommonArguments(settings))] + const builder = new ArgumentsBuilder().addArgument('open').addArguments(await this.getCommonArguments(settings)) if (settings.milestone) { - args.push('--milestone', settings.milestone) + builder.addKeyValue('milestone', settings.milestone) } - return args + return builder.build() } protected async getPublishArguments(settings: PublishSettings): Promise { - const args: string[] = ['publish', ...(await this.getCommonArguments(settings))] + const builder = new ArgumentsBuilder().addArgument('publish').addArguments(await this.getCommonArguments(settings)) if (settings.milestone) { - args.push('--tagName', settings.milestone) + builder.addKeyValue('tagName', settings.milestone) } - return args + return builder.build() } protected async getAddAssetArguments(settings: AddAssetSettings): Promise { - const args: string[] = ['addasset', ...(await this.getCommonArguments(settings))] + const builder = new ArgumentsBuilder().addArgument('addasset').addArguments(await this.getCommonArguments(settings)) if (settings.milestone) { - args.push('--tagName', settings.milestone) + builder.addKeyValue('tagName', settings.milestone) } if (settings.assets && settings.assets.length > 0) { settings.assets = settings.assets.map(asset => { return path.join(settings.targetDirectory, asset) }) - args.push('--assets', settings.assets.join(',')) + builder.addKeyValue('assets', settings.assets.join(',')) } - return args + return builder.build() } protected async getRepoDir(settings: CommonSettings): Promise { diff --git a/src/tools/gitversion/models.ts b/src/tools/gitversion/models.ts index 6eca10ba5..bb1f3e810 100644 --- a/src/tools/gitversion/models.ts +++ b/src/tools/gitversion/models.ts @@ -10,6 +10,7 @@ export type ExecuteSettings = { overrideConfig: string[] updateAssemblyInfo: boolean updateAssemblyInfoFilename: string + updateProjectFiles: boolean } export type CommandSettings = { diff --git a/src/tools/gitversion/settings.ts b/src/tools/gitversion/settings.ts index 571601464..4bbdcd71f 100644 --- a/src/tools/gitversion/settings.ts +++ b/src/tools/gitversion/settings.ts @@ -22,6 +22,8 @@ export class GitVersionSettingsProvider extends SettingsProvider implements IGit const updateAssemblyInfo = this.buildAgent.getBooleanInput('updateAssemblyInfo') const updateAssemblyInfoFilename = this.buildAgent.getInput('updateAssemblyInfoFilename') + const updateProjectFiles = this.buildAgent.getBooleanInput('updateProjectFiles') + return { targetPath, disableCache, @@ -31,7 +33,8 @@ export class GitVersionSettingsProvider extends SettingsProvider implements IGit configFilePath, overrideConfig, updateAssemblyInfo, - updateAssemblyInfoFilename + updateAssemblyInfoFilename, + updateProjectFiles } } diff --git a/src/tools/gitversion/tool.ts b/src/tools/gitversion/tool.ts index b87af5f8e..1cdf8c470 100644 --- a/src/tools/gitversion/tool.ts +++ b/src/tools/gitversion/tool.ts @@ -1,5 +1,5 @@ import { type ExecResult } from '@agents/common' -import { DotnetTool, keysOf } from '@tools/common' +import { ArgumentsBuilder, DotnetTool, keysOf } from '@tools/common' import { type CommandSettings, type ExecuteSettings, type GitVersionOutput } from './models' import { GitVersionSettingsProvider, type IGitVersionSettingsProvider } from './settings' @@ -17,7 +17,7 @@ export class GitVersionTool extends DotnetTool { } get versionRange(): string | null { - return '>=5.2.0 <6.1.0' + return '>=5.2.0 <7.0.0' } get settingsProvider(): IGitVersionSettingsProvider { @@ -78,7 +78,7 @@ export class GitVersionTool extends DotnetTool { } protected async getExecuteArguments(workDir: string, options: ExecuteSettings): Promise { - const args = [workDir, '/output', 'json', '/l', 'console'] + const builder = new ArgumentsBuilder().addArgument(workDir).addArgument('/output').addArgument('json').addArgument('/l').addArgument('console') const { useConfigFile, @@ -87,21 +87,22 @@ export class GitVersionTool extends DotnetTool { configFilePath, overrideConfig, updateAssemblyInfo, - updateAssemblyInfoFilename + updateAssemblyInfoFilename, + updateProjectFiles // } = options if (disableCache) { - args.push('/nocache') + builder.addArgument('/nocache') } if (disableNormalization) { - args.push('/nonormalize') + builder.addArgument('/nonormalize') } if (useConfigFile) { if (await this.isValidInputFile('configFilePath', configFilePath)) { - args.push('/config', configFilePath) + builder.addArgument('/config').addArgument(configFilePath) } else { throw new Error(`GitVersion configuration file not found at ${configFilePath}`) } @@ -111,96 +112,39 @@ export class GitVersionTool extends DotnetTool { for (let config of overrideConfig) { config = config.trim() if (config.match(/([a-zA-Z0-9]+(-[a-zA-Z]+)*=[a-zA-Z0-9\- :.']*)/)) { - args.push('/overrideconfig', config) + builder.addArgument('/overrideconfig').addArgument(config) } } } if (updateAssemblyInfo) { - args.push('/updateassemblyinfo') + builder.addArgument('/updateassemblyinfo') // You can specify 'updateAssemblyInfo' without 'updateAssemblyInfoFilename'. if (updateAssemblyInfoFilename?.length > 0) { if (await this.isValidInputFile('updateAssemblyInfoFilename', updateAssemblyInfoFilename)) { - args.push(updateAssemblyInfoFilename) + builder.addArgument(updateAssemblyInfoFilename) } else { throw new Error(`AssemblyInfoFilename file not found at ${updateAssemblyInfoFilename}`) } } } - return args + if (updateProjectFiles) { + builder.addArgument('/updateprojectfiles') + } + + return builder.build() } protected getCommandArguments(workDir: string, options: CommandSettings): string[] { - let args = [workDir] + const builder = new ArgumentsBuilder().addArgument(workDir) if (options.arguments) { - args = args.concat(this.argStringToArray(options.arguments)) - } - return args - } - - private argStringToArray(argString: string): string[] { - const args: string[] = [] - - let inQuotes = false - let escaped = false - let lastCharWasSpace = true - let arg = '' - - const append = (c: string): void => { - // we only escape double quotes. - if (escaped && c !== '"') { - arg += '\\' - } - - arg += c - escaped = false - } - - for (let i = 0; i < argString.length; i++) { - const c = argString.charAt(i) - - if (c === ' ' && !inQuotes) { - if (!lastCharWasSpace) { - args.push(arg) - arg = '' - } - lastCharWasSpace = true - continue - } else { - lastCharWasSpace = false - } - - if (c === '"') { - if (!escaped) { - inQuotes = !inQuotes - } else { - append(c) - } - continue - } - - if (c === '\\' && escaped) { - append(c) - continue - } - - if (c === '\\' && inQuotes) { - escaped = true - continue - } - - append(c) - lastCharWasSpace = false - } - - if (!lastCharWasSpace) { - args.push(arg.trim()) + builder.addArguments(ArgumentsBuilder.parseArgumentString(options.arguments)) } - return args + return builder.build() } private async checkShallowClone(settings: ExecuteSettings | CommandSettings, workDir: string): Promise {