├── .editorconfig ├── .github └── workflows │ ├── coverage.yaml │ └── lint.yaml ├── .gitignore ├── .mocharc.yml ├── .npmrc ├── CONTRIBUTING.md ├── README.md ├── babel.config.js ├── eslint.config.mjs ├── package-lock.json ├── package.json ├── pony.sh ├── src ├── ackn.mjs ├── config.mjs ├── constants.mjs ├── cookies.mjs ├── errors.mjs ├── formdata.mjs ├── index.mjs ├── mediatypes.mjs ├── mixin.mjs ├── postflight.mjs ├── preflight.mjs ├── transfer.mjs ├── transform.mjs ├── utils.mjs └── validation.mjs └── test ├── fixtures ├── index.mjs └── routes.mjs ├── index.h1.test.mjs ├── index.h2.test.mjs └── index.shared.mjs /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_size = 2 8 | indent_style = space 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | -------------------------------------------------------------------------------- /.github/workflows/coverage.yaml: -------------------------------------------------------------------------------- 1 | name: Coverage 2 | on: 3 | push: 4 | pull_request: 5 | schedule: 6 | - cron: 0 5 1 */2 * 7 | concurrency: 8 | cancel-in-progress: true 9 | group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} 10 | env: 11 | NODE_ENV: development 12 | jobs: 13 | run: 14 | name: Node ${{ matrix.node }} on ${{ matrix.os }} 15 | runs-on: ${{ matrix.os }} 16 | strategy: 17 | fail-fast: false 18 | matrix: 19 | node: [ 20, 22, 24 ] 20 | os: [ ubuntu-latest ] 21 | steps: 22 | - name: Clone repo 23 | uses: actions/checkout@v4 24 | - name: Setup Node.js 25 | uses: actions/setup-node@v4 26 | with: 27 | node-version: ${{ matrix.node }} 28 | - name: Install deps 29 | run: npm install 30 | - name: Run tests 31 | run: npm run test:cover 32 | -------------------------------------------------------------------------------- /.github/workflows/lint.yaml: -------------------------------------------------------------------------------- 1 | name: Lint 2 | on: [ push, pull_request ] 3 | concurrency: 4 | cancel-in-progress: true 5 | group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} 6 | env: 7 | NODE_ENV: development 8 | jobs: 9 | run: 10 | name: Node ${{ matrix.node }} on ${{ matrix.os }} 11 | runs-on: ${{ matrix.os }} 12 | strategy: 13 | fail-fast: false 14 | matrix: 15 | node: [ current ] 16 | os: [ ubuntu-latest ] 17 | steps: 18 | - name: Clone repo 19 | uses: actions/checkout@v4 20 | - name: Setup Node.js 21 | uses: actions/setup-node@v4 22 | with: 23 | node-version: ${{ matrix.node }} 24 | - name: Install deps 25 | run: npm install 26 | - name: Run lint 27 | run: npm run lint 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | .vscode/ 3 | coverage/ 4 | dist/ 5 | node_modules/ 6 | /localhost.* 7 | -------------------------------------------------------------------------------- /.mocharc.yml: -------------------------------------------------------------------------------- 1 | exit: true 2 | ignore: 3 | - test/**/fixtures/** 4 | require: test/fixtures/index.mjs 5 | recursive: true 6 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | install-strategy=linked 2 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | Coding Rules 2 | --- 3 | 4 | Make sure your `IDE` uses [ESLint](https://eslint.org/) rules and applies [EditorConfig](https://editorconfig.org/) 5 | coding styles. 6 | 7 | ## Commit Guidelines 8 | 9 | We have very precise rules over how our git commit messages can be formatted. This leads to **more readable messages** 10 | that are easy to follow when looking through the **project history**. 11 | 12 | ### Commit Message Format 13 | 14 | Each commit message consists of a **header**, a **body** and a **footer**. The header has a special format that includes 15 | a **type**, a **scope**, and a **subject**: 16 | 17 | ``` 18 | (): 19 | 20 | 21 | 22 |