@invoicing-sdk/application
Version:
Application layer for the invoicing system including use cases, ports, and application services
259 lines (146 loc) • 12.4 kB
Markdown
# @invoicing-sdk/application
## 0.10.0
### Minor Changes
- [#24](https://github.com/benjamin-kraatz/invoicing-sdk/pull/24) [`3bf1224`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/3bf122496ae04bafb642210a915b35adc7d04af7) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - Add Issue Invoice API with backwards compatibility for Create Invoice terminology
### ✨ New Features
- **Issue Invoice API**: Added new `IssueInvoice` use case and related types that align with real-world accounting terminology
- **Issue Invoice Events**: Added `InvoiceIssuedEvent` for better semantic clarity when invoices are issued to customers
- **Backwards Compatibility**: All existing `Create*` APIs remain functional with deprecation warnings
### 🔧 API Changes
#### New APIs (Recommended)
- `makeIssueInvoice()` / `createIssueInvoiceUseCase()`
- `IssueInvoiceCommand` / `IssueInvoiceResult` types
- `Invoice.issue()` method for domain objects
- `InvoiceIssuedEvent` domain event
#### Deprecated APIs (Still Available)
- `makeCreateInvoice()` / `createCreateInvoiceUseCase()`
- `CreateInvoiceCommand` / `CreateInvoiceResult` types
- `Invoice.create()` method
- `InvoiceCreatedEvent` domain event
### 🏗️ Field Name Changes
| Old Field Name | New Field Name | Context |
| -------------- | -------------- | --------------- |
| `createdBy` | `issuedBy` | Command objects |
| `createdOn` | `issuedOn` | Result objects |
### 📚 Migration
See the [migration guide](./docs/migration-guides/create-to-issue-invoice.md) for detailed instructions on updating your code.
### ⚠️ Breaking Changes Timeline
- **Current**: Both Create* and Issue* APIs available
- **Next Minor**: Create\* APIs deprecated with warnings
- **Next Major**: Create\* APIs removed completely
### Patch Changes
- Updated dependencies [[`3bf1224`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/3bf122496ae04bafb642210a915b35adc7d04af7)]:
- @invoicing-sdk/domain@0.10.0
## 0.9.3
### Patch Changes
- [#22](https://github.com/benjamin-kraatz/invoicing-sdk/pull/22) [`b8826a4`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/b8826a428e63774623b6226a2936d0810a9b7659) Thanks [@copilot-swe-agent](https://github.com/apps/copilot-swe-agent)! - Deprecate Fields in RequestInvoiceDraft result, add a draft field to hold the complete InvoiceDraft
## 0.9.2
### Patch Changes
- [`3da3d2f`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/3da3d2f390c5edec528d7a3a1bd8ac685a24590e) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Use `.create` for finalization again instead of deprecated `transitionTo`
- Updated dependencies [[`c909854`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/c909854b672e1291571419d3123c0c9166ff6568)]:
- @invoicing-sdk/domain@0.9.0
## 0.9.1
### Patch Changes
- [`82e23bd`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/82e23bd7c071434fb700455c4595d6cbabc8d97e) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - streamline publish
- Updated dependencies [[`82e23bd`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/82e23bd7c071434fb700455c4595d6cbabc8d97e)]:
- @invoicing-sdk/domain@0.8.1
## 0.9.0
### Minor Changes
- [#16](https://github.com/benjamin-kraatz/invoicing-sdk/pull/16) [`60c8a7f`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/60c8a7f84ff073e6f5df26793ac79443d15b1810) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Add `findDraft` by either invoice number or order id to invoice repository
- [#16](https://github.com/benjamin-kraatz/invoicing-sdk/pull/16) [`ed08383`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/ed083839f41fed94678e0467c059bdb54c788c2c) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Fixed a bunch of tests and re-order stuff around
- [#16](https://github.com/benjamin-kraatz/invoicing-sdk/pull/16) [`8e00369`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/8e00369e51db0f4d15738247fd144f58dd66a474) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Save the invoice draft to the repository to be able to retrieve it later
- [#16](https://github.com/benjamin-kraatz/invoicing-sdk/pull/16) [`afe105d`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/afe105de8198789810ea66da559d45fd22a007a2) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - **BREAKING**
Refactor `CreateInvoice` use case to check for existing draft invoices and handle state violations.
Existing implementations MUST request a draft now before actually creating the invoice.
### Patch Changes
- [#16](https://github.com/benjamin-kraatz/invoicing-sdk/pull/16) [`b836a70`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/b836a70e91fde65ccaa3f68ca080fdbbb0be7aea) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Rename `getStatus()` back to a field `status` in InvoiceDraf
- [#16](https://github.com/benjamin-kraatz/invoicing-sdk/pull/16) [`1588adb`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/1588adb8ef0aa7f4158ae2da8997b837c17f0685) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Update findDraft methods to return InvoiceDraft instead of Invoice
- Updated dependencies [[`b7ce03a`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/b7ce03ae958700c43e7c4431358f26740f06e73f), [`b836a70`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/b836a70e91fde65ccaa3f68ca080fdbbb0be7aea), [`ed08383`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/ed083839f41fed94678e0467c059bdb54c788c2c), [`8e00369`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/8e00369e51db0f4d15738247fd144f58dd66a474), [`e18deaa`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/e18deaabdd3ba2f57d09480698b35866fa2fc391)]:
- @invoicing-sdk/domain@0.8.0
## 0.8.1
### Patch Changes
- [`2414bc2`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/2414bc226951aa3f93643d78975541a5febe1c65) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Fix tests to match the new state transition feature and re-publish the package
## 0.8.0
### Minor Changes
- [#11](https://github.com/benjamin-kraatz/invoicing-sdk/pull/11) [`32ba1f2`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/32ba1f2e985a0123921ee982033b924cc266e4a0) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Application layer's `RequestInvoice` command now correctly creates and returns a draft
- [#11](https://github.com/benjamin-kraatz/invoicing-sdk/pull/11) [`57d6d0a`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/57d6d0a74dadf6d967841b94b586984b7c156fca) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Improve use-cases to support the new state transition model and prepare for a future change to the CreateInvoiceCommand type
### Patch Changes
- [#11](https://github.com/benjamin-kraatz/invoicing-sdk/pull/11) [`50b0f28`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/50b0f28a247b3a887c346061b9933313ec3016b9) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Improve `AggregateRoot.addDomainEvent` to be even more type-safe
- Updated dependencies [[`32ba1f2`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/32ba1f2e985a0123921ee982033b924cc266e4a0), [`030bc93`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/030bc9362e6b2322b04bef900f58dd709f9a947d), [`4f76ee3`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/4f76ee338bbd7c58261ba7f0aa80f69884e42bf9), [`540693a`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/540693a3a1902611c30f89c82beee1c5d545766a), [`3d50958`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/3d50958c94a35dc096556014d62ce7a577b11591), [`5e3d9d8`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/5e3d9d80eccdc168bf188793c0f853a6de2f4409), [`e9f87ce`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/e9f87cef0db21ef32b43f4ad87f3ad0e9ff10857), [`57d6d0a`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/57d6d0a74dadf6d967841b94b586984b7c156fca), [`e93e714`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/e93e71424a5fe04f1cd3ad16ad0fc195d037d899)]:
- @invoicing-sdk/domain@0.7.0
## 0.7.3
### Patch Changes
- Streamline publishing
- Updated dependencies []:
- @invoicing-sdk/domain@0.6.3
## 0.7.2
### Patch Changes
- Streamline publishing
- Updated dependencies []:
- @invoicing-sdk/domain@0.6.2
## 0.7.1
### Patch Changes
- [`e48f685`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/e48f685cfef39f4112c2a86de54003486109a340) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Make `EventBus.isConnected` async
## 0.7.0
### Minor Changes
- [`edd0de9`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/edd0de96c4ad1ba54d668ae25f20ae1e3f9769aa) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Make `EventSubscriber` fully type-safe. The `eventType` property now reacts to the generic type of the event subscriber, so there's no longer any possibility to miss-spell an event name.
## 0.6.1
### Patch Changes
- streamline package release
- Updated dependencies []:
- @invoicing-sdk/domain@0.6.1
## 0.6.0
### Minor Changes
- [#7](https://github.com/benjamin-kraatz/invoicing-sdk/pull/7) [`5457df6`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/5457df664c508af3fcfc53544584b76c8f561513) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Move `EventBus` to application layer
## 0.5.0
### Minor Changes
- [`27e8541`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/27e854175f868ae134b5099e7e06ffbeb89da674) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Emit `InvoiceRequested` event in Request use case
### Patch Changes
- Updated dependencies [[`2391e19`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/2391e1924b0e44d5942d040f83ee058c15b6b1e5), [`049a05a`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/049a05a3c1c95500e558f5e6e0b5fe9be8b247e2), [`f322f2a`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/f322f2a00579b9d83fa555405ca124fa5a61e0c8)]:
- @invoicing-sdk/domain@0.6.0
## 0.4.0
### Minor Changes
- [`49051ae`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/49051aeda61cfbf1c0881f51f2bf4fac8245b05a) Thanks [@benjamin-kraatz](https://github.com/benjamin-kraatz)! - Add new optional dependency for the `DomainEventPublisher` to the Create Invoice use-case. This allows it to publish all uncommitted events, which was not possible before. Other use-cases might still lack of this feature - it will be implemented in future versions.
We also refactored the `AggregateRoot` interface to now live in `entities` instead of `events`.
### Patch Changes
- Updated dependencies [[`49051ae`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/49051aeda61cfbf1c0881f51f2bf4fac8245b05a)]:
- @invoicing-sdk/domain@0.5.0
## 0.3.1
### Patch Changes
- Updated dependencies [[`c574ae6`](https://github.com/benjamin-kraatz/invoicing-sdk/commit/c574ae6b4d9c6d58c05f40722a683bf3865d03f5)]:
- @invoicing-sdk/domain@0.4.0
## 0.3.0
### Minor Changes
- Packages are now considered "public beta"
### Patch Changes
- Updated dependencies []:
- @invoicing-sdk/domain@0.3.0
## 0.2.2
### Patch Changes
- Updated dependencies []:
- @invoicing-sdk/domain@0.2.2
## 0.2.1
### Patch Changes
- Fix READMEs to be a) correct and b) more clear about each package's purpose and design. Add PDF package (unreleased)
- Updated dependencies []:
- @invoicing-sdk/domain@0.2.1
## 0.2.0
### Minor Changes
- Prepare release for all packages with latest readmes
### Patch Changes
- Updated dependencies []:
- @invoicing-sdk/domain@0.2.0
## 0.1.3
### Patch Changes
- Enhanced npm publishing configuration for all packages. Added explicit registry configuration, repository metadata, improved files arrays, and prepublishOnly scripts to ensure packages are properly built and tested before publishing.
- Updated dependencies []:
- @invoicing-sdk/domain@0.1.4
## 0.1.2
### Patch Changes
- Implement `invoice-sdk` entry package, improve docs
- Updated dependencies []:
- @invoicing-sdk/domain@0.1.3
## 0.1.1
### Patch Changes
- Updated dependencies []:
- @invoicing-sdk/domain@0.1.2