tsync 3.1.0

Generate typescript types from rust code.
Documentation
name: Rust Continuous Integration
on:
  workflow_dispatch:
  push:
    branches:
      - "main"
    paths:
      - "**.rs"
      - "Cargo.lock"
      - "Cargo.toml"
  pull_request:
    paths:
      - "**.rs"
      - "Cargo.lock"
      - "Cargo.toml"
env:
  CARGO_TERM_COLOR: always
  CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse
  CARGO_INCREMENTAL: true

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

jobs:
  build:
    name: build
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: rui314/setup-mold@v1
      - name: Install Rust toolchain
        run: |
          rustup show
          rustup -V
          rustup set profile minimal
          rustup toolchain install stable
          rustup override set stable
      - name: Setup cache
        uses: Swatinem/rust-cache@v2
        with:
          shared-key: ${{ runner.os }}-cargo-dev-${{ hashFiles('**/Cargo.lock') }}
      - run: cargo check --all-targets --all-features

  test:
    name: test
    needs: [build]
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: rui314/setup-mold@v1
      - name: Install Rust toolchain
        run: |
          rustup show
          rustup -V
          rustup set profile minimal
          rustup toolchain install stable
          rustup override set stable
      - name: Setup cache
        uses: Swatinem/rust-cache@v2
        with:
          shared-key: ${{ runner.os }}-cargo-dev-${{ hashFiles('**/Cargo.lock') }}
      - run: bash test/test_all.sh
      - run: git diff --exit-code --quiet || exit 1