
# Auto Generated YAML please don't change
name: 'Run All'

on:
  workflow_dispatch:
    inputs:
      node-versions:
        required: true
        type: string
        default: '["18.0.0","18.20.1","18.20.2","20.0.0","20.12.1","20.12.2","21.0.0","21.7.2","21.7.3","22.0.0","22.1.0"]'
        description: 'The Node.js Versions (should be a JSON array)'

permissions:
  contents: write
  issues: write
  id-token: write

jobs:
  runner-start:
    runs-on: ubuntu-latest
    steps:
      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-region: us-west-2
          role-to-assume: arn:aws:iam::800406105498:role/RafaelGSS-nodejs-bench-operations
      - name: Checkout
        uses: actions/checkout@v4

      - name: Start Runner
        uses: ./.github/workflows/runner-starter
        with:
          instance_id: 'i-065f0f848eb1615ae'
          action: 'start'
          aws_default_region: 'us-west-2'
  
  add-property:
    needs: runner-start
    name: Running "add-property.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: add-property.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  array-append:
    needs: add-property
    name: Running "array-append.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: array-append.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  array-creation:
    needs: array-append
    name: Running "array-creation.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: array-creation.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  async-function-vs-function:
    needs: array-creation
    name: Running "async-function-vs-function.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: async-function-vs-function.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  blob:
    needs: async-function-vs-function
    name: Running "blob.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: blob.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  compare-using-instanceof:
    needs: blob
    name: Running "compare-using-instanceof.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: compare-using-instanceof.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  crypto-verify:
    needs: compare-using-instanceof
    name: Running "crypto-verify.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: crypto-verify.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  date-format-iso:
    needs: crypto-verify
    name: Running "date-format-iso.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: date-format-iso.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  date-format:
    needs: date-format-iso
    name: Running "date-format.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: date-format.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  date-string-coersion:
    needs: date-format
    name: Running "date-string-coersion.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: date-string-coersion.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  deleting-properties:
    needs: date-string-coersion
    name: Running "deleting-properties.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: deleting-properties.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  error:
    needs: deleting-properties
    name: Running "error.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: error.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  function-return:
    needs: error
    name: Running "function-return.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: function-return.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  includes-vs-raw-comparison:
    needs: function-return
    name: Running "includes-vs-raw-comparison.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: includes-vs-raw-comparison.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  keys-vs-getownpropertynames:
    needs: includes-vs-raw-comparison
    name: Running "keys-vs-getownpropertynames.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: keys-vs-getownpropertynames.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  last-array-item:
    needs: keys-vs-getownpropertynames
    name: Running "last-array-item.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: last-array-item.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  object-creation:
    needs: last-array-item
    name: Running "object-creation.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: object-creation.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  optional-chain-vs-and-operator:
    needs: object-creation
    name: Running "optional-chain-vs-and-operator.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: optional-chain-vs-and-operator.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  parse-int:
    needs: optional-chain-vs-and-operator
    name: Running "parse-int.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: parse-int.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  possible-undefined-function:
    needs: parse-int
    name: Running "possible-undefined-function.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: possible-undefined-function.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  private-property:
    needs: possible-undefined-function
    name: Running "private-property.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: private-property.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  property-access-transition:
    needs: private-property
    name: Running "property-access-transition.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: property-access-transition.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  property-getter-access:
    needs: property-access-transition
    name: Running "property-getter-access.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: property-getter-access.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  property-setter-access:
    needs: property-getter-access
    name: Running "property-setter-access.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: property-setter-access.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  replace-vs-replaceall-comparison:
    needs: property-setter-access
    name: Running "replace-vs-replaceall-comparison.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: replace-vs-replaceall-comparison.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  shallow-copy:
    needs: replace-vs-replaceall-comparison
    name: Running "shallow-copy.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: shallow-copy.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  sort-map:
    needs: shallow-copy
    name: Running "sort-map.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: sort-map.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  spread-vs-object-assign:
    needs: sort-map
    name: Running "spread-vs-object-assign.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: spread-vs-object-assign.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  stream-readable:
    needs: spread-vs-object-assign
    name: Running "stream-readable.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: stream-readable.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  stream-writable:
    needs: stream-readable
    name: Running "stream-writable.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: stream-writable.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  string-concat:
    needs: stream-writable
    name: Running "string-concat.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: string-concat.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  string-endsWith:
    needs: string-concat
    name: Running "string-endsWith.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: string-endsWith.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  string-searching:
    needs: string-endsWith
    name: Running "string-searching.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: string-searching.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  string-startsWith:
    needs: string-searching
    name: Running "string-startsWith.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: string-startsWith.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  super-vs-this:
    needs: string-startsWith
    name: Running "super-vs-this.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: super-vs-this.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  unix-time:
    needs: super-vs-this
    name: Running "unix-time.js"
    uses: ./.github/workflows/bench.yml
    with:
      bench-file: unix-time.js
      node-versions: ${{ inputs.node-versions }}
      run-start-stop: false

  ## Stop Runner
  runner-stop:
    runs-on: ubuntu-latest
    needs: [unix-time]
    steps:
      - name: Configure AWS Credentials
        uses: aws-actions/configure-aws-credentials@v4
        with:
          aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY }}
          aws-secret-access-key: ${{ secrets.AWS_SECRET_KEY }}
          aws-region: ${{ secrets.AWS_REGION }}
      - name: Checkout
        uses: actions/checkout@v4

      - name: Stop Runner
        uses: ./.github/workflows/runner-starter
        with:
          instance_id: 'i-065f0f848eb1615ae'
          action: 'stop'
          aws_default_region: 'us-west-2'
