@effect-app/infra 0.174.7 → 0.176.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/CHANGELOG.md +12 -0
- package/_cjs/services/Operations/service.cjs +12 -6
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +72 -53
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_src/services/Operations/service.ts +6 -1
- package/_src/services/RepositoryBase.ts +57 -153
- package/dist/services/Operations/service.d.ts +4 -0
- package/dist/services/Operations/service.d.ts.map +1 -1
- package/dist/services/Operations/service.js +16 -10
- package/dist/services/RepositoryBase.d.ts +56 -82
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +58 -55
- package/package.json +3 -3
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
AnyPureDSL,
|
|
6
6
|
byIdAndSaveWithPure,
|
|
7
7
|
get,
|
|
8
|
-
queryAndSaveOnePureEffect,
|
|
9
8
|
queryEffect,
|
|
10
9
|
queryOneEffect,
|
|
11
10
|
type Repository,
|
|
@@ -95,15 +94,7 @@ export class RepositoryBaseC3<
|
|
|
95
94
|
Evt,
|
|
96
95
|
ItemType extends string
|
|
97
96
|
> extends RepositoryBaseC2<T, PM, Evt, ItemType> {
|
|
98
|
-
get
|
|
99
|
-
T extends { id: unknown },
|
|
100
|
-
PM extends PersistenceModelType<string>,
|
|
101
|
-
Evt,
|
|
102
|
-
ItemType extends string
|
|
103
|
-
>(
|
|
104
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
105
|
-
id: T["id"]
|
|
106
|
-
) {
|
|
97
|
+
get(id: T["id"]) {
|
|
107
98
|
return this
|
|
108
99
|
.find(id)
|
|
109
100
|
.flatMap((_) => _.encaseInEffect(() => new NotFoundError<ItemType>({ type: this.itemType, id })))
|
|
@@ -191,14 +182,7 @@ export class RepositoryBaseC3<
|
|
|
191
182
|
* TODO: project inside the db.
|
|
192
183
|
* @tsplus fluent Repository project
|
|
193
184
|
*/
|
|
194
|
-
project<
|
|
195
|
-
T extends { id: unknown },
|
|
196
|
-
PM extends PersistenceModelType<string>,
|
|
197
|
-
Evt,
|
|
198
|
-
ItemType extends string,
|
|
199
|
-
S = PM
|
|
200
|
-
>(
|
|
201
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
185
|
+
project<S = PM>(
|
|
202
186
|
map: {
|
|
203
187
|
filter?: Filter<PM>
|
|
204
188
|
collect?: (t: PM) => Option<S>
|
|
@@ -207,13 +191,8 @@ export class RepositoryBaseC3<
|
|
|
207
191
|
}
|
|
208
192
|
): Effect<S[]>
|
|
209
193
|
project<
|
|
210
|
-
T extends { id: unknown },
|
|
211
|
-
PM extends PersistenceModelType<string>,
|
|
212
|
-
Evt,
|
|
213
|
-
ItemType extends string,
|
|
214
194
|
U extends keyof PM
|
|
215
195
|
>(
|
|
216
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
217
196
|
map: {
|
|
218
197
|
filter?: QueryBuilder<PM>
|
|
219
198
|
select: NonEmptyReadonlyArray<U>
|
|
@@ -222,14 +201,9 @@ export class RepositoryBaseC3<
|
|
|
222
201
|
}
|
|
223
202
|
): Effect<Pick<PM, U>[]>
|
|
224
203
|
project<
|
|
225
|
-
T extends { id: unknown },
|
|
226
|
-
PM extends PersistenceModelType<string>,
|
|
227
|
-
Evt,
|
|
228
|
-
ItemType extends string,
|
|
229
204
|
U extends keyof PM,
|
|
230
205
|
S = Pick<PM, U>
|
|
231
206
|
>(
|
|
232
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
233
207
|
map: {
|
|
234
208
|
filter?: Filter<PM>
|
|
235
209
|
select?: NonEmptyReadonlyArray<U>
|
|
@@ -245,13 +219,7 @@ export class RepositoryBaseC3<
|
|
|
245
219
|
* TODO: count inside the db.
|
|
246
220
|
* @tsplus fluent Repository project
|
|
247
221
|
*/
|
|
248
|
-
count
|
|
249
|
-
T extends { id: unknown },
|
|
250
|
-
PM extends PersistenceModelType<string>,
|
|
251
|
-
Evt,
|
|
252
|
-
ItemType extends string
|
|
253
|
-
>(
|
|
254
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
222
|
+
count(
|
|
255
223
|
filter?: Filter<PM>
|
|
256
224
|
) {
|
|
257
225
|
return this
|
|
@@ -335,17 +303,7 @@ export class RepositoryBaseC3<
|
|
|
335
303
|
)
|
|
336
304
|
}
|
|
337
305
|
|
|
338
|
-
|
|
339
|
-
* @tsplus fluent Repository query
|
|
340
|
-
*/
|
|
341
|
-
query<
|
|
342
|
-
T extends { id: unknown },
|
|
343
|
-
PM extends PersistenceModelType<string>,
|
|
344
|
-
Evt,
|
|
345
|
-
ItemType extends string,
|
|
346
|
-
S = T
|
|
347
|
-
>(
|
|
348
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
306
|
+
query<S = T>(
|
|
349
307
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
350
308
|
map: { filter?: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number }
|
|
351
309
|
) {
|
|
@@ -355,51 +313,23 @@ export class RepositoryBaseC3<
|
|
|
355
313
|
/**
|
|
356
314
|
* @tsplus fluent Repository queryOne
|
|
357
315
|
*/
|
|
358
|
-
queryOne<
|
|
359
|
-
T extends { id: unknown },
|
|
360
|
-
PM extends PersistenceModelType<string>,
|
|
361
|
-
Evt,
|
|
362
|
-
ItemType extends string,
|
|
363
|
-
S = T
|
|
364
|
-
>(
|
|
365
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
316
|
+
queryOne<S = T>(
|
|
366
317
|
map: { filter?: Filter<PM>; collect: (t: T) => Option<S> }
|
|
367
318
|
): Effect<S, NotFoundError<ItemType>>
|
|
368
|
-
queryOne
|
|
369
|
-
T extends { id: unknown },
|
|
370
|
-
PM extends PersistenceModelType<string>,
|
|
371
|
-
Evt,
|
|
372
|
-
ItemType extends string
|
|
373
|
-
>(
|
|
374
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
319
|
+
queryOne(
|
|
375
320
|
map: { filter?: Filter<PM> }
|
|
376
321
|
): Effect<T, NotFoundError<ItemType>>
|
|
377
|
-
queryOne<
|
|
378
|
-
T extends { id: unknown },
|
|
379
|
-
PM extends PersistenceModelType<string>,
|
|
380
|
-
Evt,
|
|
381
|
-
ItemType extends string,
|
|
382
|
-
S = T
|
|
383
|
-
>(
|
|
384
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
322
|
+
queryOne<S = T>(
|
|
385
323
|
map: { filter?: Filter<PM>; collect?: (t: T) => Option<S> }
|
|
386
324
|
) {
|
|
387
325
|
return this.queryOneEffect(Effect.sync(() => map))
|
|
388
326
|
}
|
|
389
327
|
|
|
390
|
-
/**
|
|
391
|
-
* @tsplus fluent Repository queryAndSaveOnePureEffect
|
|
392
|
-
*/
|
|
393
328
|
queryAndSaveOnePureEffect<
|
|
394
|
-
T extends { id: unknown },
|
|
395
|
-
PM extends PersistenceModelType<string>,
|
|
396
|
-
Evt,
|
|
397
|
-
ItemType extends string,
|
|
398
329
|
R,
|
|
399
330
|
E,
|
|
400
331
|
S extends T = T
|
|
401
332
|
>(
|
|
402
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
403
333
|
map: Effect<{ filter: Filter<PM>; collect: (t: T) => Option<S>; limit?: number; skip?: number }, E, R>
|
|
404
334
|
): <R2, A, E2, S2 extends T>(
|
|
405
335
|
pure: Effect<A, E2, FixEnv<R2, Evt, S, S2>>
|
|
@@ -412,14 +342,9 @@ export class RepositoryBaseC3<
|
|
|
412
342
|
}>
|
|
413
343
|
>
|
|
414
344
|
queryAndSaveOnePureEffect<
|
|
415
|
-
T extends { id: unknown },
|
|
416
|
-
PM extends PersistenceModelType<string>,
|
|
417
|
-
Evt,
|
|
418
|
-
ItemType extends string,
|
|
419
345
|
R,
|
|
420
346
|
E
|
|
421
347
|
>(
|
|
422
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
423
348
|
map: Effect<{ filter: Filter<PM> }, E, R>
|
|
424
349
|
): <R2, A, E2, T2 extends T>(
|
|
425
350
|
pure: Effect<A, E2, FixEnv<R2, Evt, T, T2>>
|
|
@@ -432,7 +357,6 @@ export class RepositoryBaseC3<
|
|
|
432
357
|
}>
|
|
433
358
|
>
|
|
434
359
|
queryAndSaveOnePureEffect(
|
|
435
|
-
this: any,
|
|
436
360
|
map: any
|
|
437
361
|
) {
|
|
438
362
|
return (pure: any) =>
|
|
@@ -444,13 +368,8 @@ export class RepositoryBaseC3<
|
|
|
444
368
|
* @tsplus fluent Repository queryAndSaveOnePure
|
|
445
369
|
*/
|
|
446
370
|
queryAndSaveOnePure<
|
|
447
|
-
T extends { id: unknown },
|
|
448
|
-
PM extends PersistenceModelType<string>,
|
|
449
|
-
Evt,
|
|
450
|
-
ItemType extends string,
|
|
451
371
|
S extends T = T
|
|
452
372
|
>(
|
|
453
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
454
373
|
map: { filter: Filter<PM>; collect: (t: T) => Option<S>; limit?: number; skip?: number }
|
|
455
374
|
): <R2, A, E2, S2>(pure: Effect<A, E2, FixEnv<R2, Evt, S, S2>>) => Effect<
|
|
456
375
|
A,
|
|
@@ -459,13 +378,7 @@ export class RepositoryBaseC3<
|
|
|
459
378
|
env: PureEnv<Evt, S, S2>
|
|
460
379
|
}>
|
|
461
380
|
>
|
|
462
|
-
queryAndSaveOnePure
|
|
463
|
-
T extends { id: unknown },
|
|
464
|
-
PM extends PersistenceModelType<string>,
|
|
465
|
-
Evt,
|
|
466
|
-
ItemType extends string
|
|
467
|
-
>(
|
|
468
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
381
|
+
queryAndSaveOnePure(
|
|
469
382
|
map: { filter: Filter<PM> }
|
|
470
383
|
): <R2, A, E2, T2>(pure: Effect<A, E2, FixEnv<R2, Evt, T, T2>>) => Effect<
|
|
471
384
|
A,
|
|
@@ -474,26 +387,20 @@ export class RepositoryBaseC3<
|
|
|
474
387
|
env: PureEnv<Evt, T, T2>
|
|
475
388
|
}>
|
|
476
389
|
>
|
|
477
|
-
queryAndSaveOnePure(
|
|
478
|
-
|
|
479
|
-
map: { filter: Filter<any>; collect?: any }
|
|
390
|
+
queryAndSaveOnePure<S = T>(
|
|
391
|
+
map: { filter: Filter<PM>; collect: (t: T) => Option<S> }
|
|
480
392
|
) {
|
|
481
|
-
return queryAndSaveOnePureEffect(
|
|
393
|
+
return this.queryAndSaveOnePureEffect(Effect.sync(() => map))
|
|
482
394
|
}
|
|
483
395
|
|
|
484
396
|
/**
|
|
485
397
|
* @tsplus fluent Repository queryAndSavePureEffect
|
|
486
398
|
*/
|
|
487
399
|
queryAndSavePureEffect<
|
|
488
|
-
T extends { id: unknown },
|
|
489
|
-
PM extends PersistenceModelType<string>,
|
|
490
|
-
Evt,
|
|
491
|
-
ItemType extends string,
|
|
492
400
|
R,
|
|
493
401
|
E,
|
|
494
402
|
S extends T = T
|
|
495
403
|
>(
|
|
496
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
497
404
|
map: Effect<{ filter: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number }, E, R>
|
|
498
405
|
) {
|
|
499
406
|
return <R2, A, E2, S2 extends T>(pure: Effect<A, E2, FixEnv<R2, Evt, S[], S2[]>>) =>
|
|
@@ -505,34 +412,19 @@ export class RepositoryBaseC3<
|
|
|
505
412
|
* @tsplus fluent Repository queryAndSavePure
|
|
506
413
|
*/
|
|
507
414
|
queryAndSavePure<
|
|
508
|
-
T extends { id: unknown },
|
|
509
|
-
PM extends PersistenceModelType<string>,
|
|
510
|
-
Evt,
|
|
511
|
-
ItemType extends string,
|
|
512
415
|
S extends T = T
|
|
513
416
|
>(
|
|
514
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
515
417
|
map: { filter: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number }
|
|
516
418
|
) {
|
|
517
419
|
return this.queryAndSavePureEffect(Effect.sync(() => map))
|
|
518
420
|
}
|
|
519
421
|
|
|
520
|
-
saveManyWithPure
|
|
521
|
-
T extends { id: unknown },
|
|
522
|
-
PM extends PersistenceModelType<string>,
|
|
523
|
-
Evt,
|
|
524
|
-
ItemType extends string
|
|
525
|
-
>(this: RepositoryBaseC<T, PM, Evt, ItemType>) {
|
|
422
|
+
get saveManyWithPure() {
|
|
526
423
|
return <R, A, E, S1 extends T, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>) =>
|
|
527
424
|
(items: Iterable<S1>) => saveManyWithPure_(this, items, pure)
|
|
528
425
|
}
|
|
529
426
|
|
|
530
|
-
byIdAndSaveWithPure
|
|
531
|
-
T extends { id: unknown },
|
|
532
|
-
PM extends PersistenceModelType<string>,
|
|
533
|
-
Evt,
|
|
534
|
-
ItemType extends string
|
|
535
|
-
>(this: RepositoryBaseC<T, PM, Evt, ItemType>, id: T["id"]) {
|
|
427
|
+
byIdAndSaveWithPure(id: T["id"]) {
|
|
536
428
|
return <R, A, E, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, T, S2>>) =>
|
|
537
429
|
get(this, id).flatMap((item) => saveWithPure_(this, item, pure))
|
|
538
430
|
}
|
|
@@ -540,12 +432,7 @@ export class RepositoryBaseC3<
|
|
|
540
432
|
/**
|
|
541
433
|
* NOTE: it's not as composable, only useful when the request is simple, and only this part needs request args.
|
|
542
434
|
*/
|
|
543
|
-
handleByIdAndSaveWithPure
|
|
544
|
-
T extends { id: unknown },
|
|
545
|
-
PM extends PersistenceModelType<string>,
|
|
546
|
-
Evt,
|
|
547
|
-
ItemType extends string
|
|
548
|
-
>(this: RepositoryBaseC<T, PM, Evt, ItemType>) {
|
|
435
|
+
get handleByIdAndSaveWithPure() {
|
|
549
436
|
return <Req extends { id: T["id"] }, Context, R, A, E, S2 extends T>(
|
|
550
437
|
pure: (req: Req, ctx: Context) => Effect<A, E, FixEnv<R, Evt, T, S2>>
|
|
551
438
|
) =>
|
|
@@ -616,15 +503,10 @@ export class RepositoryBaseC3<
|
|
|
616
503
|
}
|
|
617
504
|
|
|
618
505
|
queryAndSavePureEffectBatched<
|
|
619
|
-
T extends { id: unknown },
|
|
620
|
-
PM extends PersistenceModelType<string>,
|
|
621
|
-
Evt,
|
|
622
|
-
ItemType extends string,
|
|
623
506
|
R,
|
|
624
507
|
E,
|
|
625
508
|
S extends T = T
|
|
626
509
|
>(
|
|
627
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
628
510
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
629
511
|
map: Effect<{ filter: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number }, E, R>,
|
|
630
512
|
batchSize = 100
|
|
@@ -635,13 +517,8 @@ export class RepositoryBaseC3<
|
|
|
635
517
|
}
|
|
636
518
|
|
|
637
519
|
queryAndSavePureBatched<
|
|
638
|
-
T extends { id: unknown },
|
|
639
|
-
PM extends PersistenceModelType<string>,
|
|
640
|
-
Evt,
|
|
641
|
-
ItemType extends string,
|
|
642
520
|
S extends T = T
|
|
643
521
|
>(
|
|
644
|
-
this: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
645
522
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
646
523
|
map: { filter: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number },
|
|
647
524
|
batchSize = 100
|
|
@@ -649,12 +526,7 @@ export class RepositoryBaseC3<
|
|
|
649
526
|
return this.queryAndSavePureEffectBatched(Effect.sync(() => map), batchSize)
|
|
650
527
|
}
|
|
651
528
|
|
|
652
|
-
saveManyWithPureBatched
|
|
653
|
-
T extends { id: unknown },
|
|
654
|
-
PM extends PersistenceModelType<string>,
|
|
655
|
-
Evt,
|
|
656
|
-
ItemType extends string
|
|
657
|
-
>(this: RepositoryBaseC<T, PM, Evt, ItemType>, batchSize = 100) {
|
|
529
|
+
saveManyWithPureBatched(batchSize = 100) {
|
|
658
530
|
return <R, A, E, S1 extends T, S2 extends T>(pure: Effect<A, E, FixEnv<R, Evt, S1[], S2[]>>) =>
|
|
659
531
|
(items: Iterable<S1>) => saveManyWithPureBatched_(this, items, pure, batchSize)
|
|
660
532
|
}
|
|
@@ -901,8 +773,8 @@ export function makeRepo<
|
|
|
901
773
|
|
|
902
774
|
return {
|
|
903
775
|
make,
|
|
904
|
-
where,
|
|
905
|
-
|
|
776
|
+
Where: where,
|
|
777
|
+
Query: QueryBuilder.make<PM>()
|
|
906
778
|
}
|
|
907
779
|
}
|
|
908
780
|
}
|
|
@@ -1057,13 +929,42 @@ export interface Repos<
|
|
|
1057
929
|
f: (r: Repository<T, PM, Evt, ItemType>) => Out
|
|
1058
930
|
): Effect<Out, E, StoreMaker | ContextMapContainer | R | RInitial | R2>
|
|
1059
931
|
/** @deprecated use `query` instead */
|
|
1060
|
-
readonly
|
|
1061
|
-
readonly
|
|
932
|
+
readonly Where: ReturnType<typeof makeWhere<PM>>
|
|
933
|
+
readonly Query: ReturnType<typeof QueryBuilder.make<PM>>
|
|
1062
934
|
readonly type: Repository<T, PM, Evt, ItemType>
|
|
1063
935
|
}
|
|
1064
936
|
|
|
1065
937
|
export type GetRepoType<T> = T extends { type: infer R } ? R : never
|
|
1066
938
|
|
|
939
|
+
export interface RepoFunctions<T extends { id: unknown }, PM extends { id: string }, Evt, ItemType, Service> {
|
|
940
|
+
all: Effect<readonly T[], never, Service>
|
|
941
|
+
find: (id: T["id"]) => Effect<T | null, never, Service>
|
|
942
|
+
saveAndPublish: (
|
|
943
|
+
items: Iterable<T>,
|
|
944
|
+
events?: Iterable<Evt>
|
|
945
|
+
) => Effect<void, InvalidStateError | OptimisticConcurrencyException, Service>
|
|
946
|
+
removeAndPublish: (
|
|
947
|
+
items: Iterable<T>,
|
|
948
|
+
events?: Iterable<Evt>
|
|
949
|
+
) => Effect<void, never, Service>
|
|
950
|
+
save: (...items: T[]) => Effect<void, InvalidStateError | OptimisticConcurrencyException, Service>
|
|
951
|
+
get: (id: T["id"]) => Effect<T, NotFoundError<ItemType>, Service>
|
|
952
|
+
|
|
953
|
+
query: <S = T>(map: {
|
|
954
|
+
filter?: Filter<PM>
|
|
955
|
+
collect?: (t: T) => Option<S>
|
|
956
|
+
limit?: number
|
|
957
|
+
skip?: number
|
|
958
|
+
}) => Effect<S[], never, never>
|
|
959
|
+
}
|
|
960
|
+
|
|
961
|
+
const makeRepoFunctions = (tag: any) => {
|
|
962
|
+
const { all } = Effect.serviceConstants(tag) as any
|
|
963
|
+
const { find, get, query, removeAndPublish, save, saveAndPublish } = Effect.serviceFunctions(tag) as any
|
|
964
|
+
|
|
965
|
+
return { all, find, saveAndPublish, removeAndPublish, save, get, query }
|
|
966
|
+
}
|
|
967
|
+
|
|
1067
968
|
export const RepositoryBaseImpl = <Service>() => {
|
|
1068
969
|
return <
|
|
1069
970
|
PM extends { id: string; _etag: string | undefined },
|
|
@@ -1083,6 +984,7 @@ export const RepositoryBaseImpl = <Service>() => {
|
|
|
1083
984
|
Evt,
|
|
1084
985
|
ItemType
|
|
1085
986
|
>
|
|
987
|
+
& RepoFunctions<T, PM, Evt, ItemType, Service>
|
|
1086
988
|
: never =>
|
|
1087
989
|
{
|
|
1088
990
|
const mkRepo = makeRepo<PM, Evt>()(
|
|
@@ -1098,11 +1000,12 @@ export const RepositoryBaseImpl = <Service>() => {
|
|
|
1098
1000
|
static readonly make = mkRepo.make
|
|
1099
1001
|
static readonly makeWith = ((a: any, b: any) => mkRepo.make(a).map(b)) as any
|
|
1100
1002
|
|
|
1101
|
-
static readonly
|
|
1102
|
-
static readonly
|
|
1003
|
+
static readonly Where = makeWhere<PM>()
|
|
1004
|
+
static readonly Query = QueryBuilder.make<PM>()
|
|
1103
1005
|
static readonly type: Repository<T, PM, Evt, ItemType> = undefined as any
|
|
1104
1006
|
}
|
|
1105
|
-
|
|
1007
|
+
|
|
1008
|
+
return assignTag<Service>()(Object.assign(Cls, makeRepoFunctions(Cls))) as any
|
|
1106
1009
|
}
|
|
1107
1010
|
}
|
|
1108
1011
|
|
|
@@ -1127,6 +1030,7 @@ export const RepositoryDefaultImpl = <Service>() => {
|
|
|
1127
1030
|
Evt,
|
|
1128
1031
|
ItemType
|
|
1129
1032
|
>
|
|
1033
|
+
& RepoFunctions<T, PM, Evt, ItemType, Service>
|
|
1130
1034
|
: never =>
|
|
1131
1035
|
{
|
|
1132
1036
|
const mkRepo = makeRepo<PM, Evt>()(
|
|
@@ -1144,11 +1048,11 @@ export const RepositoryDefaultImpl = <Service>() => {
|
|
|
1144
1048
|
static readonly make = mkRepo.make
|
|
1145
1049
|
static readonly makeWith = ((a: any, b: any) => mkRepo.make(a).map(b)) as any
|
|
1146
1050
|
|
|
1147
|
-
static readonly
|
|
1148
|
-
static readonly
|
|
1051
|
+
static readonly Where = makeWhere<PM>()
|
|
1052
|
+
static readonly Query = QueryBuilder.make<PM>()
|
|
1149
1053
|
|
|
1150
1054
|
static readonly type: Repository<T, PM, Evt, ItemType> = undefined as any
|
|
1151
1055
|
}
|
|
1152
|
-
return assignTag<Service>()(Cls) as any // impl is missing, but its marked protected
|
|
1056
|
+
return assignTag<Service>()(Object.assign(Cls, makeRepoFunctions(Cls))) as any // impl is missing, but its marked protected
|
|
1153
1057
|
}
|
|
1154
1058
|
}
|
|
@@ -19,6 +19,10 @@ declare const Operations_base: (new (service: {
|
|
|
19
19
|
* @tsplus companion Operations.Ops
|
|
20
20
|
*/
|
|
21
21
|
export declare class Operations extends Operations_base {
|
|
22
|
+
static readonly find: (id: import("effect-app/Operations").OperationId) => import("effect/Effect").Effect<import("effect/Option").Option<Operation>, never, Operations.Id>;
|
|
23
|
+
static readonly update: (id: import("effect-app/Operations").OperationId, progress: OperationProgress) => import("effect/Effect").Effect<void, never, Operations.Id>;
|
|
24
|
+
static readonly register: import("effect/Effect").Effect<import("effect-app/Operations").OperationId, never, Scope.Scope | Operations.Id>;
|
|
25
|
+
static readonly cleanup: import("effect/Effect").Effect<void, never, Operations.Id>;
|
|
22
26
|
}
|
|
23
27
|
export declare namespace Operations {
|
|
24
28
|
interface Id {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/Operations/service.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;;cAOzB,OAAO,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;iBACpC,WAAW,YAAY,iBAAiB,KAAK,OAAO,IAAI,CAAC;eAC3D,WAAW,KAAK,OAAO,OAAO,SAAS,CAAC,CAAC;aAC3C,OAAO,IAAI,CAAC;;cAHX,OAAO,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;iBACpC,WAAW,YAAY,iBAAiB,KAAK,OAAO,IAAI,CAAC;eAC3D,WAAW,KAAK,OAAO,OAAO,SAAS,CAAC,CAAC;aAC3C,OAAO,IAAI,CAAC;;AARvB;;;GAGG;AACH,qBAAa,UAAW,SAAQ,eAKhB;
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../../_src/services/Operations/service.ts"],"names":[],"mappings":";;;AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACtF,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;;cAOzB,OAAO,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;iBACpC,WAAW,YAAY,iBAAiB,KAAK,OAAO,IAAI,CAAC;eAC3D,WAAW,KAAK,OAAO,OAAO,SAAS,CAAC,CAAC;aAC3C,OAAO,IAAI,CAAC;;cAHX,OAAO,WAAW,EAAE,KAAK,EAAE,WAAW,CAAC;iBACpC,WAAW,YAAY,iBAAiB,KAAK,OAAO,IAAI,CAAC;eAC3D,WAAW,KAAK,OAAO,OAAO,SAAS,CAAC,CAAC;aAC3C,OAAO,IAAI,CAAC;;AARvB;;;GAGG;AACH,qBAAa,UAAW,SAAQ,eAKhB;IACd,MAAM,CAAC,QAAQ,CAAC,IAAI,uJAAqC;IACzD,MAAM,CAAC,QAAQ,CAAC,MAAM,+IAAuC;IAC7D,MAAM,CAAC,QAAQ,CAAC,QAAQ,kHAAyC;IACjE,MAAM,CAAC,QAAQ,CAAC,OAAO,6DAAwC;CAChE;AACD,yBAAiB,UAAU,CAAC;IAC1B,UAAiB,EAAE;QACjB,QAAQ,CAAC,CAAC,EAAE,OAAO,MAAM,CAAA;KAC1B;CACF;;;;;AAKD,wBAAgB,aAAa,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,+HAY3D;;;;;AAKD,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,SACvE,GAAG,iIACjB;;;;;AAKD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,+HAYnF;;;;;AAKD,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EACzD,IAAI,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAC1C,GAAG,EAAE,CAAC,EAAE,EAAE,WAAW,KAAK,MAAM,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,0JAc7C"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
+
var _a;
|
|
1
2
|
import * as tsplus_module_1 from "effect-app/service";
|
|
2
|
-
import * as tsplus_module_2 from "
|
|
3
|
-
import * as tsplus_module_3 from "effect/
|
|
3
|
+
import * as tsplus_module_2 from "effect/Effect";
|
|
4
|
+
import * as tsplus_module_3 from "@effect-app/infra/api/reportError";
|
|
4
5
|
export const forkOperation = forkOperation_1;
|
|
5
6
|
import * as Scope from "effect/Scope";
|
|
6
7
|
/**
|
|
@@ -9,14 +10,19 @@ import * as Scope from "effect/Scope";
|
|
|
9
10
|
*/
|
|
10
11
|
export class Operations extends tsplus_module_1.TagClass() {
|
|
11
12
|
}
|
|
13
|
+
_a = Operations;
|
|
14
|
+
Operations.find = tsplus_module_2.serviceFunctions(_a).find;
|
|
15
|
+
Operations.update = tsplus_module_2.serviceFunctions(_a).update;
|
|
16
|
+
Operations.register = tsplus_module_2.serviceConstants(_a).register;
|
|
17
|
+
Operations.cleanup = tsplus_module_2.serviceConstants(_a).cleanup;
|
|
12
18
|
/**
|
|
13
19
|
* @tsplus getter effect/io/Effect forkOperation
|
|
14
20
|
*/
|
|
15
21
|
function forkOperation_1(self) {
|
|
16
|
-
return
|
|
22
|
+
return tsplus_module_2.flatMap(Operations, (Operations) => tsplus_module_2.flatMap(Scope
|
|
17
23
|
.make(), (scope) => Scope.extend(Operations
|
|
18
24
|
.register, scope)
|
|
19
|
-
.tap(() =>
|
|
25
|
+
.tap(() => tsplus_module_3.forkDaemonReportRequestUnexpected(Scope.use(self, scope)))));
|
|
20
26
|
}
|
|
21
27
|
/**
|
|
22
28
|
* @tsplus getter function forkOperation
|
|
@@ -28,19 +34,19 @@ export function forkOperationFunction(fnc) {
|
|
|
28
34
|
* @tsplus static effect/io/Effect.Ops forkOperation
|
|
29
35
|
*/
|
|
30
36
|
export function forkOperation2(self) {
|
|
31
|
-
return
|
|
37
|
+
return tsplus_module_2.flatMap(Operations, (Operations) => tsplus_module_2.flatMap(Scope
|
|
32
38
|
.make(), (scope) => Scope.extend(Operations
|
|
33
39
|
.register, scope)
|
|
34
|
-
.tap((id) =>
|
|
40
|
+
.tap((id) => tsplus_module_3.forkDaemonReportRequestUnexpected(Scope.use(self(id), scope)))));
|
|
35
41
|
}
|
|
36
42
|
/**
|
|
37
43
|
* @tsplus static effect/io/Effect.Ops forkOperationWithEffect
|
|
38
44
|
*/
|
|
39
45
|
export function forkOperationWithEffect(self, fnc) {
|
|
40
|
-
return
|
|
46
|
+
return tsplus_module_2.flatMap(Operations, (Operations) => tsplus_module_2.flatMap(Scope
|
|
41
47
|
.make(), (scope) => Scope.extend(Operations
|
|
42
48
|
.register, scope)
|
|
43
|
-
.tap((opId) =>
|
|
44
|
-
.tap((opId) => Scope.extend(
|
|
49
|
+
.tap((opId) => tsplus_module_3.forkDaemonReportRequestUnexpected(Scope.use(self(opId), scope)))
|
|
50
|
+
.tap((opId) => Scope.extend(tsplus_module_2.forkScoped(tsplus_module_2.interruptible(fnc(opId))), scope))));
|
|
45
51
|
}
|
|
46
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL19zcmMvc2VydmljZXMvT3BlcmF0aW9ucy9zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7YUEyQmdCLGFBQWE7QUExQjdCLE9BQU8sS0FBSyxLQUFLLE1BQU0sY0FBYyxDQUFBO0FBRXJDOzs7R0FHRztBQUNILE1BQU0sT0FBTyxVQUFXLFNBQVEsZ0JBQUEsUUFBUSxFQUt4Qjs7O0FBQ0UsZUFBSSxHQUFHLGlDQUF3QixFQUFJLENBQUMsQ0FBQyxJQUFJLEFBQXJDLENBQXFDO0FBQ3pDLGlCQUFNLEdBQUcsaUNBQXdCLEVBQUksQ0FBQyxDQUFDLE1BQU0sQUFBdkMsQ0FBdUM7QUFDN0MsbUJBQVEsR0FBRyxpQ0FBd0IsRUFBSSxDQUFDLENBQUMsUUFBUSxBQUF6QyxDQUF5QztBQUNqRCxrQkFBTyxHQUFHLGlDQUF3QixFQUFJLENBQUMsQ0FBQyxPQUFPLEFBQXhDLENBQXdDO0FBUWpFOztHQUVHO0FBQ0gseUJBQXVDLElBQXFCO0lBQzFELE9BQU8sd0JBQUEsVUFBVSxFQUNmLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDYix3QkFBQSxLQUFLO1NBQ0YsSUFBSSxFQUFFLEVBQ0UsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNqQixBQWhDRSxLQUFLLFFBZ0NQLFVBQVU7U0FDUCxRQUFRLEVBQ0QsS0FBSyxDQUFDO1NBQ2IsR0FBRyxDQUFDLEdBQUcsRUFBRSxtREFBQyxBQW5DWCxLQUFLLEtBbUNNLElBQUksRUFBSyxLQUFLLENBQUMsQ0FBa0MsQ0FBQyxDQUNoRSxDQUNOLENBQUE7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUscUJBQXFCLENBQWUsR0FBa0M7SUFDcEYsT0FBTyxDQUFDLEdBQVEsRUFBRSxFQUFFLGlCQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBYyxDQUFBO0FBQzdDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxjQUFjLENBQVUsSUFBNEM7SUFDbEYsT0FBTyx3QkFBQSxVQUFVLEVBQ2YsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUNiLHdCQUFBLEtBQUs7U0FDRixJQUFJLEVBQUUsRUFDRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2pCLEFBeERFLEtBQUssUUF3RFAsVUFBVTtTQUNQLFFBQVEsRUFDRCxLQUFLLENBQUM7U0FDYixHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxtREFBQyxBQTNEYixLQUFLLEtBMkRRLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBSyxLQUFLLENBQUMsQ0FBa0MsQ0FBQyxDQUN0RSxDQUNOLENBQUE7QUFDSCxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsdUJBQXVCLENBQ3JDLElBQTBDLEVBQzFDLEdBQTRDO0lBRTVDLE9BQU8sd0JBQUEsVUFBVSxFQUNmLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDYix3QkFBQSxLQUFLO1NBQ0YsSUFBSSxFQUFFLEVBQ0UsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUNqQixBQTVFRSxLQUFLLFFBNEVQLFVBQVU7U0FDUCxRQUFRLEVBQ0QsS0FBSyxDQUFDO1NBQ2IsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsbURBQUMsQUEvRWYsS0FBSyxLQStFVSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUssS0FBSyxDQUFDLENBQWtDLENBQUM7U0FDdEUsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxBQWhGZixLQUFLLGlFQWdGVSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQWlDLEtBQUssQ0FBQyxDQUFDLENBQ25FLENBQ04sQ0FBQTtBQUNILENBQUMifQ==
|