@hazeljs/saga 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +192 -0
- package/README.md +174 -0
- package/dist/choreography.d.ts +10 -0
- package/dist/choreography.js +46 -0
- package/dist/choreography.js.map +1 -0
- package/dist/choreography.test.d.ts +1 -0
- package/dist/choreography.test.js +73 -0
- package/dist/choreography.test.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +21 -0
- package/dist/index.js.map +1 -0
- package/dist/interfaces.d.ts +34 -0
- package/dist/interfaces.js +12 -0
- package/dist/interfaces.js.map +1 -0
- package/dist/orchestrator.d.ts +22 -0
- package/dist/orchestrator.js +101 -0
- package/dist/orchestrator.js.map +1 -0
- package/dist/saga.decorator.d.ts +4 -0
- package/dist/saga.decorator.js +24 -0
- package/dist/saga.decorator.js.map +1 -0
- package/dist/saga.orchestrator.test.d.ts +1 -0
- package/dist/saga.orchestrator.test.js +98 -0
- package/dist/saga.orchestrator.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +40 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
Apache License
|
|
2
|
+
Version 2.0, January 2004
|
|
3
|
+
http://www.apache.org/licenses/
|
|
4
|
+
|
|
5
|
+
Copyright 2024 HazelJS Team
|
|
6
|
+
|
|
7
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
8
|
+
you may not use this file except in compliance with the License.
|
|
9
|
+
You may obtain a copy of the License at
|
|
10
|
+
|
|
11
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
12
|
+
|
|
13
|
+
Unless required by applicable law or agreed to in writing, software
|
|
14
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
15
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
16
|
+
See the License for the specific language governing permissions and
|
|
17
|
+
limitations under the License.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
22
|
+
|
|
23
|
+
1. Definitions.
|
|
24
|
+
|
|
25
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
26
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
27
|
+
|
|
28
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
29
|
+
the copyright owner that is granting the License.
|
|
30
|
+
|
|
31
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
32
|
+
other entities that control, are controlled by, or are under common
|
|
33
|
+
control with that entity. For the purposes of this definition,
|
|
34
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
35
|
+
direction or management of such entity, whether by contract or
|
|
36
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
37
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
38
|
+
|
|
39
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
40
|
+
exercising permissions granted by this License.
|
|
41
|
+
|
|
42
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
43
|
+
including but not limited to software source code, documentation
|
|
44
|
+
source, and configuration files.
|
|
45
|
+
|
|
46
|
+
"Object" form shall mean any form resulting from mechanical
|
|
47
|
+
transformation or translation of a Source form, including but
|
|
48
|
+
not limited to compiled object code, generated documentation,
|
|
49
|
+
and conversions to other media types.
|
|
50
|
+
|
|
51
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
52
|
+
Object form, made available under the License, as indicated by a
|
|
53
|
+
copyright notice that is included in or attached to the work
|
|
54
|
+
(an example is provided in the Appendix below).
|
|
55
|
+
|
|
56
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
57
|
+
form, that is based on (or derived from) the Work and for which the
|
|
58
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
59
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
60
|
+
of this License, Derivative Works shall not include works that remain
|
|
61
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
62
|
+
the Work and Derivative Works thereof.
|
|
63
|
+
|
|
64
|
+
"Contribution" shall mean any work of authorship, including
|
|
65
|
+
the original version of the Work and any modifications or additions
|
|
66
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
67
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
68
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
69
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
70
|
+
means any form of electronic, verbal, or written communication sent
|
|
71
|
+
to the Licensor or its representatives, including but not limited to
|
|
72
|
+
communication on electronic mailing lists, source code control systems,
|
|
73
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
74
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
75
|
+
excluding communication that is conspicuously marked or otherwise
|
|
76
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
77
|
+
|
|
78
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
79
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
80
|
+
subsequently incorporated within the Work.
|
|
81
|
+
|
|
82
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
83
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
84
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
85
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
86
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
87
|
+
Work and such Derivative Works in Source or Object form.
|
|
88
|
+
|
|
89
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
90
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
91
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
92
|
+
(except as stated in this section) patent license to make, have made,
|
|
93
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
94
|
+
where such license applies only to those patent claims licensable
|
|
95
|
+
by such Contributor that are necessarily infringed by their
|
|
96
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
97
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
98
|
+
institute patent litigation against any entity (including a
|
|
99
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
100
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
101
|
+
or contributory patent infringement, then any patent licenses
|
|
102
|
+
granted to You under this License for that Work shall terminate
|
|
103
|
+
as of the date such litigation is filed.
|
|
104
|
+
|
|
105
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
106
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
107
|
+
modifications, and in Source or Object form, provided that You
|
|
108
|
+
meet the following conditions:
|
|
109
|
+
|
|
110
|
+
(a) You must give any other recipients of the Work or
|
|
111
|
+
Derivative Works a copy of this License; and
|
|
112
|
+
|
|
113
|
+
(b) You must cause any modified files to carry prominent notices
|
|
114
|
+
stating that You changed the files; and
|
|
115
|
+
|
|
116
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
117
|
+
that You distribute, all copyright, patent, trademark, and
|
|
118
|
+
attribution notices from the Source form of the Work,
|
|
119
|
+
excluding those notices that do not pertain to any part of
|
|
120
|
+
the Derivative Works; and
|
|
121
|
+
|
|
122
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
123
|
+
distribution, then any Derivative Works that You distribute must
|
|
124
|
+
include a readable copy of the attribution notices contained
|
|
125
|
+
within such NOTICE file, excluding those notices that do not
|
|
126
|
+
pertain to any part of the Derivative Works, in at least one
|
|
127
|
+
of the following places: within a NOTICE text file distributed
|
|
128
|
+
as part of the Derivative Works; within the Source form or
|
|
129
|
+
documentation, if provided along with the Derivative Works; or,
|
|
130
|
+
within a display generated by the Derivative Works, if and
|
|
131
|
+
wherever such third-party notices normally appear. The contents
|
|
132
|
+
of the NOTICE file are for informational purposes only and
|
|
133
|
+
do not modify the License. You may add Your own attribution
|
|
134
|
+
notices within Derivative Works that You distribute, alongside
|
|
135
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
136
|
+
that such additional attribution notices cannot be construed
|
|
137
|
+
as modifying the License.
|
|
138
|
+
|
|
139
|
+
You may add Your own copyright statement to Your modifications and
|
|
140
|
+
may provide additional or different license terms and conditions
|
|
141
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
142
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
143
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
144
|
+
the conditions stated in this License.
|
|
145
|
+
|
|
146
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
147
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
148
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
149
|
+
this License, without any additional terms or conditions.
|
|
150
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
151
|
+
the terms of any separate license agreement you may have executed
|
|
152
|
+
with Licensor regarding such Contributions.
|
|
153
|
+
|
|
154
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
155
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
156
|
+
except as required for reasonable and customary use in describing the
|
|
157
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
158
|
+
|
|
159
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
160
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
161
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
162
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
163
|
+
implied, including, without limitation, any warranties or conditions
|
|
164
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
165
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
166
|
+
appropriateness of using or redistributing the Work and assume any
|
|
167
|
+
risks associated with Your exercise of permissions under this License.
|
|
168
|
+
|
|
169
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
170
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
171
|
+
unless required by applicable law (such as deliberate and grossly
|
|
172
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
173
|
+
liable to You for damages, including any direct, indirect, special,
|
|
174
|
+
incidental, or consequential damages of any character arising as a
|
|
175
|
+
result of this License or out of the use or inability to use the
|
|
176
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
177
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
178
|
+
other commercial damages or losses), even if such Contributor
|
|
179
|
+
has been advised of the possibility of such damages.
|
|
180
|
+
|
|
181
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
182
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
183
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
184
|
+
or other liability obligations and/or rights consistent with this
|
|
185
|
+
License. However, in accepting such obligations, You may act only
|
|
186
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
187
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
188
|
+
defend, and hold each Contributor harmless for any liability
|
|
189
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
190
|
+
of your accepting any such warranty or additional liability.
|
|
191
|
+
|
|
192
|
+
END OF TERMS AND CONDITIONS
|
package/README.md
ADDED
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
# @hazeljs/saga
|
|
2
|
+
|
|
3
|
+
**Distributed Transaction Management for HazelJS. Orchestration, Choreography, and Auto-Compensation.**
|
|
4
|
+
|
|
5
|
+
Manage complex, multi-service transactions with ease. Whether you prefer centralized control (Orchestration) or decentralized event-driven flows (Choreography), HazelJS Saga provides a robust, decorator-based framework to ensure data consistency across your distributed system.
|
|
6
|
+
|
|
7
|
+
[](https://www.npmjs.com/package/@hazeljs/saga)
|
|
8
|
+
[](https://www.npmjs.com/package/@hazeljs/saga)
|
|
9
|
+
[](https://www.apache.org/licenses/LICENSE-2.0)
|
|
10
|
+
|
|
11
|
+
## Features
|
|
12
|
+
|
|
13
|
+
- 🔄 **Dual Models** — Orchestration for centralized control and Choreography for decentralized, event-driven coordination.
|
|
14
|
+
- 🛠️ **Decorator-Based API** — Declarative Saga definition using `@Saga`, `@SagaStep`, and `@OnEvent`.
|
|
15
|
+
- ⏪ **Auto-Compensation** — Automatically reverses completed steps in reverse order when a failure occurs.
|
|
16
|
+
- 📊 **Status Management** — Built-in tracking for `STARTED`, `COMPENSATING`, `ABORTED`, and `COMPLETED` states.
|
|
17
|
+
- 🧠 **Context Awareness** — Type-safe `SagaContext` to pass state and data across multiple transaction steps.
|
|
18
|
+
- 🔌 **HazelJS Integration** — Seamlessly works with `@hazeljs/event-emitter` and `@hazeljs/core`.
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Installation
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm install @hazeljs/saga
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Peer Dependencies
|
|
29
|
+
|
|
30
|
+
Ensure you have these installed as they are required for decorators and event-driven sagas:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm install reflect-metadata
|
|
34
|
+
npm install @hazeljs/event-emitter
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## Quick Start (Orchestration)
|
|
40
|
+
|
|
41
|
+
The Orchestration model uses a central class to coordinate the workflow. If a step fails, compensation methods are automatically triggered.
|
|
42
|
+
|
|
43
|
+
### 1. Define the Saga
|
|
44
|
+
|
|
45
|
+
```typescript
|
|
46
|
+
import { Saga, SagaStep } from '@hazeljs/saga';
|
|
47
|
+
|
|
48
|
+
@Saga({ name: 'order-saga' })
|
|
49
|
+
export class OrderSaga {
|
|
50
|
+
|
|
51
|
+
@SagaStep({ order: 1, compensate: 'cancelOrder' })
|
|
52
|
+
async createOrder(data: any) {
|
|
53
|
+
console.log('Order created for:', data.productId);
|
|
54
|
+
return { orderId: 'ord_123' };
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
@SagaStep({ order: 2, compensate: 'releaseInventory' })
|
|
58
|
+
async reserveInventory(data: any) {
|
|
59
|
+
// Logic to reserve stock...
|
|
60
|
+
return { status: 'RESERVED' };
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
async cancelOrder(data: any) {
|
|
64
|
+
console.log('Reversing order...');
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
async releaseInventory(data: any) {
|
|
68
|
+
console.log('Releasing stock...');
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### 2. Execute the Saga
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
import { SagaOrchestrator } from '@hazeljs/saga';
|
|
77
|
+
|
|
78
|
+
const orchestrator = SagaOrchestrator.getInstance();
|
|
79
|
+
const context = await orchestrator.start('order-saga', { productId: 'p1', userId: 'u1' });
|
|
80
|
+
|
|
81
|
+
console.log(`Saga Status: ${context.status}`); // COMPLETED or ABORTED
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
---
|
|
85
|
+
|
|
86
|
+
## Orchestration vs. Choreography
|
|
87
|
+
|
|
88
|
+
| Feature | Orchestration | Choreography |
|
|
89
|
+
|---|---|---|
|
|
90
|
+
| **Control** | Centralized in one class | Decentralized across handlers |
|
|
91
|
+
| **Coupling** | High (Orchestrator knows all steps) | Low (Each service reacts to events) |
|
|
92
|
+
| **Complexity** | Simple for small/medium flows | Better for very large, loosely coupled systems |
|
|
93
|
+
| **Visibility** | Single point of truth | Distributed across the system |
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
## Saga Choreography
|
|
98
|
+
|
|
99
|
+
Choreography is entirely event-driven. Handlers subscribe to events and emit new ones to trigger the next phase of the transaction.
|
|
100
|
+
|
|
101
|
+
```typescript
|
|
102
|
+
import { SagaChoreography, OnEvent } from '@hazeljs/saga';
|
|
103
|
+
|
|
104
|
+
@SagaChoreography()
|
|
105
|
+
export class ShippingChoreography {
|
|
106
|
+
|
|
107
|
+
@OnEvent('inventory.reserved')
|
|
108
|
+
async handleInventoryReserved(order: any) {
|
|
109
|
+
console.log('Shipping label generated for:', order.id);
|
|
110
|
+
// Emit 'shipping.labeled' to continue the flow
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
@OnEvent('payment.failed')
|
|
114
|
+
async handlePaymentFailed(order: any) {
|
|
115
|
+
console.log('Cancelling shipping for:', order.id);
|
|
116
|
+
// Manual compensation for choreography
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Saga Lifecycle & Statuses
|
|
124
|
+
|
|
125
|
+
The `SagaContext` tracks the status of the transaction as it progresses:
|
|
126
|
+
|
|
127
|
+
| Status | Description |
|
|
128
|
+
|--------|-------------|
|
|
129
|
+
| `STARTED` | Execution has begun. |
|
|
130
|
+
| `COMPLETED` | All steps finished successfully. |
|
|
131
|
+
| `FAILED` | A step encountered an error; compensation is pending. |
|
|
132
|
+
| `COMPENSATING` | Reversing previously completed steps. |
|
|
133
|
+
| `ABORTED` | Compensation finished; the transaction is rolled back. |
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
## API Reference
|
|
138
|
+
|
|
139
|
+
### `SagaOrchestrator`
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
class SagaOrchestrator {
|
|
143
|
+
static getInstance(): SagaOrchestrator;
|
|
144
|
+
registerSaga(name: string, target: any): void;
|
|
145
|
+
registerStep(sagaName: string, methodName: string, options: SagaStepOptions): void;
|
|
146
|
+
start<T>(sagaName: string, initialData: T): Promise<SagaContext<T>>;
|
|
147
|
+
}
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### `Decorators`
|
|
151
|
+
|
|
152
|
+
- **`@Saga(options)`** — Marks a class as a centralized Saga Orchestrator.
|
|
153
|
+
- **`@SagaStep(options)`** — Marks a method as a step. Options include `order` and `compensate` (method name).
|
|
154
|
+
- **`@SagaChoreography()`** — Marks a class as a collection of event-driven saga handlers.
|
|
155
|
+
- **`@OnEvent(eventName)`** — Subscribes a method to a specific event within a choreography.
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Use Cases
|
|
160
|
+
|
|
161
|
+
- 🛒 **E-commerce Checkout** — Coordinating orders, payments, and inventory.
|
|
162
|
+
- 🏨 **Hotel/Flight Bookings** — Managing multi-vendor reservation systems.
|
|
163
|
+
- 💳 **Financial Transfers** — Ensuring atomic-like consistency across different account services.
|
|
164
|
+
- 🏗️ **Infrastructure Provisioning** — rolling back cloud resource creation on failure.
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## License
|
|
169
|
+
|
|
170
|
+
Apache-2.0
|
|
171
|
+
|
|
172
|
+
## Contributing
|
|
173
|
+
|
|
174
|
+
Contributions are welcome! See [CONTRIBUTING.md](../../CONTRIBUTING.md) for details.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
export declare class SagaChoreographyManager {
|
|
3
|
+
private static instance;
|
|
4
|
+
private readonly eventEmitter;
|
|
5
|
+
private constructor();
|
|
6
|
+
static getInstance(): SagaChoreographyManager;
|
|
7
|
+
subscribe(eventName: string, handler: (event: unknown) => Promise<void>): void;
|
|
8
|
+
}
|
|
9
|
+
export declare function SagaChoreography(): (constructor: new (...args: unknown[]) => unknown) => void;
|
|
10
|
+
export declare function OnEvent(eventName: string): (target: object, propertyKey: string, _descriptor: PropertyDescriptor) => void;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SagaChoreographyManager = void 0;
|
|
4
|
+
exports.SagaChoreography = SagaChoreography;
|
|
5
|
+
exports.OnEvent = OnEvent;
|
|
6
|
+
require("reflect-metadata");
|
|
7
|
+
const event_emitter_1 = require("@hazeljs/event-emitter");
|
|
8
|
+
class SagaChoreographyManager {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.eventEmitter = new event_emitter_1.EventEmitterService({
|
|
11
|
+
wildcard: true,
|
|
12
|
+
delimiter: '.',
|
|
13
|
+
maxListeners: 20,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
static getInstance() {
|
|
17
|
+
if (!SagaChoreographyManager.instance) {
|
|
18
|
+
SagaChoreographyManager.instance = new SagaChoreographyManager();
|
|
19
|
+
}
|
|
20
|
+
return SagaChoreographyManager.instance;
|
|
21
|
+
}
|
|
22
|
+
subscribe(eventName, handler) {
|
|
23
|
+
this.eventEmitter.on(eventName, handler);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.SagaChoreographyManager = SagaChoreographyManager;
|
|
27
|
+
function SagaChoreography() {
|
|
28
|
+
return function (constructor) {
|
|
29
|
+
const handlers = Reflect.getMetadata('hazeljs:saga:choreography:handlers', constructor.prototype) || [];
|
|
30
|
+
const manager = SagaChoreographyManager.getInstance();
|
|
31
|
+
const instance = constructor.prototype;
|
|
32
|
+
for (const handler of handlers) {
|
|
33
|
+
manager.subscribe(handler.eventName, async (data) => {
|
|
34
|
+
await instance[handler.methodName](data);
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
function OnEvent(eventName) {
|
|
40
|
+
return function (target, propertyKey, _descriptor) {
|
|
41
|
+
const handlers = Reflect.getMetadata('hazeljs:saga:choreography:handlers', target) || [];
|
|
42
|
+
handlers.push({ eventName, methodName: propertyKey });
|
|
43
|
+
Reflect.defineMetadata('hazeljs:saga:choreography:handlers', handlers, target);
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=choreography.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"choreography.js","sourceRoot":"","sources":["../src/choreography.ts"],"names":[],"mappings":";;;AA8BA,4CAoBC;AAKD,0BAUC;AAjED,4BAA0B;AAC1B,0DAA6D;AAE7D,MAAa,uBAAuB;IAIlC;QACE,IAAI,CAAC,YAAY,GAAG,IAAI,mCAAmB,CAAC;YAC1C,QAAQ,EAAE,IAAI;YACd,SAAS,EAAE,GAAG;YACd,YAAY,EAAE,EAAE;SACjB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,CAAC;YACtC,uBAAuB,CAAC,QAAQ,GAAG,IAAI,uBAAuB,EAAE,CAAC;QACnE,CAAC;QACD,OAAO,uBAAuB,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAED,SAAS,CAAC,SAAiB,EAAE,OAA0C;QACrE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;CACF;AAtBD,0DAsBC;AAKD,SAAgB,gBAAgB;IAC9B,OAAO,UAAU,WAAgD;QAE/D,MAAM,QAAQ,GACZ,OAAO,CAAC,WAAW,CAAC,oCAAoC,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAEzF,MAAM,OAAO,GAAG,uBAAuB,CAAC,WAAW,EAAE,CAAC;QACtD,MAAM,QAAQ,GACZ,WACD,CAAC,SAAS,CAAC;QAEZ,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,IAAa,EAAE,EAAE;gBAI3D,MAAM,QAAQ,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;YAC3C,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAKD,SAAgB,OAAO,CAAC,SAAiB;IACvC,OAAO,UAAU,MAAc,EAAE,WAAmB,EAAE,WAA+B;QACnF,MAAM,QAAQ,GACX,OAAO,CAAC,WAAW,CAAC,oCAAoC,EAAE,MAAM,CAG7D,IAAI,EAAE,CAAC;QACb,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,cAAc,CAAC,oCAAoC,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;IACjF,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const choreography_1 = require("./choreography");
|
|
13
|
+
describe('SagaChoreography', () => {
|
|
14
|
+
let manager;
|
|
15
|
+
let eventEmitter;
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
manager = choreography_1.SagaChoreographyManager.getInstance();
|
|
18
|
+
eventEmitter = manager.eventEmitter;
|
|
19
|
+
jest.clearAllMocks();
|
|
20
|
+
});
|
|
21
|
+
it('should handle decorator-based event subscriptions', async () => {
|
|
22
|
+
const handlerSpy = jest.fn();
|
|
23
|
+
let _TestChoreography = class _TestChoreography {
|
|
24
|
+
async onUserCreated(data) {
|
|
25
|
+
handlerSpy(data);
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
__decorate([
|
|
29
|
+
(0, choreography_1.OnEvent)('user.created'),
|
|
30
|
+
__metadata("design:type", Function),
|
|
31
|
+
__metadata("design:paramtypes", [Object]),
|
|
32
|
+
__metadata("design:returntype", Promise)
|
|
33
|
+
], _TestChoreography.prototype, "onUserCreated", null);
|
|
34
|
+
_TestChoreography = __decorate([
|
|
35
|
+
(0, choreography_1.SagaChoreography)()
|
|
36
|
+
], _TestChoreography);
|
|
37
|
+
const testData = { id: 'u123', name: 'John' };
|
|
38
|
+
await eventEmitter.emitAsync('user.created', testData);
|
|
39
|
+
expect(handlerSpy).toHaveBeenCalledWith(testData);
|
|
40
|
+
});
|
|
41
|
+
it('should work with multiple events and handlers', async () => {
|
|
42
|
+
const handler1 = jest.fn();
|
|
43
|
+
const handler2 = jest.fn();
|
|
44
|
+
let _MultiChoreography = class _MultiChoreography {
|
|
45
|
+
async onOrderPlaced(data) {
|
|
46
|
+
handler1(data);
|
|
47
|
+
}
|
|
48
|
+
async onInventoryChecked(data) {
|
|
49
|
+
handler2(data);
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
__decorate([
|
|
53
|
+
(0, choreography_1.OnEvent)('order.placed'),
|
|
54
|
+
__metadata("design:type", Function),
|
|
55
|
+
__metadata("design:paramtypes", [Object]),
|
|
56
|
+
__metadata("design:returntype", Promise)
|
|
57
|
+
], _MultiChoreography.prototype, "onOrderPlaced", null);
|
|
58
|
+
__decorate([
|
|
59
|
+
(0, choreography_1.OnEvent)('inventory.checked'),
|
|
60
|
+
__metadata("design:type", Function),
|
|
61
|
+
__metadata("design:paramtypes", [Object]),
|
|
62
|
+
__metadata("design:returntype", Promise)
|
|
63
|
+
], _MultiChoreography.prototype, "onInventoryChecked", null);
|
|
64
|
+
_MultiChoreography = __decorate([
|
|
65
|
+
(0, choreography_1.SagaChoreography)()
|
|
66
|
+
], _MultiChoreography);
|
|
67
|
+
await eventEmitter.emitAsync('order.placed', { id: 'o1' });
|
|
68
|
+
await eventEmitter.emitAsync('inventory.checked', { id: 'o1', status: 'OK' });
|
|
69
|
+
expect(handler1).toHaveBeenCalledWith({ id: 'o1' });
|
|
70
|
+
expect(handler2).toHaveBeenCalledWith({ id: 'o1', status: 'OK' });
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=choreography.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"choreography.test.js","sourceRoot":"","sources":["../src/choreography.test.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,iDAAoF;AAGpF,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,IAAI,OAAgC,CAAC;IACrC,IAAI,YAAiC,CAAC;IAEtC,UAAU,CAAC,GAAG,EAAE;QACd,OAAO,GAAG,sCAAuB,CAAC,WAAW,EAAE,CAAC;QAGhD,YAAY,GAAI,OAAe,CAAC,YAAY,CAAC;QAC7C,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,MAAM,UAAU,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAG7B,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;YAEf,AAAN,KAAK,CAAC,aAAa,CAAC,IAAS;gBAC3B,UAAU,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;SACF,CAAA;QAHO;YADL,IAAA,sBAAO,EAAC,cAAc,CAAC;;;;8DAGvB;QAJG,iBAAiB;YADtB,IAAA,+BAAgB,GAAE;WACb,iBAAiB,CAKtB;QAGD,MAAM,QAAQ,GAAG,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC9C,MAAM,YAAY,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QAEvD,MAAM,CAAC,UAAU,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,EAAE,EAAE,CAAC;QAG3B,IAAM,kBAAkB,GAAxB,MAAM,kBAAkB;YAEhB,AAAN,KAAK,CAAC,aAAa,CAAC,IAAS;gBAC3B,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;YAGK,AAAN,KAAK,CAAC,kBAAkB,CAAC,IAAS;gBAChC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;SACF,CAAA;QARO;YADL,IAAA,sBAAO,EAAC,cAAc,CAAC;;;;+DAGvB;QAGK;YADL,IAAA,sBAAO,EAAC,mBAAmB,CAAC;;;;oEAG5B;QATG,kBAAkB;YADvB,IAAA,+BAAgB,GAAE;WACb,kBAAkB,CAUvB;QAED,MAAM,YAAY,CAAC,SAAS,CAAC,cAAc,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3D,MAAM,YAAY,CAAC,SAAS,CAAC,mBAAmB,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9E,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./interfaces"), exports);
|
|
18
|
+
__exportStar(require("./orchestrator"), exports);
|
|
19
|
+
__exportStar(require("./saga.decorator"), exports);
|
|
20
|
+
__exportStar(require("./choreography"), exports);
|
|
21
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,iDAA+B;AAC/B,mDAAiC;AACjC,iDAA+B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export declare enum SagaStatus {
|
|
2
|
+
STARTED = "STARTED",
|
|
3
|
+
COMPLETED = "COMPLETED",
|
|
4
|
+
COMPENSATING = "COMPENSATING",
|
|
5
|
+
FAILED = "FAILED",
|
|
6
|
+
ABORTED = "ABORTED"
|
|
7
|
+
}
|
|
8
|
+
export interface SagaOptions {
|
|
9
|
+
name: string;
|
|
10
|
+
type?: 'orchestration' | 'choreography';
|
|
11
|
+
}
|
|
12
|
+
export interface SagaStepOptions {
|
|
13
|
+
compensate?: string;
|
|
14
|
+
timeout?: number;
|
|
15
|
+
order?: number;
|
|
16
|
+
}
|
|
17
|
+
export interface SagaContext<T = unknown> {
|
|
18
|
+
id: string;
|
|
19
|
+
name: string;
|
|
20
|
+
status: SagaStatus;
|
|
21
|
+
data: T;
|
|
22
|
+
steps: SagaStepExecution[];
|
|
23
|
+
error?: unknown;
|
|
24
|
+
}
|
|
25
|
+
export interface SagaStepExecution {
|
|
26
|
+
stepName: string;
|
|
27
|
+
status: 'COMPLETED' | 'FAILED' | 'COMPENSATED';
|
|
28
|
+
result?: unknown;
|
|
29
|
+
error?: unknown;
|
|
30
|
+
timestamp: number;
|
|
31
|
+
}
|
|
32
|
+
export interface ISagaCoordinator {
|
|
33
|
+
start<T>(name: string, data: T): Promise<SagaContext<T>>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SagaStatus = void 0;
|
|
4
|
+
var SagaStatus;
|
|
5
|
+
(function (SagaStatus) {
|
|
6
|
+
SagaStatus["STARTED"] = "STARTED";
|
|
7
|
+
SagaStatus["COMPLETED"] = "COMPLETED";
|
|
8
|
+
SagaStatus["COMPENSATING"] = "COMPENSATING";
|
|
9
|
+
SagaStatus["FAILED"] = "FAILED";
|
|
10
|
+
SagaStatus["ABORTED"] = "ABORTED";
|
|
11
|
+
})(SagaStatus || (exports.SagaStatus = SagaStatus = {}));
|
|
12
|
+
//# sourceMappingURL=interfaces.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../src/interfaces.ts"],"names":[],"mappings":";;;AAAA,IAAY,UAMX;AAND,WAAY,UAAU;IACpB,iCAAmB,CAAA;IACnB,qCAAuB,CAAA;IACvB,2CAA6B,CAAA;IAC7B,+BAAiB,CAAA;IACjB,iCAAmB,CAAA;AACrB,CAAC,EANW,UAAU,0BAAV,UAAU,QAMrB"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { SagaContext, SagaStepOptions } from './interfaces';
|
|
2
|
+
export interface RegisteredSaga {
|
|
3
|
+
name: string;
|
|
4
|
+
steps: RegisteredSagaStep[];
|
|
5
|
+
target: any;
|
|
6
|
+
}
|
|
7
|
+
export interface RegisteredSagaStep {
|
|
8
|
+
name: string;
|
|
9
|
+
methodName: string;
|
|
10
|
+
options: SagaStepOptions;
|
|
11
|
+
order: number;
|
|
12
|
+
}
|
|
13
|
+
export declare class SagaOrchestrator {
|
|
14
|
+
private static instance;
|
|
15
|
+
private readonly sagas;
|
|
16
|
+
private constructor();
|
|
17
|
+
static getInstance(): SagaOrchestrator;
|
|
18
|
+
registerSaga(name: string, target: any): void;
|
|
19
|
+
registerStep(sagaName: string, methodName: string, options: SagaStepOptions): void;
|
|
20
|
+
start<T>(sagaName: string, initialData: T): Promise<SagaContext<T>>;
|
|
21
|
+
private compensate;
|
|
22
|
+
}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SagaOrchestrator = void 0;
|
|
4
|
+
const interfaces_1 = require("./interfaces");
|
|
5
|
+
class SagaOrchestrator {
|
|
6
|
+
constructor() {
|
|
7
|
+
this.sagas = new Map();
|
|
8
|
+
}
|
|
9
|
+
static getInstance() {
|
|
10
|
+
if (!SagaOrchestrator.instance) {
|
|
11
|
+
SagaOrchestrator.instance = new SagaOrchestrator();
|
|
12
|
+
}
|
|
13
|
+
return SagaOrchestrator.instance;
|
|
14
|
+
}
|
|
15
|
+
registerSaga(name, target) {
|
|
16
|
+
if (!this.sagas.has(name)) {
|
|
17
|
+
this.sagas.set(name, { name, steps: [], target });
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
registerStep(sagaName, methodName, options) {
|
|
21
|
+
const saga = this.sagas.get(sagaName);
|
|
22
|
+
if (!saga) {
|
|
23
|
+
throw new Error(`Saga '${sagaName}' not found.`);
|
|
24
|
+
}
|
|
25
|
+
saga.steps.push({
|
|
26
|
+
name: methodName,
|
|
27
|
+
methodName,
|
|
28
|
+
options,
|
|
29
|
+
order: options.order ?? saga.steps.length,
|
|
30
|
+
});
|
|
31
|
+
saga.steps.sort((a, b) => a.order - b.order);
|
|
32
|
+
}
|
|
33
|
+
async start(sagaName, initialData) {
|
|
34
|
+
const saga = this.sagas.get(sagaName);
|
|
35
|
+
if (!saga) {
|
|
36
|
+
throw new Error(`Saga '${sagaName}' not found`);
|
|
37
|
+
}
|
|
38
|
+
const context = {
|
|
39
|
+
id: Math.random().toString(36).substring(2),
|
|
40
|
+
name: sagaName,
|
|
41
|
+
status: interfaces_1.SagaStatus.STARTED,
|
|
42
|
+
data: initialData,
|
|
43
|
+
steps: [],
|
|
44
|
+
};
|
|
45
|
+
const executedSteps = [];
|
|
46
|
+
try {
|
|
47
|
+
for (const step of saga.steps) {
|
|
48
|
+
executedSteps.push(step);
|
|
49
|
+
try {
|
|
50
|
+
const result = await (saga.target[step.methodName] || saga.target.prototype[step.methodName]).call(saga.target, context.data);
|
|
51
|
+
context.steps.push({
|
|
52
|
+
stepName: step.name,
|
|
53
|
+
status: 'COMPLETED',
|
|
54
|
+
result,
|
|
55
|
+
timestamp: Date.now(),
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
context.error = error;
|
|
60
|
+
context.status = interfaces_1.SagaStatus.FAILED;
|
|
61
|
+
context.steps.push({
|
|
62
|
+
stepName: step.name,
|
|
63
|
+
status: 'FAILED',
|
|
64
|
+
error,
|
|
65
|
+
timestamp: Date.now(),
|
|
66
|
+
});
|
|
67
|
+
await this.compensate(saga, context, executedSteps.slice(0, -1).reverse());
|
|
68
|
+
break;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (context.status === interfaces_1.SagaStatus.STARTED) {
|
|
72
|
+
context.status = interfaces_1.SagaStatus.COMPLETED;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (criticalError) {
|
|
76
|
+
context.status = interfaces_1.SagaStatus.FAILED;
|
|
77
|
+
context.error = criticalError;
|
|
78
|
+
}
|
|
79
|
+
return context;
|
|
80
|
+
}
|
|
81
|
+
async compensate(saga, context, stepsToCompensate) {
|
|
82
|
+
context.status = interfaces_1.SagaStatus.COMPENSATING;
|
|
83
|
+
for (const step of stepsToCompensate) {
|
|
84
|
+
if (step.options.compensate) {
|
|
85
|
+
try {
|
|
86
|
+
await (saga.target[step.options.compensate] || saga.target.prototype[step.options.compensate]).call(saga.target, context.data);
|
|
87
|
+
const execution = context.steps.find((s) => s.stepName === step.name);
|
|
88
|
+
if (execution) {
|
|
89
|
+
execution.status = 'COMPENSATED';
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
catch (compensationError) {
|
|
93
|
+
console.error(`Compensation failed for step ${step.name}:`, compensationError);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
context.status = interfaces_1.SagaStatus.ABORTED;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
exports.SagaOrchestrator = SagaOrchestrator;
|
|
101
|
+
//# sourceMappingURL=orchestrator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../src/orchestrator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import 'reflect-metadata';
|
|
2
|
+
import { SagaOptions, SagaStepOptions } from './interfaces';
|
|
3
|
+
export declare function Saga(options: SagaOptions): (constructor: new (...args: unknown[]) => unknown) => void;
|
|
4
|
+
export declare function SagaStep(options?: SagaStepOptions): (target: object, propertyKey: string, _descriptor: PropertyDescriptor) => void;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Saga = Saga;
|
|
4
|
+
exports.SagaStep = SagaStep;
|
|
5
|
+
require("reflect-metadata");
|
|
6
|
+
const orchestrator_1 = require("./orchestrator");
|
|
7
|
+
function Saga(options) {
|
|
8
|
+
return function (constructor) {
|
|
9
|
+
const orchestrator = orchestrator_1.SagaOrchestrator.getInstance();
|
|
10
|
+
const steps = Reflect.getMetadata('hazeljs:saga:steps', constructor.prototype) || [];
|
|
11
|
+
orchestrator.registerSaga(options.name, constructor);
|
|
12
|
+
for (const step of steps) {
|
|
13
|
+
orchestrator.registerStep(options.name, step.propertyKey, step.options);
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function SagaStep(options = {}) {
|
|
18
|
+
return function (target, propertyKey, _descriptor) {
|
|
19
|
+
const steps = Reflect.getMetadata('hazeljs:saga:steps', target) || [];
|
|
20
|
+
steps.push({ propertyKey, options });
|
|
21
|
+
Reflect.defineMetadata('hazeljs:saga:steps', steps, target);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=saga.decorator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saga.decorator.js","sourceRoot":"","sources":["../src/saga.decorator.ts"],"names":[],"mappings":";;AAOA,oBAeC;AAKD,4BAWC;AAtCD,4BAA0B;AAE1B,iDAAkD;AAKlD,SAAgB,IAAI,CAAC,OAAoB;IACvC,OAAO,UAAU,WAAgD;QAC/D,MAAM,YAAY,GAAG,+BAAgB,CAAC,WAAW,EAAE,CAAC;QAGpD,MAAM,KAAK,GACT,OAAO,CAAC,WAAW,CAAC,oBAAoB,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAEzE,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAGrD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,YAAY,CAAC,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAKD,SAAgB,QAAQ,CAAC,UAA2B,EAAE;IACpD,OAAO,UAAU,MAAc,EAAE,WAAmB,EAAE,WAA+B;QAEnF,MAAM,KAAK,GACR,OAAO,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAG7C,IAAI,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QACrC,OAAO,CAAC,cAAc,CAAC,oBAAoB,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const saga_decorator_1 = require("./saga.decorator");
|
|
13
|
+
const orchestrator_1 = require("./orchestrator");
|
|
14
|
+
const interfaces_1 = require("./interfaces");
|
|
15
|
+
class InventoryService {
|
|
16
|
+
constructor() {
|
|
17
|
+
this.reserve = jest.fn().mockResolvedValue({ reserved: true });
|
|
18
|
+
this.release = jest.fn().mockResolvedValue({ released: true });
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
class PaymentService {
|
|
22
|
+
constructor() {
|
|
23
|
+
this.charge = jest.fn().mockResolvedValue({ charged: true });
|
|
24
|
+
this.refund = jest.fn().mockResolvedValue({ refunded: true });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
const inventory = new InventoryService();
|
|
28
|
+
const payment = new PaymentService();
|
|
29
|
+
let _OrderSaga = class _OrderSaga {
|
|
30
|
+
async reserveInventory(order) {
|
|
31
|
+
return await inventory.reserve(order);
|
|
32
|
+
}
|
|
33
|
+
async cancelInventory(order) {
|
|
34
|
+
return await inventory.release(order);
|
|
35
|
+
}
|
|
36
|
+
async processPayment(order) {
|
|
37
|
+
if (order.amount > 1000) {
|
|
38
|
+
throw new Error('Insufficient funds');
|
|
39
|
+
}
|
|
40
|
+
return await payment.charge(order);
|
|
41
|
+
}
|
|
42
|
+
async refundPayment(order) {
|
|
43
|
+
return await payment.refund(order);
|
|
44
|
+
}
|
|
45
|
+
async finalizeOrder(_order) {
|
|
46
|
+
return { status: 'finalized' };
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
__decorate([
|
|
50
|
+
(0, saga_decorator_1.SagaStep)({ compensate: 'cancelInventory' }),
|
|
51
|
+
__metadata("design:type", Function),
|
|
52
|
+
__metadata("design:paramtypes", [Object]),
|
|
53
|
+
__metadata("design:returntype", Promise)
|
|
54
|
+
], _OrderSaga.prototype, "reserveInventory", null);
|
|
55
|
+
__decorate([
|
|
56
|
+
(0, saga_decorator_1.SagaStep)({ compensate: 'refundPayment' }),
|
|
57
|
+
__metadata("design:type", Function),
|
|
58
|
+
__metadata("design:paramtypes", [Object]),
|
|
59
|
+
__metadata("design:returntype", Promise)
|
|
60
|
+
], _OrderSaga.prototype, "processPayment", null);
|
|
61
|
+
__decorate([
|
|
62
|
+
(0, saga_decorator_1.SagaStep)(),
|
|
63
|
+
__metadata("design:type", Function),
|
|
64
|
+
__metadata("design:paramtypes", [Object]),
|
|
65
|
+
__metadata("design:returntype", Promise)
|
|
66
|
+
], _OrderSaga.prototype, "finalizeOrder", null);
|
|
67
|
+
_OrderSaga = __decorate([
|
|
68
|
+
(0, saga_decorator_1.Saga)({ name: 'create-order' })
|
|
69
|
+
], _OrderSaga);
|
|
70
|
+
describe('SagaOrchestrator', () => {
|
|
71
|
+
let orchestrator;
|
|
72
|
+
beforeEach(() => {
|
|
73
|
+
orchestrator = orchestrator_1.SagaOrchestrator.getInstance();
|
|
74
|
+
jest.clearAllMocks();
|
|
75
|
+
});
|
|
76
|
+
it('should execute a successful saga', async () => {
|
|
77
|
+
const order = { id: 'ord-123', amount: 500 };
|
|
78
|
+
const context = await orchestrator.start('create-order', order);
|
|
79
|
+
expect(context.status).toBe(interfaces_1.SagaStatus.COMPLETED);
|
|
80
|
+
expect(context.steps.length).toBe(3);
|
|
81
|
+
expect(inventory.reserve).toHaveBeenCalledWith(order);
|
|
82
|
+
expect(payment.charge).toHaveBeenCalledWith(order);
|
|
83
|
+
expect(inventory.release).not.toHaveBeenCalled();
|
|
84
|
+
expect(payment.refund).not.toHaveBeenCalled();
|
|
85
|
+
});
|
|
86
|
+
it('should compensate when a step fails', async () => {
|
|
87
|
+
const order = { id: 'ord-999', amount: 5000 };
|
|
88
|
+
const context = await orchestrator.start('create-order', order);
|
|
89
|
+
expect(context.status).toBe(interfaces_1.SagaStatus.ABORTED);
|
|
90
|
+
expect(context.steps.some((s) => s.stepName === 'reserveInventory' && s.status === 'COMPENSATED')).toBe(true);
|
|
91
|
+
expect(context.steps.some((s) => s.stepName === 'processPayment' && s.status === 'FAILED')).toBe(true);
|
|
92
|
+
expect(inventory.reserve).toHaveBeenCalled();
|
|
93
|
+
expect(inventory.reserve).toHaveBeenCalled();
|
|
94
|
+
expect(inventory.release).toHaveBeenCalledWith(order);
|
|
95
|
+
expect(payment.refund).not.toHaveBeenCalled();
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
//# sourceMappingURL=saga.orchestrator.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"saga.orchestrator.test.js","sourceRoot":"","sources":["../src/saga.orchestrator.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"fileNames":["../../../node_modules/typescript/lib/lib.es5.d.ts","../../../node_modules/typescript/lib/lib.es2015.d.ts","../../../node_modules/typescript/lib/lib.es2016.d.ts","../../../node_modules/typescript/lib/lib.es2017.d.ts","../../../node_modules/typescript/lib/lib.es2018.d.ts","../../../node_modules/typescript/lib/lib.es2019.d.ts","../../../node_modules/typescript/lib/lib.es2020.d.ts","../../../node_modules/typescript/lib/lib.es2021.d.ts","../../../node_modules/typescript/lib/lib.dom.d.ts","../../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../../node_modules/typescript/lib/lib.dom.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.webworker.importscripts.d.ts","../../../node_modules/typescript/lib/lib.scripthost.d.ts","../../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../../node_modules/typescript/lib/lib.decorators.d.ts","../../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../../node_modules/typescript/lib/lib.es2021.full.d.ts","../../../node_modules/reflect-metadata/index.d.ts","../../../node_modules/eventemitter2/eventemitter2.d.ts","../../event-emitter/dist/event-emitter.types.d.ts","../../event-emitter/dist/event-emitter.service.d.ts","../../event-emitter/dist/event-emitter.module.d.ts","../../event-emitter/dist/on-event.decorator.d.ts","../../event-emitter/dist/index.d.ts","../src/choreography.ts","../src/choreography.test.ts","../src/interfaces.ts","../src/orchestrator.ts","../src/saga.decorator.ts","../src/index.ts","../src/saga.orchestrator.test.ts","../../../node_modules/@types/aws-lambda/common/api-gateway.d.ts","../../../node_modules/@types/aws-lambda/common/cloudfront.d.ts","../../../node_modules/@types/aws-lambda/handler.d.ts","../../../node_modules/@types/aws-lambda/trigger/alb.d.ts","../../../node_modules/@types/aws-lambda/trigger/api-gateway-proxy.d.ts","../../../node_modules/@types/aws-lambda/trigger/api-gateway-authorizer.d.ts","../../../node_modules/@types/aws-lambda/trigger/appsync-resolver.d.ts","../../../node_modules/@types/aws-lambda/trigger/autoscaling.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudformation-custom-resource.d.ts","../../../node_modules/@types/aws-lambda/trigger/cdk-custom-resource.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudfront-request.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudfront-response.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudwatch-alarm.d.ts","../../../node_modules/@types/aws-lambda/trigger/eventbridge.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudwatch-events.d.ts","../../../node_modules/@types/aws-lambda/trigger/cloudwatch-logs.d.ts","../../../node_modules/@types/aws-lambda/trigger/codebuild-cloudwatch-state.d.ts","../../../node_modules/@types/aws-lambda/trigger/codecommit.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-action.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-pipeline.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch-stage.d.ts","../../../node_modules/@types/aws-lambda/trigger/codepipeline-cloudwatch.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/_common.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/create-auth-challenge.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/custom-email-sender.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/custom-message.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/custom-sms-sender.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/define-auth-challenge.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/post-authentication.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/post-confirmation.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-authentication.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-signup.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-token-generation.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-token-generation-v2.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/pre-token-generation-v3.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/user-migration.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/verify-auth-challenge-response.d.ts","../../../node_modules/@types/aws-lambda/trigger/cognito-user-pool-trigger/index.d.ts","../../../node_modules/@types/aws-lambda/trigger/connect-contact-flow.d.ts","../../../node_modules/@types/aws-lambda/trigger/dynamodb-stream.d.ts","../../../node_modules/@types/aws-lambda/trigger/guard-duty-event-notification.d.ts","../../../node_modules/@types/aws-lambda/trigger/iot.d.ts","../../../node_modules/@types/aws-lambda/trigger/iot-authorizer.d.ts","../../../node_modules/@types/aws-lambda/trigger/kinesis-firehose-transformation.d.ts","../../../node_modules/@types/aws-lambda/trigger/kinesis-stream.d.ts","../../../node_modules/@types/aws-lambda/trigger/lambda-function-url.d.ts","../../../node_modules/@types/aws-lambda/trigger/lex.d.ts","../../../node_modules/@types/aws-lambda/trigger/lex-v2.d.ts","../../../node_modules/@types/aws-lambda/trigger/amplify-resolver.d.ts","../../../node_modules/@types/aws-lambda/trigger/msk.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3-batch.d.ts","../../../node_modules/@types/aws-lambda/trigger/s3-event-notification.d.ts","../../../node_modules/@types/aws-lambda/trigger/secretsmanager.d.ts","../../../node_modules/@types/aws-lambda/trigger/self-managed-kafka.d.ts","../../../node_modules/@types/aws-lambda/trigger/ses.d.ts","../../../node_modules/@types/aws-lambda/trigger/sns.d.ts","../../../node_modules/@types/aws-lambda/trigger/sqs.d.ts","../../../node_modules/@types/aws-lambda/trigger/transfer-family-authorizer.d.ts","../../../node_modules/@types/aws-lambda/index.d.ts","../../../node_modules/@babel/types/lib/index.d.ts","../../../node_modules/@types/babel__generator/index.d.ts","../../../node_modules/@babel/parser/typings/babel-parser.d.ts","../../../node_modules/@types/babel__template/index.d.ts","../../../node_modules/@types/babel__traverse/index.d.ts","../../../node_modules/@types/babel__core/index.d.ts","../../../node_modules/@types/bcryptjs/index.d.ts","../../../node_modules/@types/node/compatibility/disposable.d.ts","../../../node_modules/@types/node/compatibility/indexable.d.ts","../../../node_modules/@types/node/compatibility/iterators.d.ts","../../../node_modules/@types/node/compatibility/index.d.ts","../../../node_modules/@types/node/globals.typedarray.d.ts","../../../node_modules/@types/node/buffer.buffer.d.ts","../../../node_modules/@types/node/globals.d.ts","../../../node_modules/@types/node/web-globals/abortcontroller.d.ts","../../../node_modules/@types/node/web-globals/domexception.d.ts","../../../node_modules/@types/node/web-globals/events.d.ts","../../../node_modules/buffer/index.d.ts","../../../node_modules/undici-types/header.d.ts","../../../node_modules/undici-types/readable.d.ts","../../../node_modules/undici-types/file.d.ts","../../../node_modules/undici-types/fetch.d.ts","../../../node_modules/undici-types/formdata.d.ts","../../../node_modules/undici-types/connector.d.ts","../../../node_modules/undici-types/client.d.ts","../../../node_modules/undici-types/errors.d.ts","../../../node_modules/undici-types/dispatcher.d.ts","../../../node_modules/undici-types/global-dispatcher.d.ts","../../../node_modules/undici-types/global-origin.d.ts","../../../node_modules/undici-types/pool-stats.d.ts","../../../node_modules/undici-types/pool.d.ts","../../../node_modules/undici-types/handlers.d.ts","../../../node_modules/undici-types/balanced-pool.d.ts","../../../node_modules/undici-types/agent.d.ts","../../../node_modules/undici-types/mock-interceptor.d.ts","../../../node_modules/undici-types/mock-agent.d.ts","../../../node_modules/undici-types/mock-client.d.ts","../../../node_modules/undici-types/mock-pool.d.ts","../../../node_modules/undici-types/mock-errors.d.ts","../../../node_modules/undici-types/proxy-agent.d.ts","../../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../../node_modules/undici-types/retry-handler.d.ts","../../../node_modules/undici-types/retry-agent.d.ts","../../../node_modules/undici-types/api.d.ts","../../../node_modules/undici-types/interceptors.d.ts","../../../node_modules/undici-types/util.d.ts","../../../node_modules/undici-types/cookies.d.ts","../../../node_modules/undici-types/patch.d.ts","../../../node_modules/undici-types/websocket.d.ts","../../../node_modules/undici-types/eventsource.d.ts","../../../node_modules/undici-types/filereader.d.ts","../../../node_modules/undici-types/diagnostics-channel.d.ts","../../../node_modules/undici-types/content-type.d.ts","../../../node_modules/undici-types/cache.d.ts","../../../node_modules/undici-types/index.d.ts","../../../node_modules/@types/node/web-globals/fetch.d.ts","../../../node_modules/@types/node/assert.d.ts","../../../node_modules/@types/node/assert/strict.d.ts","../../../node_modules/@types/node/async_hooks.d.ts","../../../node_modules/@types/node/buffer.d.ts","../../../node_modules/@types/node/child_process.d.ts","../../../node_modules/@types/node/cluster.d.ts","../../../node_modules/@types/node/console.d.ts","../../../node_modules/@types/node/constants.d.ts","../../../node_modules/@types/node/crypto.d.ts","../../../node_modules/@types/node/dgram.d.ts","../../../node_modules/@types/node/diagnostics_channel.d.ts","../../../node_modules/@types/node/dns.d.ts","../../../node_modules/@types/node/dns/promises.d.ts","../../../node_modules/@types/node/domain.d.ts","../../../node_modules/@types/node/events.d.ts","../../../node_modules/@types/node/fs.d.ts","../../../node_modules/@types/node/fs/promises.d.ts","../../../node_modules/@types/node/http.d.ts","../../../node_modules/@types/node/http2.d.ts","../../../node_modules/@types/node/https.d.ts","../../../node_modules/@types/node/inspector.generated.d.ts","../../../node_modules/@types/node/module.d.ts","../../../node_modules/@types/node/net.d.ts","../../../node_modules/@types/node/os.d.ts","../../../node_modules/@types/node/path.d.ts","../../../node_modules/@types/node/perf_hooks.d.ts","../../../node_modules/@types/node/process.d.ts","../../../node_modules/@types/node/punycode.d.ts","../../../node_modules/@types/node/querystring.d.ts","../../../node_modules/@types/node/readline.d.ts","../../../node_modules/@types/node/readline/promises.d.ts","../../../node_modules/@types/node/repl.d.ts","../../../node_modules/@types/node/sea.d.ts","../../../node_modules/@types/node/stream.d.ts","../../../node_modules/@types/node/stream/promises.d.ts","../../../node_modules/@types/node/stream/consumers.d.ts","../../../node_modules/@types/node/stream/web.d.ts","../../../node_modules/@types/node/string_decoder.d.ts","../../../node_modules/@types/node/test.d.ts","../../../node_modules/@types/node/timers.d.ts","../../../node_modules/@types/node/timers/promises.d.ts","../../../node_modules/@types/node/tls.d.ts","../../../node_modules/@types/node/trace_events.d.ts","../../../node_modules/@types/node/tty.d.ts","../../../node_modules/@types/node/url.d.ts","../../../node_modules/@types/node/util.d.ts","../../../node_modules/@types/node/v8.d.ts","../../../node_modules/@types/node/vm.d.ts","../../../node_modules/@types/node/wasi.d.ts","../../../node_modules/@types/node/worker_threads.d.ts","../../../node_modules/@types/node/zlib.d.ts","../../../node_modules/@types/node/index.d.ts","../../../node_modules/@types/connect/index.d.ts","../../../node_modules/@types/body-parser/index.d.ts","../../../node_modules/@types/chalk/index.d.ts","../../../node_modules/@types/cookiejar/index.d.ts","../../../node_modules/@types/dotenv/index.d.ts","../../../node_modules/@types/estree/index.d.ts","../../../node_modules/@types/send/index.d.ts","../../../node_modules/@types/qs/index.d.ts","../../../node_modules/@types/range-parser/index.d.ts","../../../node_modules/@types/express-serve-static-core/index.d.ts","../../../node_modules/@types/http-errors/index.d.ts","../../../node_modules/@types/serve-static/index.d.ts","../../../node_modules/@types/express/index.d.ts","../../../node_modules/@types/graceful-fs/index.d.ts","../../../node_modules/rxjs/dist/types/internal/Subscription.d.ts","../../../node_modules/rxjs/dist/types/internal/Subscriber.d.ts","../../../node_modules/rxjs/dist/types/internal/Operator.d.ts","../../../node_modules/rxjs/dist/types/internal/Observable.d.ts","../../../node_modules/rxjs/dist/types/internal/types.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/audit.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/auditTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/buffer.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferCount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferToggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/bufferWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/catchError.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineLatestAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineLatest.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/combineLatestWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatMapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/concatWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/connect.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/count.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debounce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/debounceTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/defaultIfEmpty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/delayWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/dematerialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinct.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctUntilChanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/distinctUntilKeyChanged.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/elementAt.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/endWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/every.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaust.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/exhaustMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/expand.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/filter.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/finalize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/find.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/findIndex.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/first.d.ts","../../../node_modules/rxjs/dist/types/internal/Subject.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/groupBy.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/ignoreElements.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/isEmpty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/last.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/map.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/Notification.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/materialize.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/max.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/flatMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeMapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeScan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/mergeWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/min.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/ConnectableObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/multicast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/observeOn.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/onErrorResumeNextWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pairwise.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/pluck.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publish.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishBehavior.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishLast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/publishReplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/race.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/raceWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/reduce.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeat.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/repeatWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retry.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/retryWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/refCount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sample.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sampleTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/scan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/sequenceEqual.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/share.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/shareReplay.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/single.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipLast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipUntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/skipWhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/startWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/subscribeOn.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchMap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchMapTo.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/switchScan.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/take.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeLast.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeUntil.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/takeWhile.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/tap.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throttleTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/throwIfEmpty.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeInterval.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeout.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timeoutWith.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/timestamp.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/toArray.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/window.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowCount.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowTime.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowToggle.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/windowWhen.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/withLatestFrom.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipAll.d.ts","../../../node_modules/rxjs/dist/types/internal/operators/zipWith.d.ts","../../../node_modules/rxjs/dist/types/operators/index.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/Action.d.ts","../../../node_modules/rxjs/dist/types/internal/Scheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/TestMessage.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/SubscriptionLog.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/SubscriptionLoggable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/ColdObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/HotObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AsyncScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/timerHandle.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AsyncAction.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/VirtualTimeScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/testing/TestScheduler.d.ts","../../../node_modules/rxjs/dist/types/testing/index.d.ts","../../../node_modules/rxjs/dist/types/internal/symbol/observable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/dom/animationFrames.d.ts","../../../node_modules/rxjs/dist/types/internal/BehaviorSubject.d.ts","../../../node_modules/rxjs/dist/types/internal/ReplaySubject.d.ts","../../../node_modules/rxjs/dist/types/internal/AsyncSubject.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AsapScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/asap.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/async.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/QueueScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/queue.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/AnimationFrameScheduler.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduler/animationFrame.d.ts","../../../node_modules/rxjs/dist/types/internal/util/identity.d.ts","../../../node_modules/rxjs/dist/types/internal/util/pipe.d.ts","../../../node_modules/rxjs/dist/types/internal/util/noop.d.ts","../../../node_modules/rxjs/dist/types/internal/util/isObservable.d.ts","../../../node_modules/rxjs/dist/types/internal/lastValueFrom.d.ts","../../../node_modules/rxjs/dist/types/internal/firstValueFrom.d.ts","../../../node_modules/rxjs/dist/types/internal/util/ArgumentOutOfRangeError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/EmptyError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/NotFoundError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/ObjectUnsubscribedError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/SequenceError.d.ts","../../../node_modules/rxjs/dist/types/internal/util/UnsubscriptionError.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindCallback.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/bindNodeCallback.d.ts","../../../node_modules/rxjs/dist/types/internal/AnyCatcher.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/combineLatest.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/concat.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/connectable.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/defer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/empty.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/forkJoin.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/from.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromEvent.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/fromEventPattern.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/generate.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/iif.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/interval.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/merge.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/never.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/of.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/onErrorResumeNext.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/pairs.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/partition.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/race.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/range.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/throwError.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/timer.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/using.d.ts","../../../node_modules/rxjs/dist/types/internal/observable/zip.d.ts","../../../node_modules/rxjs/dist/types/internal/scheduled/scheduled.d.ts","../../../node_modules/rxjs/dist/types/internal/config.d.ts","../../../node_modules/rxjs/dist/types/index.d.ts","../../../node_modules/@types/through/index.d.ts","../../../node_modules/@types/inquirer/lib/objects/choice.d.ts","../../../node_modules/@types/inquirer/lib/objects/separator.d.ts","../../../node_modules/@types/inquirer/lib/objects/choices.d.ts","../../../node_modules/@types/inquirer/lib/utils/screen-manager.d.ts","../../../node_modules/@types/inquirer/lib/prompts/base.d.ts","../../../node_modules/@types/inquirer/lib/utils/paginator.d.ts","../../../node_modules/@types/inquirer/lib/prompts/checkbox.d.ts","../../../node_modules/@types/inquirer/lib/prompts/confirm.d.ts","../../../node_modules/@types/inquirer/lib/prompts/editor.d.ts","../../../node_modules/@types/inquirer/lib/prompts/expand.d.ts","../../../node_modules/@types/inquirer/lib/prompts/input.d.ts","../../../node_modules/@types/inquirer/lib/prompts/list.d.ts","../../../node_modules/@types/inquirer/lib/prompts/number.d.ts","../../../node_modules/@types/inquirer/lib/prompts/password.d.ts","../../../node_modules/@types/inquirer/lib/prompts/rawlist.d.ts","../../../node_modules/@types/inquirer/lib/ui/baseUI.d.ts","../../../node_modules/@types/inquirer/lib/ui/bottom-bar.d.ts","../../../node_modules/@types/inquirer/lib/ui/prompt.d.ts","../../../node_modules/@types/inquirer/lib/utils/events.d.ts","../../../node_modules/@types/inquirer/lib/utils/readline.d.ts","../../../node_modules/@types/inquirer/index.d.ts","../../../node_modules/ioredis/built/types.d.ts","../../../node_modules/ioredis/built/Command.d.ts","../../../node_modules/ioredis/built/ScanStream.d.ts","../../../node_modules/ioredis/built/utils/RedisCommander.d.ts","../../../node_modules/ioredis/built/transaction.d.ts","../../../node_modules/ioredis/built/utils/Commander.d.ts","../../../node_modules/ioredis/built/connectors/AbstractConnector.d.ts","../../../node_modules/ioredis/built/connectors/ConnectorConstructor.d.ts","../../../node_modules/ioredis/built/connectors/SentinelConnector/types.d.ts","../../../node_modules/ioredis/built/connectors/SentinelConnector/SentinelIterator.d.ts","../../../node_modules/ioredis/built/connectors/SentinelConnector/index.d.ts","../../../node_modules/ioredis/built/connectors/StandaloneConnector.d.ts","../../../node_modules/ioredis/built/redis/RedisOptions.d.ts","../../../node_modules/ioredis/built/cluster/util.d.ts","../../../node_modules/ioredis/built/cluster/ClusterOptions.d.ts","../../../node_modules/ioredis/built/cluster/index.d.ts","../../../node_modules/denque/index.d.ts","../../../node_modules/ioredis/built/SubscriptionSet.d.ts","../../../node_modules/ioredis/built/DataHandler.d.ts","../../../node_modules/ioredis/built/Redis.d.ts","../../../node_modules/ioredis/built/Pipeline.d.ts","../../../node_modules/ioredis/built/index.d.ts","../../../node_modules/@types/ioredis-mock/index.d.ts","../../../node_modules/@types/istanbul-lib-coverage/index.d.ts","../../../node_modules/@types/istanbul-lib-report/index.d.ts","../../../node_modules/@types/istanbul-reports/index.d.ts","../../../node_modules/@jest/expect-utils/build/index.d.ts","../../../node_modules/chalk/index.d.ts","../../../node_modules/@sinclair/typebox/typebox.d.ts","../../../node_modules/@jest/schemas/build/index.d.ts","../../../node_modules/pretty-format/build/index.d.ts","../../../node_modules/jest-diff/build/index.d.ts","../../../node_modules/jest-matcher-utils/build/index.d.ts","../../../node_modules/expect/build/index.d.ts","../../../node_modules/@types/jest/index.d.ts","../../../node_modules/@types/ms/index.d.ts","../../../node_modules/@types/jsonwebtoken/index.d.ts","../../../node_modules/@types/methods/index.d.ts","../../../node_modules/@types/minimatch/index.d.ts","../../../node_modules/@types/minimist/index.d.ts","../../../node_modules/@types/mustache/index.d.ts","../../../node_modules/@types/node-cron/index.d.ts","../../../node_modules/form-data/index.d.ts","../../../node_modules/@types/node-fetch/externals.d.ts","../../../node_modules/@types/node-fetch/index.d.ts","../../../node_modules/@types/normalize-package-data/index.d.ts","../../../node_modules/@types/pdf-parse/index.d.ts","../../../node_modules/@types/stack-utils/index.d.ts","../../../node_modules/@types/strip-bom/index.d.ts","../../../node_modules/@types/strip-json-comments/index.d.ts","../../../node_modules/@types/superagent/lib/agent-base.d.ts","../../../node_modules/@types/superagent/lib/node/response.d.ts","../../../node_modules/@types/superagent/types.d.ts","../../../node_modules/@types/superagent/lib/node/agent.d.ts","../../../node_modules/@types/superagent/lib/request-base.d.ts","../../../node_modules/@types/superagent/lib/node/http2wrapper.d.ts","../../../node_modules/@types/superagent/lib/node/index.d.ts","../../../node_modules/@types/superagent/index.d.ts","../../../node_modules/@types/supertest/types.d.ts","../../../node_modules/@types/supertest/lib/agent.d.ts","../../../node_modules/@types/supertest/lib/test.d.ts","../../../node_modules/@types/supertest/index.d.ts","../../../node_modules/@types/swagger-ui-express/index.d.ts","../../../node_modules/@types/triple-beam/index.d.ts","../../../node_modules/@types/validator/lib/isBoolean.d.ts","../../../node_modules/@types/validator/lib/isEmail.d.ts","../../../node_modules/@types/validator/lib/isFQDN.d.ts","../../../node_modules/@types/validator/lib/isIBAN.d.ts","../../../node_modules/@types/validator/lib/isISO31661Alpha2.d.ts","../../../node_modules/@types/validator/lib/isISO4217.d.ts","../../../node_modules/@types/validator/lib/isISO6391.d.ts","../../../node_modules/@types/validator/lib/isTaxID.d.ts","../../../node_modules/@types/validator/lib/isURL.d.ts","../../../node_modules/@types/validator/index.d.ts","../../../node_modules/@types/ws/index.d.ts","../../../node_modules/@types/yargs-parser/index.d.ts","../../../node_modules/@types/yargs/index.d.ts"],"fileIdsList":[[132,144,191],[144,191],[144,191,493],[144,191,221],[71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,144,191],[73,144,191],[73,77,144,191],[71,73,75,144,191],[71,73,144,191],[73,79,144,191],[72,73,144,191],[84,144,191],[73,90,91,92,144,191],[73,94,144,191],[73,95,96,97,98,99,100,101,102,103,104,105,106,107,108,144,191],[73,76,144,191],[73,75,144,191],[73,84,144,191],[132,133,134,135,136,144,191],[132,134,144,191],[144,191,205,239,240],[144,191,205,239],[144,191,239],[144,191,202,205,239,246,247,248],[144,191,241,249,251],[144,191,203,239],[144,191,217,442,443,444,445,446,447,448,449,450,451,452,453,454,455,456,457,458,459,460,461,462,463],[144,191,464],[144,191,444,445,464],[144,191,217,442,447,464],[144,191,217,448,449,464],[144,191,217,448,464],[144,191,217,442,448,464],[144,191,217,454,464],[144,191,217,464],[144,191,217,442],[144,191,447],[144,191,217],[144,191,486],[144,191,488],[144,191,489],[144,191,495,498],[144,191,196,239,500],[144,191,202],[144,191,205,232,239,507,508],[144,188,191],[144,190,191],[191],[144,191,196,224],[144,191,192,197,202,210,221,232],[144,191,192,193,202,210],[139,140,141,144,191],[144,191,194,233],[144,191,195,196,203,211],[144,191,196,221,229],[144,191,197,199,202,210],[144,190,191,198],[144,191,199,200],[144,191,201,202],[144,190,191,202],[144,191,202,203,204,221,232],[144,191,202,203,204,217,221,224],[144,191,199,202,205,210,221,232],[144,191,202,203,205,206,210,221,229,232],[144,191,205,207,221,229,232],[142,143,144,145,146,147,148,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238],[144,191,202,208],[144,191,209,232,237],[144,191,199,202,210,221],[144,191,211],[144,191,212],[144,190,191,213],[144,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238],[144,191,215],[144,191,216],[144,191,202,217,218],[144,191,217,219,233,235],[144,191,202,221,222,224],[144,191,223,224],[144,191,221,222],[144,191,224],[144,191,225],[144,188,191,221,226],[144,191,202,227,228],[144,191,227,228],[144,191,196,210,221,229],[144,191,230],[144,191,210,231],[144,191,205,216,232],[144,191,196,233],[144,191,221,234],[144,191,209,235],[144,191,236],[144,186,191],[144,186,191,202,204,213,221,224,232,235,237],[144,191,221,238],[144,191,203,221,239],[144,191,205,239,250],[144,191,521],[144,191,243,502,515,517,522],[144,191,206,210,221,229,239],[144,191,203,205,206,207,210,221,502,507,516,517,518,519,520],[144,191,205,221,521],[144,191,203,516,517],[144,191,232,516],[144,191,522,523,524,525],[144,191,522,523,526],[144,191,522,523],[144,191,205,206,210,502,522],[144,191,251,252],[144,191,221,239],[144,191,529,530,531,532,533,534,535,536,537],[144,191,202,205,207,210,221,229,232,238,239],[144,191,540],[144,191,491,497],[144,191,205,221,239],[144,191,239,465],[144,191,202,239,465,481,482],[144,191,466,470,480,484],[144,191,202,239,465,466,467,469,470,477,480,481,483],[144,191,466],[144,191,199,239,470,477,478],[144,191,202,239,465,466,467,469,470,478,479,484],[144,191,199,239],[144,191,465],[144,191,471],[144,191,473],[144,191,202,229,239,465,471,473,474,479],[144,191,477],[144,191,210,229,239,465,471],[144,191,465,466,467,468,471,475,476,477,478,479,480,484,485],[144,191,470,472,475,476],[144,191,468],[144,191,210,229,239],[144,191,465,466,468],[144,191,495],[144,191,492,496],[144,191,494],[144,191,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,270,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,310,311,312,313,314,315,316,317,318,319,320,321,323,324,325,326,327,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,373,374,375,377,386,388,389,390,391,392,393,395,396,398,400,401,402,403,404,405,406,407,408,409,410,411,412,413,414,416,417,418,419,420,421,422,423,424,425,426,427,428,429,430,431,432,433,434,435,436,437,438,439,440,441],[144,191,299],[144,191,257,258],[144,191,254,255,256,258],[144,191,255,258],[144,191,258,299],[144,191,254,258,376],[144,191,256,257,258],[144,191,254,258],[144,191,258],[144,191,257],[144,191,254,257,299],[144,191,255,257,258,415],[144,191,257,258,415],[144,191,257,423],[144,191,255,257,258],[144,191,267],[144,191,290],[144,191,311],[144,191,257,258,299],[144,191,258,306],[144,191,257,258,299,317],[144,191,257,258,317],[144,191,258,358],[144,191,254,258,377],[144,191,383,385],[144,191,254,258,376,383,384],[144,191,376,377,385],[144,191,383],[144,191,254,258,383,384,385],[144,191,399],[144,191,394],[144,191,397],[144,191,255,257,377,378,379,380],[144,191,299,377,378,379,380],[144,191,377,379],[144,191,257,378,379,381,382,386],[144,191,254,257],[144,191,258,401],[144,191,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,300,301,302,303,304,305,307,308,309,310,311,312,313,314,315,316,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374],[144,191,387],[144,158,162,191,232],[144,158,191,221,232],[144,153,191],[144,155,158,191,229,232],[144,191,210,229],[144,153,191,239],[144,155,158,191,210,232],[144,150,151,154,157,191,202,221,232],[144,158,165,191],[144,150,156,191],[144,158,179,180,191],[144,154,158,191,224,232,239],[144,179,191,239],[144,152,153,191,239],[144,158,191],[144,152,153,154,155,156,157,158,159,160,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,180,181,182,183,184,185,191],[144,158,173,191],[144,158,165,166,191],[144,156,158,166,167,191],[144,157,191],[144,150,153,158,191],[144,158,162,166,167,191],[144,162,191],[144,156,158,161,191,232],[144,150,155,158,165,191],[144,153,158,179,191,237,239],[59,60,144,191],[58,59,144,191],[59,60,61,62,144,191],[57,59,144,191],[63,64,144,191],[57,63,144,191],[64,66,67,68,144,191],[66,144,191],[57,66,67,144,191],[66,67,68,144,191]],"fileInfos":[{"version":"c430d44666289dae81f30fa7b2edebf186ecc91a2d4c71266ea6ae76388792e1","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"080941d9f9ff9307f7e27a83bcd888b7c8270716c39af943532438932ec1d0b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2e80ee7a49e8ac312cc11b77f1475804bee36b3b2bc896bead8b6e1266befb43","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7a3c8b952931daebdfc7a2897c53c0a1c73624593fa070e46bd537e64dcd20a","affectsGlobalScope":true,"impliedFormat":1},{"version":"80e18897e5884b6723488d4f5652167e7bb5024f946743134ecc4aa4ee731f89","affectsGlobalScope":true,"impliedFormat":1},{"version":"cd034f499c6cdca722b60c04b5b1b78e058487a7085a8e0d6fb50809947ee573","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"0559b1f683ac7505ae451f9a96ce4c3c92bdc71411651ca6ddb0e88baaaad6a3","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb0f136d372979348d59b3f5020b4cdb81b5504192b1cacff5d1fbba29378aa1","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"a680117f487a4d2f30ea46f1b4b7f58bef1480456e18ba53ee85c2746eeca012","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"d6d7ae4d1f1f3772e2a3cde568ed08991a8ae34a080ff1151af28b7f798e22ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"4a66df3ab5de5cfcda11538cffddd67ff6a174e003788e270914c1e0248483cf","impliedFormat":1},{"version":"8d6d51a5118d000ed3bfe6e1dd1335bebfff3fef23cd2af2f84a24d30f90cc90","affectsGlobalScope":true,"impliedFormat":1},{"version":"452234c0b8169349b658a4b5e2b271608879b3914fcc325735ed21b9cb88d58d","impliedFormat":1},"1988f02c8139e28fa8119db4cc91e31611446d4fa947435b00db17a6c01faa2d","71cddeb3ee6e9976a6bb3534a70afe2456f6370e68792053c4db5f8b1eca6047","bcc8213ad95e595fd304b7107c918234b0836047066191b6d5e1f85912c55c85","928c81a5a3bd6740d50ae93c348b55f28401f50fa53a19ff6c3fcb6722fdd0a6","261c7a3a6de0a94f67cfdf9861eb28d910ee112343afba57217e845b64f23ba8",{"version":"48731e47cf63e0402ee8dc2ee2d4379ceae7767fd52fe81dd21b488111438a6a","signature":"ba6cb55d29c98309976b642fe59dec0642c192be765850ffd57ccf9e165bac68"},{"version":"52a9f842270281bafc17bf3ba0f22463c99fcb0ba9dffe40bc1d7aabc99af10f","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"22b2f2f29081d8ede43975aaee63389e44a4a536dec7051259bd5e92133cb3cd","signature":"896f3a5a326808399a2c6bb9bc88c27b736cc6ef7c5cff22b2d8589cb7c90a37"},{"version":"13f379e40c3470b78addd911a55b0d408c320e23b2c0a3d6408b6554501800f6","signature":"698e1018a819c2aa9d270509e84b3a3fa20c754bbef6fd531dedeeca944da26a"},{"version":"4b5583c7c682761c70a2ab46ec4206c48924d80253508429bc65a0a25c6c4343","signature":"998d3e9d4de4c36525696818b4f638488f3d4309aedeb5569422351515ec5c35"},"880eb9bcdac62ad3201295210d476937dbae6cc3a47c6382a310b6377701f7dd",{"version":"4db8b4186986579f7cf7c1e2d3587d02d39f1091ffbcaf551ae49d1f84c4d6fc","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"2acc7c310e7e07127e510980c07faad6ad6b5de20c403d79e69b889e77bf96f5","impliedFormat":1},{"version":"01dea450d742aa55ce9b8ab8877bbda8eb73bf88609e440cc34f6f59f35080db","impliedFormat":1},{"version":"5f162f8618827ee9403306391d869022eec41a5e180ec55f3a9fe88f2a73e273","affectsGlobalScope":true,"impliedFormat":1},{"version":"b788ef070e70003842cbd03c3e04f87d46b67a47b71e9e7d8713fd8c58c5f5ec","impliedFormat":1},{"version":"583d365dc19f813f1e2767771e844c7c4ea9ab1a01e85e0119f2e083488379c2","impliedFormat":1},{"version":"b82fc3869c625b828dd3feac4b5ebf335ed007d586dc16176602db73bc4e7c65","impliedFormat":1},{"version":"05e30605274c26f405c411eebed776fa2102418c05beec885e5c9bd0fa716f32","impliedFormat":1},{"version":"58c7f7820dc027a539b0437be7e1f8bdf663f91fbc9e861d80bb9368a38d4a94","impliedFormat":1},{"version":"d67d6b779d0dece9450d7a4170d3ee58ea7fcae0af2ab5e1d0ad711474b4f7f5","impliedFormat":1},{"version":"1066c11177d085898185548e1b38ed15fcea50061508f7c313ab8bec35d46b95","impliedFormat":1},{"version":"bbc49fd9dc6ee162ba3d270c834398e0c1d44e657ac4edfa55ac837902b7e0da","impliedFormat":1},{"version":"ada7b3ac06dabcd6a410bd2bc416d1e50e7a0dcd8ce36201689759b061f7341e","impliedFormat":1},{"version":"f11eb1fb4e569b293a7cae9e7cdae57e13efc12b0e4510e927868c93ec055e82","impliedFormat":1},{"version":"715682cddbefe50e27e5e7896acf4af0ffc48f9e18f64b0a0c2f8041e3ea869b","impliedFormat":1},{"version":"6d2f5a67bfe2034aa77b38f10977a57e762fd64e53c14372bcc5f1d3175ca322","impliedFormat":1},{"version":"4ff4add7b8cf26df217f2c883292778205847aefb0fd2aee64f5a229d0ffd399","impliedFormat":1},{"version":"33859aa36b264dd91bef77c279a5a0d259c6b63684d0c6ad538e515c69a489ec","impliedFormat":1},{"version":"33fa69f400b34c83e541dd5f4474f1c6fb2788614a1790c6c7b346b5c7eaa7dd","impliedFormat":1},{"version":"be213d7cbc3e5982b22df412cf223c2ac9d841c75014eae4c263761cd9d5e4c0","impliedFormat":1},{"version":"66451f9540fdf68a5fd93898257ccd7428cf7e49029f2e71b8ce70c8d927b87a","impliedFormat":1},{"version":"8a051690018330af516fd9ea42b460d603f0839f44d3946ebb4b551fe3bc7703","impliedFormat":1},{"version":"301fb04ef91ae1340bec1ebc3acdd223861c887a4a1127303d8eef7638b2d893","impliedFormat":1},{"version":"06236dfec90a14b0c3db8249831069ea3f90b004d73d496a559a4466e5a344a4","impliedFormat":1},{"version":"fc26991e51514bfc82e0f20c25132268b1d41e8928552dbaed7cc6f3d08fc3ac","impliedFormat":1},{"version":"5d82bb58dec5014c02aaeb3da465d34f4b7d5c724afea07559e3dfca6d8da5bc","impliedFormat":1},{"version":"8f61ab69e33b153d9db6158c84db3e7f4e9cc7729220684e35e646f46f420bb5","impliedFormat":1},{"version":"b2818e8d05d6e6ad0f1899abf90a70309240a15153ea4b8d5e0c151e117b7338","impliedFormat":1},{"version":"1c708c15bb96473ce8ec2a946bd024ecded341169a0b84846931f979172244ba","impliedFormat":1},{"version":"ed0f5e1f45dc7c3f40356e0a855e8594aa57c125a5d8dfeef118e0a3024f98ff","impliedFormat":1},{"version":"dc187f457333356ddc1ab8ec7833cd836f85e0bbcade61290dc55116244867cb","impliedFormat":1},{"version":"25525e173de74143042e824eaa786fa18c6b19e9dafb64da71a5faacc5bd2a5c","impliedFormat":1},{"version":"7a3d649f2de01db4b316cf4a0ce5d96832ee83641f1dc84d3e9981accf29c3a1","impliedFormat":1},{"version":"26e4260ee185d4af23484d8c11ef422807fb8f51d33aa68d83fab72eb568f228","impliedFormat":1},{"version":"c4d52d78e3fb4f66735d81663e351cf56037270ed7d00a9b787e35c1fc7183ce","impliedFormat":1},{"version":"864a5505d0e9db2e1837dce8d8aae8b7eeaa5450754d8a1967bf2843124cc262","impliedFormat":1},{"version":"c132dd6e7e719abe5a9882eca297056d233099f0f928c2bb700f574872223697","impliedFormat":1},{"version":"2d045f00292ac7a14ead30d1f83269f1f0ad3e75d1f8e5a245ab87159523cf98","impliedFormat":1},{"version":"54bcb32ab0c7c72b61becd622499a0ae1c309af381801a30878667e21cba85bb","impliedFormat":1},{"version":"106f1d8b7ac71ddc5e1aa2463c9a04d617e3874a992841fb83c20bba9329ed26","impliedFormat":1},{"version":"deb57e949dbec3f2165561935ac172a51e31dc32cc844b9d208556a07e6b14a1","impliedFormat":1},{"version":"4e9d6a8974e6853faccfded1e5419e241620814b1f4e4ab2b937d226e5027df0","impliedFormat":1},{"version":"89bcaf21b0531640604ca9e0796f54a6e1b4e2d43c07422ffa1e3d2e1bb0e456","impliedFormat":1},{"version":"66738976a7aa2d5fb2770a1b689f8bc643af958f836b7bc08e412d4092de3ab9","impliedFormat":1},{"version":"35a0eac48984d20f6da39947cf81cd71e0818feefc03dcb28b4ac7b87a636cfd","impliedFormat":1},{"version":"f6c226d8222108b3485eb0745e8b0ee48b0b901952660db20e983741e8852654","impliedFormat":1},{"version":"93c3b758c4dc64ea499c9416b1ed0e69725133644b299b86c5435e375d823c75","impliedFormat":1},{"version":"4e85f443714cff4858fdaffed31052492fdd03ff7883b22ed938fc0e34b48093","impliedFormat":1},{"version":"0146912d3cad82e53f779a0b7663f181824bba60e32715adb0e9bd02c560b8c6","impliedFormat":1},{"version":"70754650d1eba1fc96a4ed9bbbc8458b341b41063fe79f8fa828db7059696712","impliedFormat":1},{"version":"220783c7ca903c6ce296b210fae5d7e5c5cc1942c5a469b23d537f0fbd37eb18","impliedFormat":1},{"version":"0974c67cf3e2d539d0046c84a5e816e235b81c8516b242ece2ed1bdbb5dbd3d6","impliedFormat":1},{"version":"b4186237e7787a397b6c5ae64e155e70ac2a43fdd13ff24dfb6c1e3d2f930570","impliedFormat":1},{"version":"2647784fffa95a08af418c179b7b75cf1d20c3d32ed71418f0a13259bf505c54","impliedFormat":1},{"version":"0480102d1a385b96c05316b10de45c3958512bb9e834dbecbbde9cc9c0b22db3","impliedFormat":1},{"version":"eea44cfed69c9b38cc6366bd149a5cfa186776ca2a9fb87a3746e33b7e4f5e74","impliedFormat":1},{"version":"7f375e5ef1deb2c2357cba319b51a8872063d093cab750675ac2eb1cef77bee9","impliedFormat":1},{"version":"b7f06aec971823244f909996a30ef2bbeae69a31c40b0b208d0dfd86a8c16d4f","impliedFormat":1},{"version":"0f450f92257b3ee6d73ebee5aa6a2fb87d6a64b8f76d0418e891fe364c989b2d","impliedFormat":1},{"version":"1517236728263863a79500653cc15ceb286f048907b3dba3141a482ca6946bd7","impliedFormat":1},{"version":"7c7b418e467a88a714b4c6dac321923b933f82875f063f48abf952021a2c2df1","impliedFormat":1},{"version":"33120063a7e106818ce109be9238569edca74d4e8530f853bd30d298d1375fd8","impliedFormat":1},{"version":"556ccd493ec36c7d7cb130d51be66e147b91cc1415be383d71da0f1e49f742a9","impliedFormat":1},{"version":"b6d03c9cfe2cf0ba4c673c209fcd7c46c815b2619fd2aad59fc4229aaef2ed43","impliedFormat":1},{"version":"95aba78013d782537cc5e23868e736bec5d377b918990e28ed56110e3ae8b958","impliedFormat":1},{"version":"670a76db379b27c8ff42f1ba927828a22862e2ab0b0908e38b671f0e912cc5ed","impliedFormat":1},{"version":"13b77ab19ef7aadd86a1e54f2f08ea23a6d74e102909e3c00d31f231ed040f62","impliedFormat":1},{"version":"069bebfee29864e3955378107e243508b163e77ab10de6a5ee03ae06939f0bb9","impliedFormat":1},{"version":"a3d3f704c5339a36da3ca8c62b29072f87e86c783b8452d235992142ec71aa2d","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"98cffbf06d6bab333473c70a893770dbe990783904002c4f1a960447b4b53dca","affectsGlobalScope":true,"impliedFormat":1},{"version":"ba481bca06f37d3f2c137ce343c7d5937029b2468f8e26111f3c9d9963d6568d","affectsGlobalScope":true,"impliedFormat":1},{"version":"6d9ef24f9a22a88e3e9b3b3d8c40ab1ddb0853f1bfbd5c843c37800138437b61","affectsGlobalScope":true,"impliedFormat":1},{"version":"1db0b7dca579049ca4193d034d835f6bfe73096c73663e5ef9a0b5779939f3d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"9798340ffb0d067d69b1ae5b32faa17ab31b82466a3fc00d8f2f2df0c8554aaa","affectsGlobalScope":true,"impliedFormat":1},{"version":"f26b11d8d8e4b8028f1c7d618b22274c892e4b0ef5b3678a8ccbad85419aef43","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"763fe0f42b3d79b440a9b6e51e9ba3f3f91352469c1e4b3b67bfa4ff6352f3f4","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"7f182617db458e98fc18dfb272d40aa2fff3a353c44a89b2c0ccb3937709bfb5","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"e61be3f894b41b7baa1fbd6a66893f2579bfad01d208b4ff61daef21493ef0a8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"615ba88d0128ed16bf83ef8ccbb6aff05c3ee2db1cc0f89ab50a4939bfc1943f","impliedFormat":1},{"version":"a4d551dbf8746780194d550c88f26cf937caf8d56f102969a110cfaed4b06656","impliedFormat":1},{"version":"8bd86b8e8f6a6aa6c49b71e14c4ffe1211a0e97c80f08d2c8cc98838006e4b88","impliedFormat":1},{"version":"317e63deeb21ac07f3992f5b50cdca8338f10acd4fbb7257ebf56735bf52ab00","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"b52476feb4a0cbcb25e5931b930fc73cb6643fb1a5060bf8a3dda0eeae5b4b68","affectsGlobalScope":true,"impliedFormat":1},{"version":"e2677634fe27e87348825bb041651e22d50a613e2fdf6a4a3ade971d71bac37e","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"8c0bcd6c6b67b4b503c11e91a1fb91522ed585900eab2ab1f61bba7d7caa9d6f","impliedFormat":1},{"version":"8cd19276b6590b3ebbeeb030ac271871b9ed0afc3074ac88a94ed2449174b776","affectsGlobalScope":true,"impliedFormat":1},{"version":"696eb8d28f5949b87d894b26dc97318ef944c794a9a4e4f62360cd1d1958014b","impliedFormat":1},{"version":"3f8fa3061bd7402970b399300880d55257953ee6d3cd408722cb9ac20126460c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"5524481e56c48ff486f42926778c0a3cce1cc85dc46683b92b1271865bcf015a","impliedFormat":1},{"version":"68bd56c92c2bd7d2339457eb84d63e7de3bd56a69b25f3576e1568d21a162398","affectsGlobalScope":true,"impliedFormat":1},{"version":"3e93b123f7c2944969d291b35fed2af79a6e9e27fdd5faa99748a51c07c02d28","impliedFormat":1},{"version":"9d19808c8c291a9010a6c788e8532a2da70f811adb431c97520803e0ec649991","impliedFormat":1},{"version":"87aad3dd9752067dc875cfaa466fc44246451c0c560b820796bdd528e29bef40","impliedFormat":1},{"version":"4aacb0dd020eeaef65426153686cc639a78ec2885dc72ad220be1d25f1a439df","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"8db0ae9cb14d9955b14c214f34dae1b9ef2baee2fe4ce794a4cd3ac2531e3255","affectsGlobalScope":true,"impliedFormat":1},{"version":"15fc6f7512c86810273af28f224251a5a879e4261b4d4c7e532abfbfc3983134","impliedFormat":1},{"version":"58adba1a8ab2d10b54dc1dced4e41f4e7c9772cbbac40939c0dc8ce2cdb1d442","impliedFormat":1},{"version":"4b34bdb6f29a4347b7db9c0f8622686035fe25adb1c9e927acd8d22a2cbb6ccb","impliedFormat":1},{"version":"714435130b9015fae551788df2a88038471a5a11eb471f27c4ede86552842bc9","impliedFormat":1},{"version":"855cd5f7eb396f5f1ab1bc0f8580339bff77b68a770f84c6b254e319bbfd1ac7","impliedFormat":1},{"version":"5650cf3dace09e7c25d384e3e6b818b938f68f4e8de96f52d9c5a1b3db068e86","impliedFormat":1},{"version":"1354ca5c38bd3fd3836a68e0f7c9f91f172582ba30ab15bb8c075891b91502b7","affectsGlobalScope":true,"impliedFormat":1},{"version":"27fdb0da0daf3b337c5530c5f266efe046a6ceb606e395b346974e4360c36419","impliedFormat":1},{"version":"2d2fcaab481b31a5882065c7951255703ddbe1c0e507af56ea42d79ac3911201","impliedFormat":1},{"version":"a192fe8ec33f75edbc8d8f3ed79f768dfae11ff5735e7fe52bfa69956e46d78d","impliedFormat":1},{"version":"ca867399f7db82df981d6915bcbb2d81131d7d1ef683bc782b59f71dda59bc85","affectsGlobalScope":true,"impliedFormat":1},{"version":"0e456fd5b101271183d99a9087875a282323e3a3ff0d7bcf1881537eaa8b8e63","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"b4f70ec656a11d570e1a9edce07d118cd58d9760239e2ece99306ee9dfe61d02","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"6e70e9570e98aae2b825b533aa6292b6abd542e8d9f6e9475e88e1d7ba17c866","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"47ab634529c5955b6ad793474ae188fce3e6163e3a3fb5edd7e0e48f14435333","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"45650f47bfb376c8a8ed39d4bcda5902ab899a3150029684ee4c10676d9fbaee","impliedFormat":1},{"version":"fad4e3c207fe23922d0b2d06b01acbfb9714c4f2685cf80fd384c8a100c82fd0","affectsGlobalScope":true,"impliedFormat":1},{"version":"74cf591a0f63db318651e0e04cb55f8791385f86e987a67fd4d2eaab8191f730","impliedFormat":1},{"version":"5eab9b3dc9b34f185417342436ec3f106898da5f4801992d8ff38ab3aff346b5","impliedFormat":1},{"version":"12ed4559eba17cd977aa0db658d25c4047067444b51acfdcbf38470630642b23","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3ffabc95802521e1e4bcba4c88d8615176dc6e09111d920c7a213bdda6e1d65","impliedFormat":1},{"version":"ddc734b4fae82a01d247e9e342d020976640b5e93b4e9b3a1e30e5518883a060","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"c3b41e74b9a84b88b1dca61ec39eee25c0dbc8e7d519ba11bb070918cfacf656","affectsGlobalScope":true,"impliedFormat":1},{"version":"4737a9dc24d0e68b734e6cfbcea0c15a2cfafeb493485e27905f7856988c6b29","affectsGlobalScope":true,"impliedFormat":1},{"version":"36d8d3e7506b631c9582c251a2c0b8a28855af3f76719b12b534c6edf952748d","impliedFormat":1},{"version":"1ca69210cc42729e7ca97d3a9ad48f2e9cb0042bada4075b588ae5387debd318","impliedFormat":1},{"version":"f5ebe66baaf7c552cfa59d75f2bfba679f329204847db3cec385acda245e574e","impliedFormat":1},{"version":"ed59add13139f84da271cafd32e2171876b0a0af2f798d0c663e8eeb867732cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"05db535df8bdc30d9116fe754a3473d1b6479afbc14ae8eb18b605c62677d518","impliedFormat":1},{"version":"b1810689b76fd473bd12cc9ee219f8e62f54a7d08019a235d07424afbf074d25","impliedFormat":1},{"version":"104c67f0da1bdf0d94865419247e20eded83ce7f9911a1aa75fc675c077ca66e","impliedFormat":1},{"version":"cc0d0b339f31ce0ab3b7a5b714d8e578ce698f1e13d7f8c60bfb766baeb1d35c","impliedFormat":1},{"version":"b5a754d9b2c6492e14d422384cb0fb0874f9795dbc213d3000cc5ea010c70d60","impliedFormat":1},{"version":"0dc6940ff35d845686a118ee7384713a84024d60ef26f25a2f87992ec7ddbd64","impliedFormat":1},{"version":"2cba9752a0198d6c9cc96bc63463020f6a00de7d8f63cfd6a5eb35975662b09a","impliedFormat":1},{"version":"151ff381ef9ff8da2da9b9663ebf657eac35c4c9a19183420c05728f31a6761d","impliedFormat":1},{"version":"d34aa8df2d0b18fb56b1d772ff9b3c7aea7256cf0d692f969be6e1d27b74d660","impliedFormat":1},{"version":"baac9896d29bcc55391d769e408ff400d61273d832dd500f21de766205255acb","impliedFormat":1},{"version":"2f5747b1508ccf83fad0c251ba1e5da2f5a30b78b09ffa1cfaf633045160afed","impliedFormat":1},{"version":"6823ccc7b5b77bbf898d878dbcad18aa45e0fa96bdd0abd0de98d514845d9ed9","affectsGlobalScope":true,"impliedFormat":1},{"version":"b71c603a539078a5e3a039b20f2b0a0d1708967530cf97dec8850a9ca45baa2b","impliedFormat":1},{"version":"168d88e14e0d81fe170e0dadd38ae9d217476c11435ea640ddb9b7382bdb6c1f","impliedFormat":1},{"version":"8e04cf0688e0d921111659c2b55851957017148fa7b977b02727477d155b3c47","impliedFormat":1},{"version":"afe73051ff6a03a9565cbd8ebb0e956ee3df5e913ad5c1ded64218aabfa3dcb5","impliedFormat":1},{"version":"073ca26c96184db9941b5ec0ddea6981c9b816156d9095747809e524fdd90e35","impliedFormat":1},{"version":"e41d17a2ec23306d953cda34e573ed62954ca6ea9b8c8b74e013d07a6886ce47","impliedFormat":1},{"version":"241bd4add06f06f0699dcd58f3b334718d85e3045d9e9d4fa556f11f4d1569c1","impliedFormat":1},{"version":"2ae3787e1498b20aad1b9c2ee9ea517ec30e89b70d242d8e3e52d1e091039695","impliedFormat":1},{"version":"c7c72c4cffb1bc83617eefed71ed68cc89df73cab9e19507ccdecb3e72b4967e","affectsGlobalScope":true,"impliedFormat":1},{"version":"b8bff8a60af0173430b18d9c3e5c443eaa3c515617210c0c7b3d2e1743c19ecb","impliedFormat":1},{"version":"38b38db08e7121828294dec10957a7a9ff263e33e2a904b346516d4a4acca482","impliedFormat":1},{"version":"a76ebdf2579e68e4cfe618269c47e5a12a4e045c2805ed7f7ab37af8daa6b091","impliedFormat":1},{"version":"8a2aaea564939c22be05d665cc955996721bad6d43148f8fa21ae8f64afecd37","impliedFormat":1},{"version":"e59d36b7b6e8ba2dd36d032a5f5c279d2460968c8b4e691ca384f118fb09b52a","impliedFormat":1},{"version":"e96885c0684c9042ec72a9a43ef977f6b4b4a2728f4b9e737edcbaa0c74e5bf6","impliedFormat":1},{"version":"95950a187596e206d32d5d9c7b932901088c65ed8f9040e614aa8e321e0225ef","impliedFormat":1},{"version":"89e061244da3fc21b7330f4bd32f47c1813dd4d7f1dc3d0883d88943f035b993","impliedFormat":1},{"version":"e46558c2e04d06207b080138678020448e7fc201f3d69c2601b0d1456105f29a","impliedFormat":1},{"version":"71549375db52b1163411dba383b5f4618bdf35dc57fa327a1c7d135cf9bf67d1","impliedFormat":1},{"version":"7e6b2d61d6215a4e82ea75bc31a80ebb8ad0c2b37a60c10c70dd671e8d9d6d5d","impliedFormat":1},{"version":"78bea05df2896083cca28ed75784dde46d4b194984e8fc559123b56873580a23","impliedFormat":1},{"version":"5dd04ced37b7ea09f29d277db11f160df7fd73ba8b9dba86cb25552e0653a637","impliedFormat":1},{"version":"f74b81712e06605677ae1f061600201c425430151f95b5ef4d04387ad7617e6a","impliedFormat":1},{"version":"9a72847fcf4ac937e352d40810f7b7aec7422d9178451148296cf1aa19467620","impliedFormat":1},{"version":"3ae18f60e0b96fa1e025059b7d25b3247ba4dcb5f4372f6d6e67ce2adac74eac","impliedFormat":1},{"version":"2b9260f44a2e071450ae82c110f5dc8f330c9e5c3e85567ed97248330f2bf639","impliedFormat":1},{"version":"4f196e13684186bda6f5115fc4677a87cf84a0c9c4fc17b8f51e0984f3697b6d","impliedFormat":1},{"version":"61419f2c5822b28c1ea483258437c1faab87d00c6f84481aa22afb3380d8e9a4","impliedFormat":1},{"version":"64479aee03812264e421c0bf5104a953ca7b02740ba80090aead1330d0effe91","impliedFormat":1},{"version":"0521108c9f8ddb17654a0a54dae6ba9667c99eddccfd6af5748113e022d1c37a","impliedFormat":1},{"version":"c5570e504be103e255d80c60b56c367bf45d502ca52ee35c55dec882f6563b5c","impliedFormat":1},{"version":"ee764e6e9a7f2b987cc1a2c0a9afd7a8f4d5ebc4fdb66ad557a7f14a8c2bd320","impliedFormat":1},{"version":"0520b5093712c10c6ef23b5fea2f833bf5481771977112500045e5ea7e8e2b69","impliedFormat":1},{"version":"5c3cf26654cf762ac4d7fd7b83f09acfe08eef88d2d6983b9a5a423cb4004ca3","impliedFormat":1},{"version":"e60fa19cf7911c1623b891155d7eb6b7e844e9afdf5738e3b46f3b687730a2bd","impliedFormat":1},{"version":"b1fd72ff2bb0ba91bb588f3e5329f8fc884eb859794f1c4657a2bfa122ae54d0","impliedFormat":1},{"version":"6cf42a4f3cfec648545925d43afaa8bb364ac10a839ffed88249da109361b275","impliedFormat":1},{"version":"d7058e75920120b142a9d57be25562a3cd9a936269fd52908505f530105f2ec4","impliedFormat":1},{"version":"6df52b70d7f7702202f672541a5f4a424d478ee5be51a9d37b8ccbe1dbf3c0f2","impliedFormat":1},{"version":"0ca7f997e9a4d8985e842b7c882e521b6f63233c4086e9fe79dd7a9dc4742b5e","impliedFormat":1},{"version":"91046b5c6b55d3b194c81fd4df52f687736fad3095e9d103ead92bb64dc160ee","impliedFormat":1},{"version":"db5704fdad56c74dfc5941283c1182ed471bd17598209d3ac4a49faa72e43cfc","impliedFormat":1},{"version":"758e8e89559b02b81bc0f8fd395b17ad5aff75490c862cbe369bb1a3d1577c40","impliedFormat":1},{"version":"2ee64342c077b1868f1834c063f575063051edd6e2964257d34aad032d6b657c","impliedFormat":1},{"version":"6f6b4b3d670b6a5f0e24ea001c1b3d36453c539195e875687950a178f1730fa7","impliedFormat":1},{"version":"a472a1d3f25ce13a1d44911cd3983956ac040ce2018e155435ea34afb25f864c","impliedFormat":1},{"version":"b48b83a86dd9cfe36f8776b3ff52fcd45b0e043c0538dc4a4b149ba45fe367b9","impliedFormat":1},{"version":"792de5c062444bd2ee0413fb766e57e03cce7cdaebbfc52fc0c7c8e95069c96b","impliedFormat":1},{"version":"a79e3e81094c7a04a885bad9b049c519aace53300fb8a0fe4f26727cb5a746ce","impliedFormat":1},{"version":"93181bac0d90db185bb730c95214f6118ae997fe836a98a49664147fbcaf1988","impliedFormat":1},{"version":"8a4e89564d8ea66ad87ee3762e07540f9f0656a62043c910d819b4746fc429c5","impliedFormat":1},{"version":"b9011d99942889a0f95e120d06b698c628b0b6fdc3e6b7ecb459b97ed7d5bcc6","impliedFormat":1},{"version":"4d639cbbcc2f8f9ce6d55d5d503830d6c2556251df332dc5255d75af53c8a0e7","impliedFormat":1},{"version":"cdb48277f600ab5f429ecf1c5ea046683bc6b9f73f3deab9a100adac4b34969c","impliedFormat":1},{"version":"75be84956a29040a1afbe864c0a7a369dfdb739380072484eff153905ef867ee","impliedFormat":1},{"version":"b06b4adc2ae03331a92abd1b19af8eb91ec2bf8541747ee355887a167d53145e","impliedFormat":1},{"version":"c54166a85bd60f86d1ebb90ce0117c0ecb850b8a33b366691629fdf26f1bbbd8","impliedFormat":1},{"version":"0d417c15c5c635384d5f1819cc253a540fe786cc3fda32f6a2ae266671506a21","impliedFormat":1},{"version":"80f23f1d60fbed356f726b3b26f9d348dddbb34027926d10d59fad961e70a730","impliedFormat":1},{"version":"cb59317243a11379a101eb2f27b9df1022674c3df1df0727360a0a3f963f523b","impliedFormat":1},{"version":"cc20bb2227dd5de0aab0c8d697d1572f8000550e62c7bf5c92f212f657dd88c5","impliedFormat":1},{"version":"06b8a7d46195b6b3980e523ef59746702fd210b71681a83a5cf73799623621f9","impliedFormat":1},{"version":"860e4405959f646c101b8005a191298b2381af8f33716dc5f42097e4620608f8","impliedFormat":1},{"version":"f7e32adf714b8f25d3c1783473abec3f2e82d5724538d8dcf6f51baaaff1ca7a","impliedFormat":1},{"version":"d0da80c845999a16c24d0783033fb5366ada98df17867c98ad433ede05cd87fd","impliedFormat":1},{"version":"bfbf80f9cd4558af2d7b2006065340aaaced15947d590045253ded50aabb9bc5","impliedFormat":1},{"version":"fd9a991b51870325e46ebb0e6e18722d313f60cd8e596e645ec5ac15b96dbf4e","impliedFormat":1},{"version":"c3bd2b94e4298f81743d92945b80e9b56c1cdfb2bef43c149b7106a2491b1fc9","impliedFormat":1},{"version":"a246cce57f558f9ebaffd55c1e5673da44ea603b4da3b2b47eb88915d30a9181","impliedFormat":1},{"version":"d993eacc103c5a065227153c9aae8acea3a4322fe1a169ee7c70b77015bf0bb2","impliedFormat":1},{"version":"fc2b03d0c042aa1627406e753a26a1eaad01b3c496510a78016822ef8d456bb6","impliedFormat":1},{"version":"063c7ebbe756f0155a8b453f410ca6b76ffa1bbc1048735bcaf9c7c81a1ce35f","impliedFormat":1},{"version":"314e402cd481370d08f63051ae8b8c8e6370db5ee3b8820eeeaaf8d722a6dac6","impliedFormat":1},{"version":"9669075ac38ce36b638b290ba468233980d9f38bdc62f0519213b2fd3e2552ec","impliedFormat":1},{"version":"4d123de012c24e2f373925100be73d50517ac490f9ed3578ac82d0168bfbd303","impliedFormat":1},{"version":"656c9af789629aa36b39092bee3757034009620439d9a39912f587538033ce28","impliedFormat":1},{"version":"3ac3f4bdb8c0905d4c3035d6f7fb20118c21e8a17bee46d3735195b0c2a9f39f","impliedFormat":1},{"version":"1f453e6798ed29c86f703e9b41662640d4f2e61337007f27ac1c616f20093f69","impliedFormat":1},{"version":"af43b7871ff21c62bf1a54ec5c488e31a8d3408d5b51ff2e9f8581b6c55f2fc7","impliedFormat":1},{"version":"70550511d25cbb0b6a64dcac7fffc3c1397fd4cbeb6b23ccc7f9b794ab8a6954","impliedFormat":1},{"version":"af0fbf08386603a62f2a78c42d998c90353b1f1d22e05a384545f7accf881e0a","impliedFormat":1},{"version":"cefc20054d20b85b534206dbcedd509bb74f87f3d8bc45c58c7be3a76caa45e1","impliedFormat":1},{"version":"ad6eee4877d0f7e5244d34bc5026fd6e9cf8e66c5c79416b73f9f6ebf132f924","impliedFormat":1},{"version":"4888fd2bcfee9a0ce89d0df860d233e0cee8ee9c479b6bd5a5d5f9aae98342fe","impliedFormat":1},{"version":"f4749c102ced952aa6f40f0b579865429c4869f6d83df91000e98005476bee87","impliedFormat":1},{"version":"56654d2c5923598384e71cb808fac2818ca3f07dd23bb018988a39d5e64f268b","impliedFormat":1},{"version":"8b6719d3b9e65863da5390cb26994602c10a315aa16e7d70778a63fee6c4c079","impliedFormat":1},{"version":"05f56cd4b929977d18df8f3d08a4c929a2592ef5af083e79974b20a063f30940","impliedFormat":1},{"version":"547d3c406a21b30e2b78629ecc0b2ddaf652d9e0bdb2d59ceebce5612906df33","impliedFormat":1},{"version":"b3a4f9385279443c3a5568ec914a9492b59a723386161fd5ef0619d9f8982f97","impliedFormat":1},{"version":"3fe66aba4fbe0c3ba196a4f9ed2a776fe99dc4d1567a558fb11693e9fcc4e6ed","impliedFormat":1},{"version":"140eef237c7db06fc5adcb5df434ee21e81ee3a6fd57e1a75b8b3750aa2df2d8","impliedFormat":1},{"version":"0944ec553e4744efae790c68807a461720cff9f3977d4911ac0d918a17c9dd99","impliedFormat":1},{"version":"cb46b38d5e791acaa243bf342b8b5f8491639847463ac965b93896d4fb0af0d9","impliedFormat":1},{"version":"7c7d9e116fe51100ff766703e6b5e4424f51ad8977fe474ddd8d0959aa6de257","impliedFormat":1},{"version":"af70a2567e586be0083df3938b6a6792e6821363d8ef559ad8d721a33a5bcdaf","impliedFormat":1},{"version":"006cff3a8bcb92d77953f49a94cd7d5272fef4ab488b9052ef82b6a1260d870b","impliedFormat":1},{"version":"7d44bfdc8ee5e9af70738ff652c622ae3ad81815e63ab49bdc593d34cb3a68e5","impliedFormat":1},{"version":"339814517abd4dbc7b5f013dfd3b5e37ef0ea914a8bbe65413ecffd668792bc6","impliedFormat":1},{"version":"34d5bc0a6958967ec237c99f980155b5145b76e6eb927c9ffc57d8680326b5d8","impliedFormat":1},{"version":"9eae79b70c9d8288032cbe1b21d0941f6bd4f315e14786b2c1d10bccc634e897","impliedFormat":1},{"version":"18ce015ed308ea469b13b17f99ce53bbb97975855b2a09b86c052eefa4aa013a","impliedFormat":1},{"version":"5a931bc4106194e474be141e0bc1046629510dc95b9a0e4b02a3783847222965","impliedFormat":1},{"version":"5e5f371bf23d5ced2212a5ff56675aefbd0c9b3f4d4fdda1b6123ac6e28f058c","impliedFormat":1},{"version":"907c17ad5a05eecb29b42b36cc8fec6437be27cc4986bb3a218e4f74f606911c","impliedFormat":1},{"version":"ce60a562cd2a92f37a88f2ddd99a3abfbc5848d7baf38c48fb8d3243701fcb75","impliedFormat":1},{"version":"a726ad2d0a98bfffbe8bc1cd2d90b6d831638c0adc750ce73103a471eb9a891c","impliedFormat":1},{"version":"f44c0c8ce58d3dacac016607a1a90e5342d830ea84c48d2e571408087ae55894","impliedFormat":1},{"version":"75a315a098e630e734d9bc932d9841b64b30f7a349a20cf4717bf93044eff113","impliedFormat":1},{"version":"9131d95e32b3d4611d4046a613e022637348f6cebfe68230d4e81b691e4761a1","impliedFormat":1},{"version":"b03aa292cfdcd4edc3af00a7dbd71136dd067ec70a7536b655b82f4dd444e857","impliedFormat":1},{"version":"b6e2b0448ced813b8c207810d96551a26e7d7bb73255eea4b9701698f78846d6","impliedFormat":1},{"version":"8ae10cd85c1bd94d2f2d17c4cbd25c068a4b2471c70c2d96434239f97040747a","impliedFormat":1},{"version":"9ed5b799c50467b0c9f81ddf544b6bcda3e34d92076d6cab183c84511e45c39f","impliedFormat":1},{"version":"b4fa87cc1833839e51c49f20de71230e259c15b2c9c3e89e4814acc1d1ef10de","impliedFormat":1},{"version":"e90ac9e4ac0326faa1bc39f37af38ace0f9d4a655cd6d147713c653139cf4928","impliedFormat":1},{"version":"ea27110249d12e072956473a86fd1965df8e1be985f3b686b4e277afefdde584","impliedFormat":1},{"version":"8776a368617ce51129b74db7d55c3373dadcce5d0701e61d106e99998922a239","impliedFormat":1},{"version":"5666075052877fe2fdddd5b16de03168076cf0f03fbca5c1d4a3b8f43cba570c","impliedFormat":1},{"version":"9108ab5af05418f599ab48186193b1b07034c79a4a212a7f73535903ba4ca249","impliedFormat":1},{"version":"bb4e2cdcadf9c9e6ee2820af23cee6582d47c9c9c13b0dca1baaffe01fbbcb5f","impliedFormat":1},{"version":"6e30d0b5a1441d831d19fe02300ab3d83726abd5141cbcc0e2993fa0efd33db4","impliedFormat":1},{"version":"423f28126b2fc8d8d6fa558035309000a1297ed24473c595b7dec52e5c7ebae5","impliedFormat":1},{"version":"fb30734f82083d4790775dae393cd004924ebcbfde49849d9430bf0f0229dd16","impliedFormat":1},{"version":"2c92b04a7a4a1cd9501e1be338bf435738964130fb2ad5bd6c339ee41224ac4c","impliedFormat":1},{"version":"c5c5f0157b41833180419dacfbd2bcce78fb1a51c136bd4bcba5249864d8b9b5","impliedFormat":1},{"version":"02ae43d5bae42efcd5a00d3923e764895ce056bca005a9f4e623aa6b4797c8af","impliedFormat":1},{"version":"db6e01f17012a9d7b610ae764f94a1af850f5d98c9c826ad61747dca0fb800bd","impliedFormat":1},{"version":"8a44b424edee7bb17dc35a558cc15f92555f14a0441205613e0e50452ab3a602","impliedFormat":1},{"version":"24a00d0f98b799e6f628373249ece352b328089c3383b5606214357e9107e7d5","impliedFormat":1},{"version":"33637e3bc64edd2075d4071c55d60b32bdb0d243652977c66c964021b6fc8066","impliedFormat":1},{"version":"0f0ad9f14dedfdca37260931fac1edf0f6b951c629e84027255512f06a6ebc4c","impliedFormat":1},{"version":"16ad86c48bf950f5a480dc812b64225ca4a071827d3d18ffc5ec1ae176399e36","impliedFormat":1},{"version":"8cbf55a11ff59fd2b8e39a4aa08e25c5ddce46e3af0ed71fb51610607a13c505","impliedFormat":1},{"version":"d5bc4544938741f5daf8f3a339bfbf0d880da9e89e79f44a6383aaf056fe0159","impliedFormat":1},{"version":"97f9169882d393e6f303f570168ca86b5fe9aab556e9a43672dae7e6bb8e6495","impliedFormat":1},{"version":"7c9adb3fcd7851497818120b7e151465406e711d6a596a71b807f3a17853cb58","impliedFormat":1},{"version":"6752d402f9282dd6f6317c8c048aaaac27295739a166eed27e00391b358fed9a","impliedFormat":1},{"version":"9fd7466b77020847dbc9d2165829796bf7ea00895b2520ff3752ffdcff53564b","impliedFormat":1},{"version":"fbfc12d54a4488c2eb166ed63bab0fb34413e97069af273210cf39da5280c8d6","impliedFormat":1},{"version":"85a84240002b7cf577cec637167f0383409d086e3c4443852ca248fc6e16711e","impliedFormat":1},{"version":"84794e3abd045880e0fadcf062b648faf982aa80cfc56d28d80120e298178626","impliedFormat":1},{"version":"053d8b827286a16a669a36ffc8ccc8acdf8cc154c096610aa12348b8c493c7b8","impliedFormat":1},{"version":"3cce4ce031710970fe12d4f7834375f5fd455aa129af4c11eb787935923ff551","impliedFormat":1},{"version":"8f62cbd3afbd6a07bb8c934294b6bfbe437021b89e53a4da7de2648ecfc7af25","impliedFormat":1},{"version":"62c3621d34fb2567c17a2c4b89914ebefbfbd1b1b875b070391a7d4f722e55dc","impliedFormat":1},{"version":"c05ac811542e0b59cb9c2e8f60e983461f0b0e39cea93e320fad447ff8e474f3","impliedFormat":1},{"version":"8e7a5b8f867b99cc8763c0b024068fb58e09f7da2c4810c12833e1ca6eb11c4f","impliedFormat":1},{"version":"132351cbd8437a463757d3510258d0fa98fd3ebef336f56d6f359cf3e177a3ce","impliedFormat":1},{"version":"df877050b04c29b9f8409aa10278d586825f511f0841d1ec41b6554f8362092b","impliedFormat":1},{"version":"33d1888c3c27d3180b7fd20bac84e97ecad94b49830d5dd306f9e770213027d1","impliedFormat":1},{"version":"ee942c58036a0de88505ffd7c129f86125b783888288c2389330168677d6347f","impliedFormat":1},{"version":"a3f317d500c30ea56d41501632cdcc376dae6d24770563a5e59c039e1c2a08ec","impliedFormat":1},{"version":"eb21ddc3a8136a12e69176531197def71dc28ffaf357b74d4bf83407bd845991","impliedFormat":1},{"version":"0c1651a159995dfa784c57b4ea9944f16bdf8d924ed2d8b3db5c25d25749a343","impliedFormat":1},{"version":"aaa13958e03409d72e179b5d7f6ec5c6cc666b7be14773ae7b6b5ee4921e52db","impliedFormat":1},{"version":"0a86e049843ad02977a94bb9cdfec287a6c5a0a4b6b5391a6648b1a122072c5a","impliedFormat":1},{"version":"40f06693e2e3e58526b713c937895c02e113552dc8ba81ecd49cdd9596567ddb","impliedFormat":1},{"version":"4ed5e1992aedb174fb8f5aa8796aa6d4dcb8bd819b4af1b162a222b680a37fa0","impliedFormat":1},{"version":"d7f4bd46a8b97232ea6f8c28012b8d2b995e55e729d11405f159d3e00c51420a","impliedFormat":1},{"version":"d604d413aff031f4bfbdae1560e54ebf503d374464d76d50a2c6ded4df525712","impliedFormat":1},{"version":"e4f4f9cf1e3ac9fd91ada072e4d428ecbf0aa6dc57138fb797b8a0ca3a1d521c","impliedFormat":1},{"version":"12bfd290936824373edda13f48a4094adee93239b9a73432db603127881a300d","impliedFormat":1},{"version":"340ceb3ea308f8e98264988a663640e567c553b8d6dc7d5e43a8f3b64f780374","impliedFormat":1},{"version":"c5a769564e530fba3ec696d0a5cff1709b9095a0bdf5b0826d940d2fc9786413","impliedFormat":1},{"version":"7124ef724c3fc833a17896f2d994c368230a8d4b235baed39aa8037db31de54f","impliedFormat":1},{"version":"5de1c0759a76e7710f76899dcae601386424eab11fb2efaf190f2b0f09c3d3d3","impliedFormat":1},{"version":"9c5ee8f7e581f045b6be979f062a61bf076d362bf89c7f966b993a23424e8b0d","impliedFormat":1},{"version":"1a11df987948a86aa1ec4867907c59bdf431f13ed2270444bf47f788a5c7f92d","impliedFormat":1},{"version":"8018dd2e95e7ce6e613ddd81672a54532614dc745520a2f9e3860ff7fb1be0ca","impliedFormat":1},{"version":"b756781cd40d465da57d1fc6a442c34ae61fe8c802d752aace24f6a43fedacee","impliedFormat":1},{"version":"0fe76167c87289ea094e01616dcbab795c11b56bad23e1ef8aba9aa37e93432a","impliedFormat":1},{"version":"3a45029dba46b1f091e8dc4d784e7be970e209cd7d4ff02bd15270a98a9ba24b","impliedFormat":1},{"version":"032c1581f921f8874cf42966f27fd04afcabbb7878fa708a8251cac5415a2a06","impliedFormat":1},{"version":"69c68ed9652842ce4b8e495d63d2cd425862104c9fb7661f72e7aa8a9ef836f8","impliedFormat":1},{"version":"0e704ee6e9fd8b6a5a7167886f4d8915f4bc22ed79f19cb7b32bd28458f50643","impliedFormat":1},{"version":"06f62a14599a68bcde148d1efd60c2e52e8fa540cc7dcfa4477af132bb3de271","impliedFormat":1},{"version":"904a96f84b1bcee9a7f0f258d17f8692e6652a0390566515fe6741a5c6db8c1c","impliedFormat":1},{"version":"11f19ce32d21222419cecab448fa335017ebebf4f9e5457c4fa9df42fa2dcca7","impliedFormat":1},{"version":"2e8ee2cbb5e9159764e2189cf5547aebd0e6b0d9a64d479397bb051cd1991744","impliedFormat":1},{"version":"1b0471d75f5adb7f545c1a97c02a0f825851b95fe6e069ac6ecaa461b8bb321d","impliedFormat":1},{"version":"1d157c31a02b1e5cca9bc495b3d8d39f4b42b409da79f863fb953fbe3c7d4884","impliedFormat":1},{"version":"07baaceaec03d88a4b78cb0651b25f1ae0322ac1aa0b555ae3749a79a41cba86","impliedFormat":1},{"version":"619a132f634b4ebe5b4b4179ea5870f62f2cb09916a25957bff17b408de8b56d","impliedFormat":1},{"version":"f60fa446a397eb1aead9c4e568faf2df8068b4d0306ebc075fb4be16ed26b741","impliedFormat":1},{"version":"f3cb784be4d9e91f966a0b5052a098d9b53b0af0d341f690585b0cc05c6ca412","impliedFormat":1},{"version":"350f63439f8fe2e06c97368ddc7fb6d6c676d54f59520966f7dbbe6a4586014e","impliedFormat":1},{"version":"eba613b9b357ac8c50a925fa31dc7e65ff3b95a07efbaa684b624f143d8d34ba","impliedFormat":1},{"version":"45b74185005ed45bec3f07cac6e4d68eaf02ead9ff5a66721679fb28020e5e7c","impliedFormat":1},{"version":"0f6199602df09bdb12b95b5434f5d7474b1490d2cd8cc036364ab3ba6fd24263","impliedFormat":1},{"version":"c8ca7fd9ec7a3ec82185bfc8213e4a7f63ae748fd6fced931741d23ef4ea3c0f","impliedFormat":1},{"version":"5c6a8a3c2a8d059f0592d4eab59b062210a1c871117968b10797dee36d991ef7","impliedFormat":1},{"version":"ad77fd25ece8e09247040826a777dc181f974d28257c9cd5acb4921b51967bd8","impliedFormat":1},{"version":"08323a8971cb5b2632b532cba1636ad4ca0d76f9f7d0b8d1a0c706fdf5c77b45","impliedFormat":1},{"version":"84ed978ec09bcd9acaa479aa6fa307cc7eafcd9759ff0fa5f03da9499fc1a1a7","impliedFormat":1},{"version":"e243f7d314cb8d05f393a5dc9904b3bcbd769ac082596402ab197df75bf582bf","impliedFormat":1},{"version":"fc55f9f6c902e967e7d79f2b264d3bec205a1465b1274fbd38e733f4f6cc8718","impliedFormat":1},{"version":"6a29284c78941d22c7e2590a29716dd98036acd4916a81ca4520987032cd06fb","impliedFormat":1},{"version":"21271850a109497fab5a7fe9fb2c49b4d21043e0d89563834ff79cc43a29e2fe","impliedFormat":1},{"version":"d4f2836bfaeb0709f90205f9dbfa8e8b56b3c5757793cb1cc6d2ae68e709f301","impliedFormat":1},{"version":"4ceec69d8052310237a3da9c7d5b1b13a9f6346c1b6dac2f7ac3c58e2f1b43ca","impliedFormat":1},{"version":"9a11bfcdfefddd302ba9afcdb7beb3cbc190a4d89ad1b35fca3fea7aa733b21b","impliedFormat":1},{"version":"e997d5735fff184787017ad34b865215f9d83e8ae82f5464eaa6a976c72ed35b","impliedFormat":1},{"version":"f71d335412ab3d5d8b5728127ef1a0c656d6bf9fdd589f0397cd66eb5e3478d2","impliedFormat":1},{"version":"6f4c9b810a4563c63abe7903507bb10231f2b5e9954ae91777245bfd249dd06f","impliedFormat":1},{"version":"ae0e9a346e3799e48ca1ca02ca9cc9dcd22754ac16aa290c62ffb3a2d0683072","impliedFormat":1},{"version":"8300c7133c1ee8576d1a0b6551a932fb22b0ea4a24954e812eee3a7cca473348","impliedFormat":1},{"version":"49b34dd82b1a9c7fc1f6b7d54f124fa058fb2dab6aacd1cb22df2d4f76ab4de5","impliedFormat":1},{"version":"2c1da7f76b303c578f082f8e3234d0c204775db35f6659a0c89106913373e7d3","impliedFormat":1},{"version":"d69e23b46f816ae17855a9b7568a52652393c037311c0949de7353f62320aff5","impliedFormat":1},{"version":"d72ae10d4b0c5d835bc0d013a9fc21f09da408ec1c5356772a347c7fae7b45c3","impliedFormat":1},{"version":"9ea1cfc084a02bcf213c927cb86859cd79ae0b67f9d0914bd7bf2c0325a60d4f","impliedFormat":1},{"version":"a4b779037869ebd415f31730ee6ae0ee3d7c75dbc63aec37c8ff03ca7e666b24","impliedFormat":1},{"version":"475e411f48f74c14b1f6e50cc244387a5cc8ce52340dddfae897c96e03f86527","impliedFormat":1},{"version":"3683e4be4a3487e8484523b8b30236dd895cf27aa7c928d09041deb3d3cb10b8","impliedFormat":1},{"version":"332680a9475bd631519399f9796c59502aa499aa6f6771734eec82fa40c6d654","impliedFormat":1},{"version":"191bee6605de2b5210f29f22df04f5b5e6bdcc1f6e21fb07091d40eeeb75fd72","impliedFormat":1},{"version":"d83f3c0362467589b3a65d3a83088c068099c665a39061bf9b477f16708fa0f9","impliedFormat":1},{"version":"0dee1e1c0f7e5302d05eadd14098758ba146274c4a3b646475fc8bce4d4dbcac","impliedFormat":1},{"version":"29994a97447d10d003957bcc0c9355c272d8cf0f97143eb1ade331676e860945","impliedFormat":1},{"version":"f4260022f7af38e533d364ea62eb7ae01b0a32050033d7f6772073e1dc908025","impliedFormat":1},{"version":"9cddf06f2bc6753a8628670a737754b5c7e93e2cfe982a300a0b43cf98a7d032","impliedFormat":1},{"version":"3f8e68bd94e82fe4362553aa03030fcf94c381716ce3599d242535b0d9953e49","impliedFormat":1},{"version":"63e628515ec7017458620e1624c594c9bd76382f606890c8eebf2532bcab3b7c","impliedFormat":1},{"version":"355d5e2ba58012bc059e347a70aa8b72d18d82f0c3491e9660adaf852648f032","impliedFormat":1},{"version":"311cc121259b3e0c3c08304fc25b525aa02ba0f9bf55b3e7c60b0dbb7422014e","impliedFormat":1},{"version":"74c269b43d39e5ece20b2cca49c14e64c05b01e46407200d7558301d0fcaabf4","impliedFormat":1},{"version":"ec09bd95866efe38cd00ebb79dfa7a26563d600fa4a30db0f7c6d68f8f6d2b06","impliedFormat":1},{"version":"482d0ac70d56aa79941be30da6df28e926a007f835eed70cf7b5f3135368d1f6","impliedFormat":1},{"version":"7dd19397d5a090c9f8cd762bae67bd0ad6f782abe422594fb71168fb578673b0","impliedFormat":1},{"version":"84cbf6204ada0ee2f80493e55e45befa079954788718efd6dcc103183104e3c0","impliedFormat":1},{"version":"ed849d616865076f44a41c87f27698f7cdf230290c44bafc71d7c2bc6919b202","impliedFormat":1},{"version":"9a0a0af04065ddfecc29d2b090659fce57f46f64c7a04a9ba63835ef2b2d0efa","impliedFormat":1},{"version":"10297d22a9209a718b9883a384db19249b206a0897e95f2b9afeed3144601cb0","impliedFormat":1},{"version":"034b8b5912823744c986986f24432bf3fa7bfa671e69316b672f3f2db5166ce4","impliedFormat":1},{"version":"34d206f6ba993e601dade2791944bdf742ab0f7a8caccc661106c87438f4f904","impliedFormat":1},{"version":"05ca49cc7ba9111f6c816ecfadb9305fffeb579840961ee8286cc89749f06ebd","impliedFormat":1},{"version":"758efa4ed8afdf8a16b1e3f57e813b80fa7838f79f883d5cfe6be104934dfc4d","impliedFormat":1},{"version":"035a5df183489c2e22f3cf59fc1ed2b043d27f357eecc0eb8d8e840059d44245","impliedFormat":1},{"version":"a4809f4d92317535e6b22b01019437030077a76fec1d93b9881c9ed4738fcc54","impliedFormat":1},{"version":"5f53fa0bd22096d2a78533f94e02c899143b8f0f9891a46965294ee8b91a9434","impliedFormat":1},{"version":"cdcc132f207d097d7d3aa75615ab9a2e71d6a478162dde8b67f88ea19f3e54de","impliedFormat":1},{"version":"0d14fa22c41fdc7277e6f71473b20ebc07f40f00e38875142335d5b63cdfc9d2","impliedFormat":1},{"version":"e1028394c1cf96d5d057ecc647e31e457b919092f882ed0c7092152b077fed9d","impliedFormat":1},{"version":"f315e1e65a1f80992f0509e84e4ae2df15ecd9ef73df975f7c98813b71e4c8da","impliedFormat":1},{"version":"5b9586e9b0b6322e5bfbd2c29bd3b8e21ab9d871f82346cb71020e3d84bae73e","impliedFormat":1},{"version":"3e70a7e67c2cb16f8cd49097360c0309fe9d1e3210ff9222e9dac1f8df9d4fb6","impliedFormat":1},{"version":"ab68d2a3e3e8767c3fba8f80de099a1cfc18c0de79e42cb02ae66e22dfe14a66","impliedFormat":1},{"version":"d96cc6598148bf1a98fb2e8dcf01c63a4b3558bdaec6ef35e087fd0562eb40ec","impliedFormat":1},{"version":"f8db4fea512ab759b2223b90ecbbe7dae919c02f8ce95ec03f7fb1cf757cfbeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"fb893a0dfc3c9fb0f9ca93d0648694dd95f33cbad2c0f2c629f842981dfd4e2e","impliedFormat":1},{"version":"95da3c365e3d45709ad6e0b4daa5cdaf05e9076ba3c201e8f8081dd282c02f57","impliedFormat":1},{"version":"b0f9ef6423d6b29dde29fd60d83d215796b2c1b76bfca28ac374ae18702cfb8e","impliedFormat":1},{"version":"8841e2aa774b89bd23302dede20663306dc1b9902431ac64b24be8b8d0e3f649","impliedFormat":1},{"version":"fbca5ffaebf282ec3cdac47b0d1d4a138a8b0bb32105251a38acb235087d3318","impliedFormat":1},{"version":"b58c81d4cc365d3986aee6c2a86592edc50f141b796899079196ffb103047390","impliedFormat":1},{"version":"3444e1ba06fe73df6673e38d6421613467cd5d728068d7c0351df80872d3484d","impliedFormat":1},{"version":"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","impliedFormat":1},{"version":"4340936f4e937c452ae783514e7c7bbb7fc06d0c97993ff4865370d0962bb9cf","impliedFormat":1},{"version":"b70c7ea83a7d0de17a791d9b5283f664033a96362c42cc4d2b2e0bdaa65ef7d1","impliedFormat":1},{"version":"22293bd6fa12747929f8dfca3ec1684a3fe08638aa18023dd286ab337e88a592","impliedFormat":1},{"version":"9df0f2ba281c306c80873282ff8993bd76198e86d478bb5ad36c80ee2b66674b","impliedFormat":1},{"version":"ab82804a14454734010dcdcd43f564ff7b0389bee4c5692eec76ff5b30d4cf66","impliedFormat":1},{"version":"4006c872e38a2c4e09c593bc0cdd32b7b4f5c4843910bea0def631c483fff6c5","impliedFormat":1},{"version":"ab6aa3a65d473871ee093e3b7b71ed0f9c69e07d1d4295f45c9efd91a771241d","impliedFormat":1},{"version":"e7bb49fac2aa46a13011b5eb5e4a8648f70a28aea1853fab2444dd4fcb4d4ec7","impliedFormat":1},{"version":"464e45d1a56dae066d7e1a2f32e55b8de4bfb072610c3483a4091d73c9924908","impliedFormat":1},{"version":"da318e126ac39362c899829547cc8ee24fa3e8328b52cdd27e34173cf19c7941","impliedFormat":1},{"version":"24bd01a91f187b22456c7171c07dbf44f3ad57ebd50735aab5c13fa23d7114b4","impliedFormat":1},{"version":"4738eefeaaba4d4288a08c1c226a76086095a4d5bcc7826d2564e7c29da47671","impliedFormat":1},{"version":"dbec715e9e82df297e49e3ed0029f6151aa40517ebfd6fcdba277a8a2e1d3a1b","impliedFormat":1},{"version":"097f1f8ca02e8940cfdcca553279e281f726485fa6fb214b3c9f7084476f6bcc","impliedFormat":1},{"version":"8f75e211a2e83ff216eb66330790fb6412dcda2feb60c4f165c903cf375633ee","impliedFormat":1},{"version":"c3fb0d969970b37d91f0dbf493c014497fe457a2280ac42ae24567015963dbf7","impliedFormat":1},{"version":"a9155c6deffc2f6a69e69dc12f0950ba1b4db03b3d26ab7a523efc89149ce979","impliedFormat":1},{"version":"c99faf0d7cb755b0424a743ea0cbf195606bf6cd023b5d10082dba8d3714673c","impliedFormat":1},{"version":"21942c5a654cc18ffc2e1e063c8328aca3b127bbf259c4e97906d4696e3fa915","impliedFormat":1},{"version":"85a55229c4d0f20d42c59cec768df0cb83a492f8bb1351ead8524a58f278a005","impliedFormat":1},{"version":"908217c4f2244ec402b73533ebfcc46d6dcd34fc1c807ff403d7f98702abb3bc","impliedFormat":1},{"version":"c6cdcd12d577032b84eed1de4d2de2ae343463701a25961b202cff93989439fb","impliedFormat":1},{"version":"3dc633586d48fcd04a4f8acdbf7631b8e4a334632f252d5707e04b299069721e","impliedFormat":1},{"version":"3322858f01c0349ee7968a5ce93a1ca0c154c4692aa8f1721dc5192a9191a168","impliedFormat":1},{"version":"6dde0a77adad4173a49e6de4edd6ef70f5598cbebb5c80d76c111943854636ca","impliedFormat":1},{"version":"09acacae732e3cc67a6415026cfae979ebe900905500147a629837b790a366b3","impliedFormat":1},{"version":"f7b622759e094a3c2e19640e0cb233b21810d2762b3e894ef7f415334125eb22","impliedFormat":1},{"version":"99236ea5c4c583082975823fd19bcce6a44963c5c894e20384bc72e7eccf9b03","impliedFormat":1},{"version":"f6688a02946a3f7490aa9e26d76d1c97a388e42e77388cbab010b69982c86e9e","impliedFormat":1},{"version":"9f642953aba68babd23de41de85d4e97f0c39ef074cb8ab8aa7d55237f62aff6","impliedFormat":1},{"version":"159d95163a0ed369175ae7838fa21a9e9e703de5fdb0f978721293dd403d9f4a","impliedFormat":1},{"version":"1ba59c8bbeed2cb75b239bb12041582fa3e8ef32f8d0bd0ec802e38442d3f317","impliedFormat":1},{"version":"bae8d023ef6b23df7da26f51cea44321f95817c190342a36882e93b80d07a960","impliedFormat":1},{"version":"26a770cec4bd2e7dbba95c6e536390fffe83c6268b78974a93727903b515c4e7","impliedFormat":1}],"root":[[64,70]],"options":{"allowSyntheticDefaultImports":true,"declaration":true,"emitDecoratorMetadata":true,"esModuleInterop":true,"experimentalDecorators":true,"module":1,"noFallthroughCasesInSwitch":true,"noImplicitAny":true,"outDir":"./","removeComments":true,"skipLibCheck":true,"sourceMap":true,"strict":true,"strictBindCallApply":true,"strictNullChecks":true,"target":8},"referencedMap":[[134,1],[132,2],[491,2],[494,3],[493,2],[71,2],[72,2],[73,4],[131,5],[74,6],[120,7],[76,8],[75,9],[77,6],[78,6],[80,10],[79,6],[81,11],[82,11],[83,6],[85,12],[86,6],[87,12],[88,6],[90,6],[91,6],[92,6],[93,13],[89,6],[94,2],[95,14],[96,14],[97,14],[98,14],[99,14],[109,15],[100,14],[101,14],[102,14],[103,14],[105,14],[106,14],[104,14],[107,14],[108,14],[110,6],[111,6],[84,6],[112,12],[114,16],[113,6],[115,6],[116,6],[117,17],[119,6],[118,6],[121,6],[123,6],[124,18],[122,6],[125,6],[126,6],[127,6],[128,6],[129,6],[130,6],[137,19],[133,1],[135,20],[136,1],[138,2],[241,21],[242,2],[240,22],[243,2],[244,23],[245,2],[249,24],[252,25],[253,26],[250,2],[464,27],[444,28],[446,29],[445,28],[448,30],[450,31],[451,32],[452,33],[453,31],[454,32],[455,31],[456,34],[457,32],[458,31],[459,35],[460,28],[461,28],[462,36],[449,37],[463,38],[447,38],[487,39],[488,2],[489,40],[490,41],[499,42],[501,43],[502,2],[503,2],[504,2],[500,2],[505,2],[506,44],[508,2],[509,45],[188,46],[189,46],[190,47],[144,48],[191,49],[192,50],[193,51],[139,2],[142,52],[140,2],[141,2],[194,53],[195,54],[196,55],[197,56],[198,57],[199,58],[200,58],[201,59],[202,60],[203,61],[204,62],[145,2],[143,2],[205,63],[206,64],[207,65],[239,66],[208,67],[209,68],[210,69],[211,70],[212,71],[213,72],[214,73],[215,74],[216,75],[217,76],[218,76],[219,77],[220,2],[221,78],[223,79],[222,80],[224,81],[225,82],[226,83],[227,84],[228,85],[229,86],[230,87],[231,88],[232,89],[233,90],[234,91],[235,92],[236,93],[146,2],[147,2],[148,2],[187,94],[237,95],[238,96],[510,2],[511,23],[247,2],[248,2],[246,97],[251,98],[512,2],[513,2],[514,2],[522,99],[515,2],[518,100],[520,101],[521,102],[516,103],[519,104],[517,105],[526,106],[524,107],[525,108],[523,109],[527,110],[443,111],[528,2],[538,112],[529,2],[530,2],[531,2],[532,2],[533,2],[534,2],[535,2],[536,2],[537,2],[539,113],[540,2],[541,114],[149,2],[492,2],[481,2],[58,2],[498,115],[507,116],[466,117],[483,118],[485,119],[484,120],[467,111],[482,121],[479,122],[480,123],[478,124],[471,125],[472,126],[474,127],[475,128],[473,129],[476,130],[486,131],[477,132],[469,133],[465,134],[470,135],[468,117],[496,136],[497,137],[495,138],[57,2],[442,139],[415,2],[393,140],[391,140],[306,141],[257,142],[256,143],[392,144],[377,145],[299,146],[255,147],[254,148],[441,143],[406,149],[405,149],[317,150],[413,141],[414,141],[416,151],[417,141],[418,148],[419,141],[390,141],[420,141],[421,152],[422,141],[423,149],[424,153],[425,141],[426,141],[427,141],[428,141],[429,149],[430,141],[431,141],[432,141],[433,141],[434,154],[435,141],[436,141],[437,141],[438,141],[439,141],[259,148],[260,148],[261,148],[262,148],[263,148],[264,148],[265,148],[266,141],[268,155],[269,148],[267,148],[270,148],[271,148],[272,148],[273,148],[274,148],[275,148],[276,141],[277,148],[278,148],[279,148],[280,148],[281,148],[282,141],[283,148],[284,148],[285,148],[286,148],[287,148],[288,148],[289,141],[291,156],[290,148],[292,148],[293,148],[294,148],[295,148],[296,154],[297,141],[298,141],[312,157],[300,158],[301,148],[302,148],[303,141],[304,148],[305,148],[307,159],[308,148],[309,148],[310,148],[311,148],[313,148],[314,148],[315,148],[316,148],[318,160],[319,148],[320,148],[321,148],[322,141],[323,148],[324,161],[325,161],[326,161],[327,141],[328,148],[329,148],[330,148],[335,148],[331,148],[332,141],[333,148],[334,141],[336,148],[337,148],[338,148],[339,148],[340,148],[341,148],[342,141],[343,148],[344,148],[345,148],[346,148],[347,148],[348,148],[349,148],[350,148],[351,148],[352,148],[353,148],[354,148],[355,148],[356,148],[357,148],[358,148],[359,162],[360,148],[361,148],[362,148],[363,148],[364,148],[365,148],[366,141],[367,141],[368,141],[369,141],[370,141],[371,148],[372,148],[373,148],[374,148],[440,141],[376,163],[399,164],[394,164],[385,165],[383,166],[397,167],[386,168],[400,169],[395,170],[396,167],[398,171],[384,2],[389,2],[381,172],[382,173],[379,2],[380,174],[378,148],[387,175],[258,176],[407,2],[408,2],[409,2],[410,2],[411,2],[412,2],[401,2],[404,149],[403,2],[402,177],[375,178],[388,179],[54,2],[55,2],[11,2],[9,2],[10,2],[15,2],[14,2],[2,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[3,2],[24,2],[25,2],[4,2],[26,2],[30,2],[27,2],[28,2],[29,2],[31,2],[32,2],[33,2],[5,2],[34,2],[35,2],[36,2],[37,2],[6,2],[41,2],[38,2],[39,2],[40,2],[42,2],[7,2],[43,2],[48,2],[49,2],[44,2],[45,2],[46,2],[47,2],[8,2],[56,2],[53,2],[50,2],[51,2],[52,2],[1,2],[13,2],[12,2],[165,180],[175,181],[164,180],[185,182],[156,183],[155,184],[184,23],[178,185],[183,186],[158,187],[172,188],[157,189],[181,190],[153,191],[152,23],[182,192],[154,193],[159,194],[160,2],[163,194],[150,2],[186,195],[176,196],[167,197],[168,198],[170,199],[166,200],[169,201],[179,23],[161,202],[162,203],[171,204],[151,4],[174,196],[173,194],[177,2],[180,205],[61,206],[60,207],[59,2],[63,208],[62,209],[65,210],[64,211],[69,212],[66,2],[67,213],[68,214],[70,215]],"version":"5.9.3"}
|
package/package.json
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@hazeljs/saga",
|
|
3
|
+
"version": "0.4.0",
|
|
4
|
+
"description": "Saga pattern implementation for HazelJS - Orchestration and Choreography for distributed transactions",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc",
|
|
12
|
+
"test": "jest --coverage --passWithNoTests",
|
|
13
|
+
"test:ci": "jest --coverage --coverageReporters=text --coverageReporters=lcov --coverageReporters=clover --no-coverage-threshold",
|
|
14
|
+
"test:watch": "jest --watch",
|
|
15
|
+
"lint": "eslint \"src/**/*.ts\"",
|
|
16
|
+
"lint:fix": "eslint \"src/**/*.ts\" --fix",
|
|
17
|
+
"clean": "rm -rf dist"
|
|
18
|
+
},
|
|
19
|
+
"dependencies": {
|
|
20
|
+
"@hazeljs/core": "^0.4.0",
|
|
21
|
+
"@hazeljs/event-emitter": "^0.4.0",
|
|
22
|
+
"reflect-metadata": "^0.2.2"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/jest": "^29.5.14",
|
|
26
|
+
"@types/node": "^20.17.50",
|
|
27
|
+
"@typescript-eslint/eslint-plugin": "^8.18.2",
|
|
28
|
+
"@typescript-eslint/parser": "^8.18.2",
|
|
29
|
+
"eslint": "^8.56.0",
|
|
30
|
+
"jest": "^29.7.0",
|
|
31
|
+
"ts-jest": "^29.1.2",
|
|
32
|
+
"typescript": "^5.3.3"
|
|
33
|
+
},
|
|
34
|
+
"publishConfig": {
|
|
35
|
+
"access": "public"
|
|
36
|
+
},
|
|
37
|
+
"author": "Muhammad Arslan <muhammad.arslan@hazeljs.ai>",
|
|
38
|
+
"license": "Apache-2.0",
|
|
39
|
+
"gitHead": "3cde5425a60eed497a777795724c93a926c69155"
|
|
40
|
+
}
|