# Melinda node tests

name: Melinda node tests

on: push

permissions:
  id-token: write  # Required for OIDC
  contents: read

jobs:
  build-node-versions:
    name: Node version matrix
    runs-on: ubuntu-latest

    strategy:
      matrix:
        node-version: [24.x, 26.x]
        # See supported Node.js release schedule at https://nodejs.org/en/about/releases/

    steps:
    - name: Checkout the code
      uses: actions/checkout@v7
    - name: Use Node.js ${{ matrix.node-version }}
      uses: actions/setup-node@v7
      with:
        node-version: ${{ matrix.node-version }}
        cache: 'npm'
      env:
        NPM_CONFIG_IGNORE_SCRIPTS: true
    - run: npm audit --package-lock-only --production --audit-level=high
    - run: npm ci
    - run: npm test
    - run: npm run build --if-present

  njsscan:
    name: Njsscan check
    runs-on: ubuntu-latest
    container: node:24

    steps:
    - name: Checkout the code
      uses: actions/checkout@v7
    - name: nodejsscan scan
      id: njsscan
      uses: ajinabraham/njsscan-action@master
      with:
        args: '.'

  license-scan:
    name: License compliance check
    runs-on: ubuntu-latest
    container: node:24

    steps:
      - uses: actions/checkout@v7
      - uses: mikaelvesavuori/license-compliance-action@v1
        with:
          exclude_pattern: /^@natlibfi/

  publish:
    runs-on: ubuntu-latest
    container: node:24
    needs: [build-node-versions, njsscan]
    if: contains(github.ref, 'refs/tags/')

    steps:
      - uses: actions/checkout@v7
      # Setup .npmrc file to publish to npm
      - uses: actions/setup-node@v7
        with:
          node-version: '24.x'
          registry-url: 'https://registry.npmjs.org'
      - name: Update npm
        run: npm install -g npm@latest
      - name: Clean install
        run: npm ci
      # Publish stable release with --tag latest
      - name: Publish stable release
        if: ${{!contains(github.ref, '-alpha')}}
        run: npm publish --tag=latest
      # Publish pre-release without --tag latest
      - name: Publish pre-release
        if: contains(github.ref, '-alpha')
        run: npm publish --tag=next
