# a4s

> Framework for AWS v4 signing tasks

Latest version **3.0.0-pre1** (published 2020-03-16) · MIT license · 0 weekly downloads

## Install

```sh
npm install a4s
pnpm add a4s
yarn add a4s
bun add a4s
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; no vulnerabilities; high quality score.

Warnings: low downloads; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 3.0.0-pre1 |
| Published | 2020-03-16 |
| First published | 2019-09-01 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Node | >=10.0.0 |
| Dependencies | 1 |
| Unpacked size | 123.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 11 |
| Author | Alba Mendez |
| Maintainers | mildsunrise |
| Keywords | aws, amazon, sign, signing, aws4, signature, typescript |

## Links

- npm: https://www.npmjs.com/package/a4s
- Repository: https://github.com/mildsunrise/a4s
- Homepage: https://github.com/mildsunrise/a4s#readme
- Issues: https://github.com/mildsunrise/a4s/issues
- npm.io page: https://npm.io/package/a4s

## Dependencies (1)

- [@types/node](https://npm.io/package/@types/node.md) ^12.0.0

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 3.0.0-pre1 (latest) — 2020-03-16
- 2.0.0 — 2019-09-16
- 1.1.0 — 2019-09-07
- 1.0.0 — 2019-09-01

## README

# a4s

[![Coverage Status](https://coveralls.io/repos/github/mildsunrise/a4s/badge.svg?branch=master)](https://coveralls.io/github/mildsunrise/a4s?branch=master)

This is a set of functions that implement the AWS v4 signature process.
In addition to implementing the general HTTP case, generic internals
and service-specific implementations are provided (i.e. S3, Cloudfront, etc.).

## Modules

 - [**`core`: Generic message signing**](https://a4s.alba.sh/docs/modules/_core_.html)

 - [**`http`: HTTP signing**](https://a4s.alba.sh/docs/modules/_http_.html)
   - `Authorization` request signing
   - Query signing (presigned URLs)

 - [**`s3`: S3 service specific**](https://a4s.alba.sh/docs/modules/_s3_.html)
   - `Authorization` request signing
     - Unsigned payload
     - [**`s3.chunked`: Chunked Upload (streaming payload)**](https://a4s.alba.sh/docs/modules/_s3_chunked_.html)
   - Query signing (presigned URLs)
   - POST form authorization (signed policy)

 - [**`events`: Event Stream encoding**](https://a4s.alba.sh/docs/modules/_events_.html)
   - [**`events_sign`: Event signing**](https://a4s.alba.sh/docs/modules/_events_sign_.html)

#### A note about HTTP headers

This library assumes there are no illegal characters in header names (i.e.
whitespace) or values (i.e. control chars). If there are, Node.JS will fail
when making the request.

Duplicate headers with different capitalizations (such as `{ 'Header':
'value1', 'HEADER': 'value2' }`) will be rejected with an error, because
it causes undefined behaviour when sending the request.

AWS doesn't define how non-ASCII characters are handled in header values,
so the generated signature may not work in those cases.

---
_Source: https://npm.io/package/a4s · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
