| name: CI | 
|   | 
| on: | 
|   push: | 
|     branches: [ v9 ] | 
|   pull_request: | 
|     branches: [ v9 ] | 
|   | 
| jobs: | 
|   build: | 
|     name: Test | 
|     runs-on: ${{ matrix.os }} | 
|     strategy: | 
|       fail-fast: false | 
|       matrix: | 
|         os: | 
|           - ubuntu-latest | 
|           - macos-latest | 
|           - windows-latest | 
|         node_version: | 
|           - 8 | 
|           - 10 | 
|           - 12 | 
|           - 14 | 
|           - 16 | 
|           - 17 | 
|     steps: | 
|     - uses: actions/checkout@v2 | 
|     - name: Use Node.js ${{ matrix.node-version }} | 
|       uses: actions/setup-node@v1 | 
|       with: | 
|         node-version: ${{ matrix.node-version }} | 
|     - name: Install Dependencies | 
|       run: npm ci --ignore-scripts | 
|     - name: Run Tests | 
|       if: matrix.os != 'windows-latest' | 
|       run: npm test --ignore-scripts | 
|     - name: Run Tests (Windows) | 
|       if: matrix.os == 'windows-latest' | 
|       run: npm run-script test-windows --ignore-scripts | 
|   code-lint: | 
|     name: Code Lint | 
|     runs-on: ubuntu-latest | 
|     steps: | 
|       - uses: actions/checkout@v2 | 
|       - name: Use Node.js 16 | 
|         uses: actions/setup-node@v1 | 
|         with: | 
|           node-version: 16 # LTS | 
|       - name: Install Dependencies | 
|         run: npm ci --ignore-scripts | 
|       - name: Lockfile Lint | 
|         run: | | 
|           npm exec \ | 
|             --no-install \ | 
|             --package=lockfile-lint \ | 
|             -- \ | 
|             lockfile-lint \ | 
|               --allowed-hosts=npm \ | 
|               --path=./package-lock.json \ | 
|               --validate-https \ | 
|               --validate-package-names |