# Changelog

> Only notable changes are documented here.

## `3.0.0` - Fixes SSASy URI format

- `3.0.0` is essentially a culmination of `2.0.0` and `2.2.0` with some minor changes to the SSASy URI format.
- [breaking] removes quotes from SSASy URI format to avoid issues with URI encoding caused by the quotes. This is a breaking change because it changes the format of the SSASy URI which may cause issues for users who have already stored SSASy URIs in a database, for example.

### Migrating from `2.2.x` to `3.0.0`

- Convert all SSASy URIs back to `RawKey`s using v`2.2.x` and then convert them to SSASy URIs using v`3.0.0`.

## `2.2.2` - SSASy Key URI

- [patch] removes `raw` param from SSASy key URI. The `raw` param was used to indicate whether the key should be deserialized to a `RawKey` object or a `SecureContextKey` object. Since some keys may have the `raw` param while others do not, it can cause issues when searching for keys in a database, for example, since the `raw` param is not part of the key's URI. To solve this minor design issue, the `raw` param has been removed.
- [patch] manually builds key uri instead of traveling through the `RawKey` object in the `SerializerModule.serializeKey()` method. This is a minor design decision ensures that the key URI is consistent which makes it easier to query for keys in a database, for example.

## `2.2.0` - Wallet Class

- [breaking] Enforces SSASy URI format for all SSASy resources that are passed to (and returned from) the `Wallet` class.
- [breaking] Renames wallet methods; `sign()` -> `generateSignature()`, `verify()` -> `verifySignature()`, `solveChallenge()` -> `generateChallengeResponse()`, `verifyChallenge()` -> `verifyChallengeResponse()`.

### Migrating from `2.1.x` to `2.2.0`

- Update all SSASy resources (i.e. keys and isgnatures) to use the SSASy URI format (see [`SerializerModule`](../src/modules/serializer-mod.ts) for more details).

## `2.0.0` - SSASy URIs

- [feature] Introduces URIs for SSASy resources (i.e. keys, ciphertexts, challenges) which are used to represent resources in a standardised way that is easy to store, share and process (see [`SerializerModule`](../src/modules/serializer-mod.ts) for more details).
- [breaking] Refactors the `EncoderModule` into a `SerializerModule` which describes, more accurately, what the module does.
- [paatch] Renames `ProcessedKey` to `SecureContextKey` to better describe what the type represents, which is a WebCrypto key that is used in a [secure context](https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts).

### Migrating from `1.9.6` to `2.0.0`

- [patch] Refactor all code that uses the `EncoderModule` to use the `SerializerModule` instead (see [`SerializerModule`](../src/modules/serializer-mod.ts) for more details)
