image: node:20.11.0-buster

definitions:
  steps:
    - step: &lint_and_build
        name: "Lint and build the package"
        caches:
          - node
        script:
          - printf "//`node -p \"require('url').parse('https://registry.npmjs.org').host\"`/:_authToken=$NPM_TOKEN" >> ~/.npmrc
          - npm install
          - npm run lint
          - npm run build
    - step: &lint_build_and_publish
        name: "Lint, Build and Publish"
        script:
          - printf "//`node -p \"require('url').parse('https://registry.npmjs.org').host\"`/:_authToken=$NPM_TOKEN" >> ~/.npmrc
          - npm install
          - npm run lint
          - npm run build
          - npm publish

pipelines:
  branches:
    main:
      - step: *lint_build_and_publish
  pull-requests:
    "*":
      - step: *lint_and_build
