@bett3r-dev/pv3-types 1.0.0 → 1.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.
Files changed (137) hide show
  1. package/CHANGELOG.md +305 -0
  2. package/build/adminPlugin.d.ts +24 -0
  3. package/build/adminPlugin.d.ts.map +1 -0
  4. package/build/{eventsourcing/utils.js → adminPlugin.js} +1 -1
  5. package/build/adminPlugin.js.map +1 -0
  6. package/build/aggregateSchema.d.ts +94 -0
  7. package/build/aggregateSchema.d.ts.map +1 -0
  8. package/build/aggregateSchema.js +287 -0
  9. package/build/aggregateSchema.js.map +1 -0
  10. package/build/authentication.d.ts +179 -78
  11. package/build/authentication.d.ts.map +1 -1
  12. package/build/authentication.js +62 -19
  13. package/build/authentication.js.map +1 -1
  14. package/build/cache.d.ts +50 -4
  15. package/build/cache.d.ts.map +1 -1
  16. package/build/clusterAdministration.d.ts +712 -225
  17. package/build/clusterAdministration.d.ts.map +1 -1
  18. package/build/clusterAdministration.js +175 -52
  19. package/build/clusterAdministration.js.map +1 -1
  20. package/build/configuration.d.ts +26 -5
  21. package/build/configuration.d.ts.map +1 -1
  22. package/build/database.d.ts +240 -56
  23. package/build/database.d.ts.map +1 -1
  24. package/build/database.js +102 -20
  25. package/build/database.js.map +1 -1
  26. package/build/endpoints.d.ts +141 -41
  27. package/build/endpoints.d.ts.map +1 -1
  28. package/build/endpoints.js +50 -26
  29. package/build/endpoints.js.map +1 -1
  30. package/build/errors.d.ts +166 -0
  31. package/build/errors.d.ts.map +1 -0
  32. package/build/errors.js +276 -0
  33. package/build/errors.js.map +1 -0
  34. package/build/evenstore.d.ts +47 -7
  35. package/build/evenstore.d.ts.map +1 -1
  36. package/build/eventsourcing/aggregateBuilder.d.ts +17 -8
  37. package/build/eventsourcing/aggregateBuilder.d.ts.map +1 -1
  38. package/build/eventsourcing/commandBuilder.d.ts +20 -13
  39. package/build/eventsourcing/commandBuilder.d.ts.map +1 -1
  40. package/build/eventsourcing/commandHandlers.d.ts +155 -33
  41. package/build/eventsourcing/commandHandlers.d.ts.map +1 -1
  42. package/build/eventsourcing/commandHandlers.js +62 -14
  43. package/build/eventsourcing/commandHandlers.js.map +1 -1
  44. package/build/eventsourcing/eventHandlers.d.ts +173 -44
  45. package/build/eventsourcing/eventHandlers.d.ts.map +1 -1
  46. package/build/eventsourcing/eventHandlers.js +29 -21
  47. package/build/eventsourcing/eventHandlers.js.map +1 -1
  48. package/build/eventsourcing/eventHandlersBuilder.d.ts +18 -12
  49. package/build/eventsourcing/eventHandlersBuilder.d.ts.map +1 -1
  50. package/build/eventsourcing/eventHandlersBuilder.js.map +1 -1
  51. package/build/eventsourcing/eventsourcing.types.d.ts +322 -0
  52. package/build/eventsourcing/eventsourcing.types.d.ts.map +1 -0
  53. package/build/eventsourcing/eventsourcing.types.js +26 -0
  54. package/build/eventsourcing/eventsourcing.types.js.map +1 -0
  55. package/build/eventsourcing/externalSystemBuilder.d.ts +8 -7
  56. package/build/eventsourcing/externalSystemBuilder.d.ts.map +1 -1
  57. package/build/eventsourcing/index.d.ts +2 -378
  58. package/build/eventsourcing/index.d.ts.map +1 -1
  59. package/build/eventsourcing/index.js +2 -23
  60. package/build/eventsourcing/index.js.map +1 -1
  61. package/build/eventsourcing/invariants.d.ts +34 -10
  62. package/build/eventsourcing/invariants.d.ts.map +1 -1
  63. package/build/eventsourcing/shapeChangeForSubscriber.d.ts +33 -0
  64. package/build/eventsourcing/shapeChangeForSubscriber.d.ts.map +1 -0
  65. package/build/eventsourcing/shapeChangeForSubscriber.js +47 -0
  66. package/build/eventsourcing/shapeChangeForSubscriber.js.map +1 -0
  67. package/build/index.d.ts +6 -1
  68. package/build/index.d.ts.map +1 -1
  69. package/build/index.js +6 -1
  70. package/build/index.js.map +1 -1
  71. package/build/infrastructure.d.ts +9 -1
  72. package/build/infrastructure.d.ts.map +1 -1
  73. package/build/infrastructure.js +33 -1
  74. package/build/infrastructure.js.map +1 -1
  75. package/build/livenessWatchdog.d.ts +28 -0
  76. package/build/livenessWatchdog.d.ts.map +1 -0
  77. package/build/livenessWatchdog.js +43 -0
  78. package/build/livenessWatchdog.js.map +1 -0
  79. package/build/logger.d.ts +8 -9
  80. package/build/logger.d.ts.map +1 -1
  81. package/build/logger.js +18 -6
  82. package/build/logger.js.map +1 -1
  83. package/build/outboxManager.d.ts +858 -14
  84. package/build/outboxManager.d.ts.map +1 -1
  85. package/build/outboxManager.js +173 -15
  86. package/build/outboxManager.js.map +1 -1
  87. package/build/permissions.d.ts +47 -0
  88. package/build/permissions.d.ts.map +1 -0
  89. package/build/permissions.js +3 -0
  90. package/build/permissions.js.map +1 -0
  91. package/build/ports.d.ts +10 -10
  92. package/build/ports.d.ts.map +1 -1
  93. package/build/routesAuth.d.ts +17 -25
  94. package/build/routesAuth.d.ts.map +1 -1
  95. package/build/routesAuth.js +4 -14
  96. package/build/routesAuth.js.map +1 -1
  97. package/build/typedEventEmitter.d.ts +7 -13
  98. package/build/typedEventEmitter.d.ts.map +1 -1
  99. package/build/typedEventEmitter.js +2 -2
  100. package/build/typedEventEmitter.js.map +1 -1
  101. package/build/userSession.d.ts +8 -0
  102. package/build/userSession.d.ts.map +1 -0
  103. package/build/userSession.js +3 -0
  104. package/build/userSession.js.map +1 -0
  105. package/package.json +22 -7
  106. package/build/eventsourcing/utils.d.ts +0 -4
  107. package/build/eventsourcing/utils.d.ts.map +0 -1
  108. package/build/eventsourcing/utils.js.map +0 -1
  109. package/build/validation.d.ts +0 -64
  110. package/build/validation.d.ts.map +0 -1
  111. package/build/validation.js +0 -57
  112. package/build/validation.js.map +0 -1
  113. package/src/authentication.ts +0 -273
  114. package/src/cache.ts +0 -109
  115. package/src/clusterAdministration.ts +0 -216
  116. package/src/configuration.ts +0 -71
  117. package/src/database.ts +0 -157
  118. package/src/endpoints.ts +0 -198
  119. package/src/evenstore.ts +0 -27
  120. package/src/eventsourcing/aggregateBuilder.ts +0 -11
  121. package/src/eventsourcing/commandBuilder.ts +0 -64
  122. package/src/eventsourcing/commandHandlers.ts +0 -137
  123. package/src/eventsourcing/eventHandlers.ts +0 -118
  124. package/src/eventsourcing/eventHandlersBuilder.ts +0 -42
  125. package/src/eventsourcing/externalSystemBuilder.ts +0 -20
  126. package/src/eventsourcing/index.ts +0 -111
  127. package/src/eventsourcing/invariants.ts +0 -27
  128. package/src/eventsourcing/utils.ts +0 -4
  129. package/src/index.ts +0 -15
  130. package/src/infrastructure.ts +0 -41
  131. package/src/logger.ts +0 -45
  132. package/src/outboxManager.ts +0 -36
  133. package/src/ports.ts +0 -42
  134. package/src/routesAuth.ts +0 -58
  135. package/src/typedEventEmitter.ts +0 -73
  136. package/src/validation.ts +0 -89
  137. package/tsconfig.json +0 -15
@@ -1,10 +1,3 @@
1
- /// <reference types="ramda/node_modules/ts-toolbelt" />
2
- import { BaseSchema, ObjectSchema } from '@bett3r-dev/jsonschema-definer';
3
- import { CollectionFilter, Document } from '../database';
4
- import { ResponseObject } from '../endpoints';
5
- import { PortEmitter } from '../ports';
6
- import { EventSourcingCommandHandlers, ExecuteCommandFunction, System } from './commandHandlers';
7
- import { EventHandler } from './eventHandlers';
8
1
  export * from './commandHandlers';
9
2
  export * from './eventHandlers';
10
3
  export * from './invariants';
@@ -12,375 +5,6 @@ export * from './aggregateBuilder';
12
5
  export * from './commandBuilder';
13
6
  export * from './eventHandlersBuilder';
14
7
  export * from './externalSystemBuilder';
15
- export type Message<Payload, Name = string> = {
16
- name?: Name;
17
- data?: Payload;
18
- description?: string;
19
- };
20
- export type MessageSchema<Payload> = {
21
- schema?: BaseSchema<Payload> | BaseSchema<Payload, false> | ObjectSchema | BaseSchema | null;
22
- };
23
- export type EventInstance<Payload = any, Name = any> = Message<Payload, Name> & MessageSchema<Payload>;
24
- export declare const Event: <Payload>(eventInstance: EventInstance<Payload, any>) => EventInstance<Payload, any>;
25
- export type EventFactory<Name = any, EventPayload = any> = () => EventInstance<EventPayload, Name>;
26
- export declare const EventMetadataSchema: ObjectSchema<{
27
- causationId?: string | undefined;
28
- correlationId?: string | undefined;
29
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
30
- }, true>;
31
- export type EventMetadata = typeof EventMetadataSchema.type;
32
- export type EventToCommit<Payload = any> = {
33
- name: string;
34
- data?: Payload;
35
- stream: string;
36
- metadata: EventMetadata;
37
- };
38
- export type CommittedEvent<Payload = any> = EventToCommit<Payload> & {
39
- id: number;
40
- timestamp: string;
41
- version: number;
42
- };
43
- export declare const CommittedEventSchema: <T>(payloadSchema: BaseSchema<T, true, Readonly<import("@bett3r-dev/jsonschema-definer/dist/base").BaseJsonSchema>>, names?: string | string[]) => ObjectSchema<[import("Object/Pick")._Pick<{
44
- id: number;
45
- name: any;
46
- timestamp: string;
47
- data: T;
48
- version: number;
49
- stream: string;
50
- metadata: {
51
- causationId?: string | undefined;
52
- correlationId?: string | undefined;
53
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
54
- };
55
- }, import("Object/SelectKeys")._SelectKeys<{
56
- id: number;
57
- name: any;
58
- timestamp: string;
59
- data: T;
60
- version: number;
61
- stream: string;
62
- metadata: {
63
- causationId?: string | undefined;
64
- correlationId?: string | undefined;
65
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
66
- };
67
- }, undefined, "default">> extends infer T_1 ? { [K in keyof T_1]?: import("Object/Pick")._Pick<{
68
- id: number;
69
- name: any;
70
- timestamp: string;
71
- data: T;
72
- version: number;
73
- stream: string;
74
- metadata: {
75
- causationId?: string | undefined;
76
- correlationId?: string | undefined;
77
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
78
- };
79
- }, import("Object/SelectKeys")._SelectKeys<{
80
- id: number;
81
- name: any;
82
- timestamp: string;
83
- data: T;
84
- version: number;
85
- stream: string;
86
- metadata: {
87
- causationId?: string | undefined;
88
- correlationId?: string | undefined;
89
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
90
- };
91
- }, undefined, "default">>[K] | undefined; } : never] extends [import("List/List").List] ? import("List/List").List & (import("Object/Pick")._Pick<{
92
- id: number;
93
- name: any;
94
- timestamp: string;
95
- data: T;
96
- version: number;
97
- stream: string;
98
- metadata: {
99
- causationId?: string | undefined;
100
- correlationId?: string | undefined;
101
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
102
- };
103
- }, import("Object/SelectKeys")._SelectKeys<{
104
- id: number;
105
- name: any;
106
- timestamp: string;
107
- data: T;
108
- version: number;
109
- stream: string;
110
- metadata: {
111
- causationId?: string | undefined;
112
- correlationId?: string | undefined;
113
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
114
- };
115
- }, undefined, "default">> extends infer T_2 ? { [K in keyof T_2]?: import("Object/Pick")._Pick<{
116
- id: number;
117
- name: any;
118
- timestamp: string;
119
- data: T;
120
- version: number;
121
- stream: string;
122
- metadata: {
123
- causationId?: string | undefined;
124
- correlationId?: string | undefined;
125
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
126
- };
127
- }, import("Object/SelectKeys")._SelectKeys<{
128
- id: number;
129
- name: any;
130
- timestamp: string;
131
- data: T;
132
- version: number;
133
- stream: string;
134
- metadata: {
135
- causationId?: string | undefined;
136
- correlationId?: string | undefined;
137
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
138
- };
139
- }, undefined, "default">>[K] | undefined; } : never) : { [K_1 in keyof (import("List/ObjectOf").ObjectOf<import("Object/Pick")._Pick<{
140
- id: number;
141
- name: any;
142
- timestamp: string;
143
- data: T;
144
- version: number;
145
- stream: string;
146
- metadata: {
147
- causationId?: string | undefined;
148
- correlationId?: string | undefined;
149
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
150
- };
151
- }, import("Object/SelectKeys")._SelectKeys<{
152
- id: number;
153
- name: any;
154
- timestamp: string;
155
- data: T;
156
- version: number;
157
- stream: string;
158
- metadata: {
159
- causationId?: string | undefined;
160
- correlationId?: string | undefined;
161
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
162
- };
163
- }, undefined, "default">> extends infer T_3 ? { [K in keyof T_3]?: import("Object/Pick")._Pick<{
164
- id: number;
165
- name: any;
166
- timestamp: string;
167
- data: T;
168
- version: number;
169
- stream: string;
170
- metadata: {
171
- causationId?: string | undefined;
172
- correlationId?: string | undefined;
173
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
174
- };
175
- }, import("Object/SelectKeys")._SelectKeys<{
176
- id: number;
177
- name: any;
178
- timestamp: string;
179
- data: T;
180
- version: number;
181
- stream: string;
182
- metadata: {
183
- causationId?: string | undefined;
184
- correlationId?: string | undefined;
185
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
186
- };
187
- }, undefined, "default">>[K] | undefined; } : never> & import("Object/Omit")._Omit<{
188
- id: number;
189
- name: any;
190
- timestamp: string;
191
- data: T;
192
- version: number;
193
- stream: string;
194
- metadata: {
195
- causationId?: string | undefined;
196
- correlationId?: string | undefined;
197
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
198
- };
199
- }, keyof import("List/ObjectOf").ObjectOf<import("Object/Pick")._Pick<{
200
- id: number;
201
- name: any;
202
- timestamp: string;
203
- data: T;
204
- version: number;
205
- stream: string;
206
- metadata: {
207
- causationId?: string | undefined;
208
- correlationId?: string | undefined;
209
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
210
- };
211
- }, import("Object/SelectKeys")._SelectKeys<{
212
- id: number;
213
- name: any;
214
- timestamp: string;
215
- data: T;
216
- version: number;
217
- stream: string;
218
- metadata: {
219
- causationId?: string | undefined;
220
- correlationId?: string | undefined;
221
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
222
- };
223
- }, undefined, "default">> extends infer T_4 ? { [K in keyof T_4]?: import("Object/Pick")._Pick<{
224
- id: number;
225
- name: any;
226
- timestamp: string;
227
- data: T;
228
- version: number;
229
- stream: string;
230
- metadata: {
231
- causationId?: string | undefined;
232
- correlationId?: string | undefined;
233
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
234
- };
235
- }, import("Object/SelectKeys")._SelectKeys<{
236
- id: number;
237
- name: any;
238
- timestamp: string;
239
- data: T;
240
- version: number;
241
- stream: string;
242
- metadata: {
243
- causationId?: string | undefined;
244
- correlationId?: string | undefined;
245
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
246
- };
247
- }, undefined, "default">>[K] | undefined; } : never>>)]: import("Object/Patch").PatchProp<import("Object/At").AtBasic<import("List/ObjectOf").ObjectOf<import("Object/Pick")._Pick<{
248
- id: number;
249
- name: any;
250
- timestamp: string;
251
- data: T;
252
- version: number;
253
- stream: string;
254
- metadata: {
255
- causationId?: string | undefined;
256
- correlationId?: string | undefined;
257
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
258
- };
259
- }, import("Object/SelectKeys")._SelectKeys<{
260
- id: number;
261
- name: any;
262
- timestamp: string;
263
- data: T;
264
- version: number;
265
- stream: string;
266
- metadata: {
267
- causationId?: string | undefined;
268
- correlationId?: string | undefined;
269
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
270
- };
271
- }, undefined, "default">> extends infer T_5 ? { [K in keyof T_5]?: import("Object/Pick")._Pick<{
272
- id: number;
273
- name: any;
274
- timestamp: string;
275
- data: T;
276
- version: number;
277
- stream: string;
278
- metadata: {
279
- causationId?: string | undefined;
280
- correlationId?: string | undefined;
281
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
282
- };
283
- }, import("Object/SelectKeys")._SelectKeys<{
284
- id: number;
285
- name: any;
286
- timestamp: string;
287
- data: T;
288
- version: number;
289
- stream: string;
290
- metadata: {
291
- causationId?: string | undefined;
292
- correlationId?: string | undefined;
293
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
294
- };
295
- }, undefined, "default">>[K] | undefined; } : never>, K_1>, import("Object/At").AtBasic<{
296
- id: number;
297
- name: any;
298
- timestamp: string;
299
- data: T;
300
- version: number;
301
- stream: string;
302
- metadata: {
303
- causationId?: string | undefined;
304
- correlationId?: string | undefined;
305
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
306
- };
307
- }, K_1>, K_1, keyof import("List/ObjectOf").ObjectOf<import("Object/Pick")._Pick<{
308
- id: number;
309
- name: any;
310
- timestamp: string;
311
- data: T;
312
- version: number;
313
- stream: string;
314
- metadata: {
315
- causationId?: string | undefined;
316
- correlationId?: string | undefined;
317
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
318
- };
319
- }, import("Object/SelectKeys")._SelectKeys<{
320
- id: number;
321
- name: any;
322
- timestamp: string;
323
- data: T;
324
- version: number;
325
- stream: string;
326
- metadata: {
327
- causationId?: string | undefined;
328
- correlationId?: string | undefined;
329
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
330
- };
331
- }, undefined, "default">> extends infer T_6 ? { [K in keyof T_6]?: import("Object/Pick")._Pick<{
332
- id: number;
333
- name: any;
334
- timestamp: string;
335
- data: T;
336
- version: number;
337
- stream: string;
338
- metadata: {
339
- causationId?: string | undefined;
340
- correlationId?: string | undefined;
341
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
342
- };
343
- }, import("Object/SelectKeys")._SelectKeys<{
344
- id: number;
345
- name: any;
346
- timestamp: string;
347
- data: T;
348
- version: number;
349
- stream: string;
350
- metadata: {
351
- causationId?: string | undefined;
352
- correlationId?: string | undefined;
353
- user?: import("@bett3r-dev/jsonschema-definer/dist/base").Any;
354
- };
355
- }, undefined, "default">>[K] | undefined; } : never>>; }, true>;
356
- export type GetMessageType<Payload> = Payload extends (() => EventInstance<infer T>) ? T : unknown;
357
- export type Builder<T = any> = {
358
- build: () => T;
359
- };
360
- export type GetBuilderType<T> = T extends (Builder<infer InnerT>) ? InnerT : T;
361
- export type ReadModelSubscription<Model extends Document = any> = {
362
- id: string;
363
- res: ResponseObject;
364
- filter: CollectionFilter<Model>[];
365
- };
366
- export type ReadStreamOptions = {
367
- stream?: string;
368
- direction?: 'forwards' | 'backwards';
369
- from?: number;
370
- fromVersion?: number;
371
- limit?: number;
372
- events?: string[];
373
- before?: string;
374
- after?: string;
375
- };
376
- export type ReadMultipleStreamOptions = Omit<ReadStreamOptions, 'stream'> & {
377
- streams: string[];
378
- };
379
- export type EventSourcingType = Pick<EventSourcingCommandHandlers, 'executeCommand' | 'loadAggregateState' | 'loadStream'> & {
380
- routeEventHandler: (eventHandler: EventHandler | Builder<EventHandler>) => void;
381
- routeCommandHandler: (commandHandler: System) => void;
382
- handleEvent: (eventHandler: EventHandler, executeCommand: ExecuteCommandFunction) => (event: CommittedEvent) => Promise<any>;
383
- logEventsourcingRoutes: () => void;
384
- };
385
- export type EventSourcingPort = PortEmitter & EventSourcingType;
8
+ export * from './eventsourcing.types';
9
+ export * from './shapeChangeForSubscriber';
386
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eventsourcing/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/eventsourcing/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,oBAAoB,CAAC;AACnC,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC"}
@@ -13,12 +13,7 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
13
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
- var __importDefault = (this && this.__importDefault) || function (mod) {
17
- return (mod && mod.__esModule) ? mod : { "default": mod };
18
- };
19
16
  Object.defineProperty(exports, "__esModule", { value: true });
20
- exports.CommittedEventSchema = exports.EventMetadataSchema = exports.Event = void 0;
21
- const jsonschema_definer_1 = __importDefault(require("@bett3r-dev/jsonschema-definer"));
22
17
  __exportStar(require("./commandHandlers"), exports);
23
18
  __exportStar(require("./eventHandlers"), exports);
24
19
  __exportStar(require("./invariants"), exports);
@@ -26,22 +21,6 @@ __exportStar(require("./aggregateBuilder"), exports);
26
21
  __exportStar(require("./commandBuilder"), exports);
27
22
  __exportStar(require("./eventHandlersBuilder"), exports);
28
23
  __exportStar(require("./externalSystemBuilder"), exports);
29
- const Event = (eventInstance) => eventInstance;
30
- exports.Event = Event;
31
- exports.EventMetadataSchema = jsonschema_definer_1.default.shape({
32
- causationId: jsonschema_definer_1.default.string().optional(),
33
- correlationId: jsonschema_definer_1.default.string().optional(),
34
- user: jsonschema_definer_1.default.any().optional()
35
- });
36
- const ensureArray = (maybeArray) => Array.isArray(maybeArray) ? maybeArray : [maybeArray];
37
- const CommittedEventSchema = (payloadSchema, names) => jsonschema_definer_1.default.shape({
38
- id: jsonschema_definer_1.default.number(),
39
- name: (names ? jsonschema_definer_1.default.string().enum(...ensureArray(names)) : jsonschema_definer_1.default.string()),
40
- timestamp: jsonschema_definer_1.default.string().format('date-time'),
41
- data: payloadSchema,
42
- version: jsonschema_definer_1.default.number(),
43
- stream: jsonschema_definer_1.default.string(),
44
- metadata: exports.EventMetadataSchema,
45
- });
46
- exports.CommittedEventSchema = CommittedEventSchema;
24
+ __exportStar(require("./eventsourcing.types"), exports);
25
+ __exportStar(require("./shapeChangeForSubscriber"), exports);
47
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eventsourcing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,wFAA6E;AAO7E,oDAAkC;AAClC,kDAAgC;AAChC,+CAA6B;AAC7B,qDAAmC;AACnC,mDAAiC;AACjC,yDAAuC;AACvC,0DAAwC;AAcjC,MAAM,KAAK,GAAG,CAAW,aAAqC,EAA2B,EAAE,CAAC,aAAa,CAAC;AAApG,QAAA,KAAK,SAA+F;AAIpG,QAAA,mBAAmB,GAAG,4BAAC,CAAC,KAAK,CAAC;IACzC,WAAW,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,aAAa,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACpC,IAAI,EAAE,4BAAC,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACzB,CAAC,CAAC;AAiBH,MAAM,WAAW,GAAG,CAAE,UAAe,EAAG,EAAE,CAAC,KAAK,CAAC,OAAO,CAAE,UAAU,CAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;AAE5F,MAAM,oBAAoB,GAAG,CAAK,aAA4B,EAAE,KAAyB,EAAE,EAAE,CAAC,4BAAC,CAAC,KAAK,CAAC;IAC3G,EAAE,EAAE,4BAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAE,KAAK,CAAC,CAAC,CAAC,4BAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAE,GAAG,WAAW,CAAE,KAAK,CAAE,CAAC,CAAC,CAAC,CAAC,4BAAC,CAAC,MAAM,EAAE,CAAC;IACvE,SAAS,EAAE,4BAAC,CAAC,MAAM,EAAE,CAAC,MAAM,CAAE,WAAW,CAAE;IAC3C,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,4BAAC,CAAC,MAAM,EAAE;IACnB,MAAM,EAAE,4BAAC,CAAC,MAAM,EAAE;IAClB,QAAQ,EAAE,2BAAmB;CAC9B,CAAC,CAAC;AARU,QAAA,oBAAoB,wBAQ9B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/eventsourcing/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,kDAAgC;AAChC,+CAA6B;AAC7B,qDAAmC;AACnC,mDAAiC;AACjC,yDAAuC;AACvC,0DAAwC;AACxC,wDAAsC;AACtC,6DAA2C"}
@@ -1,19 +1,43 @@
1
- import { DatabaseOps, ErrorTypes, LoggerType } from '..';
1
+ import { CommandHandlerState, DatabaseOps, EndpointsPort, LoggerType } from '..';
2
2
  export type InvariantParams = {
3
3
  errorName?: string;
4
- errorType?: ErrorTypes;
4
+ errorMessage?: string;
5
5
  logger?: LoggerType;
6
6
  };
7
- export type ReadmodelInvariantComparisonOR = {
8
- OR: ReadmodelInvariantComparison[];
7
+ export type ReadmodelInvariantParams<Model, CommandPayload, PARAMS, READMODELTYPE> = InvariantParams & {
8
+ /** If the query is for a readmodel in the same cluster, You are only required to provide the uri from the path portion.
9
+ * example:
10
+ * ```
11
+ * /roles-readmodel/some-id?key=value&key2=value2
12
+ * ```
13
+ *
14
+ * If you are querying a readmodel from another cluster or an external service, you will need to provide the full uri including protocol.
15
+ * @returns {string | {uri: string, headers: Record<string, string>}}
16
+ */
17
+ externalUrl?: (handlerState: CommandHandlerState<any, CommandPayload, Model>) => string | {
18
+ url: string;
19
+ requestInit?: RequestInit | undefined;
20
+ };
21
+ clientFunction?: (params: PARAMS) => Promise<READMODELTYPE>;
22
+ params?: (handlerState: CommandHandlerState<any, CommandPayload, Model>) => PARAMS;
23
+ endpoints: EndpointsPort;
9
24
  };
10
- export type ReadmodelInvariantComparisonAND = {
11
- AND: ReadmodelInvariantComparison[];
25
+ export type ReadmodelInvariantComparisonOR<Model, CommandPayload, Readmodel> = {
26
+ or: ReadmodelInvariantComparison<Model, CommandPayload, Readmodel>[];
12
27
  };
13
- export type ReadmodelInvariantComparisonInstance = {
14
- path: string;
15
- readmodelPath: string;
28
+ export type ReadmodelInvariantComparisonAND<Model, CommandPayload, Readmodel> = {
29
+ and: ReadmodelInvariantComparison<Model, CommandPayload, Readmodel>[];
30
+ };
31
+ export type ReadmodelInvariantComparisonInstance<Model, CommandPayload, Readmodel> = {
32
+ value1: (CommandHandlerState: CommandHandlerState<any, CommandPayload, Model> & {
33
+ readmodel: Readmodel;
34
+ readmodelResponse?: Response;
35
+ }) => any;
36
+ value2?: (CommandHandlerState: CommandHandlerState<any, CommandPayload, Model> & {
37
+ readmodel: Readmodel;
38
+ readmodelResponse?: Response;
39
+ }) => any;
16
40
  op: DatabaseOps;
17
41
  };
18
- export type ReadmodelInvariantComparison = Partial<ReadmodelInvariantComparisonOR & ReadmodelInvariantComparisonAND & ReadmodelInvariantComparisonInstance>;
42
+ export type ReadmodelInvariantComparison<Model = any, CommandPayload = any, Readmodel = any> = ReadmodelInvariantComparisonOR<Model, CommandPayload, Readmodel> | ReadmodelInvariantComparisonAND<Model, CommandPayload, Readmodel> | ReadmodelInvariantComparisonInstance<Model, CommandPayload, Readmodel>;
19
43
  //# sourceMappingURL=invariants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"invariants.d.ts","sourceRoot":"","sources":["../../src/eventsourcing/invariants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,IAAI,CAAC;AAEzD,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,EAAE,EAAE,4BAA4B,EAAE,CAAA;CACnC,CAAA;AAED,MAAM,MAAM,+BAA+B,GAAG;IAC5C,GAAG,EAAE,4BAA4B,EAAE,CAAA;CACpC,CAAA;AAED,MAAM,MAAM,oCAAoC,GAAG;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,EAAE,EAAE,WAAW,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,4BAA4B,GAAG,OAAO,CAChD,8BAA8B,GAC9B,+BAA+B,GAC/B,oCAAoC,CACrC,CAAA"}
1
+ {"version":3,"file":"invariants.d.ts","sourceRoot":"","sources":["../../src/eventsourcing/invariants.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,aAAa,EAAc,UAAU,EAAE,MAAM,IAAI,CAAC;AAE7F,MAAM,MAAM,eAAe,GAAG;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,IAAI,eAAe,GAAG;IACrG;;;;;;;;MAQE;IACF,WAAW,CAAC,EAAE,CAAE,YAAY,EAAE,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,KAAM,MAAM,GAAG;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;KAAE,CAAC;IACnJ,cAAc,CAAC,EAAE,CAAE,MAAM,EAAE,MAAM,KAAM,OAAO,CAAC,aAAa,CAAC,CAAC;IAC9D,MAAM,CAAC,EAAE,CAAE,YAAY,EAAE,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,KAAM,MAAM,CAAC;IACrF,SAAS,EAAE,aAAa,CAAA;CACzB,CAAC;AAEF,MAAM,MAAM,8BAA8B,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,IAAI;IAC7E,EAAE,EAAE,4BAA4B,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,CAAA;CACrE,CAAC;AAEF,MAAM,MAAM,+BAA+B,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,IAAI;IAC9E,GAAG,EAAE,4BAA4B,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,EAAE,CAAA;CACtE,CAAC;AAEF,MAAM,MAAM,oCAAoC,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,IAAI;IACnF,MAAM,EAAE,CAAE,mBAAmB,EAAE,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,GAAG;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAA;KAAE,KAAK,GAAG,CAAC;IAChJ,MAAM,CAAC,EAAE,CAAE,mBAAmB,EAAE,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,CAAC,GAAG;QAAE,SAAS,EAAE,SAAS,CAAC;QAAC,iBAAiB,CAAC,EAAE,QAAQ,CAAA;KAAE,KAAK,GAAG,CAAC;IACjJ,EAAE,EAAE,WAAW,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,4BAA4B,CAAC,KAAK,GAAG,GAAG,EAAE,cAAc,GAAG,GAAG,EAAE,SAAS,GAAG,GAAG,IACzF,8BAA8B,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,GAChE,+BAA+B,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,GACjE,oCAAoC,CAAC,KAAK,EAAE,cAAc,EAAE,SAAS,CAAC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { Document } from '../database';
2
+ import { EndpointActionParams } from '../endpoints';
3
+ import { QueryResponseFormatter, ReadmodelChange } from './eventHandlers';
4
+ /**
5
+ * Applies a query's `responseFormatter` to one outgoing change, on behalf of ONE
6
+ * subscriber.
7
+ *
8
+ * Called AFTER the subscription's filter has already matched, so the formatter
9
+ * never influences routing — only what that subscriber sees. `snapshot` and
10
+ * `signal` carry no document and pass through untouched.
11
+ *
12
+ * CONTRACT: a `responseFormatter` must be a PURE, SYNCHRONOUS function of
13
+ * ( data, caller ). It now runs once per matching subscriber rather than once per
14
+ * change, so side effects or non-determinism change behaviour with subscriber
15
+ * count.
16
+ *
17
+ * Note the shape it is handed HERE: a SINGLE document, one call each for `data` and
18
+ * `previous` — never an array, unlike the query path where a default list query hands
19
+ * it `MODEL[]`. See `QueryResponseFormatter` for the full duality.
20
+ *
21
+ * CONTRACT — `caller` may be `undefined`. A subscription's `caller` is only ever
22
+ * absent when the subscription record itself was created without one (an optional
23
+ * parameter on `startSubscription`/`createSubscription`, exercised today only by
24
+ * tests that omit it). Callers of this function MUST still route through it in that
25
+ * case — never skip the formatter and pass the raw change through — because the
26
+ * formatter is the sole authority on what an unidentified caller may see. A
27
+ * formatter that performs authorization-sensitive shaping (e.g. field redaction)
28
+ * must treat `caller?.context?.user === undefined` as the least-privileged case, not
29
+ * assume it never happens. Absence of a caller must never be the SITE's excuse to
30
+ * skip shaping — that is precisely the fail-open pattern this contract forbids.
31
+ */
32
+ export declare const shapeChangeForSubscriber: <T extends Document>(change: ReadmodelChange<T>, formatter: QueryResponseFormatter<T> | undefined, caller: EndpointActionParams | undefined) => ReadmodelChange<T>;
33
+ //# sourceMappingURL=shapeChangeForSubscriber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapeChangeForSubscriber.d.ts","sourceRoot":"","sources":["../../src/eventsourcing/shapeChangeForSubscriber.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAE1E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,eAAO,MAAM,wBAAwB,GAAI,CAAC,SAAS,QAAQ,UACjD,eAAe,CAAC,CAAC,CAAC,aACf,sBAAsB,CAAC,CAAC,CAAC,GAAG,SAAS,UACxC,oBAAoB,GAAG,SAAS,KACvC,eAAe,CAAC,CAAC,CAYnB,CAAC"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.shapeChangeForSubscriber = void 0;
4
+ /**
5
+ * Applies a query's `responseFormatter` to one outgoing change, on behalf of ONE
6
+ * subscriber.
7
+ *
8
+ * Called AFTER the subscription's filter has already matched, so the formatter
9
+ * never influences routing — only what that subscriber sees. `snapshot` and
10
+ * `signal` carry no document and pass through untouched.
11
+ *
12
+ * CONTRACT: a `responseFormatter` must be a PURE, SYNCHRONOUS function of
13
+ * ( data, caller ). It now runs once per matching subscriber rather than once per
14
+ * change, so side effects or non-determinism change behaviour with subscriber
15
+ * count.
16
+ *
17
+ * Note the shape it is handed HERE: a SINGLE document, one call each for `data` and
18
+ * `previous` — never an array, unlike the query path where a default list query hands
19
+ * it `MODEL[]`. See `QueryResponseFormatter` for the full duality.
20
+ *
21
+ * CONTRACT — `caller` may be `undefined`. A subscription's `caller` is only ever
22
+ * absent when the subscription record itself was created without one (an optional
23
+ * parameter on `startSubscription`/`createSubscription`, exercised today only by
24
+ * tests that omit it). Callers of this function MUST still route through it in that
25
+ * case — never skip the formatter and pass the raw change through — because the
26
+ * formatter is the sole authority on what an unidentified caller may see. A
27
+ * formatter that performs authorization-sensitive shaping (e.g. field redaction)
28
+ * must treat `caller?.context?.user === undefined` as the least-privileged case, not
29
+ * assume it never happens. Absence of a caller must never be the SITE's excuse to
30
+ * skip shaping — that is precisely the fail-open pattern this contract forbids.
31
+ */
32
+ const shapeChangeForSubscriber = (change, formatter, caller) => {
33
+ if (!formatter)
34
+ return change;
35
+ switch (change.type) {
36
+ case 'insert': return { ...change, data: formatter(change.data, caller) };
37
+ case 'delete': return { ...change, previous: formatter(change.previous, caller) };
38
+ case 'update': return {
39
+ ...change,
40
+ data: formatter(change.data, caller),
41
+ previous: formatter(change.previous, caller)
42
+ };
43
+ default: return change;
44
+ }
45
+ };
46
+ exports.shapeChangeForSubscriber = shapeChangeForSubscriber;
47
+ //# sourceMappingURL=shapeChangeForSubscriber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shapeChangeForSubscriber.js","sourceRoot":"","sources":["../../src/eventsourcing/shapeChangeForSubscriber.ts"],"names":[],"mappings":";;;AAIA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACI,MAAM,wBAAwB,GAAG,CACtC,MAA0B,EAC1B,SAAgD,EAChD,MAAwC,EACpB,EAAE;IACtB,IAAK,CAAC,SAAS;QAAG,OAAO,MAAM,CAAC;IAChC,QAAS,MAAM,CAAC,IAAI,EAAG,CAAC;QACtB,KAAK,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,SAAS,CAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAO,EAAE,CAAC;QACjF,KAAK,QAAQ,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAO,EAAE,CAAC;QACzF,KAAK,QAAQ,EAAE,OAAO;YACpB,GAAG,MAAM;YACT,IAAI,EAAE,SAAS,CAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAO;YAC3C,QAAQ,EAAE,SAAS,CAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAO;SACpD,CAAC;QACF,SAAS,OAAO,MAAM,CAAC;IACzB,CAAC;AACH,CAAC,CAAC;AAhBW,QAAA,wBAAwB,GAAxB,wBAAwB,CAgBnC"}
package/build/index.d.ts CHANGED
@@ -12,5 +12,10 @@ export * from './outboxManager';
12
12
  export * from './ports';
13
13
  export * from './routesAuth';
14
14
  export * from './typedEventEmitter';
15
- export * from './validation';
15
+ export * from './livenessWatchdog';
16
+ export * from './errors';
17
+ export * from './permissions';
18
+ export * from './userSession';
19
+ export * from './adminPlugin';
20
+ export * from './aggregateSchema';
16
21
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC;AACxB,cAAc,yBAAyB,CAAC;AACxC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC;AAChC,cAAc,SAAS,CAAC;AACxB,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC"}
package/build/index.js CHANGED
@@ -28,5 +28,10 @@ __exportStar(require("./outboxManager"), exports);
28
28
  __exportStar(require("./ports"), exports);
29
29
  __exportStar(require("./routesAuth"), exports);
30
30
  __exportStar(require("./typedEventEmitter"), exports);
31
- __exportStar(require("./validation"), exports);
31
+ __exportStar(require("./livenessWatchdog"), exports);
32
+ __exportStar(require("./errors"), exports);
33
+ __exportStar(require("./permissions"), exports);
34
+ __exportStar(require("./userSession"), exports);
35
+ __exportStar(require("./adminPlugin"), exports);
36
+ __exportStar(require("./aggregateSchema"), exports);
32
37
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,0CAAwB;AACxB,0DAAwC;AACxC,kDAAgC;AAChC,6CAA2B;AAC3B,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,mDAAiC;AACjC,2CAAyB;AACzB,kDAAgC;AAChC,0CAAwB;AACxB,+CAA6B;AAC7B,sDAAoC;AACpC,+CAA6B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,0CAAwB;AACxB,0DAAwC;AACxC,kDAAgC;AAChC,6CAA2B;AAC3B,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC;AAChC,mDAAiC;AACjC,2CAAyB;AACzB,kDAAgC;AAChC,0CAAwB;AACxB,+CAA6B;AAC7B,sDAAoC;AACpC,qDAAmC;AACnC,2CAAyB;AACzB,gDAA8B;AAC9B,gDAA8B;AAC9B,gDAA8B;AAC9B,oDAAkC"}