diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..1b945b2b --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,158 @@ +name: Build Pipeline # A Build Pipeline which will use for build, test and deploy. + +on: + push: # When we push the changes. + branches: # Only for these branches. + - master + - develop + - bugfix/* + - hotfix/* + - release/* + paths-ignore: # Ignoring the markdown file changes. + - '**/*.md' + pull_request: # Also on pull request events. + workflow_dispatch: # Allows you to run this workflow manually from the Actions tab. + +jobs: + check: + name: State Verifier + runs-on: ubuntu-latest + outputs: + skip_ci: ${{ steps.check_initial_commit.outputs.skip_ci }} + steps: + # The first step is to check out the repository code + - name: Checking out repository code + uses: actions/checkout@v4.2.2 # Action for checking out a repo. + with: + fetch-depth: 0 # Fetches all history for all branches and tags + + # The second step checks whether the commit is the initial commit + - name: Check Initial Commit + id: check_initial_commit + run: | + # Use a git command to count the number of revisions + # If the count is 1, then this is the initial commit + if [ "$(git rev-list --count HEAD)" -eq 1 ]; then + echo "This is the initial commit." + # Set the environment variable "skip_ci" to true, signifying CI should not run for the initial commit + echo "skip_ci=true" >> $GITHUB_OUTPUT + else + # If the count is not 1, this is not the initial commit + # Set the environment variable "skip_ci" to false, signifying CI should run + echo "skip_ci=false" >> $GITHUB_OUTPUT + fi + + build: # Job named 'build' + name: Build & Test + if: needs.check.outputs.skip_ci != 'true' + runs-on: ubuntu-latest # The type of machine to run the job on. + + needs: [check] + + strategy: # Allows you to create a matrix for job configuration. + matrix: + node-version: [20.x, 21.x, 22.x] # Running tests across different environments. + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + steps: # The sequence of tasks that make up a job. + - name: Checking out repository code + uses: actions/checkout@v4.2.2 # Action for checking out a repo. + + - name: Setup Node.js ${{ matrix.node-version }} Environment + uses: actions/setup-node@v4.1.0 # Action for setting up Node environment. + with: + node-version: ${{ matrix.node-version }} + + - name: Install pnpm package manager + uses: pnpm/action-setup@v4.0.0 # Action for setting up pnpm. + id: pnpm-install + with: + run_install: false + + - name: Capture pnpm store directory + id: pnpm-cache + run: | + echo "pnpm_cache_dir=$(pnpm store path)" >> $GITHUB_OUTPUT + + - name: Cache pnpm Store + uses: actions/cache@v4.2.0 # Action provides caching dependencies and build outputs to improve workflow execution time. + with: + path: ${{ steps.pnpm-cache.outputs.pnpm_cache_dir }} # The path of the directory to cache. + key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }} # An explicit key for restoring and saving the cache. + restore-keys: | + ${{ runner.os }}-pnpm-store- + + # Installs all dependencies specified in the project's package.json file. + - name: Install dependencies using pnpm + run: pnpm install + + # This compiles the application in optimized production mode and output it to the build folder. + - name: Build the application and export it + run: pnpm run build + + # Runs unit tests for the application using Jest. + # - name: Execute tests using Jest + # run: pnpm run test + + release: + name: Create Release + # Specify the type of the runner the job will run on + runs-on: ubuntu-latest + + needs: [build] + + if: ${{ github.ref_name == 'master' }} + + # Set permissions to write contents + permissions: + contents: write + + steps: + # Checkout the repository code + - name: Checkout code + uses: actions/checkout@v4.2.2 + with: + fetch-depth: 0 # Fetches all history for all branches and tags + + # Generate a changelog for the new release using Git + - name: Generate a changelog + uses: orhun/git-cliff-action@v4.4.2 + id: git-cliff + with: + config: cliff.toml # The configuration file for git-cliff + args: -vv --latest --strip all # Show verbose output, grab the latest changes, and strip unnecessary details + env: + OUTPUT: CHANGES.md # The output file for the changelog + + # Prepare release notes by processing the generated changelog + - name: Set the release info + id: release + shell: bash + run: | + version=$(jq -r '.version' package.json) + echo "version=${version}" >> $GITHUB_OUTPUT + + # Read contents of changelog into variable 'changelog_content' + changelog=$(cat ${{ steps.git-cliff.outputs.changelog }}) + # Remove first two lines from 'changelog' + changelog="$(printf "$changelog" | tail -n +3)" + # Save the value of 'changelog' back into the GitHub environment output + { + echo "notes<> $GITHUB_OUTPUT + + # Create a new GitHub release using the gathered information + - name: Create the release + uses: nekofar/create-github-release@v1.0.14 + with: + tag: v${{ steps.release.outputs.version }} # The name of the tag to be released + title: v${{ steps.release.outputs.version }} # The title for the release + notes: ${{ steps.release.outputs.notes }} # The release notes generated in the previous step + draft: true # The release will be created as a draft + prerelease: ${{ contains(steps.release.outputs.version, '-rc') || contains(steps.release.outputs.version, '-beta') || contains(steps.release.outputs.version, '-alpha') }} # Conditions to mark the release as a pre-release + +concurrency: # Allows controlling the concurrency level of the job in the build pipeline. + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true # If enabled, previous runs of this workflow for the same group-key will be cancelled while this build or run is in progress. diff --git a/package.json b/package.json index 0bbb2331..5cc4bdc2 100644 --- a/package.json +++ b/package.json @@ -13,32 +13,34 @@ "dev": "pnpm run '/^dev:.*/'", "dev:server": "tsx watch src/index.ts", "dev:tunnel": "lt --port 3000", - "lint": "eslint" + "lint": "eslint", + "build": "tsc", + "start": "node dist/index.js" }, "dependencies": { "@hono/node-server": "1.13.7", - "hono": "4.6.10" + "hono": "4.6.13" }, "devDependencies": { "@types/eslint": "9.6.1", "@types/eslint-config-prettier": "6.11.3", - "@types/node": "22.9.0", - "@typescript-eslint/parser": "8.14.0", - "eslint": "9.15.0", + "@types/node": "22.10.1", + "@typescript-eslint/parser": "8.17.0", + "eslint": "9.16.0", "eslint-config-prettier": "9.1.0", - "eslint-plugin-jsdoc": "50.5.0", + "eslint-plugin-jsdoc": "50.6.0", "eslint-plugin-prettier": "5.2.1", "eslint-plugin-regexp": "2.7.0", - "eslint-plugin-unicorn": "56.0.0", - "globals": "15.12.0", + "eslint-plugin-unicorn": "56.0.1", + "globals": "15.13.0", "localtunnel": "2.0.2", - "prettier": "3.3.3", + "prettier": "3.4.2", "prettier-plugin-jsdoc": "1.3.0", "prettier-plugin-organize-attributes": "1.0.0", "prettier-plugin-organize-imports": "4.1.0", "tsx": "4.19.2", - "typescript": "5.6.3", - "typescript-eslint": "8.14.0" + "typescript": "5.7.2", + "typescript-eslint": "8.17.0" }, "resolutions": { "axios": ">=1.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 32ff92fb..20b5c41a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,10 +16,10 @@ importers: dependencies: '@hono/node-server': specifier: '>=1.10.1' - version: 1.13.7(hono@4.6.10) + version: 1.13.7(hono@4.6.13) hono: specifier: '>=4.2.7' - version: 4.6.10 + version: 4.6.13 devDependencies: '@types/eslint': specifier: 9.6.1 @@ -28,56 +28,56 @@ importers: specifier: 6.11.3 version: 6.11.3 '@types/node': - specifier: 22.9.0 - version: 22.9.0 + specifier: 22.10.1 + version: 22.10.1 '@typescript-eslint/parser': - specifier: 8.14.0 - version: 8.14.0(eslint@9.15.0)(typescript@5.6.3) + specifier: 8.17.0 + version: 8.17.0(eslint@9.16.0)(typescript@5.7.2) eslint: - specifier: 9.15.0 - version: 9.15.0 + specifier: 9.16.0 + version: 9.16.0 eslint-config-prettier: specifier: 9.1.0 - version: 9.1.0(eslint@9.15.0) + version: 9.1.0(eslint@9.16.0) eslint-plugin-jsdoc: - specifier: 50.5.0 - version: 50.5.0(eslint@9.15.0) + specifier: 50.6.0 + version: 50.6.0(eslint@9.16.0) eslint-plugin-prettier: specifier: 5.2.1 - version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.15.0))(eslint@9.15.0)(prettier@3.3.3) + version: 5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint@9.16.0)(prettier@3.4.2) eslint-plugin-regexp: specifier: 2.7.0 - version: 2.7.0(eslint@9.15.0) + version: 2.7.0(eslint@9.16.0) eslint-plugin-unicorn: - specifier: 56.0.0 - version: 56.0.0(eslint@9.15.0) + specifier: 56.0.1 + version: 56.0.1(eslint@9.16.0) globals: - specifier: 15.12.0 - version: 15.12.0 + specifier: 15.13.0 + version: 15.13.0 localtunnel: specifier: 2.0.2 version: 2.0.2 prettier: - specifier: 3.3.3 - version: 3.3.3 + specifier: 3.4.2 + version: 3.4.2 prettier-plugin-jsdoc: specifier: 1.3.0 - version: 1.3.0(prettier@3.3.3) + version: 1.3.0(prettier@3.4.2) prettier-plugin-organize-attributes: specifier: 1.0.0 - version: 1.0.0(prettier@3.3.3) + version: 1.0.0(prettier@3.4.2) prettier-plugin-organize-imports: specifier: 4.1.0 - version: 4.1.0(prettier@3.3.3)(typescript@5.6.3) + version: 4.1.0(prettier@3.4.2)(typescript@5.7.2) tsx: specifier: 4.19.2 version: 4.19.2 typescript: - specifier: 5.6.3 - version: 5.6.3 + specifier: 5.7.2 + version: 5.7.2 typescript-eslint: - specifier: 8.14.0 - version: 8.14.0(eslint@9.15.0)(typescript@5.6.3) + specifier: 8.17.0 + version: 8.17.0(eslint@9.16.0)(typescript@5.7.2) packages: @@ -241,12 +241,6 @@ packages: cpu: [x64] os: [win32] - '@eslint-community/eslint-utils@4.4.0': - resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - '@eslint-community/eslint-utils@4.4.1': resolution: {integrity: sha512-s3O3waFUrMV8P/XaF/+ZTp1X9XBZW1a4B97ZnjQF2KYWaFD2A8KyFBsrsfSjEmjn3RGWAIuvlneuZm3CUK3jbA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -269,8 +263,8 @@ packages: resolution: {integrity: sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.15.0': - resolution: {integrity: sha512-tMTqrY+EzbXmKJR5ToI8lxu7jaN5EdmrBFJpQk5JmSlyLsx6o4t27r883K5xsLuCYCpfKBCGswMSWXsM+jB7lg==} + '@eslint/js@9.16.0': + resolution: {integrity: sha512-tw2HxzQkrbeuvyj1tG2Yqq+0H9wGoI2IMk4EOsQeX+vmd75FtJAzf+gTA69WF+baUKRYQ3x2kbLE08js5OsTVg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.4': @@ -347,8 +341,8 @@ packages: '@types/ms@0.7.34': resolution: {integrity: sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==} - '@types/node@22.9.0': - resolution: {integrity: sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==} + '@types/node@22.10.1': + resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -356,8 +350,8 @@ packages: '@types/unist@3.0.2': resolution: {integrity: sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==} - '@typescript-eslint/eslint-plugin@8.14.0': - resolution: {integrity: sha512-tqp8H7UWFaZj0yNO6bycd5YjMwxa6wIHOLZvWPkidwbgLCsBMetQoGj7DPuAlWa2yGO3H48xmPwjhsSPPCGU5w==} + '@typescript-eslint/eslint-plugin@8.17.0': + resolution: {integrity: sha512-HU1KAdW3Tt8zQkdvNoIijfWDMvdSweFYm4hWh+KwhPstv+sCmWb89hCIP8msFm9N1R/ooh9honpSuvqKWlYy3w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: '@typescript-eslint/parser': ^8.0.0 || ^8.0.0-alpha.0 @@ -367,8 +361,8 @@ packages: typescript: optional: true - '@typescript-eslint/parser@8.14.0': - resolution: {integrity: sha512-2p82Yn9juUJq0XynBXtFCyrBDb6/dJombnz6vbo6mgQEtWHfvHbQuEa9kAOVIt1c9YFwi7H6WxtPj1kg+80+RA==} + '@typescript-eslint/parser@8.17.0': + resolution: {integrity: sha512-Drp39TXuUlD49F7ilHHCG7TTg8IkA+hxCuULdmzWYICxGXvDXmDmWEjJYZQYgf6l/TFfYNE167m7isnc3xlIEg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -377,25 +371,26 @@ packages: typescript: optional: true - '@typescript-eslint/scope-manager@8.14.0': - resolution: {integrity: sha512-aBbBrnW9ARIDn92Zbo7rguLnqQ/pOrUguVpbUwzOhkFg2npFDwTgPGqFqE0H5feXcOoJOfX3SxlJaKEVtq54dw==} + '@typescript-eslint/scope-manager@8.17.0': + resolution: {integrity: sha512-/ewp4XjvnxaREtqsZjF4Mfn078RD/9GmiEAtTeLQ7yFdKnqwTOgRMSvFz4et9U5RiJQ15WTGXPLj89zGusvxBg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/type-utils@8.14.0': - resolution: {integrity: sha512-Xcz9qOtZuGusVOH5Uk07NGs39wrKkf3AxlkK79RBK6aJC1l03CobXjJbwBPSidetAOV+5rEVuiT1VSBUOAsanQ==} + '@typescript-eslint/type-utils@8.17.0': + resolution: {integrity: sha512-q38llWJYPd63rRnJ6wY/ZQqIzPrBCkPdpIsaCfkR3Q4t3p6sb422zougfad4TFW9+ElIFLVDzWGiGAfbb/v2qw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - '@typescript-eslint/types@8.14.0': - resolution: {integrity: sha512-yjeB9fnO/opvLJFAsPNYlKPnEM8+z4og09Pk504dkqonT02AyL5Z9SSqlE0XqezS93v6CXn49VHvB2G7XSsl0g==} + '@typescript-eslint/types@8.17.0': + resolution: {integrity: sha512-gY2TVzeve3z6crqh2Ic7Cr+CAv6pfb0Egee7J5UAVWCpVvDI/F71wNfolIim4FE6hT15EbpZFVUj9j5i38jYXA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.14.0': - resolution: {integrity: sha512-OPXPLYKGZi9XS/49rdaCbR5j/S14HazviBlUQFvSKz3npr3NikF+mrgK7CFVur6XEt95DZp/cmke9d5i3vtVnQ==} + '@typescript-eslint/typescript-estree@8.17.0': + resolution: {integrity: sha512-JqkOopc1nRKZpX+opvKqnM3XUlM7LpFMD0lYxTqOTKQfCWAmxw45e3qlOCsEqEB2yuacujivudOFpCnqkBDNMw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '*' @@ -403,14 +398,18 @@ packages: typescript: optional: true - '@typescript-eslint/utils@8.14.0': - resolution: {integrity: sha512-OGqj6uB8THhrHj0Fk27DcHPojW7zKwKkPmHXHvQ58pLYp4hy8CSUdTKykKeh+5vFqTTVmjz0zCOOPKRovdsgHA==} + '@typescript-eslint/utils@8.17.0': + resolution: {integrity: sha512-bQC8BnEkxqG8HBGKwG9wXlZqg37RKSMY7v/X8VEWD8JG2JuTHuNK0VFvMPMUKQcbk6B+tf05k+4AShAEtCtJ/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - '@typescript-eslint/visitor-keys@8.14.0': - resolution: {integrity: sha512-vG0XZo8AdTH9OE6VFRwAZldNc7qtJ/6NLGWak+BtENuEUXGZgFpihILPiBvKXvJ2nFu27XNGC6rKiwuaoMbYzQ==} + '@typescript-eslint/visitor-keys@8.17.0': + resolution: {integrity: sha512-1Hm7THLpO6ww5QU6H/Qp+AusUUl+z/CAm3cNZZ0jQvon9yicgO7Rwd+/WWRpMKLYV6p2UvdbR27c86rzCPpreg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} acorn-jsx@5.3.2: @@ -532,8 +531,8 @@ packages: core-js-compat@3.38.1: resolution: {integrity: sha512-JRH6gfXxGmrzF3tZ57lFx97YARxCXPaMzPo6jELZhv88pBH5VXpQ+y0znKGlFnzuaihqhLbefxSJxWJMPtfDzw==} - cross-spawn@7.0.5: - resolution: {integrity: sha512-ZVJrKKYunU38/76t0RMOulHOnUcbU9GbpWKAOZ0mhjr7CX6FVrH+4FrAapSOekrgFQ3f/8gwMEuIft0aKq6Hug==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} debug@4.3.2: @@ -554,6 +553,15 @@ packages: supports-color: optional: true + debug@4.4.0: + resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} @@ -610,8 +618,8 @@ packages: peerDependencies: eslint: '>=7.0.0' - eslint-plugin-jsdoc@50.5.0: - resolution: {integrity: sha512-xTkshfZrUbiSHXBwZ/9d5ulZ2OcHXxSvm/NPo494H/hadLRJwOq5PMV0EUpMqsb9V+kQo+9BAgi6Z7aJtdBp2A==} + eslint-plugin-jsdoc@50.6.0: + resolution: {integrity: sha512-tCNp4fR79Le3dYTPB0dKEv7yFyvGkUCa+Z3yuTrrNGGOxBlXo9Pn0PEgroOZikUQOGjxoGMVKNjrOHcYEdfszg==} engines: {node: '>=18'} peerDependencies: eslint: ^7.0.0 || ^8.0.0 || ^9.0.0 @@ -636,8 +644,8 @@ packages: peerDependencies: eslint: '>=8.44.0' - eslint-plugin-unicorn@56.0.0: - resolution: {integrity: sha512-aXpddVz/PQMmd69uxO98PA4iidiVNvA0xOtbpUoz1WhBd4RxOQQYqN618v68drY0hmy5uU2jy1bheKEVWBjlPw==} + eslint-plugin-unicorn@56.0.1: + resolution: {integrity: sha512-FwVV0Uwf8XPfVnKSGpMg7NtlZh0G0gBarCaFcMUOoqPxXryxdYxTRRv4kH6B9TFCVIrjRXG+emcxIk2ayZilog==} engines: {node: '>=18.18'} peerDependencies: eslint: '>=8.56.0' @@ -654,8 +662,8 @@ packages: resolution: {integrity: sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.15.0: - resolution: {integrity: sha512-7CrWySmIibCgT1Os28lUU6upBshZ+GxybLOrmRzi08kS8MBuO8QA7pXEgYgY5W8vK3e74xv0lpjo9DbaGU9Rkw==} + eslint@9.16.0: + resolution: {integrity: sha512-whp8mSQI4C8VXd+fLgSM0lh3UlmcFtVwUQjyKCFfsp+2ItAIYhlq/hqGahGqHE6cv9unM41VlqKk2VtKYR2TaA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -723,8 +731,8 @@ packages: resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} engines: {node: '>=16'} - flatted@3.3.1: - resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} + flatted@3.3.2: + resolution: {integrity: sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==} follow-redirects@1.15.6: resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} @@ -766,8 +774,8 @@ packages: resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} engines: {node: '>=18'} - globals@15.12.0: - resolution: {integrity: sha512-1+gLErljJFhbOVyaetcwJiJ4+eLe45S2E7P5UiZ9xGfeq3ATQf5DOv9G7MH3gGbKQLkzmNh2DxfZwLdw+j6oTQ==} + globals@15.13.0: + resolution: {integrity: sha512-49TewVEz0UxZjr1WYYsWpPrhyC/B/pA8Bq0fUmet2n+eR7yn0IvNzNaoBwnK6mdkzcN+se7Ez9zUgULTz2QH4g==} engines: {node: '>=18'} graphemer@1.4.0: @@ -785,8 +793,8 @@ packages: resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==} engines: {node: '>= 0.4'} - hono@4.6.10: - resolution: {integrity: sha512-IXXNfRAZEahFnWBhUUlqKEGF9upeE6hZoRZszvNkyAz/CYp+iVbxm3viMvStlagRJohjlBRGOQ7f4jfcV0XMGg==} + hono@4.6.13: + resolution: {integrity: sha512-haV0gaMdSjy9URCRN9hxBPlqHa7fMm/T72kAImIxvw4eQLbNz1rgjN4hHElLJSieDiNuiIAXC//cC6YGz2KCbg==} engines: {node: '>=16.9.0'} hosted-git-info@2.8.9: @@ -1056,9 +1064,6 @@ packages: path-parse@1.0.7: resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} @@ -1100,8 +1105,8 @@ packages: vue-tsc: optional: true - prettier@3.3.3: - resolution: {integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==} + prettier@3.4.2: + resolution: {integrity: sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==} engines: {node: '>=14'} hasBin: true @@ -1236,8 +1241,8 @@ packages: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} - ts-api-utils@1.4.0: - resolution: {integrity: sha512-032cPxaEKwM+GT3vA5JXNzIaizx388rhsSW79vGRNGXfRRAdEAn2mvk36PvK5HnOchyWZ7afLEXqYCvPCrzuzQ==} + ts-api-utils@1.4.3: + resolution: {integrity: sha512-i3eMG77UTMD0hZhgRS562pv83RC6ukSAC2GMNWc+9dieh/+jDM5u5YG+NHX6VNDRHQcHwmsTHctP9LhbC3WxVw==} engines: {node: '>=16'} peerDependencies: typescript: '>=4.2.0' @@ -1262,22 +1267,23 @@ packages: resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} engines: {node: '>=8'} - typescript-eslint@8.14.0: - resolution: {integrity: sha512-K8fBJHxVL3kxMmwByvz8hNdBJ8a0YqKzKDX6jRlrjMuNXyd5T2V02HIq37+OiWXvUUOXgOOGiSSOh26Mh8pC3w==} + typescript-eslint@8.17.0: + resolution: {integrity: sha512-409VXvFd/f1br1DCbuKNFqQpXICoTB+V51afcwG1pn1a3Cp92MqAUges3YjwEdQ0cMUoCIodjVDAYzyD8h3SYA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: + eslint: ^8.57.0 || ^9.0.0 typescript: '*' peerDependenciesMeta: typescript: optional: true - typescript@5.6.3: - resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + typescript@5.7.2: + resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==} engines: {node: '>=14.17'} hasBin: true - undici-types@6.19.8: - resolution: {integrity: sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==} + undici-types@6.20.0: + resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} unist-util-stringify-position@4.0.0: resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==} @@ -1328,7 +1334,7 @@ snapshots: '@babel/code-frame@7.24.2': dependencies: '@babel/highlight': 7.24.5 - picocolors: 1.0.0 + picocolors: 1.1.0 '@babel/helper-validator-identifier@7.25.7': {} @@ -1337,7 +1343,7 @@ snapshots: '@babel/helper-validator-identifier': 7.25.7 chalk: 2.4.2 js-tokens: 4.0.0 - picocolors: 1.0.0 + picocolors: 1.1.0 '@es-joy/jsdoccomment@0.49.0': dependencies: @@ -1417,14 +1423,9 @@ snapshots: '@esbuild/win32-x64@0.23.1': optional: true - '@eslint-community/eslint-utils@4.4.0(eslint@9.15.0)': + '@eslint-community/eslint-utils@4.4.1(eslint@9.16.0)': dependencies: - eslint: 9.15.0 - eslint-visitor-keys: 3.4.3 - - '@eslint-community/eslint-utils@4.4.1(eslint@9.15.0)': - dependencies: - eslint: 9.15.0 + eslint: 9.16.0 eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -1453,7 +1454,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.15.0': {} + '@eslint/js@9.16.0': {} '@eslint/object-schema@2.1.4': {} @@ -1461,9 +1462,9 @@ snapshots: dependencies: levn: 0.4.1 - '@hono/node-server@1.13.7(hono@4.6.10)': + '@hono/node-server@1.13.7(hono@4.6.13)': dependencies: - hono: 4.6.10 + hono: 4.6.13 '@humanfs/core@0.19.1': {} @@ -1515,94 +1516,95 @@ snapshots: '@types/ms@0.7.34': {} - '@types/node@22.9.0': + '@types/node@22.10.1': dependencies: - undici-types: 6.19.8 + undici-types: 6.20.0 '@types/normalize-package-data@2.4.4': {} '@types/unist@3.0.2': {} - '@typescript-eslint/eslint-plugin@8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3)': + '@typescript-eslint/eslint-plugin@8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.14.0(eslint@9.15.0)(typescript@5.6.3) - '@typescript-eslint/scope-manager': 8.14.0 - '@typescript-eslint/type-utils': 8.14.0(eslint@9.15.0)(typescript@5.6.3) - '@typescript-eslint/utils': 8.14.0(eslint@9.15.0)(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.14.0 - eslint: 9.15.0 + '@typescript-eslint/parser': 8.17.0(eslint@9.16.0)(typescript@5.7.2) + '@typescript-eslint/scope-manager': 8.17.0 + '@typescript-eslint/type-utils': 8.17.0(eslint@9.16.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.17.0(eslint@9.16.0)(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.17.0 + eslint: 9.16.0 graphemer: 1.4.0 ignore: 5.3.2 natural-compare: 1.4.0 - ts-api-utils: 1.4.0(typescript@5.6.3) + ts-api-utils: 1.4.3(typescript@5.7.2) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.14.0(eslint@9.15.0)(typescript@5.6.3)': + '@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2)': dependencies: - '@typescript-eslint/scope-manager': 8.14.0 - '@typescript-eslint/types': 8.14.0 - '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3) - '@typescript-eslint/visitor-keys': 8.14.0 - debug: 4.3.7 - eslint: 9.15.0 + '@typescript-eslint/scope-manager': 8.17.0 + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.7.2) + '@typescript-eslint/visitor-keys': 8.17.0 + debug: 4.4.0 + eslint: 9.16.0 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.14.0': + '@typescript-eslint/scope-manager@8.17.0': dependencies: - '@typescript-eslint/types': 8.14.0 - '@typescript-eslint/visitor-keys': 8.14.0 + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/visitor-keys': 8.17.0 - '@typescript-eslint/type-utils@8.14.0(eslint@9.15.0)(typescript@5.6.3)': + '@typescript-eslint/type-utils@8.17.0(eslint@9.16.0)(typescript@5.7.2)': dependencies: - '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3) - '@typescript-eslint/utils': 8.14.0(eslint@9.15.0)(typescript@5.6.3) - debug: 4.3.7 - ts-api-utils: 1.4.0(typescript@5.6.3) + '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.7.2) + '@typescript-eslint/utils': 8.17.0(eslint@9.16.0)(typescript@5.7.2) + debug: 4.4.0 + eslint: 9.16.0 + ts-api-utils: 1.4.3(typescript@5.7.2) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - - eslint - supports-color - '@typescript-eslint/types@8.14.0': {} + '@typescript-eslint/types@8.17.0': {} - '@typescript-eslint/typescript-estree@8.14.0(typescript@5.6.3)': + '@typescript-eslint/typescript-estree@8.17.0(typescript@5.7.2)': dependencies: - '@typescript-eslint/types': 8.14.0 - '@typescript-eslint/visitor-keys': 8.14.0 - debug: 4.3.7 + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/visitor-keys': 8.17.0 + debug: 4.4.0 fast-glob: 3.3.2 is-glob: 4.0.3 minimatch: 9.0.5 semver: 7.6.3 - ts-api-utils: 1.4.0(typescript@5.6.3) + ts-api-utils: 1.4.3(typescript@5.7.2) optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.14.0(eslint@9.15.0)(typescript@5.6.3)': + '@typescript-eslint/utils@8.17.0(eslint@9.16.0)(typescript@5.7.2)': dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0) - '@typescript-eslint/scope-manager': 8.14.0 - '@typescript-eslint/types': 8.14.0 - '@typescript-eslint/typescript-estree': 8.14.0(typescript@5.6.3) - eslint: 9.15.0 + '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0) + '@typescript-eslint/scope-manager': 8.17.0 + '@typescript-eslint/types': 8.17.0 + '@typescript-eslint/typescript-estree': 8.17.0(typescript@5.7.2) + eslint: 9.16.0 + optionalDependencies: + typescript: 5.7.2 transitivePeerDependencies: - supports-color - - typescript - '@typescript-eslint/visitor-keys@8.14.0': + '@typescript-eslint/visitor-keys@8.17.0': dependencies: - '@typescript-eslint/types': 8.14.0 - eslint-visitor-keys: 3.4.3 + '@typescript-eslint/types': 8.17.0 + eslint-visitor-keys: 4.2.0 acorn-jsx@5.3.2(acorn@8.14.0): dependencies: @@ -1720,7 +1722,7 @@ snapshots: dependencies: browserslist: 4.24.0 - cross-spawn@7.0.5: + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 @@ -1734,6 +1736,10 @@ snapshots: dependencies: ms: 2.1.3 + debug@4.4.0: + dependencies: + ms: 2.1.3 + decode-named-character-reference@1.0.2: dependencies: character-entities: 2.0.2 @@ -1793,18 +1799,18 @@ snapshots: escape-string-regexp@4.0.0: {} - eslint-config-prettier@9.1.0(eslint@9.15.0): + eslint-config-prettier@9.1.0(eslint@9.16.0): dependencies: - eslint: 9.15.0 + eslint: 9.16.0 - eslint-plugin-jsdoc@50.5.0(eslint@9.15.0): + eslint-plugin-jsdoc@50.6.0(eslint@9.16.0): dependencies: '@es-joy/jsdoccomment': 0.49.0 are-docs-informative: 0.0.2 comment-parser: 1.4.1 debug: 4.3.7 escape-string-regexp: 4.0.0 - eslint: 9.15.0 + eslint: 9.16.0 espree: 10.3.0 esquery: 1.6.0 parse-imports: 2.1.1 @@ -1814,37 +1820,37 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.15.0))(eslint@9.15.0)(prettier@3.3.3): + eslint-plugin-prettier@5.2.1(@types/eslint@9.6.1)(eslint-config-prettier@9.1.0(eslint@9.16.0))(eslint@9.16.0)(prettier@3.4.2): dependencies: - eslint: 9.15.0 - prettier: 3.3.3 + eslint: 9.16.0 + prettier: 3.4.2 prettier-linter-helpers: 1.0.0 synckit: 0.9.1 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 9.1.0(eslint@9.15.0) + eslint-config-prettier: 9.1.0(eslint@9.16.0) - eslint-plugin-regexp@2.7.0(eslint@9.15.0): + eslint-plugin-regexp@2.7.0(eslint@9.16.0): dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0) '@eslint-community/regexpp': 4.12.1 comment-parser: 1.4.1 - eslint: 9.15.0 + eslint: 9.16.0 jsdoc-type-pratt-parser: 4.1.0 refa: 0.12.1 regexp-ast-analysis: 0.7.1 scslre: 0.3.0 - eslint-plugin-unicorn@56.0.0(eslint@9.15.0): + eslint-plugin-unicorn@56.0.1(eslint@9.16.0): dependencies: '@babel/helper-validator-identifier': 7.25.7 - '@eslint-community/eslint-utils': 4.4.0(eslint@9.15.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0) ci-info: 4.0.0 clean-regexp: 1.0.0 core-js-compat: 3.38.1 - eslint: 9.15.0 + eslint: 9.16.0 esquery: 1.6.0 - globals: 15.12.0 + globals: 15.13.0 indent-string: 4.0.0 is-builtin-module: 3.2.1 jsesc: 3.0.2 @@ -1864,14 +1870,14 @@ snapshots: eslint-visitor-keys@4.2.0: {} - eslint@9.15.0: + eslint@9.16.0: dependencies: - '@eslint-community/eslint-utils': 4.4.1(eslint@9.15.0) + '@eslint-community/eslint-utils': 4.4.1(eslint@9.16.0) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.19.0 '@eslint/core': 0.9.0 '@eslint/eslintrc': 3.2.0 - '@eslint/js': 9.15.0 + '@eslint/js': 9.16.0 '@eslint/plugin-kit': 0.2.3 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -1880,7 +1886,7 @@ snapshots: '@types/json-schema': 7.0.15 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.5 + cross-spawn: 7.0.6 debug: 4.3.7 escape-string-regexp: 4.0.0 eslint-scope: 8.2.0 @@ -1961,10 +1967,10 @@ snapshots: flat-cache@4.0.1: dependencies: - flatted: 3.3.1 + flatted: 3.3.2 keyv: 4.5.4 - flatted@3.3.1: {} + flatted@3.3.2: {} follow-redirects@1.15.6(debug@4.3.2): optionalDependencies: @@ -1997,7 +2003,7 @@ snapshots: globals@14.0.0: {} - globals@15.12.0: {} + globals@15.13.0: {} graphemer@1.4.0: {} @@ -2009,7 +2015,7 @@ snapshots: dependencies: function-bind: 1.1.2 - hono@4.6.10: {} + hono@4.6.13: {} hosted-git-info@2.8.9: {} @@ -2233,7 +2239,7 @@ snapshots: micromark@4.0.0: dependencies: '@types/debug': 4.1.12 - debug: 4.3.7 + debug: 4.4.0 decode-named-character-reference: 1.0.2 devlop: 1.1.0 micromark-core-commonmark: 2.0.1 @@ -2339,8 +2345,6 @@ snapshots: path-parse@1.0.7: {} - picocolors@1.0.0: {} - picocolors@1.1.0: {} picomatch@2.3.1: {} @@ -2353,25 +2357,25 @@ snapshots: dependencies: fast-diff: 1.3.0 - prettier-plugin-jsdoc@1.3.0(prettier@3.3.3): + prettier-plugin-jsdoc@1.3.0(prettier@3.4.2): dependencies: binary-searching: 2.0.5 comment-parser: 1.4.1 mdast-util-from-markdown: 2.0.0 - prettier: 3.3.3 + prettier: 3.4.2 transitivePeerDependencies: - supports-color - prettier-plugin-organize-attributes@1.0.0(prettier@3.3.3): + prettier-plugin-organize-attributes@1.0.0(prettier@3.4.2): dependencies: - prettier: 3.3.3 + prettier: 3.4.2 - prettier-plugin-organize-imports@4.1.0(prettier@3.3.3)(typescript@5.6.3): + prettier-plugin-organize-imports@4.1.0(prettier@3.4.2)(typescript@5.7.2): dependencies: - prettier: 3.3.3 - typescript: 5.6.3 + prettier: 3.4.2 + typescript: 5.7.2 - prettier@3.3.3: {} + prettier@3.4.2: {} proxy-from-env@1.1.0: {} @@ -2497,9 +2501,9 @@ snapshots: dependencies: is-number: 7.0.0 - ts-api-utils@1.4.0(typescript@5.6.3): + ts-api-utils@1.4.3(typescript@5.7.2): dependencies: - typescript: 5.6.3 + typescript: 5.7.2 tslib@2.6.2: {} @@ -2518,20 +2522,20 @@ snapshots: type-fest@0.8.1: {} - typescript-eslint@8.14.0(eslint@9.15.0)(typescript@5.6.3): + typescript-eslint@8.17.0(eslint@9.16.0)(typescript@5.7.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.14.0(@typescript-eslint/parser@8.14.0(eslint@9.15.0)(typescript@5.6.3))(eslint@9.15.0)(typescript@5.6.3) - '@typescript-eslint/parser': 8.14.0(eslint@9.15.0)(typescript@5.6.3) - '@typescript-eslint/utils': 8.14.0(eslint@9.15.0)(typescript@5.6.3) + '@typescript-eslint/eslint-plugin': 8.17.0(@typescript-eslint/parser@8.17.0(eslint@9.16.0)(typescript@5.7.2))(eslint@9.16.0)(typescript@5.7.2) + '@typescript-eslint/parser': 8.17.0(eslint@9.16.0)(typescript@5.7.2) + '@typescript-eslint/utils': 8.17.0(eslint@9.16.0)(typescript@5.7.2) + eslint: 9.16.0 optionalDependencies: - typescript: 5.6.3 + typescript: 5.7.2 transitivePeerDependencies: - - eslint - supports-color - typescript@5.6.3: {} + typescript@5.7.2: {} - undici-types@6.19.8: {} + undici-types@6.20.0: {} unist-util-stringify-position@4.0.0: dependencies: diff --git a/tsconfig.json b/tsconfig.json index db802702..cc3bc744 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,5 +3,6 @@ "strict": true, "jsx": "react-jsx", "jsxImportSource": "hono/jsx", + "outDir": "dist" } -} \ No newline at end of file +}