# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements.  See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership.  The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License.  You may obtain a copy of the License at
#
#   http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied.  See the License for the
# specific language governing permissions and limitations
# under the License.

name: Bindings NodeJS CI

env:
  DEBUG: napi:*
  MACOSX_DEPLOYMENT_TARGET: "10.13"
  # refer to https://github.com/nodejs/corepack/issues/612#issuecomment-2631462297
  #
  # SHOULD remove after nodejs been upgraded.
  COREPACK_INTEGRITY_KEYS: 0

on:
  push:
    branches:
      - main
    tags:
      - "*"
  pull_request:
    branches:
      - main
    paths:
      - "bindings/nodejs/**"
      - "core/**"
      - ".github/workflows/ci_bindings_nodejs.yml"
  workflow_dispatch:

concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name }}
  cancel-in-progress: true

jobs:
  test:
    runs-on: ubuntu-latest

    # Notes: this defaults only apply on run tasks.
    defaults:
      run:
        working-directory: "bindings/nodejs"

    steps:
      - uses: actions/checkout@v6
      - name: Setup Rust toolchain
        uses: ./.github/actions/setup

      - uses: pnpm/action-setup@v4
        with:
          version: 8
          run_install: false

      - name: Setup node
        uses: actions/setup-node@v6
        with:
          node-version: "20"
          cache: pnpm
          cache-dependency-path: "bindings/nodejs/pnpm-lock.yaml"

      - name: Install dependencies
        run: pnpm install --frozen-lockfile

      - name: Check format
        run: pnpm exec prettier --check .

      - name: Check Clippy
        run: cargo clippy -- -D warnings

      - name: Build
        run: pnpm build

      - name: Check diff
        run: git diff --exit-code

      - name: Test
        run: cargo test --no-fail-fast
