diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 77b861c..a69c32d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,31 +1,31 @@ -# This is a comment. -# Each line is a file pattern followed by one or more owners. - -# These owners will be the default owners for everything in -# the repo. Unless a later match takes precedence, -# @global-owner1 and @global-owner2 will be requested for -# review when someone opens a pull request. -* @Farenheith @gustavobeavis @danielgalleni @Dodt @pedrosodre @douglasdrdc @fgabrielsilva @pauloandreget - -# Order is important; the last matching pattern takes the most -# precedence. When someone opens a pull request that only -# modifies JS files, only @js-owner and not the global -# owner(s) will be requested for a review. - -# You can also use email addresses if you prefer. They'll be -# used to look up users just like we do for commit author -# emails. - -# In this example, @doctocat owns any files in the build/logs -# directory at the root of the repository and any of its -# subdirectories. - -# The `docs/*` pattern will match files like -# `docs/getting-started.md` but not further nested files like -# `docs/build-app/troubleshooting.md`. - -# In this example, @octocat owns any file in an apps directory -# anywhere in your repository. - -# In this example, @doctocat owns any file in the `/docs` -# directory in the root of your repository. +# This is a comment. +# Each line is a file pattern followed by one or more owners. + +# These owners will be the default owners for everything in +# the repo. Unless a later match takes precedence, +# @global-owner1 and @global-owner2 will be requested for +# review when someone opens a pull request. +* @Farenheith @gustavobeavis @danielgalleni @Dodt @pedrosodre @douglasdrdc @fgabrielsilva @pauloandreget + +# Order is important; the last matching pattern takes the most +# precedence. When someone opens a pull request that only +# modifies JS files, only @js-owner and not the global +# owner(s) will be requested for a review. + +# You can also use email addresses if you prefer. They'll be +# used to look up users just like we do for commit author +# emails. + +# In this example, @doctocat owns any files in the build/logs +# directory at the root of the repository and any of its +# subdirectories. + +# The `docs/*` pattern will match files like +# `docs/getting-started.md` but not further nested files like +# `docs/build-app/troubleshooting.md`. + +# In this example, @octocat owns any file in an apps directory +# anywhere in your repository. + +# In this example, @doctocat owns any file in the `/docs` +# directory in the root of your repository. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4695252..086eceb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,22 +1,22 @@ -# This is a basic workflow to help you get started with Actions - -name: build -on: - pull_request: - branches: [main] - push: - branches: [main] - -jobs: - build: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - # Install the .NET SDK indicated in the global.json file - - name: Setup .NET - uses: actions/setup-dotnet@v3 - - - name: Install dependencies - run: npm ci - - name: Build - run: npm run build +# This is a basic workflow to help you get started with Actions + +name: build +on: + pull_request: + branches: [main] + push: + branches: [main] + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + # Install the .NET SDK indicated in the global.json file + - name: Setup .NET + uses: actions/setup-dotnet@v3 + + - name: Install dependencies + run: npm ci + - name: Build + run: npm run build diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index f27a570..460b1a2 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -1,22 +1,22 @@ -# This is a basic workflow to help you get started with Actions - -name: lint -on: - pull_request: - branches: [main] - -jobs: - lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v2 - - uses: actions/setup-node@v3 - with: - node-version: "lts/*" - # Install the .NET SDK indicated in the global.json file - - name: Setup .NET - uses: actions/setup-dotnet@v3 - - name: install - run: npm ci - - name: Lint - run: npm run lint +# This is a basic workflow to help you get started with Actions + +name: lint +on: + pull_request: + branches: [main] + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v2 + - uses: actions/setup-node@v3 + with: + node-version: "lts/*" + # Install the .NET SDK indicated in the global.json file + - name: Setup .NET + uses: actions/setup-dotnet@v3 + - name: install + run: npm ci + - name: Lint + run: npm run lint diff --git a/.github/workflows/semantic.yml b/.github/workflows/semantic.yml index 3833e09..b1860bd 100644 --- a/.github/workflows/semantic.yml +++ b/.github/workflows/semantic.yml @@ -1,56 +1,63 @@ -name: semantic-release - -on: - push: - branches: [main] - -env: - ConnectionStrings__SqlConnection: ${{ secrets.CONNECTIONSTRINGS__SQLCONNECTION }} - -jobs: - semantic: - runs-on: ubuntu-latest - env: - GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} - NUGET_TOKEN: ${{secrets.NUGET_TOKEN}} - HUSKY: 0 - CI: true - steps: - - uses: actions/checkout@v4 - # Install the .NET SDK indicated in the global.json file - - name: Setup .NET - uses: actions/setup-dotnet@v3 - - - name: Prepare Node - uses: actions/setup-node@v4 - with: - node-version: "lts/*" - - - name: Install dependencies - run: npm ci - - name: Build - run: npm run build - - - name: Prepare Db - run: npm run prepare-test-db - - - name: Test - uses: paambaati/codeclimate-action@v9.0.0 - env: - CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} - with: - coverageCommand: dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov.info - coverageLocations: ${{github.workspace}}/test/Codibre.GrpcSqlProxy.Test/coverage/lcov.info:lcov - - - name: Semantic Release - run: npm i -g @semantic-release/changelog @semantic-release/commit-analyzer @semantic-release/git @semantic-release/github @semantic-release/exec @droidsolutions-oss/semantic-release-nuget @semantic-release/release-notes-generator semantic-release @semantic-release/error - env: - GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} - NUGET_TOKEN: ${{secrets.NUGET_TOKEN}} - HUSKY: 0 - CI: true - - run: npx semantic-release --ci - - run: git push - - - name: Unload Db - run: npm run unload-test-db +name: semantic-release + +on: + push: + branches: [main] + +env: + ConnectionStrings__SqlConnection: ${{ secrets.CONNECTIONSTRINGS__SQLCONNECTION }} + +jobs: + semantic: + runs-on: ubuntu-latest + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + NUGET_TOKEN: ${{secrets.NUGET_TOKEN}} + HUSKY: 0 + CI: true + steps: + - uses: actions/checkout@v4 + # Install the .NET SDK indicated in the global.json file + - name: Setup .NET + uses: actions/setup-dotnet@v3 + + - name: Prepare Node + uses: actions/setup-node@v4 + with: + node-version: "lts/*" + + - name: Install dependencies + run: npm ci + - name: Build + run: npm run build + + - name: Prepare Db + run: npm run prepare-test-db + + - name: Docker build + run: npm run docker:build + - name: Docker run + run: docker_id=$(docker run -d --network=host test-grpc-client) + + - name: Test + uses: paambaati/codeclimate-action@v9.0.0 + env: + CC_TEST_REPORTER_ID: ${{ secrets.CC_TEST_REPORTER_ID }} + with: + coverageCommand: dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov.info + coverageLocations: ${{github.workspace}}/test/Codibre.GrpcSqlProxy.Test/coverage/lcov.info:lcov + + - name: Semantic Release + run: npm i -g @semantic-release/changelog @semantic-release/commit-analyzer @semantic-release/git @semantic-release/github @semantic-release/exec @droidsolutions-oss/semantic-release-nuget @semantic-release/release-notes-generator semantic-release @semantic-release/error + env: + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + NUGET_TOKEN: ${{secrets.NUGET_TOKEN}} + HUSKY: 0 + CI: true + - run: npx semantic-release --ci + - run: git push + + - name: Docker quit + run: docker kill $docker_id + - name: Unload Db + run: npm run unload-test-db diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6fe8d9f..dadccb8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,6 +31,11 @@ jobs: - name: Prepare Db run: npm run prepare-test-db + - name: Docker build + run: npm run docker:build + - name: Docker run + run: docker_id=$(docker run -d --network=host test-grpc-client) + - name: Test uses: paambaati/codeclimate-action@v9.0.0 env: @@ -39,5 +44,7 @@ jobs: coverageCommand: dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov.info coverageLocations: ${{github.workspace}}/test/Codibre.GrpcSqlProxy.Test/coverage/lcov.info:lcov + - name: Docker quit + run: docker kill $docker_id - name: Unload Db run: npm run unload-test-db diff --git a/.pnpm-debug.log b/.pnpm-debug.log index 1b54d0b..2b5d1ed 100644 --- a/.pnpm-debug.log +++ b/.pnpm-debug.log @@ -1,1177 +1,1177 @@ -{ - "0 debug pnpm:scope": { - "selected": 1 - }, - "1 debug pnpm:package-manifest": { - "initial": { - "name": "dotnet-grpc-sql-proxy", - "version": "0.0.0", - "description": "Grpc Proxy for Sql Server", - "scripts": { - "build": "dotnet build", - "start": "dotnet start", - "prepare": "husky", - "lint:stage:fix": "lint-staged --relative", - "lint:fix": "dotnet format", - "lint": "dotnet format --verify-no-changes", - "restore": "dotnet restore", - "test": "dotnet test", - "prepare-test-db": "cd devops && sh prepare-db.sh && cd ..", - "unload-test-db": "cd devops && docker compose down && cd ..", - "test:coverage": "dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov.info" - }, - "devDependencies": { - "husky": "^9.0.11", - "lint-staged": "^15.2.5" - }, - "lint-staged": { - "*.cs": "dotnet format --include" - }, - "keywords": [], - "author": "", - "license": "ISC" - }, - "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy" - }, - "2 debug pnpm:context": { - "currentLockfileExists": false, - "storeDir": "/home/thiago/.pnpm-store/v3", - "virtualStoreDir": "/home/thiago/projects/personal/codibre/grpc-sql-proxy/node_modules/.pnpm" - }, - "3 debug pnpm:stage": { - "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "stage": "resolution_started" - }, - "4 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/husky/9.1.6", - "wanted": { - "dependentId": ".", - "name": "husky", - "rawSpec": "^9.0.11" - } - }, - "5 debug pnpm:progress": { - "packageId": "registry.npmjs.org/husky/9.1.6", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "6 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/lint-staged/15.2.10", - "wanted": { - "dependentId": ".", - "name": "lint-staged", - "rawSpec": "^15.2.5" - } - }, - "7 debug pnpm:progress": { - "packageId": "registry.npmjs.org/lint-staged/15.2.10", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "8 debug pnpm:progress": { - "packageId": "registry.npmjs.org/husky/9.1.6", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "9 debug pnpm:progress": { - "packageId": "registry.npmjs.org/lint-staged/15.2.10", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "10 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/commander/12.1.0", - "wanted": { - "dependentId": "/lint-staged/15.2.10", - "name": "commander", - "rawSpec": "~12.1.0" - } - }, - "11 debug pnpm:progress": { - "packageId": "registry.npmjs.org/commander/12.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "12 debug pnpm:progress": { - "packageId": "registry.npmjs.org/commander/12.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "13 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/chalk/5.3.0", - "wanted": { - "dependentId": "/lint-staged/15.2.10", - "name": "chalk", - "rawSpec": "~5.3.0" - } - }, - "14 debug pnpm:progress": { - "packageId": "registry.npmjs.org/chalk/5.3.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "15 debug pnpm:progress": { - "packageId": "registry.npmjs.org/chalk/5.3.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "16 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/lilconfig/3.1.2", - "wanted": { - "dependentId": "/lint-staged/15.2.10", - "name": "lilconfig", - "rawSpec": "~3.1.2" - } - }, - "17 debug pnpm:progress": { - "packageId": "registry.npmjs.org/lilconfig/3.1.2", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "18 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/pidtree/0.6.0", - "wanted": { - "dependentId": "/lint-staged/15.2.10", - "name": "pidtree", - "rawSpec": "~0.6.0" - } - }, - "19 debug pnpm:progress": { - "packageId": "registry.npmjs.org/pidtree/0.6.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "20 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/debug/4.3.7", - "wanted": { - "dependentId": "/lint-staged/15.2.10", - "name": "debug", - "rawSpec": "~4.3.6" - } - }, - "21 debug pnpm:progress": { - "packageId": "registry.npmjs.org/debug/4.3.7", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "22 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/execa/8.0.1", - "wanted": { - "dependentId": "/lint-staged/15.2.10", - "name": "execa", - "rawSpec": "~8.0.1" - } - }, - "23 debug pnpm:progress": { - "packageId": "registry.npmjs.org/execa/8.0.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "24 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/micromatch/4.0.8", - "wanted": { - "dependentId": "/lint-staged/15.2.10", - "name": "micromatch", - "rawSpec": "~4.0.8" - } - }, - "25 debug pnpm:progress": { - "packageId": "registry.npmjs.org/micromatch/4.0.8", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "26 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/string-argv/0.3.2", - "wanted": { - "dependentId": "/lint-staged/15.2.10", - "name": "string-argv", - "rawSpec": "~0.3.2" - } - }, - "27 debug pnpm:progress": { - "packageId": "registry.npmjs.org/string-argv/0.3.2", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "28 debug pnpm:progress": { - "packageId": "registry.npmjs.org/lilconfig/3.1.2", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "29 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/listr2/8.2.5", - "wanted": { - "dependentId": "/lint-staged/15.2.10", - "name": "listr2", - "rawSpec": "~8.2.4" - } - }, - "30 debug pnpm:progress": { - "packageId": "registry.npmjs.org/listr2/8.2.5", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "31 debug pnpm:progress": { - "packageId": "registry.npmjs.org/pidtree/0.6.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "32 debug pnpm:progress": { - "packageId": "registry.npmjs.org/debug/4.3.7", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "33 debug pnpm:progress": { - "packageId": "registry.npmjs.org/execa/8.0.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "34 debug pnpm:progress": { - "packageId": "registry.npmjs.org/micromatch/4.0.8", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "35 debug pnpm:progress": { - "packageId": "registry.npmjs.org/string-argv/0.3.2", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "36 debug pnpm:progress": { - "packageId": "registry.npmjs.org/listr2/8.2.5", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "37 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/yaml/2.5.1", - "wanted": { - "dependentId": "/lint-staged/15.2.10", - "name": "yaml", - "rawSpec": "~2.5.0" - } - }, - "38 debug pnpm:progress": { - "packageId": "registry.npmjs.org/yaml/2.5.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "39 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/strip-final-newline/3.0.0", - "wanted": { - "dependentId": "/execa/8.0.1", - "name": "strip-final-newline", - "rawSpec": "^3.0.0" - } - }, - "40 debug pnpm:progress": { - "packageId": "registry.npmjs.org/strip-final-newline/3.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "41 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/npm-run-path/5.3.0", - "wanted": { - "dependentId": "/execa/8.0.1", - "name": "npm-run-path", - "rawSpec": "^5.1.0" - } - }, - "42 debug pnpm:progress": { - "packageId": "registry.npmjs.org/npm-run-path/5.3.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "43 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/is-stream/3.0.0", - "wanted": { - "dependentId": "/execa/8.0.1", - "name": "is-stream", - "rawSpec": "^3.0.0" - } - }, - "44 debug pnpm:progress": { - "packageId": "registry.npmjs.org/is-stream/3.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "45 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/signal-exit/4.1.0", - "wanted": { - "dependentId": "/execa/8.0.1", - "name": "signal-exit", - "rawSpec": "^4.1.0" - } - }, - "46 debug pnpm:progress": { - "packageId": "registry.npmjs.org/signal-exit/4.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "47 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/get-stream/8.0.1", - "wanted": { - "dependentId": "/execa/8.0.1", - "name": "get-stream", - "rawSpec": "^8.0.1" - } - }, - "48 debug pnpm:progress": { - "packageId": "registry.npmjs.org/get-stream/8.0.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "49 debug pnpm:progress": { - "packageId": "registry.npmjs.org/yaml/2.5.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "50 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/merge-stream/2.0.0", - "wanted": { - "dependentId": "/execa/8.0.1", - "name": "merge-stream", - "rawSpec": "^2.0.0" - } - }, - "51 debug pnpm:progress": { - "packageId": "registry.npmjs.org/merge-stream/2.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "52 debug pnpm:progress": { - "packageId": "registry.npmjs.org/strip-final-newline/3.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "53 debug pnpm:progress": { - "packageId": "registry.npmjs.org/npm-run-path/5.3.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "54 debug pnpm:progress": { - "packageId": "registry.npmjs.org/is-stream/3.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "55 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/ms/2.1.3", - "wanted": { - "dependentId": "/debug/4.3.7", - "name": "ms", - "rawSpec": "^2.1.3" - } - }, - "56 debug pnpm:progress": { - "packageId": "registry.npmjs.org/ms/2.1.3", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "57 debug pnpm:progress": { - "packageId": "registry.npmjs.org/signal-exit/4.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "58 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/cross-spawn/7.0.3", - "wanted": { - "dependentId": "/execa/8.0.1", - "name": "cross-spawn", - "rawSpec": "^7.0.3" - } - }, - "59 debug pnpm:progress": { - "packageId": "registry.npmjs.org/cross-spawn/7.0.3", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "60 debug pnpm:progress": { - "packageId": "registry.npmjs.org/get-stream/8.0.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "61 debug pnpm:progress": { - "packageId": "registry.npmjs.org/merge-stream/2.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "62 debug pnpm:progress": { - "packageId": "registry.npmjs.org/ms/2.1.3", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "63 debug pnpm:progress": { - "packageId": "registry.npmjs.org/cross-spawn/7.0.3", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "64 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/braces/3.0.3", - "wanted": { - "dependentId": "/micromatch/4.0.8", - "name": "braces", - "rawSpec": "^3.0.3" - } - }, - "65 debug pnpm:progress": { - "packageId": "registry.npmjs.org/braces/3.0.3", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "66 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/onetime/6.0.0", - "wanted": { - "dependentId": "/execa/8.0.1", - "name": "onetime", - "rawSpec": "^6.0.0" - } - }, - "67 debug pnpm:progress": { - "packageId": "registry.npmjs.org/onetime/6.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "68 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/rfdc/1.4.1", - "wanted": { - "dependentId": "/listr2/8.2.5", - "name": "rfdc", - "rawSpec": "^1.4.1" - } - }, - "69 debug pnpm:progress": { - "packageId": "registry.npmjs.org/rfdc/1.4.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "70 debug pnpm:progress": { - "packageId": "registry.npmjs.org/braces/3.0.3", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "71 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/wrap-ansi/9.0.0", - "wanted": { - "dependentId": "/listr2/8.2.5", - "name": "wrap-ansi", - "rawSpec": "^9.0.0" - } - }, - "72 debug pnpm:progress": { - "packageId": "registry.npmjs.org/wrap-ansi/9.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "73 debug pnpm:progress": { - "packageId": "registry.npmjs.org/onetime/6.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "74 debug pnpm:progress": { - "packageId": "registry.npmjs.org/wrap-ansi/9.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "75 debug pnpm:progress": { - "packageId": "registry.npmjs.org/rfdc/1.4.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "76 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/cli-truncate/4.0.0", - "wanted": { - "dependentId": "/listr2/8.2.5", - "name": "cli-truncate", - "rawSpec": "^4.0.0" - } - }, - "77 debug pnpm:progress": { - "packageId": "registry.npmjs.org/cli-truncate/4.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "78 debug pnpm:progress": { - "packageId": "registry.npmjs.org/cli-truncate/4.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "79 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/eventemitter3/5.0.1", - "wanted": { - "dependentId": "/listr2/8.2.5", - "name": "eventemitter3", - "rawSpec": "^5.0.1" - } - }, - "80 debug pnpm:progress": { - "packageId": "registry.npmjs.org/eventemitter3/5.0.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "81 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/colorette/2.0.20", - "wanted": { - "dependentId": "/listr2/8.2.5", - "name": "colorette", - "rawSpec": "^2.0.20" - } - }, - "82 debug pnpm:progress": { - "packageId": "registry.npmjs.org/colorette/2.0.20", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "83 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/picomatch/2.3.1", - "wanted": { - "dependentId": "/micromatch/4.0.8", - "name": "picomatch", - "rawSpec": "^2.3.1" - } - }, - "84 debug pnpm:progress": { - "packageId": "registry.npmjs.org/picomatch/2.3.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "85 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/log-update/6.1.0", - "wanted": { - "dependentId": "/listr2/8.2.5", - "name": "log-update", - "rawSpec": "^6.1.0" - } - }, - "86 debug pnpm:progress": { - "packageId": "registry.npmjs.org/log-update/6.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "87 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/wrap-ansi/9.0.0", - "wanted": { - "dependentId": "/log-update/6.1.0", - "name": "wrap-ansi", - "rawSpec": "^9.0.0" - } - }, - "88 debug pnpm:progress": { - "packageId": "registry.npmjs.org/colorette/2.0.20", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "89 debug pnpm:progress": { - "packageId": "registry.npmjs.org/eventemitter3/5.0.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "90 debug pnpm:progress": { - "packageId": "registry.npmjs.org/log-update/6.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "91 debug pnpm:progress": { - "packageId": "registry.npmjs.org/picomatch/2.3.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "92 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/slice-ansi/5.0.0", - "wanted": { - "dependentId": "/cli-truncate/4.0.0", - "name": "slice-ansi", - "rawSpec": "^5.0.0" - } - }, - "93 debug pnpm:progress": { - "packageId": "registry.npmjs.org/slice-ansi/5.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "94 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/slice-ansi/7.1.0", - "wanted": { - "dependentId": "/log-update/6.1.0", - "name": "slice-ansi", - "rawSpec": "^7.1.0" - } - }, - "95 debug pnpm:progress": { - "packageId": "registry.npmjs.org/slice-ansi/7.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "96 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/cli-cursor/5.0.0", - "wanted": { - "dependentId": "/log-update/6.1.0", - "name": "cli-cursor", - "rawSpec": "^5.0.0" - } - }, - "97 debug pnpm:progress": { - "packageId": "registry.npmjs.org/cli-cursor/5.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "98 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/ansi-styles/6.2.1", - "wanted": { - "dependentId": "/wrap-ansi/9.0.0", - "name": "ansi-styles", - "rawSpec": "^6.2.1" - } - }, - "99 debug pnpm:progress": { - "packageId": "registry.npmjs.org/ansi-styles/6.2.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "100 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/strip-ansi/7.1.0", - "wanted": { - "dependentId": "/wrap-ansi/9.0.0", - "name": "strip-ansi", - "rawSpec": "^7.1.0" - } - }, - "101 debug pnpm:progress": { - "packageId": "registry.npmjs.org/strip-ansi/7.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "102 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/strip-ansi/7.1.0", - "wanted": { - "dependentId": "/log-update/6.1.0", - "name": "strip-ansi", - "rawSpec": "^7.1.0" - } - }, - "103 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/ansi-escapes/7.0.0", - "wanted": { - "dependentId": "/log-update/6.1.0", - "name": "ansi-escapes", - "rawSpec": "^7.0.0" - } - }, - "104 debug pnpm:progress": { - "packageId": "registry.npmjs.org/ansi-escapes/7.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "105 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/ansi-styles/6.2.1", - "wanted": { - "dependentId": "/slice-ansi/7.1.0", - "name": "ansi-styles", - "rawSpec": "^6.2.1" - } - }, - "106 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/string-width/7.2.0", - "wanted": { - "dependentId": "/wrap-ansi/9.0.0", - "name": "string-width", - "rawSpec": "^7.0.0" - } - }, - "107 debug pnpm:progress": { - "packageId": "registry.npmjs.org/string-width/7.2.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "108 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/string-width/7.2.0", - "wanted": { - "dependentId": "/cli-truncate/4.0.0", - "name": "string-width", - "rawSpec": "^7.0.0" - } - }, - "109 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/strip-ansi/7.1.0", - "wanted": { - "dependentId": "/string-width/7.2.0", - "name": "strip-ansi", - "rawSpec": "^7.1.0" - } - }, - "110 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/ansi-styles/6.2.1", - "wanted": { - "dependentId": "/slice-ansi/5.0.0", - "name": "ansi-styles", - "rawSpec": "^6.0.0" - } - }, - "111 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/fill-range/7.1.1", - "wanted": { - "dependentId": "/braces/3.0.3", - "name": "fill-range", - "rawSpec": "^7.1.1" - } - }, - "112 debug pnpm:progress": { - "packageId": "registry.npmjs.org/fill-range/7.1.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "113 debug pnpm:progress": { - "packageId": "registry.npmjs.org/slice-ansi/5.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "114 debug pnpm:progress": { - "packageId": "registry.npmjs.org/slice-ansi/7.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "115 debug pnpm:progress": { - "packageId": "registry.npmjs.org/strip-ansi/7.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "116 debug pnpm:progress": { - "packageId": "registry.npmjs.org/ansi-styles/6.2.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "117 debug pnpm:progress": { - "packageId": "registry.npmjs.org/cli-cursor/5.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "118 debug pnpm:progress": { - "packageId": "registry.npmjs.org/string-width/7.2.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "119 debug pnpm:progress": { - "packageId": "registry.npmjs.org/fill-range/7.1.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "120 debug pnpm:progress": { - "packageId": "registry.npmjs.org/ansi-escapes/7.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "121 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/environment/1.1.0", - "wanted": { - "dependentId": "/ansi-escapes/7.0.0", - "name": "environment", - "rawSpec": "^1.0.0" - } - }, - "122 debug pnpm:progress": { - "packageId": "registry.npmjs.org/environment/1.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "123 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/restore-cursor/5.1.0", - "wanted": { - "dependentId": "/cli-cursor/5.0.0", - "name": "restore-cursor", - "rawSpec": "^5.0.0" - } - }, - "124 debug pnpm:progress": { - "packageId": "registry.npmjs.org/restore-cursor/5.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "125 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/onetime/7.0.0", - "wanted": { - "dependentId": "/restore-cursor/5.1.0", - "name": "onetime", - "rawSpec": "^7.0.0" - } - }, - "126 debug pnpm:progress": { - "packageId": "registry.npmjs.org/onetime/7.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "127 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/signal-exit/4.1.0", - "wanted": { - "dependentId": "/restore-cursor/5.1.0", - "name": "signal-exit", - "rawSpec": "^4.1.0" - } - }, - "128 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/ansi-regex/6.1.0", - "wanted": { - "dependentId": "/strip-ansi/7.1.0", - "name": "ansi-regex", - "rawSpec": "^6.0.1" - } - }, - "129 debug pnpm:progress": { - "packageId": "registry.npmjs.org/ansi-regex/6.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "130 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/get-east-asian-width/1.2.0", - "wanted": { - "dependentId": "/string-width/7.2.0", - "name": "get-east-asian-width", - "rawSpec": "^1.0.0" - } - }, - "131 debug pnpm:progress": { - "packageId": "registry.npmjs.org/get-east-asian-width/1.2.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "132 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/emoji-regex/10.4.0", - "wanted": { - "dependentId": "/string-width/7.2.0", - "name": "emoji-regex", - "rawSpec": "^10.3.0" - } - }, - "133 debug pnpm:progress": { - "packageId": "registry.npmjs.org/emoji-regex/10.4.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "134 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/is-fullwidth-code-point/5.0.0", - "wanted": { - "dependentId": "/slice-ansi/7.1.0", - "name": "is-fullwidth-code-point", - "rawSpec": "^5.0.0" - } - }, - "135 debug pnpm:progress": { - "packageId": "registry.npmjs.org/is-fullwidth-code-point/5.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "136 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/is-fullwidth-code-point/4.0.0", - "wanted": { - "dependentId": "/slice-ansi/5.0.0", - "name": "is-fullwidth-code-point", - "rawSpec": "^4.0.0" - } - }, - "137 debug pnpm:progress": { - "packageId": "registry.npmjs.org/is-fullwidth-code-point/4.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "138 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/get-east-asian-width/1.2.0", - "wanted": { - "dependentId": "/is-fullwidth-code-point/5.0.0", - "name": "get-east-asian-width", - "rawSpec": "^1.0.0" - } - }, - "139 debug pnpm:progress": { - "packageId": "registry.npmjs.org/environment/1.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "140 debug pnpm:progress": { - "packageId": "registry.npmjs.org/onetime/7.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "141 debug pnpm:progress": { - "packageId": "registry.npmjs.org/restore-cursor/5.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "142 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/to-regex-range/5.0.1", - "wanted": { - "dependentId": "/fill-range/7.1.1", - "name": "to-regex-range", - "rawSpec": "^5.0.1" - } - }, - "143 debug pnpm:progress": { - "packageId": "registry.npmjs.org/to-regex-range/5.0.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "144 debug pnpm:progress": { - "packageId": "registry.npmjs.org/ansi-regex/6.1.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "145 debug pnpm:progress": { - "packageId": "registry.npmjs.org/get-east-asian-width/1.2.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "146 debug pnpm:progress": { - "packageId": "registry.npmjs.org/is-fullwidth-code-point/5.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "147 debug pnpm:progress": { - "packageId": "registry.npmjs.org/to-regex-range/5.0.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "148 debug pnpm:progress": { - "packageId": "registry.npmjs.org/is-fullwidth-code-point/4.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "149 debug pnpm:progress": { - "packageId": "registry.npmjs.org/emoji-regex/10.4.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "150 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/mimic-function/5.0.1", - "wanted": { - "dependentId": "/onetime/7.0.0", - "name": "mimic-function", - "rawSpec": "^5.0.0" - } - }, - "151 debug pnpm:progress": { - "packageId": "registry.npmjs.org/mimic-function/5.0.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "152 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/is-number/7.0.0", - "wanted": { - "dependentId": "/to-regex-range/5.0.1", - "name": "is-number", - "rawSpec": "^7.0.0" - } - }, - "153 debug pnpm:progress": { - "packageId": "registry.npmjs.org/is-number/7.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "154 debug pnpm:progress": { - "packageId": "registry.npmjs.org/mimic-function/5.0.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "155 debug pnpm:progress": { - "packageId": "registry.npmjs.org/is-number/7.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "156 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/human-signals/5.0.0", - "wanted": { - "dependentId": "/execa/8.0.1", - "name": "human-signals", - "rawSpec": "^5.0.0" - } - }, - "157 debug pnpm:progress": { - "packageId": "registry.npmjs.org/human-signals/5.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "158 debug pnpm:progress": { - "packageId": "registry.npmjs.org/human-signals/5.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "159 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/which/2.0.2", - "wanted": { - "dependentId": "/cross-spawn/7.0.3", - "name": "which", - "rawSpec": "^2.0.1" - } - }, - "160 debug pnpm:progress": { - "packageId": "registry.npmjs.org/which/2.0.2", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "161 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/shebang-command/2.0.0", - "wanted": { - "dependentId": "/cross-spawn/7.0.3", - "name": "shebang-command", - "rawSpec": "^2.0.0" - } - }, - "162 debug pnpm:progress": { - "packageId": "registry.npmjs.org/shebang-command/2.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "163 debug pnpm:progress": { - "packageId": "registry.npmjs.org/shebang-command/2.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "164 debug pnpm:progress": { - "packageId": "registry.npmjs.org/which/2.0.2", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "165 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/path-key/4.0.0", - "wanted": { - "dependentId": "/npm-run-path/5.3.0", - "name": "path-key", - "rawSpec": "^4.0.0" - } - }, - "166 debug pnpm:progress": { - "packageId": "registry.npmjs.org/path-key/4.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "167 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/path-key/3.1.1", - "wanted": { - "dependentId": "/cross-spawn/7.0.3", - "name": "path-key", - "rawSpec": "^3.1.0" - } - }, - "168 debug pnpm:progress": { - "packageId": "registry.npmjs.org/path-key/3.1.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "169 debug pnpm:progress": { - "packageId": "registry.npmjs.org/path-key/3.1.1", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "170 debug pnpm:progress": { - "packageId": "registry.npmjs.org/path-key/4.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "171 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/mimic-fn/4.0.0", - "wanted": { - "dependentId": "/onetime/6.0.0", - "name": "mimic-fn", - "rawSpec": "^4.0.0" - } - }, - "172 debug pnpm:progress": { - "packageId": "registry.npmjs.org/mimic-fn/4.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "173 debug pnpm:progress": { - "packageId": "registry.npmjs.org/mimic-fn/4.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "174 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/shebang-regex/3.0.0", - "wanted": { - "dependentId": "/shebang-command/2.0.0", - "name": "shebang-regex", - "rawSpec": "^3.0.0" - } - }, - "175 debug pnpm:progress": { - "packageId": "registry.npmjs.org/shebang-regex/3.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "176 debug pnpm:_dependency_resolved": { - "resolution": "registry.npmjs.org/isexe/2.0.0", - "wanted": { - "dependentId": "/which/2.0.2", - "name": "isexe", - "rawSpec": "^2.0.0" - } - }, - "177 debug pnpm:progress": { - "packageId": "registry.npmjs.org/isexe/2.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "resolved" - }, - "178 debug pnpm:package-manifest": { - "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "updated": { - "name": "dotnet-grpc-sql-proxy", - "version": "0.0.0", - "description": "Grpc Proxy for Sql Server", - "scripts": { - "build": "dotnet build", - "start": "dotnet start", - "prepare": "husky", - "lint:stage:fix": "lint-staged --relative", - "lint:fix": "dotnet format", - "lint": "dotnet format --verify-no-changes", - "restore": "dotnet restore", - "test": "dotnet test", - "prepare-test-db": "cd devops && sh prepare-db.sh && cd ..", - "unload-test-db": "cd devops && docker compose down && cd ..", - "test:coverage": "dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov.info" - }, - "devDependencies": { - "husky": "^9.0.11", - "lint-staged": "^15.2.5" - }, - "lint-staged": { - "*.cs": "dotnet format --include" - }, - "keywords": [], - "author": "", - "license": "ISC" - } - }, - "179 debug pnpm:stage": { - "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "stage": "resolution_done" - }, - "180 debug pnpm:progress": { - "packageId": "registry.npmjs.org/shebang-regex/3.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "181 debug pnpm:progress": { - "packageId": "registry.npmjs.org/isexe/2.0.0", - "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "status": "found_in_store" - }, - "182 debug pnpm:stage": { - "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", - "stage": "importing_done" - }, - "183 debug pnpm:summary": { - "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy" - }, - "184 error pnpm": { - "message": { - "code": "ELIFECYCLE", - "errno": "ENOENT", - "syscall": "spawn", - "file": "sh", - "pkgid": "dotnet-grpc-sql-proxy@0.0.0", - "stage": "prepare", - "script": "husky", - "pkgname": "dotnet-grpc-sql-proxy" - }, - "err": { - "name": "Error", - "message": "dotnet-grpc-sql-proxy@0.0.0 prepare: `husky`\nspawn ENOENT", - "code": "ELIFECYCLE", - "stack": "Error: dotnet-grpc-sql-proxy@0.0.0 prepare: `husky`\nspawn ENOENT\n at ChildProcess. (/home/thiago/.nvm/versions/node/v20.17.0/lib/node_modules/pnpm/dist/pnpm.js:87651:20)\n at ChildProcess.emit (node:events:519:28)\n at maybeClose (node:internal/child_process:1105:16)\n at ChildProcess._handle.onexit (node:internal/child_process:305:5)" - } - } +{ + "0 debug pnpm:scope": { + "selected": 1 + }, + "1 debug pnpm:package-manifest": { + "initial": { + "name": "dotnet-grpc-sql-proxy", + "version": "0.0.0", + "description": "Grpc Proxy for Sql Server", + "scripts": { + "build": "dotnet build", + "start": "dotnet start", + "prepare": "husky", + "lint:stage:fix": "lint-staged --relative", + "lint:fix": "dotnet format", + "lint": "dotnet format --verify-no-changes", + "restore": "dotnet restore", + "test": "dotnet test", + "prepare-test-db": "cd devops && sh prepare-db.sh && cd ..", + "unload-test-db": "cd devops && docker compose down && cd ..", + "test:coverage": "dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov.info" + }, + "devDependencies": { + "husky": "^9.0.11", + "lint-staged": "^15.2.5" + }, + "lint-staged": { + "*.cs": "dotnet format --include" + }, + "keywords": [], + "author": "", + "license": "ISC" + }, + "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy" + }, + "2 debug pnpm:context": { + "currentLockfileExists": false, + "storeDir": "/home/thiago/.pnpm-store/v3", + "virtualStoreDir": "/home/thiago/projects/personal/codibre/grpc-sql-proxy/node_modules/.pnpm" + }, + "3 debug pnpm:stage": { + "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "stage": "resolution_started" + }, + "4 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/husky/9.1.6", + "wanted": { + "dependentId": ".", + "name": "husky", + "rawSpec": "^9.0.11" + } + }, + "5 debug pnpm:progress": { + "packageId": "registry.npmjs.org/husky/9.1.6", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "6 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/lint-staged/15.2.10", + "wanted": { + "dependentId": ".", + "name": "lint-staged", + "rawSpec": "^15.2.5" + } + }, + "7 debug pnpm:progress": { + "packageId": "registry.npmjs.org/lint-staged/15.2.10", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "8 debug pnpm:progress": { + "packageId": "registry.npmjs.org/husky/9.1.6", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "9 debug pnpm:progress": { + "packageId": "registry.npmjs.org/lint-staged/15.2.10", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "10 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/commander/12.1.0", + "wanted": { + "dependentId": "/lint-staged/15.2.10", + "name": "commander", + "rawSpec": "~12.1.0" + } + }, + "11 debug pnpm:progress": { + "packageId": "registry.npmjs.org/commander/12.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "12 debug pnpm:progress": { + "packageId": "registry.npmjs.org/commander/12.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "13 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/chalk/5.3.0", + "wanted": { + "dependentId": "/lint-staged/15.2.10", + "name": "chalk", + "rawSpec": "~5.3.0" + } + }, + "14 debug pnpm:progress": { + "packageId": "registry.npmjs.org/chalk/5.3.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "15 debug pnpm:progress": { + "packageId": "registry.npmjs.org/chalk/5.3.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "16 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/lilconfig/3.1.2", + "wanted": { + "dependentId": "/lint-staged/15.2.10", + "name": "lilconfig", + "rawSpec": "~3.1.2" + } + }, + "17 debug pnpm:progress": { + "packageId": "registry.npmjs.org/lilconfig/3.1.2", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "18 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/pidtree/0.6.0", + "wanted": { + "dependentId": "/lint-staged/15.2.10", + "name": "pidtree", + "rawSpec": "~0.6.0" + } + }, + "19 debug pnpm:progress": { + "packageId": "registry.npmjs.org/pidtree/0.6.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "20 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/debug/4.3.7", + "wanted": { + "dependentId": "/lint-staged/15.2.10", + "name": "debug", + "rawSpec": "~4.3.6" + } + }, + "21 debug pnpm:progress": { + "packageId": "registry.npmjs.org/debug/4.3.7", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "22 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/execa/8.0.1", + "wanted": { + "dependentId": "/lint-staged/15.2.10", + "name": "execa", + "rawSpec": "~8.0.1" + } + }, + "23 debug pnpm:progress": { + "packageId": "registry.npmjs.org/execa/8.0.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "24 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/micromatch/4.0.8", + "wanted": { + "dependentId": "/lint-staged/15.2.10", + "name": "micromatch", + "rawSpec": "~4.0.8" + } + }, + "25 debug pnpm:progress": { + "packageId": "registry.npmjs.org/micromatch/4.0.8", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "26 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/string-argv/0.3.2", + "wanted": { + "dependentId": "/lint-staged/15.2.10", + "name": "string-argv", + "rawSpec": "~0.3.2" + } + }, + "27 debug pnpm:progress": { + "packageId": "registry.npmjs.org/string-argv/0.3.2", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "28 debug pnpm:progress": { + "packageId": "registry.npmjs.org/lilconfig/3.1.2", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "29 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/listr2/8.2.5", + "wanted": { + "dependentId": "/lint-staged/15.2.10", + "name": "listr2", + "rawSpec": "~8.2.4" + } + }, + "30 debug pnpm:progress": { + "packageId": "registry.npmjs.org/listr2/8.2.5", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "31 debug pnpm:progress": { + "packageId": "registry.npmjs.org/pidtree/0.6.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "32 debug pnpm:progress": { + "packageId": "registry.npmjs.org/debug/4.3.7", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "33 debug pnpm:progress": { + "packageId": "registry.npmjs.org/execa/8.0.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "34 debug pnpm:progress": { + "packageId": "registry.npmjs.org/micromatch/4.0.8", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "35 debug pnpm:progress": { + "packageId": "registry.npmjs.org/string-argv/0.3.2", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "36 debug pnpm:progress": { + "packageId": "registry.npmjs.org/listr2/8.2.5", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "37 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/yaml/2.5.1", + "wanted": { + "dependentId": "/lint-staged/15.2.10", + "name": "yaml", + "rawSpec": "~2.5.0" + } + }, + "38 debug pnpm:progress": { + "packageId": "registry.npmjs.org/yaml/2.5.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "39 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/strip-final-newline/3.0.0", + "wanted": { + "dependentId": "/execa/8.0.1", + "name": "strip-final-newline", + "rawSpec": "^3.0.0" + } + }, + "40 debug pnpm:progress": { + "packageId": "registry.npmjs.org/strip-final-newline/3.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "41 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/npm-run-path/5.3.0", + "wanted": { + "dependentId": "/execa/8.0.1", + "name": "npm-run-path", + "rawSpec": "^5.1.0" + } + }, + "42 debug pnpm:progress": { + "packageId": "registry.npmjs.org/npm-run-path/5.3.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "43 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/is-stream/3.0.0", + "wanted": { + "dependentId": "/execa/8.0.1", + "name": "is-stream", + "rawSpec": "^3.0.0" + } + }, + "44 debug pnpm:progress": { + "packageId": "registry.npmjs.org/is-stream/3.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "45 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/signal-exit/4.1.0", + "wanted": { + "dependentId": "/execa/8.0.1", + "name": "signal-exit", + "rawSpec": "^4.1.0" + } + }, + "46 debug pnpm:progress": { + "packageId": "registry.npmjs.org/signal-exit/4.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "47 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/get-stream/8.0.1", + "wanted": { + "dependentId": "/execa/8.0.1", + "name": "get-stream", + "rawSpec": "^8.0.1" + } + }, + "48 debug pnpm:progress": { + "packageId": "registry.npmjs.org/get-stream/8.0.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "49 debug pnpm:progress": { + "packageId": "registry.npmjs.org/yaml/2.5.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "50 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/merge-stream/2.0.0", + "wanted": { + "dependentId": "/execa/8.0.1", + "name": "merge-stream", + "rawSpec": "^2.0.0" + } + }, + "51 debug pnpm:progress": { + "packageId": "registry.npmjs.org/merge-stream/2.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "52 debug pnpm:progress": { + "packageId": "registry.npmjs.org/strip-final-newline/3.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "53 debug pnpm:progress": { + "packageId": "registry.npmjs.org/npm-run-path/5.3.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "54 debug pnpm:progress": { + "packageId": "registry.npmjs.org/is-stream/3.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "55 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ms/2.1.3", + "wanted": { + "dependentId": "/debug/4.3.7", + "name": "ms", + "rawSpec": "^2.1.3" + } + }, + "56 debug pnpm:progress": { + "packageId": "registry.npmjs.org/ms/2.1.3", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "57 debug pnpm:progress": { + "packageId": "registry.npmjs.org/signal-exit/4.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "58 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/cross-spawn/7.0.3", + "wanted": { + "dependentId": "/execa/8.0.1", + "name": "cross-spawn", + "rawSpec": "^7.0.3" + } + }, + "59 debug pnpm:progress": { + "packageId": "registry.npmjs.org/cross-spawn/7.0.3", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "60 debug pnpm:progress": { + "packageId": "registry.npmjs.org/get-stream/8.0.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "61 debug pnpm:progress": { + "packageId": "registry.npmjs.org/merge-stream/2.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "62 debug pnpm:progress": { + "packageId": "registry.npmjs.org/ms/2.1.3", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "63 debug pnpm:progress": { + "packageId": "registry.npmjs.org/cross-spawn/7.0.3", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "64 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/braces/3.0.3", + "wanted": { + "dependentId": "/micromatch/4.0.8", + "name": "braces", + "rawSpec": "^3.0.3" + } + }, + "65 debug pnpm:progress": { + "packageId": "registry.npmjs.org/braces/3.0.3", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "66 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/onetime/6.0.0", + "wanted": { + "dependentId": "/execa/8.0.1", + "name": "onetime", + "rawSpec": "^6.0.0" + } + }, + "67 debug pnpm:progress": { + "packageId": "registry.npmjs.org/onetime/6.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "68 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/rfdc/1.4.1", + "wanted": { + "dependentId": "/listr2/8.2.5", + "name": "rfdc", + "rawSpec": "^1.4.1" + } + }, + "69 debug pnpm:progress": { + "packageId": "registry.npmjs.org/rfdc/1.4.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "70 debug pnpm:progress": { + "packageId": "registry.npmjs.org/braces/3.0.3", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "71 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/wrap-ansi/9.0.0", + "wanted": { + "dependentId": "/listr2/8.2.5", + "name": "wrap-ansi", + "rawSpec": "^9.0.0" + } + }, + "72 debug pnpm:progress": { + "packageId": "registry.npmjs.org/wrap-ansi/9.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "73 debug pnpm:progress": { + "packageId": "registry.npmjs.org/onetime/6.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "74 debug pnpm:progress": { + "packageId": "registry.npmjs.org/wrap-ansi/9.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "75 debug pnpm:progress": { + "packageId": "registry.npmjs.org/rfdc/1.4.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "76 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/cli-truncate/4.0.0", + "wanted": { + "dependentId": "/listr2/8.2.5", + "name": "cli-truncate", + "rawSpec": "^4.0.0" + } + }, + "77 debug pnpm:progress": { + "packageId": "registry.npmjs.org/cli-truncate/4.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "78 debug pnpm:progress": { + "packageId": "registry.npmjs.org/cli-truncate/4.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "79 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/eventemitter3/5.0.1", + "wanted": { + "dependentId": "/listr2/8.2.5", + "name": "eventemitter3", + "rawSpec": "^5.0.1" + } + }, + "80 debug pnpm:progress": { + "packageId": "registry.npmjs.org/eventemitter3/5.0.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "81 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/colorette/2.0.20", + "wanted": { + "dependentId": "/listr2/8.2.5", + "name": "colorette", + "rawSpec": "^2.0.20" + } + }, + "82 debug pnpm:progress": { + "packageId": "registry.npmjs.org/colorette/2.0.20", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "83 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/picomatch/2.3.1", + "wanted": { + "dependentId": "/micromatch/4.0.8", + "name": "picomatch", + "rawSpec": "^2.3.1" + } + }, + "84 debug pnpm:progress": { + "packageId": "registry.npmjs.org/picomatch/2.3.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "85 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/log-update/6.1.0", + "wanted": { + "dependentId": "/listr2/8.2.5", + "name": "log-update", + "rawSpec": "^6.1.0" + } + }, + "86 debug pnpm:progress": { + "packageId": "registry.npmjs.org/log-update/6.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "87 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/wrap-ansi/9.0.0", + "wanted": { + "dependentId": "/log-update/6.1.0", + "name": "wrap-ansi", + "rawSpec": "^9.0.0" + } + }, + "88 debug pnpm:progress": { + "packageId": "registry.npmjs.org/colorette/2.0.20", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "89 debug pnpm:progress": { + "packageId": "registry.npmjs.org/eventemitter3/5.0.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "90 debug pnpm:progress": { + "packageId": "registry.npmjs.org/log-update/6.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "91 debug pnpm:progress": { + "packageId": "registry.npmjs.org/picomatch/2.3.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "92 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/slice-ansi/5.0.0", + "wanted": { + "dependentId": "/cli-truncate/4.0.0", + "name": "slice-ansi", + "rawSpec": "^5.0.0" + } + }, + "93 debug pnpm:progress": { + "packageId": "registry.npmjs.org/slice-ansi/5.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "94 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/slice-ansi/7.1.0", + "wanted": { + "dependentId": "/log-update/6.1.0", + "name": "slice-ansi", + "rawSpec": "^7.1.0" + } + }, + "95 debug pnpm:progress": { + "packageId": "registry.npmjs.org/slice-ansi/7.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "96 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/cli-cursor/5.0.0", + "wanted": { + "dependentId": "/log-update/6.1.0", + "name": "cli-cursor", + "rawSpec": "^5.0.0" + } + }, + "97 debug pnpm:progress": { + "packageId": "registry.npmjs.org/cli-cursor/5.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "98 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ansi-styles/6.2.1", + "wanted": { + "dependentId": "/wrap-ansi/9.0.0", + "name": "ansi-styles", + "rawSpec": "^6.2.1" + } + }, + "99 debug pnpm:progress": { + "packageId": "registry.npmjs.org/ansi-styles/6.2.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "100 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/strip-ansi/7.1.0", + "wanted": { + "dependentId": "/wrap-ansi/9.0.0", + "name": "strip-ansi", + "rawSpec": "^7.1.0" + } + }, + "101 debug pnpm:progress": { + "packageId": "registry.npmjs.org/strip-ansi/7.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "102 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/strip-ansi/7.1.0", + "wanted": { + "dependentId": "/log-update/6.1.0", + "name": "strip-ansi", + "rawSpec": "^7.1.0" + } + }, + "103 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ansi-escapes/7.0.0", + "wanted": { + "dependentId": "/log-update/6.1.0", + "name": "ansi-escapes", + "rawSpec": "^7.0.0" + } + }, + "104 debug pnpm:progress": { + "packageId": "registry.npmjs.org/ansi-escapes/7.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "105 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ansi-styles/6.2.1", + "wanted": { + "dependentId": "/slice-ansi/7.1.0", + "name": "ansi-styles", + "rawSpec": "^6.2.1" + } + }, + "106 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/string-width/7.2.0", + "wanted": { + "dependentId": "/wrap-ansi/9.0.0", + "name": "string-width", + "rawSpec": "^7.0.0" + } + }, + "107 debug pnpm:progress": { + "packageId": "registry.npmjs.org/string-width/7.2.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "108 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/string-width/7.2.0", + "wanted": { + "dependentId": "/cli-truncate/4.0.0", + "name": "string-width", + "rawSpec": "^7.0.0" + } + }, + "109 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/strip-ansi/7.1.0", + "wanted": { + "dependentId": "/string-width/7.2.0", + "name": "strip-ansi", + "rawSpec": "^7.1.0" + } + }, + "110 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ansi-styles/6.2.1", + "wanted": { + "dependentId": "/slice-ansi/5.0.0", + "name": "ansi-styles", + "rawSpec": "^6.0.0" + } + }, + "111 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/fill-range/7.1.1", + "wanted": { + "dependentId": "/braces/3.0.3", + "name": "fill-range", + "rawSpec": "^7.1.1" + } + }, + "112 debug pnpm:progress": { + "packageId": "registry.npmjs.org/fill-range/7.1.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "113 debug pnpm:progress": { + "packageId": "registry.npmjs.org/slice-ansi/5.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "114 debug pnpm:progress": { + "packageId": "registry.npmjs.org/slice-ansi/7.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "115 debug pnpm:progress": { + "packageId": "registry.npmjs.org/strip-ansi/7.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "116 debug pnpm:progress": { + "packageId": "registry.npmjs.org/ansi-styles/6.2.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "117 debug pnpm:progress": { + "packageId": "registry.npmjs.org/cli-cursor/5.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "118 debug pnpm:progress": { + "packageId": "registry.npmjs.org/string-width/7.2.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "119 debug pnpm:progress": { + "packageId": "registry.npmjs.org/fill-range/7.1.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "120 debug pnpm:progress": { + "packageId": "registry.npmjs.org/ansi-escapes/7.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "121 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/environment/1.1.0", + "wanted": { + "dependentId": "/ansi-escapes/7.0.0", + "name": "environment", + "rawSpec": "^1.0.0" + } + }, + "122 debug pnpm:progress": { + "packageId": "registry.npmjs.org/environment/1.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "123 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/restore-cursor/5.1.0", + "wanted": { + "dependentId": "/cli-cursor/5.0.0", + "name": "restore-cursor", + "rawSpec": "^5.0.0" + } + }, + "124 debug pnpm:progress": { + "packageId": "registry.npmjs.org/restore-cursor/5.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "125 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/onetime/7.0.0", + "wanted": { + "dependentId": "/restore-cursor/5.1.0", + "name": "onetime", + "rawSpec": "^7.0.0" + } + }, + "126 debug pnpm:progress": { + "packageId": "registry.npmjs.org/onetime/7.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "127 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/signal-exit/4.1.0", + "wanted": { + "dependentId": "/restore-cursor/5.1.0", + "name": "signal-exit", + "rawSpec": "^4.1.0" + } + }, + "128 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/ansi-regex/6.1.0", + "wanted": { + "dependentId": "/strip-ansi/7.1.0", + "name": "ansi-regex", + "rawSpec": "^6.0.1" + } + }, + "129 debug pnpm:progress": { + "packageId": "registry.npmjs.org/ansi-regex/6.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "130 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/get-east-asian-width/1.2.0", + "wanted": { + "dependentId": "/string-width/7.2.0", + "name": "get-east-asian-width", + "rawSpec": "^1.0.0" + } + }, + "131 debug pnpm:progress": { + "packageId": "registry.npmjs.org/get-east-asian-width/1.2.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "132 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/emoji-regex/10.4.0", + "wanted": { + "dependentId": "/string-width/7.2.0", + "name": "emoji-regex", + "rawSpec": "^10.3.0" + } + }, + "133 debug pnpm:progress": { + "packageId": "registry.npmjs.org/emoji-regex/10.4.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "134 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/is-fullwidth-code-point/5.0.0", + "wanted": { + "dependentId": "/slice-ansi/7.1.0", + "name": "is-fullwidth-code-point", + "rawSpec": "^5.0.0" + } + }, + "135 debug pnpm:progress": { + "packageId": "registry.npmjs.org/is-fullwidth-code-point/5.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "136 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/is-fullwidth-code-point/4.0.0", + "wanted": { + "dependentId": "/slice-ansi/5.0.0", + "name": "is-fullwidth-code-point", + "rawSpec": "^4.0.0" + } + }, + "137 debug pnpm:progress": { + "packageId": "registry.npmjs.org/is-fullwidth-code-point/4.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "138 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/get-east-asian-width/1.2.0", + "wanted": { + "dependentId": "/is-fullwidth-code-point/5.0.0", + "name": "get-east-asian-width", + "rawSpec": "^1.0.0" + } + }, + "139 debug pnpm:progress": { + "packageId": "registry.npmjs.org/environment/1.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "140 debug pnpm:progress": { + "packageId": "registry.npmjs.org/onetime/7.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "141 debug pnpm:progress": { + "packageId": "registry.npmjs.org/restore-cursor/5.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "142 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/to-regex-range/5.0.1", + "wanted": { + "dependentId": "/fill-range/7.1.1", + "name": "to-regex-range", + "rawSpec": "^5.0.1" + } + }, + "143 debug pnpm:progress": { + "packageId": "registry.npmjs.org/to-regex-range/5.0.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "144 debug pnpm:progress": { + "packageId": "registry.npmjs.org/ansi-regex/6.1.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "145 debug pnpm:progress": { + "packageId": "registry.npmjs.org/get-east-asian-width/1.2.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "146 debug pnpm:progress": { + "packageId": "registry.npmjs.org/is-fullwidth-code-point/5.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "147 debug pnpm:progress": { + "packageId": "registry.npmjs.org/to-regex-range/5.0.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "148 debug pnpm:progress": { + "packageId": "registry.npmjs.org/is-fullwidth-code-point/4.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "149 debug pnpm:progress": { + "packageId": "registry.npmjs.org/emoji-regex/10.4.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "150 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/mimic-function/5.0.1", + "wanted": { + "dependentId": "/onetime/7.0.0", + "name": "mimic-function", + "rawSpec": "^5.0.0" + } + }, + "151 debug pnpm:progress": { + "packageId": "registry.npmjs.org/mimic-function/5.0.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "152 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/is-number/7.0.0", + "wanted": { + "dependentId": "/to-regex-range/5.0.1", + "name": "is-number", + "rawSpec": "^7.0.0" + } + }, + "153 debug pnpm:progress": { + "packageId": "registry.npmjs.org/is-number/7.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "154 debug pnpm:progress": { + "packageId": "registry.npmjs.org/mimic-function/5.0.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "155 debug pnpm:progress": { + "packageId": "registry.npmjs.org/is-number/7.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "156 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/human-signals/5.0.0", + "wanted": { + "dependentId": "/execa/8.0.1", + "name": "human-signals", + "rawSpec": "^5.0.0" + } + }, + "157 debug pnpm:progress": { + "packageId": "registry.npmjs.org/human-signals/5.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "158 debug pnpm:progress": { + "packageId": "registry.npmjs.org/human-signals/5.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "159 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/which/2.0.2", + "wanted": { + "dependentId": "/cross-spawn/7.0.3", + "name": "which", + "rawSpec": "^2.0.1" + } + }, + "160 debug pnpm:progress": { + "packageId": "registry.npmjs.org/which/2.0.2", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "161 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/shebang-command/2.0.0", + "wanted": { + "dependentId": "/cross-spawn/7.0.3", + "name": "shebang-command", + "rawSpec": "^2.0.0" + } + }, + "162 debug pnpm:progress": { + "packageId": "registry.npmjs.org/shebang-command/2.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "163 debug pnpm:progress": { + "packageId": "registry.npmjs.org/shebang-command/2.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "164 debug pnpm:progress": { + "packageId": "registry.npmjs.org/which/2.0.2", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "165 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/path-key/4.0.0", + "wanted": { + "dependentId": "/npm-run-path/5.3.0", + "name": "path-key", + "rawSpec": "^4.0.0" + } + }, + "166 debug pnpm:progress": { + "packageId": "registry.npmjs.org/path-key/4.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "167 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/path-key/3.1.1", + "wanted": { + "dependentId": "/cross-spawn/7.0.3", + "name": "path-key", + "rawSpec": "^3.1.0" + } + }, + "168 debug pnpm:progress": { + "packageId": "registry.npmjs.org/path-key/3.1.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "169 debug pnpm:progress": { + "packageId": "registry.npmjs.org/path-key/3.1.1", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "170 debug pnpm:progress": { + "packageId": "registry.npmjs.org/path-key/4.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "171 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/mimic-fn/4.0.0", + "wanted": { + "dependentId": "/onetime/6.0.0", + "name": "mimic-fn", + "rawSpec": "^4.0.0" + } + }, + "172 debug pnpm:progress": { + "packageId": "registry.npmjs.org/mimic-fn/4.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "173 debug pnpm:progress": { + "packageId": "registry.npmjs.org/mimic-fn/4.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "174 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/shebang-regex/3.0.0", + "wanted": { + "dependentId": "/shebang-command/2.0.0", + "name": "shebang-regex", + "rawSpec": "^3.0.0" + } + }, + "175 debug pnpm:progress": { + "packageId": "registry.npmjs.org/shebang-regex/3.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "176 debug pnpm:_dependency_resolved": { + "resolution": "registry.npmjs.org/isexe/2.0.0", + "wanted": { + "dependentId": "/which/2.0.2", + "name": "isexe", + "rawSpec": "^2.0.0" + } + }, + "177 debug pnpm:progress": { + "packageId": "registry.npmjs.org/isexe/2.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "resolved" + }, + "178 debug pnpm:package-manifest": { + "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "updated": { + "name": "dotnet-grpc-sql-proxy", + "version": "0.0.0", + "description": "Grpc Proxy for Sql Server", + "scripts": { + "build": "dotnet build", + "start": "dotnet start", + "prepare": "husky", + "lint:stage:fix": "lint-staged --relative", + "lint:fix": "dotnet format", + "lint": "dotnet format --verify-no-changes", + "restore": "dotnet restore", + "test": "dotnet test", + "prepare-test-db": "cd devops && sh prepare-db.sh && cd ..", + "unload-test-db": "cd devops && docker compose down && cd ..", + "test:coverage": "dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov.info" + }, + "devDependencies": { + "husky": "^9.0.11", + "lint-staged": "^15.2.5" + }, + "lint-staged": { + "*.cs": "dotnet format --include" + }, + "keywords": [], + "author": "", + "license": "ISC" + } + }, + "179 debug pnpm:stage": { + "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "stage": "resolution_done" + }, + "180 debug pnpm:progress": { + "packageId": "registry.npmjs.org/shebang-regex/3.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "181 debug pnpm:progress": { + "packageId": "registry.npmjs.org/isexe/2.0.0", + "requester": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "status": "found_in_store" + }, + "182 debug pnpm:stage": { + "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy", + "stage": "importing_done" + }, + "183 debug pnpm:summary": { + "prefix": "/home/thiago/projects/personal/codibre/grpc-sql-proxy" + }, + "184 error pnpm": { + "message": { + "code": "ELIFECYCLE", + "errno": "ENOENT", + "syscall": "spawn", + "file": "sh", + "pkgid": "dotnet-grpc-sql-proxy@0.0.0", + "stage": "prepare", + "script": "husky", + "pkgname": "dotnet-grpc-sql-proxy" + }, + "err": { + "name": "Error", + "message": "dotnet-grpc-sql-proxy@0.0.0 prepare: `husky`\nspawn ENOENT", + "code": "ELIFECYCLE", + "stack": "Error: dotnet-grpc-sql-proxy@0.0.0 prepare: `husky`\nspawn ENOENT\n at ChildProcess. (/home/thiago/.nvm/versions/node/v20.17.0/lib/node_modules/pnpm/dist/pnpm.js:87651:20)\n at ChildProcess.emit (node:events:519:28)\n at maybeClose (node:internal/child_process:1105:16)\n at ChildProcess._handle.onexit (node:internal/child_process:305:5)" + } + } } \ No newline at end of file diff --git a/.releaserc.json b/.releaserc.json index 414f3aa..4839212 100644 --- a/.releaserc.json +++ b/.releaserc.json @@ -1,28 +1,28 @@ -{ - "branches": [ - "main" - ], - "plugins": [ - "@semantic-release/commit-analyzer", - "@semantic-release/changelog", - "@semantic-release/release-notes-generator", - "@droidsolutions-oss/semantic-release-nuget", - "@semantic-release/github", - "@semantic-release/git" - ], - "preset": "angular", - "npmPublish": false, - "projectPath": "src/Codibre.GrpcSqlProxy.Client/Codibre.GrpcSqlProxy.Client.csproj", - "usePackageVersion": true, - "files": [ - { - "type": "xml", - "replacements": [ - { - "key": "VersionPrefix", - "value": "${nextRelease.version}" - } - ] - } - ] +{ + "branches": [ + "main" + ], + "plugins": [ + "@semantic-release/commit-analyzer", + "@semantic-release/changelog", + "@semantic-release/release-notes-generator", + "@droidsolutions-oss/semantic-release-nuget", + "@semantic-release/github", + "@semantic-release/git" + ], + "preset": "angular", + "npmPublish": false, + "projectPath": "src/Codibre.GrpcSqlProxy.Client/Codibre.GrpcSqlProxy.Client.csproj", + "usePackageVersion": true, + "files": [ + { + "type": "xml", + "replacements": [ + { + "key": "VersionPrefix", + "value": "${nextRelease.version}" + } + ] + } + ] } \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 971d0bd..76b33b0 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,17 @@ -FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build -WORKDIR /source - -# Copy everything -# copy csproj and restore as distinct layers -COPY . . -RUN dotnet restore -RUN dotnet publish "src/Codibre.GrpcSqlProxy.Api/Codibre.GrpcSqlProxy.Api.csproj" -c release -o /app --no-restore - -# Build runtime image -FROM mcr.microsoft.com/dotnet/aspnet:8.0 -WORKDIR /app -COPY --from=build /app ./ - +FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build +WORKDIR /source + +# Copy everything +# copy csproj and restore as distinct layers +COPY . . +RUN dotnet restore +RUN dotnet publish "src/Codibre.GrpcSqlProxy.Api/Codibre.GrpcSqlProxy.Api.csproj" -c release -o /app --no-restore + +# Build runtime image +FROM mcr.microsoft.com/dotnet/aspnet:8.0 +WORKDIR /app +COPY --from=build /app ./ + +EXPOSE 3000 + ENTRYPOINT ["dotnet", "Codibre.GrpcSqlProxy.Api.dll"] \ No newline at end of file diff --git a/devops/PrepareDb.Sql b/devops/PrepareDb.Sql index fec6e91..cec7b71 100644 --- a/devops/PrepareDb.Sql +++ b/devops/PrepareDb.Sql @@ -1,17 +1,17 @@ -CREATE TABLE [dbo].[TB_PRODUTO] ( - [CD_PRODUTO] INT NOT NULL, - CONSTRAINT [PK_TB_PRODUTO] PRIMARY KEY CLUSTERED ([CD_PRODUTO] ASC) -); -GO - -CREATE TABLE [dbo].[TB_PESSOA] ( - [CD_PESSOA] INT NOT NULL, - CONSTRAINT [PK_TB_PESSOA] PRIMARY KEY CLUSTERED ([CD_PESSOA] ASC) -); -GO - -CREATE TABLE [dbo].[TB_PEDIDO] ( - [CD_PEDIDO] INT NOT NULL, - CONSTRAINT [PK_TB_PEDIDO] PRIMARY KEY CLUSTERED ([CD_PEDIDO] ASC) -); +CREATE TABLE [dbo].[TB_PRODUTO] ( + [CD_PRODUTO] INT NOT NULL, + CONSTRAINT [PK_TB_PRODUTO] PRIMARY KEY CLUSTERED ([CD_PRODUTO] ASC) +); +GO + +CREATE TABLE [dbo].[TB_PESSOA] ( + [CD_PESSOA] INT NOT NULL, + CONSTRAINT [PK_TB_PESSOA] PRIMARY KEY CLUSTERED ([CD_PESSOA] ASC) +); +GO + +CREATE TABLE [dbo].[TB_PEDIDO] ( + [CD_PEDIDO] INT NOT NULL, + CONSTRAINT [PK_TB_PEDIDO] PRIMARY KEY CLUSTERED ([CD_PEDIDO] ASC) +); GO \ No newline at end of file diff --git a/devops/docker-compose.yml b/devops/docker-compose.yml index fdb64e4..ede211e 100644 --- a/devops/docker-compose.yml +++ b/devops/docker-compose.yml @@ -1,16 +1,16 @@ -version: '3' -services: - mssql_server: - image: mcr.microsoft.com/mssql/server:2022-CU10-ubuntu-22.04 - environment: - - 'ACCEPT_EULA=Y' - - 'MSSQL_SA_PASSWORD=Sa12345!' - restart: always - container_name: mssql_server - networks: - - net - ports: - - 1433:1433 - user: root -networks: +version: '3' +services: + mssql_server: + image: mcr.microsoft.com/mssql/server:2022-CU10-ubuntu-22.04 + environment: + - 'ACCEPT_EULA=Y' + - 'MSSQL_SA_PASSWORD=Sa12345!' + restart: always + container_name: mssql_server + networks: + - net + ports: + - 1433:1433 + user: root +networks: net: \ No newline at end of file diff --git a/devops/wait-for-it.sh b/devops/wait-for-it.sh index 0699e99..5649a90 100644 --- a/devops/wait-for-it.sh +++ b/devops/wait-for-it.sh @@ -1,183 +1,183 @@ -#!/usr/bin/env bash -# Use this script to test if a given TCP host/port are available -# Taken from https://github.com/vishnubob/wait-for-it - -WAITFORIT_cmdname=${0##*/} - -echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi } - -usage() -{ - cat << USAGE >&2 -Usage: - $WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args] - -h HOST | --host=HOST Host or IP under test - -p PORT | --port=PORT TCP port under test - Alternatively, you specify the host and port as host:port - -s | --strict Only execute subcommand if the test succeeds - -q | --quiet Don't output any status messages - -t TIMEOUT | --timeout=TIMEOUT - Timeout in seconds, zero for no timeout - -- COMMAND ARGS Execute command with args after the test finishes -USAGE - exit 1 -} - -wait_for() -{ - if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then - echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT" - else - echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout" - fi - WAITFORIT_start_ts=$(date +%s) - while : - do - if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then - nc -z $WAITFORIT_HOST $WAITFORIT_PORT - WAITFORIT_result=$? - else - (echo -n > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1 - WAITFORIT_result=$? - fi - if [[ $WAITFORIT_result -eq 0 ]]; then - WAITFORIT_end_ts=$(date +%s) - echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds" - break - fi - sleep 1 - done - return $WAITFORIT_result -} - -wait_for_wrapper() -{ - # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692 - if [[ $WAITFORIT_QUIET -eq 1 ]]; then - timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT & - else - timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT & - fi - WAITFORIT_PID=$! - trap "kill -INT -$WAITFORIT_PID" INT - wait $WAITFORIT_PID - WAITFORIT_RESULT=$? - if [[ $WAITFORIT_RESULT -ne 0 ]]; then - echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT" - fi - return $WAITFORIT_RESULT -} - -# process arguments -while [[ $# -gt 0 ]] -do - case "$1" in - *:* ) - WAITFORIT_hostport=(${1//:/ }) - WAITFORIT_HOST=${WAITFORIT_hostport[0]} - WAITFORIT_PORT=${WAITFORIT_hostport[1]} - shift 1 - ;; - --child) - WAITFORIT_CHILD=1 - shift 1 - ;; - -q | --quiet) - WAITFORIT_QUIET=1 - shift 1 - ;; - -s | --strict) - WAITFORIT_STRICT=1 - shift 1 - ;; - -h) - WAITFORIT_HOST="$2" - if [[ $WAITFORIT_HOST == "" ]]; then break; fi - shift 2 - ;; - --host=*) - WAITFORIT_HOST="${1#*=}" - shift 1 - ;; - -p) - WAITFORIT_PORT="$2" - if [[ $WAITFORIT_PORT == "" ]]; then break; fi - shift 2 - ;; - --port=*) - WAITFORIT_PORT="${1#*=}" - shift 1 - ;; - -t) - WAITFORIT_TIMEOUT="$2" - if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi - shift 2 - ;; - --timeout=*) - WAITFORIT_TIMEOUT="${1#*=}" - shift 1 - ;; - --) - shift - WAITFORIT_CLI=("$@") - break - ;; - --help) - usage - ;; - *) - echoerr "Unknown argument: $1" - usage - ;; - esac -done - -if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then - echoerr "Error: you need to provide a host and port to test." - usage -fi - -WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15} -WAITFORIT_STRICT=${WAITFORIT_STRICT:-0} -WAITFORIT_CHILD=${WAITFORIT_CHILD:-0} -WAITFORIT_QUIET=${WAITFORIT_QUIET:-0} - -# Check to see if timeout is from busybox? -WAITFORIT_TIMEOUT_PATH=$(type -p timeout) -WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH) - -WAITFORIT_BUSYTIMEFLAG="" -if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then - WAITFORIT_ISBUSY=1 - # Check if busybox timeout uses -t flag - # (recent Alpine versions don't support -t anymore) - if timeout &>/dev/stdout | grep -q -e '-t '; then - WAITFORIT_BUSYTIMEFLAG="-t" - fi -else - WAITFORIT_ISBUSY=0 -fi - -if [[ $WAITFORIT_CHILD -gt 0 ]]; then - wait_for - WAITFORIT_RESULT=$? - exit $WAITFORIT_RESULT -else - if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then - wait_for_wrapper - WAITFORIT_RESULT=$? - else - wait_for - WAITFORIT_RESULT=$? - fi -fi - -if [[ $WAITFORIT_CLI != "" ]]; then - if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then - echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess" - exit $WAITFORIT_RESULT - fi - exec "${WAITFORIT_CLI[@]}" -else - exit $WAITFORIT_RESULT +#!/usr/bin/env bash +# Use this script to test if a given TCP host/port are available +# Taken from https://github.com/vishnubob/wait-for-it + +WAITFORIT_cmdname=${0##*/} + +echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi } + +usage() +{ + cat << USAGE >&2 +Usage: + $WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args] + -h HOST | --host=HOST Host or IP under test + -p PORT | --port=PORT TCP port under test + Alternatively, you specify the host and port as host:port + -s | --strict Only execute subcommand if the test succeeds + -q | --quiet Don't output any status messages + -t TIMEOUT | --timeout=TIMEOUT + Timeout in seconds, zero for no timeout + -- COMMAND ARGS Execute command with args after the test finishes +USAGE + exit 1 +} + +wait_for() +{ + if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then + echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT" + else + echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout" + fi + WAITFORIT_start_ts=$(date +%s) + while : + do + if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then + nc -z $WAITFORIT_HOST $WAITFORIT_PORT + WAITFORIT_result=$? + else + (echo -n > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1 + WAITFORIT_result=$? + fi + if [[ $WAITFORIT_result -eq 0 ]]; then + WAITFORIT_end_ts=$(date +%s) + echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds" + break + fi + sleep 1 + done + return $WAITFORIT_result +} + +wait_for_wrapper() +{ + # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692 + if [[ $WAITFORIT_QUIET -eq 1 ]]; then + timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT & + else + timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT & + fi + WAITFORIT_PID=$! + trap "kill -INT -$WAITFORIT_PID" INT + wait $WAITFORIT_PID + WAITFORIT_RESULT=$? + if [[ $WAITFORIT_RESULT -ne 0 ]]; then + echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT" + fi + return $WAITFORIT_RESULT +} + +# process arguments +while [[ $# -gt 0 ]] +do + case "$1" in + *:* ) + WAITFORIT_hostport=(${1//:/ }) + WAITFORIT_HOST=${WAITFORIT_hostport[0]} + WAITFORIT_PORT=${WAITFORIT_hostport[1]} + shift 1 + ;; + --child) + WAITFORIT_CHILD=1 + shift 1 + ;; + -q | --quiet) + WAITFORIT_QUIET=1 + shift 1 + ;; + -s | --strict) + WAITFORIT_STRICT=1 + shift 1 + ;; + -h) + WAITFORIT_HOST="$2" + if [[ $WAITFORIT_HOST == "" ]]; then break; fi + shift 2 + ;; + --host=*) + WAITFORIT_HOST="${1#*=}" + shift 1 + ;; + -p) + WAITFORIT_PORT="$2" + if [[ $WAITFORIT_PORT == "" ]]; then break; fi + shift 2 + ;; + --port=*) + WAITFORIT_PORT="${1#*=}" + shift 1 + ;; + -t) + WAITFORIT_TIMEOUT="$2" + if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi + shift 2 + ;; + --timeout=*) + WAITFORIT_TIMEOUT="${1#*=}" + shift 1 + ;; + --) + shift + WAITFORIT_CLI=("$@") + break + ;; + --help) + usage + ;; + *) + echoerr "Unknown argument: $1" + usage + ;; + esac +done + +if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then + echoerr "Error: you need to provide a host and port to test." + usage +fi + +WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15} +WAITFORIT_STRICT=${WAITFORIT_STRICT:-0} +WAITFORIT_CHILD=${WAITFORIT_CHILD:-0} +WAITFORIT_QUIET=${WAITFORIT_QUIET:-0} + +# Check to see if timeout is from busybox? +WAITFORIT_TIMEOUT_PATH=$(type -p timeout) +WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH) + +WAITFORIT_BUSYTIMEFLAG="" +if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then + WAITFORIT_ISBUSY=1 + # Check if busybox timeout uses -t flag + # (recent Alpine versions don't support -t anymore) + if timeout &>/dev/stdout | grep -q -e '-t '; then + WAITFORIT_BUSYTIMEFLAG="-t" + fi +else + WAITFORIT_ISBUSY=0 +fi + +if [[ $WAITFORIT_CHILD -gt 0 ]]; then + wait_for + WAITFORIT_RESULT=$? + exit $WAITFORIT_RESULT +else + if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then + wait_for_wrapper + WAITFORIT_RESULT=$? + else + wait_for + WAITFORIT_RESULT=$? + fi +fi + +if [[ $WAITFORIT_CLI != "" ]]; then + if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then + echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess" + exit $WAITFORIT_RESULT + fi + exec "${WAITFORIT_CLI[@]}" +else + exit $WAITFORIT_RESULT fi \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 054f842..32e8935 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,7 +11,35 @@ "devDependencies": { "@types/lint-staged": "^13.3.0", "husky": "^9.0.11", - "lint-staged": "^15.2.10" + "lint-staged": "^15.2.10", + "run-container": "^2.0.12" + } + }, + "node_modules/@balena/dockerignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", + "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==", + "dev": true + }, + "node_modules/@types/docker-modem": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.6.tgz", + "integrity": "sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/ssh2": "*" + } + }, + "node_modules/@types/dockerode": { + "version": "3.3.31", + "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.31.tgz", + "integrity": "sha512-42R9eoVqJDSvVspV89g7RwRqfNExgievLNWoHkg7NoWIqAmavIbgQBb4oc0qRtHkxE+I3Xxvqv7qVXFABKPBTg==", + "dev": true, + "dependencies": { + "@types/docker-modem": "*", + "@types/node": "*", + "@types/ssh2": "*" } }, "node_modules/@types/lint-staged": { @@ -21,6 +49,39 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/node": { + "version": "22.8.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.8.1.tgz", + "integrity": "sha512-k6Gi8Yyo8EtrNtkHXutUu2corfDf9su95VYVP10aGYMMROM6SAItZi0w1XszA6RtWTHSVp5OeFof37w0IEqCQg==", + "dev": true, + "dependencies": { + "undici-types": "~6.19.8" + } + }, + "node_modules/@types/ssh2": { + "version": "1.15.1", + "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.15.1.tgz", + "integrity": "sha512-ZIbEqKAsi5gj35y4P4vkJYly642wIbY6PqoN0xiyQGshKUGXR9WQjF/iF9mXBQ8uBKy3ezfsCkcoHKhd0BzuDA==", + "dev": true, + "dependencies": { + "@types/node": "^18.11.18" + } + }, + "node_modules/@types/ssh2/node_modules/@types/node": { + "version": "18.19.59", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.59.tgz", + "integrity": "sha512-vizm2EqwV/7Zay+A6J3tGl9Lhr7CjZe2HmWS988sefiEmsyP9CeXEleho6i4hJk/8UtZAo0bWN4QPZZr83RxvQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/ssh2/node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, "node_modules/ansi-escapes": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", @@ -63,6 +124,55 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -76,6 +186,40 @@ "node": ">=8" } }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buildcheck": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/buildcheck/-/buildcheck-0.0.6.tgz", + "integrity": "sha512-8f9ZJCUXyT1M35Jx7MkBgmBMo3oHTTBIPLiY9xyL0pl3T5RwcPEY8cUHr5LBNfu/fk6c2T4DJZuVM/8ZZT2D2A==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/chalk": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", @@ -88,6 +232,12 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, "node_modules/cli-cursor": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", @@ -137,6 +287,21 @@ "node": ">=18" } }, + "node_modules/cpu-features": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cpu-features/-/cpu-features-0.0.10.tgz", + "integrity": "sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "buildcheck": "~0.0.6", + "nan": "^2.19.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -169,6 +334,35 @@ } } }, + "node_modules/docker-modem": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.3.tgz", + "integrity": "sha512-89zhop5YVhcPEt5FpUFGr3cDyceGhq/F9J+ZndQ4KfqNvfbJpPMfgeixFgUj5OjCYAboElqODxY5Z1EBsSa6sg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "readable-stream": "^3.5.0", + "split-ca": "^1.0.1", + "ssh2": "^1.15.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/dockerode": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.2.tgz", + "integrity": "sha512-9wM1BVpVMFr2Pw3eJNXrYYt6DT9k0xMcsSCjtPvyQ+xa1iPg/Mo3T/gUcwI0B2cczqCeCYRPF8yFYDwtFXT0+w==", + "dev": true, + "dependencies": { + "@balena/dockerignore": "^1.0.2", + "docker-modem": "^5.0.3", + "tar-fs": "~2.0.1" + }, + "engines": { + "node": ">= 8.0" + } + }, "node_modules/emoji-regex": { "version": "10.4.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", @@ -176,6 +370,15 @@ "dev": true, "license": "MIT" }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/environment": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", @@ -232,6 +435,12 @@ "node": ">=8" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, "node_modules/get-east-asian-width": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", @@ -281,6 +490,32 @@ "url": "https://github.com/sponsors/typicode" } }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, "node_modules/is-fullwidth-code-point": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", @@ -479,6 +714,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -486,6 +727,13 @@ "dev": true, "license": "MIT" }, + "node_modules/nan": { + "version": "2.22.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.0.tgz", + "integrity": "sha512-nbajikzWTMwsW+eSsNm3QwlOs7het9gGJU5dDZzRTQGk03vyBOauxgI4VakDzE0PtsGTmXPsXTbbjVhRwR5mpw==", + "dev": true, + "optional": true + }, "node_modules/npm-run-path": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", @@ -513,6 +761,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, "node_modules/onetime": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", @@ -562,6 +819,30 @@ "node": ">=0.10" } }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/restore-cursor": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", @@ -602,6 +883,150 @@ "dev": true, "license": "MIT" }, + "node_modules/run-container": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/run-container/-/run-container-2.0.12.tgz", + "integrity": "sha512-edsmzIQx1/T5eb89qiTxz6Yvm3j+5NUONCItadUcNeQoHf/1zm3xO+x0rs429lNLUXWqTzKouIDCtT9AOp5O0Q==", + "dev": true, + "dependencies": { + "@types/dockerode": "^3.3.19", + "dockerode": "^4.0.0", + "execa": "^5.0.0" + } + }, + "node_modules/run-container/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/run-container/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-container/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/run-container/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-container/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/run-container/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/run-container/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-container/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/run-container/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -652,6 +1077,39 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, + "node_modules/split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==", + "dev": true + }, + "node_modules/ssh2": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz", + "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "asn1": "^0.2.6", + "bcrypt-pbkdf": "^1.0.2" + }, + "engines": { + "node": ">=10.16.0" + }, + "optionalDependencies": { + "cpu-features": "~0.0.10", + "nan": "^2.20.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, "node_modules/string-argv": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", @@ -707,6 +1165,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/tar-fs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.0.1.tgz", + "integrity": "sha512-6tzWDMeroL87uF/+lin46k+Q+46rAJ0SyPGz7OW7wTgblI273hsBqk2C1j0/xNadNLKDTUL9BukSjB7cwgmlPA==", + "dev": true, + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.0.0" + } + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -720,6 +1206,24 @@ "node": ">=8.0" } }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "dev": true + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -753,6 +1257,12 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, "node_modules/yaml": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", diff --git a/package.json b/package.json index e9f04bb..55654f3 100644 --- a/package.json +++ b/package.json @@ -13,12 +13,15 @@ "test": "dotnet test", "prepare-test-db": "cd devops && sh prepare-db.sh && cd ..", "unload-test-db": "cd devops && docker compose down && cd ..", + "docker:build": "docker build . -t test-grpc-client", + "docker:run": "docker run -p 3000:3000 --network=host test-grpc-client", "test:coverage": "dotnet test /p:CollectCoverage=true /p:CoverletOutputFormat=lcov /p:CoverletOutput=./coverage/lcov.info" }, "devDependencies": { "@types/lint-staged": "^13.3.0", "husky": "^9.0.11", - "lint-staged": "^15.2.10" + "lint-staged": "^15.2.10", + "run-container": "^2.0.12" }, "lint-staged": { "*.cs": "dotnet format --include" diff --git a/run-tests.sh b/run-tests.sh new file mode 100644 index 0000000..8a03297 --- /dev/null +++ b/run-tests.sh @@ -0,0 +1,4 @@ +npm run docker:build +$docker_id= $(docker run -d --network=host test-grpc-client) +npm run test:coverage +docker kill $docker_id \ No newline at end of file diff --git a/src/Codibre.GrpcSqlProxy.Api/Program.cs b/src/Codibre.GrpcSqlProxy.Api/Program.cs index a7b23ef..e155c1e 100644 --- a/src/Codibre.GrpcSqlProxy.Api/Program.cs +++ b/src/Codibre.GrpcSqlProxy.Api/Program.cs @@ -7,6 +7,7 @@ public class Program public static async Task Main(string[] args) { var app = GetApp(args); + Console.WriteLine($"Listening to {string.Join(",", app.Urls)}"); await app.RunAsync(); } @@ -26,7 +27,7 @@ public static WebApplication GetApp(string[] args) // Configure the HTTP request pipeline. app.MapGrpcService(); app.MapGet("/", () => "Communication with gRPC endpoints must be made through a gRPC client. To learn how to create a client, visit: https://go.microsoft.com/fwlink/?linkid=2086909"); - app.Urls.Add($"http://localhost:{args.FirstOrDefault() ?? app.Configuration.GetSection("PORT").Value ?? "3000"}"); + app.Urls.Add($"http://0.0.0.0:{args.FirstOrDefault() ?? app.Configuration.GetSection("PORT").Value ?? "3000"}"); return app; } } \ No newline at end of file diff --git a/src/Codibre.GrpcSqlProxy.Api/Utils/ProxyContext.cs b/src/Codibre.GrpcSqlProxy.Api/Utils/ProxyContext.cs index 203ee29..6cb4686 100644 --- a/src/Codibre.GrpcSqlProxy.Api/Utils/ProxyContext.cs +++ b/src/Codibre.GrpcSqlProxy.Api/Utils/ProxyContext.cs @@ -7,7 +7,7 @@ namespace Codibre.GrpcSqlProxy.Api.Utils; -internal sealed class ProxyContext(string _connectionString) : IAsyncDisposable +internal sealed class ProxyContext(string _connectionString) : IAsyncDisposable, IDisposable { public string ConnectionString { get; set; } = _connectionString; private readonly SqlConnection _connection = new(_connectionString); @@ -79,6 +79,8 @@ public async ValueTask DisposeAsync() // Ignore if error occurs as no transaction were there } } - if (_connection is not null) await _connection.CloseAsync(); + if (_connection.State != System.Data.ConnectionState.Closed) await _connection.CloseAsync(); } + + public void Dispose() => _ = DisposeAsync(); } \ No newline at end of file diff --git a/src/Codibre.GrpcSqlProxy.Api/Utils/ResponsStreamExtensions.cs b/src/Codibre.GrpcSqlProxy.Api/Utils/ResponsStreamExtensions.cs index 22dbb22..75a6559 100644 --- a/src/Codibre.GrpcSqlProxy.Api/Utils/ResponsStreamExtensions.cs +++ b/src/Codibre.GrpcSqlProxy.Api/Utils/ResponsStreamExtensions.cs @@ -14,15 +14,17 @@ public static async Task WriteSqlResponse(this IServerStreamWriter await responseStream.WriteAsync(response); } - internal static async Task Catch(this IServerStreamWriter responseStream, string id, Func callback, ProxyContext? context) + internal static async Task Catch(this IServerStreamWriter responseStream, string id, Func callback, ProxyContext? context) { try { await callback(); + return true; } catch (Exception ex) { responseStream.WriteError(id, ex.Message, context?.Index ?? 0); + return false; } } diff --git a/src/Codibre.GrpcSqlProxy.Client/Impl/ContextInfo.cs b/src/Codibre.GrpcSqlProxy.Client/Impl/ContextInfo.cs index 822a7c7..3761498 100644 --- a/src/Codibre.GrpcSqlProxy.Client/Impl/ContextInfo.cs +++ b/src/Codibre.GrpcSqlProxy.Client/Impl/ContextInfo.cs @@ -25,7 +25,6 @@ Action clear public void Dispose() { Monitor.Dispose(); - Stream.Dispose(); Disposed = true; if (_executionContext is not null) ExecutionContext.Run(_executionContext, (_) => _clear(), null); } diff --git a/test/Codibre.GrpcSqlProxy.Test/Entities.cs b/test/Codibre.GrpcSqlProxy.Test/Entities.cs new file mode 100644 index 0000000..f14ed6a --- /dev/null +++ b/test/Codibre.GrpcSqlProxy.Test/Entities.cs @@ -0,0 +1,14 @@ +namespace Codibre.GrpcSqlProxy.Test; +public class TB_PRODUTO +{ + public int CD_PRODUTO { get; set; } +} +public class TB_PEDIDO +{ + public int CD_PEDIDO { get; set; } +} + +public class TB_PESSOA +{ + public int CD_PESSOA { get; set; } +} \ No newline at end of file diff --git a/test/Codibre.GrpcSqlProxy.Test/TestServer.cs b/test/Codibre.GrpcSqlProxy.Test/TestServer.cs index 98d9b87..a5ec248 100644 --- a/test/Codibre.GrpcSqlProxy.Test/TestServer.cs +++ b/test/Codibre.GrpcSqlProxy.Test/TestServer.cs @@ -8,27 +8,11 @@ namespace Codibre.GrpcSqlProxy.Test; -public class TB_PRODUTO -{ - public int CD_PRODUTO { get; set; } -} -public class TB_PEDIDO -{ - public int CD_PEDIDO { get; set; } -} - -public class TB_PESSOA -{ - public int CD_PESSOA { get; set; } -} - public class TestServer { - private readonly WebApplication _app; - private static Task? _run = null; private static TestServer? _instance = null; - private static readonly string _port = RandomNumberGenerator.GetInt32(3000, 4000).ToString(); + private static readonly string _port = "3000"; public string Url { get; } = $"http://localhost:{_port}"; public IConfigurationRoot Config { get; } = new ConfigurationBuilder() .SetBasePath(Directory.GetCurrentDirectory()) @@ -36,32 +20,9 @@ public class TestServer .AddEnvironmentVariables() .Build(); - private TestServer() - { - _app = Program.GetApp([_port]); - _run ??= StartApp(_app); - } - - private async Task StartApp(WebApplication app) - { - _ = Task.Run(async () => - { - try - { - await app.RunAsync(); - } - catch - { - // Ignore - } - }); - await Task.Delay(1000); - } - public static async Task Get() { _instance ??= new TestServer(); - if (_run is not null) await _run; return _instance; } } \ No newline at end of file