# This workflow will run tests using node and then publish a package to GitHub Packages when a release is created
# For more information see: https://docs.github.com/en/actions/publishing-packages/publishing-nodejs-packages

name: Node.js Package

on:
  release:
    types: [created]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - uses: actions/setup-node@v3
        with:
          cache: npm
          node-version: 20

      - uses: actions/cache@v3
        with:
          # npm cache files are stored in `~/.npm` on Linux/macOS
          path: ~/.npm
          key: ${{ runner.os }}-build-${{ hashFiles('**/package-lock.json') }}
      - run: npm ci
      - run: npm test

  publish-npm:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - uses: actions/setup-node@v3
        with:
          cache: npm
          node-version: 20
          registry-url: https://registry.npmjs.org/

      - name: Cache NPM Dependencies
        id: cache-npm
        uses: actions/cache@v3
        env:
          cache-name: cache-node-modules
        with:
          path: node_modules
          key: ${{ runner.os }}-node-${{ hashFiles('package-lock.json') }}

      - name: Check Cache & Install Dependencies
        if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
        run: npm ci

      - run: npm publish
        env:
          NODE_AUTH_TOKEN: ${{secrets.npm_token}}
