@effect-app/vue 2.52.6 → 2.52.8
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/dist/experimental/commander.d.ts +79 -83
- package/dist/experimental/commander.d.ts.map +1 -1
- package/dist/experimental/commander.js +92 -95
- package/dist/experimental/makeExperimental.d.ts +3 -80
- package/dist/experimental/makeExperimental.d.ts.map +1 -1
- package/dist/experimental/toast.d.ts +1 -1
- package/package.json +1 -1
- package/src/experimental/commander.ts +327 -316
- package/test/dist/stubs.d.ts +4 -80
- package/test/dist/stubs.d.ts.map +1 -1
|
@@ -43,32 +43,331 @@ export const DefaultIntl = {
|
|
|
43
43
|
/**
|
|
44
44
|
* Use on form submit @handler callbacks, to handle form submitting state.
|
|
45
45
|
*/
|
|
46
|
-
const
|
|
47
|
-
command: (arg: Arg) => RuntimeFiber<
|
|
48
|
-
) =>
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
}
|
|
46
|
+
const handleSubmit = <Arg, A, E>(
|
|
47
|
+
command: (arg: Arg) => RuntimeFiber<A, E>
|
|
48
|
+
) =>
|
|
49
|
+
(arg: Arg, resolve: (result: Exit.Exit<A, E>) => void) => {
|
|
50
|
+
return command(arg).addObserver(resolve)
|
|
52
51
|
}
|
|
53
52
|
|
|
54
|
-
// export const withSubmit = <Command extends (arg: any) => RuntimeFiber<any, any>>(command: Command) => {
|
|
55
|
-
// return Object.assign(command, {
|
|
56
|
-
// onSubmit: (arg: any, resolve: () => void) => {
|
|
57
|
-
// return onSubmit(command)(arg, resolve)
|
|
58
|
-
// }
|
|
59
|
-
// })
|
|
60
|
-
// }
|
|
61
|
-
|
|
62
53
|
export class CommandContext extends Context.Tag("CommandContext")<
|
|
63
54
|
CommandContext,
|
|
64
55
|
{ action: string }
|
|
65
56
|
>() {}
|
|
66
57
|
|
|
67
|
-
export
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
58
|
+
export type EmitWithCallback<A, Event extends string> = (event: Event, value: A, onDone: () => void) => void
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Use to wrap emit calls with a callback to signal completion.
|
|
62
|
+
* Useful when the publisher wants to wait for the subscriber to finish processing.
|
|
63
|
+
*/
|
|
64
|
+
export const wrapEmit = <A, Event extends string>(
|
|
65
|
+
emit: EmitWithCallback<A, NoInfer<Event>>,
|
|
66
|
+
event: Event
|
|
67
|
+
) =>
|
|
68
|
+
(value: A) => new Promise<void>((resolve) => emit(event, value, resolve))
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Shorthand of @see wrapEmit to wrap emit calls for OmegaForm form submission callback
|
|
72
|
+
*/
|
|
73
|
+
export const wrapEmitSubmit = <A>(
|
|
74
|
+
emit: EmitWithCallback<A, "submit">
|
|
75
|
+
) => {
|
|
76
|
+
const submit = wrapEmit(emit, "submit")
|
|
77
|
+
return ({ value }: { value: A }) => submit(value)
|
|
71
78
|
}
|
|
79
|
+
|
|
80
|
+
export declare namespace Commander {
|
|
81
|
+
export interface CommandProps<A, E> {
|
|
82
|
+
action: string
|
|
83
|
+
result: Result<A, E>
|
|
84
|
+
waiting: boolean
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export interface UnaryCommandOut<Arg, A, E> extends CommandProps<A, E> {
|
|
88
|
+
handle: (a: Arg) => RuntimeFiber<A, E>
|
|
89
|
+
/* for forms, only use with unary functions */
|
|
90
|
+
handleSubmit: (a: Arg, resolve: (a: Exit.Exit<A, E>) => void) => void
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
export interface OtherCommandOut<Args extends Array<any>, A, E> extends CommandProps<A, E> {
|
|
94
|
+
handle: (...args: Args) => RuntimeFiber<Exit.Exit<A, E>, never>
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
export type CommandOut<Args extends Array<any>, A, E> = Args extends [infer _A] ? UnaryCommandOut<_A, A, E>
|
|
98
|
+
: OtherCommandOut<Args, A, E>
|
|
99
|
+
|
|
100
|
+
type CommandOutHelper<Args extends Array<any>, Eff extends Effect.Effect<any, any, any>> = CommandOut<
|
|
101
|
+
Args,
|
|
102
|
+
Effect.Effect.Success<Eff>,
|
|
103
|
+
Effect.Effect.Error<Eff>
|
|
104
|
+
>
|
|
105
|
+
|
|
106
|
+
export type Gen<RT> = {
|
|
107
|
+
<Eff extends YieldWrap<Effect.Effect<any, any, RT | CommandContext>>, AEff, Args extends Array<any>>(
|
|
108
|
+
body: (...args: Args) => Generator<Eff, AEff, never>
|
|
109
|
+
): CommandOut<
|
|
110
|
+
Args,
|
|
111
|
+
AEff,
|
|
112
|
+
[Eff] extends [never] ? never
|
|
113
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
114
|
+
: never
|
|
115
|
+
>
|
|
116
|
+
<
|
|
117
|
+
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
118
|
+
AEff,
|
|
119
|
+
Args extends Array<any>,
|
|
120
|
+
A extends Effect.Effect<any, any, RT | CommandContext>
|
|
121
|
+
>(
|
|
122
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
123
|
+
a: (
|
|
124
|
+
_: Effect.Effect<
|
|
125
|
+
AEff,
|
|
126
|
+
[Eff] extends [never] ? never
|
|
127
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
128
|
+
: never,
|
|
129
|
+
[Eff] extends [never] ? never
|
|
130
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
131
|
+
: never
|
|
132
|
+
>,
|
|
133
|
+
...args: NoInfer<Args>
|
|
134
|
+
) => A
|
|
135
|
+
): CommandOutHelper<Args, A>
|
|
136
|
+
<
|
|
137
|
+
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
138
|
+
AEff,
|
|
139
|
+
Args extends Array<any>,
|
|
140
|
+
A,
|
|
141
|
+
B extends Effect.Effect<any, any, RT | CommandContext>
|
|
142
|
+
>(
|
|
143
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
144
|
+
a: (
|
|
145
|
+
_: Effect.Effect<
|
|
146
|
+
AEff,
|
|
147
|
+
[Eff] extends [never] ? never
|
|
148
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
149
|
+
: never,
|
|
150
|
+
[Eff] extends [never] ? never
|
|
151
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
152
|
+
: never
|
|
153
|
+
>,
|
|
154
|
+
...args: NoInfer<Args>
|
|
155
|
+
) => A,
|
|
156
|
+
b: (_: A, ...args: NoInfer<Args>) => B
|
|
157
|
+
): CommandOutHelper<Args, B>
|
|
158
|
+
<
|
|
159
|
+
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
160
|
+
AEff,
|
|
161
|
+
Args extends Array<any>,
|
|
162
|
+
A,
|
|
163
|
+
B,
|
|
164
|
+
C extends Effect.Effect<any, any, RT | CommandContext>
|
|
165
|
+
>(
|
|
166
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
167
|
+
a: (
|
|
168
|
+
_: Effect.Effect<
|
|
169
|
+
AEff,
|
|
170
|
+
[Eff] extends [never] ? never
|
|
171
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
172
|
+
: never,
|
|
173
|
+
[Eff] extends [never] ? never
|
|
174
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
175
|
+
: never
|
|
176
|
+
>,
|
|
177
|
+
...args: NoInfer<Args>
|
|
178
|
+
) => A,
|
|
179
|
+
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
180
|
+
c: (_: B, ...args: NoInfer<Args>) => C
|
|
181
|
+
): CommandOutHelper<Args, C>
|
|
182
|
+
<
|
|
183
|
+
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
184
|
+
AEff,
|
|
185
|
+
Args extends Array<any>,
|
|
186
|
+
A,
|
|
187
|
+
B,
|
|
188
|
+
C,
|
|
189
|
+
D extends Effect.Effect<any, any, RT | CommandContext>
|
|
190
|
+
>(
|
|
191
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
192
|
+
a: (
|
|
193
|
+
_: Effect.Effect<
|
|
194
|
+
AEff,
|
|
195
|
+
[Eff] extends [never] ? never
|
|
196
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
197
|
+
: never,
|
|
198
|
+
[Eff] extends [never] ? never
|
|
199
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
200
|
+
: never
|
|
201
|
+
>,
|
|
202
|
+
...args: NoInfer<Args>
|
|
203
|
+
) => A,
|
|
204
|
+
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
205
|
+
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
206
|
+
d: (_: C, ...args: NoInfer<Args>) => D
|
|
207
|
+
): CommandOutHelper<Args, D>
|
|
208
|
+
<
|
|
209
|
+
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
210
|
+
AEff,
|
|
211
|
+
Args extends Array<any>,
|
|
212
|
+
A,
|
|
213
|
+
B,
|
|
214
|
+
C,
|
|
215
|
+
D,
|
|
216
|
+
E extends Effect.Effect<any, any, RT | CommandContext>
|
|
217
|
+
>(
|
|
218
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
219
|
+
a: (
|
|
220
|
+
_: Effect.Effect<
|
|
221
|
+
AEff,
|
|
222
|
+
[Eff] extends [never] ? never
|
|
223
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
224
|
+
: never,
|
|
225
|
+
[Eff] extends [never] ? never
|
|
226
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
227
|
+
: never
|
|
228
|
+
>,
|
|
229
|
+
...args: NoInfer<Args>
|
|
230
|
+
) => A,
|
|
231
|
+
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
232
|
+
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
233
|
+
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
234
|
+
e: (_: D, ...args: NoInfer<Args>) => E
|
|
235
|
+
): CommandOutHelper<Args, E>
|
|
236
|
+
<
|
|
237
|
+
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
238
|
+
AEff,
|
|
239
|
+
Args extends Array<any>,
|
|
240
|
+
A,
|
|
241
|
+
B,
|
|
242
|
+
C,
|
|
243
|
+
D,
|
|
244
|
+
E,
|
|
245
|
+
F extends Effect.Effect<any, any, RT | CommandContext>
|
|
246
|
+
>(
|
|
247
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
248
|
+
a: (
|
|
249
|
+
_: Effect.Effect<
|
|
250
|
+
AEff,
|
|
251
|
+
[Eff] extends [never] ? never
|
|
252
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
253
|
+
: never,
|
|
254
|
+
[Eff] extends [never] ? never
|
|
255
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
256
|
+
: never
|
|
257
|
+
>,
|
|
258
|
+
...args: NoInfer<Args>
|
|
259
|
+
) => A,
|
|
260
|
+
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
261
|
+
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
262
|
+
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
263
|
+
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
264
|
+
f: (_: E, ...args: NoInfer<Args>) => F
|
|
265
|
+
): CommandOutHelper<Args, F>
|
|
266
|
+
<
|
|
267
|
+
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
268
|
+
AEff,
|
|
269
|
+
Args extends Array<any>,
|
|
270
|
+
A,
|
|
271
|
+
B,
|
|
272
|
+
C,
|
|
273
|
+
D,
|
|
274
|
+
E,
|
|
275
|
+
F,
|
|
276
|
+
G extends Effect.Effect<any, any, RT | CommandContext>
|
|
277
|
+
>(
|
|
278
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
279
|
+
a: (
|
|
280
|
+
_: Effect.Effect<
|
|
281
|
+
AEff,
|
|
282
|
+
[Eff] extends [never] ? never
|
|
283
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
284
|
+
: never,
|
|
285
|
+
[Eff] extends [never] ? never
|
|
286
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
287
|
+
: never
|
|
288
|
+
>,
|
|
289
|
+
...args: NoInfer<Args>
|
|
290
|
+
) => A,
|
|
291
|
+
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
292
|
+
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
293
|
+
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
294
|
+
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
295
|
+
f: (_: E, ...args: NoInfer<Args>) => F,
|
|
296
|
+
g: (_: F, ...args: NoInfer<Args>) => G
|
|
297
|
+
): CommandOutHelper<Args, G>
|
|
298
|
+
<
|
|
299
|
+
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
300
|
+
AEff,
|
|
301
|
+
Args extends Array<any>,
|
|
302
|
+
A,
|
|
303
|
+
B,
|
|
304
|
+
C,
|
|
305
|
+
D,
|
|
306
|
+
E,
|
|
307
|
+
F,
|
|
308
|
+
G,
|
|
309
|
+
H extends Effect.Effect<any, any, RT | CommandContext>
|
|
310
|
+
>(
|
|
311
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
312
|
+
a: (
|
|
313
|
+
_: Effect.Effect<
|
|
314
|
+
AEff,
|
|
315
|
+
[Eff] extends [never] ? never
|
|
316
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
317
|
+
: never,
|
|
318
|
+
[Eff] extends [never] ? never
|
|
319
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
320
|
+
: never
|
|
321
|
+
>,
|
|
322
|
+
...args: NoInfer<Args>
|
|
323
|
+
) => A,
|
|
324
|
+
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
325
|
+
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
326
|
+
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
327
|
+
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
328
|
+
f: (_: E, ...args: NoInfer<Args>) => F,
|
|
329
|
+
g: (_: F, ...args: NoInfer<Args>) => G,
|
|
330
|
+
h: (_: G, ...args: NoInfer<Args>) => H
|
|
331
|
+
): CommandOutHelper<Args, H>
|
|
332
|
+
<
|
|
333
|
+
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
334
|
+
AEff,
|
|
335
|
+
Args extends Array<any>,
|
|
336
|
+
A,
|
|
337
|
+
B,
|
|
338
|
+
C,
|
|
339
|
+
D,
|
|
340
|
+
E,
|
|
341
|
+
F,
|
|
342
|
+
G,
|
|
343
|
+
H,
|
|
344
|
+
I extends Effect.Effect<any, any, RT | CommandContext>
|
|
345
|
+
>(
|
|
346
|
+
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
347
|
+
a: (
|
|
348
|
+
_: Effect.Effect<
|
|
349
|
+
AEff,
|
|
350
|
+
[Eff] extends [never] ? never
|
|
351
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
352
|
+
: never,
|
|
353
|
+
[Eff] extends [never] ? never
|
|
354
|
+
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
355
|
+
: never
|
|
356
|
+
>,
|
|
357
|
+
...args: NoInfer<Args>
|
|
358
|
+
) => A,
|
|
359
|
+
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
360
|
+
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
361
|
+
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
362
|
+
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
363
|
+
f: (_: E, ...args: NoInfer<Args>) => F,
|
|
364
|
+
g: (_: F, ...args: NoInfer<Args>) => G,
|
|
365
|
+
h: (_: G, ...args: NoInfer<Args>) => H,
|
|
366
|
+
i: (_: H, ...args: NoInfer<Args>) => I
|
|
367
|
+
): CommandOutHelper<Args, I>
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
|
|
72
371
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
73
372
|
export class Commander extends Effect.Service<Commander>()("Commander", {
|
|
74
373
|
dependencies: [WithToastSvc.Default, ConfirmSvc.Default],
|
|
@@ -77,288 +376,9 @@ export class Commander extends Effect.Service<Commander>()("Commander", {
|
|
|
77
376
|
const withToast = yield* WithToastSvc
|
|
78
377
|
const { confirmOrInterrupt } = yield* ConfirmSvc
|
|
79
378
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
waiting: boolean
|
|
84
|
-
handle: (...a: Args) => RuntimeFiber<Exit.Exit<A, E>, never>
|
|
85
|
-
/* for forms, only use with unary functions */
|
|
86
|
-
handleSubmit: Args extends [infer A] ? (a: A, resolve: () => void) => void : never
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
type CommandOutHelper<Args extends Array<any>, Eff extends Effect.Effect<any, any, any>> = CommandOut<
|
|
90
|
-
Args,
|
|
91
|
-
Effect.Effect.Success<Eff>,
|
|
92
|
-
Effect.Effect.Error<Eff>
|
|
93
|
-
>
|
|
94
|
-
|
|
95
|
-
type Gen<RT> = {
|
|
96
|
-
<Eff extends YieldWrap<Effect.Effect<any, any, RT | CommandContext>>, AEff, Args extends Array<any>>(
|
|
97
|
-
body: (...args: Args) => Generator<Eff, AEff, never>
|
|
98
|
-
): CommandOut<
|
|
99
|
-
Args,
|
|
100
|
-
AEff,
|
|
101
|
-
[Eff] extends [never] ? never
|
|
102
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
103
|
-
: never
|
|
104
|
-
>
|
|
105
|
-
<
|
|
106
|
-
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
107
|
-
AEff,
|
|
108
|
-
Args extends Array<any>,
|
|
109
|
-
A extends Effect.Effect<any, any, RT | CommandContext>
|
|
110
|
-
>(
|
|
111
|
-
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
112
|
-
a: (
|
|
113
|
-
_: Effect.Effect<
|
|
114
|
-
AEff,
|
|
115
|
-
[Eff] extends [never] ? never
|
|
116
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
117
|
-
: never,
|
|
118
|
-
[Eff] extends [never] ? never
|
|
119
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
120
|
-
: never
|
|
121
|
-
>,
|
|
122
|
-
...args: NoInfer<Args>
|
|
123
|
-
) => A
|
|
124
|
-
): CommandOutHelper<Args, A>
|
|
125
|
-
<
|
|
126
|
-
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
127
|
-
AEff,
|
|
128
|
-
Args extends Array<any>,
|
|
129
|
-
A,
|
|
130
|
-
B extends Effect.Effect<any, any, RT | CommandContext>
|
|
131
|
-
>(
|
|
132
|
-
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
133
|
-
a: (
|
|
134
|
-
_: Effect.Effect<
|
|
135
|
-
AEff,
|
|
136
|
-
[Eff] extends [never] ? never
|
|
137
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
138
|
-
: never,
|
|
139
|
-
[Eff] extends [never] ? never
|
|
140
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
141
|
-
: never
|
|
142
|
-
>,
|
|
143
|
-
...args: NoInfer<Args>
|
|
144
|
-
) => A,
|
|
145
|
-
b: (_: A, ...args: NoInfer<Args>) => B
|
|
146
|
-
): CommandOutHelper<Args, B>
|
|
147
|
-
<
|
|
148
|
-
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
149
|
-
AEff,
|
|
150
|
-
Args extends Array<any>,
|
|
151
|
-
A,
|
|
152
|
-
B,
|
|
153
|
-
C extends Effect.Effect<any, any, RT | CommandContext>
|
|
154
|
-
>(
|
|
155
|
-
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
156
|
-
a: (
|
|
157
|
-
_: Effect.Effect<
|
|
158
|
-
AEff,
|
|
159
|
-
[Eff] extends [never] ? never
|
|
160
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
161
|
-
: never,
|
|
162
|
-
[Eff] extends [never] ? never
|
|
163
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
164
|
-
: never
|
|
165
|
-
>,
|
|
166
|
-
...args: NoInfer<Args>
|
|
167
|
-
) => A,
|
|
168
|
-
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
169
|
-
c: (_: B, ...args: NoInfer<Args>) => C
|
|
170
|
-
): CommandOutHelper<Args, C>
|
|
171
|
-
<
|
|
172
|
-
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
173
|
-
AEff,
|
|
174
|
-
Args extends Array<any>,
|
|
175
|
-
A,
|
|
176
|
-
B,
|
|
177
|
-
C,
|
|
178
|
-
D extends Effect.Effect<any, any, RT | CommandContext>
|
|
179
|
-
>(
|
|
180
|
-
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
181
|
-
a: (
|
|
182
|
-
_: Effect.Effect<
|
|
183
|
-
AEff,
|
|
184
|
-
[Eff] extends [never] ? never
|
|
185
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
186
|
-
: never,
|
|
187
|
-
[Eff] extends [never] ? never
|
|
188
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
189
|
-
: never
|
|
190
|
-
>,
|
|
191
|
-
...args: NoInfer<Args>
|
|
192
|
-
) => A,
|
|
193
|
-
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
194
|
-
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
195
|
-
d: (_: C, ...args: NoInfer<Args>) => D
|
|
196
|
-
): CommandOutHelper<Args, D>
|
|
197
|
-
<
|
|
198
|
-
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
199
|
-
AEff,
|
|
200
|
-
Args extends Array<any>,
|
|
201
|
-
A,
|
|
202
|
-
B,
|
|
203
|
-
C,
|
|
204
|
-
D,
|
|
205
|
-
E extends Effect.Effect<any, any, RT | CommandContext>
|
|
206
|
-
>(
|
|
207
|
-
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
208
|
-
a: (
|
|
209
|
-
_: Effect.Effect<
|
|
210
|
-
AEff,
|
|
211
|
-
[Eff] extends [never] ? never
|
|
212
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
213
|
-
: never,
|
|
214
|
-
[Eff] extends [never] ? never
|
|
215
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
216
|
-
: never
|
|
217
|
-
>,
|
|
218
|
-
...args: NoInfer<Args>
|
|
219
|
-
) => A,
|
|
220
|
-
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
221
|
-
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
222
|
-
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
223
|
-
e: (_: D, ...args: NoInfer<Args>) => E
|
|
224
|
-
): CommandOutHelper<Args, E>
|
|
225
|
-
<
|
|
226
|
-
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
227
|
-
AEff,
|
|
228
|
-
Args extends Array<any>,
|
|
229
|
-
A,
|
|
230
|
-
B,
|
|
231
|
-
C,
|
|
232
|
-
D,
|
|
233
|
-
E,
|
|
234
|
-
F extends Effect.Effect<any, any, RT | CommandContext>
|
|
235
|
-
>(
|
|
236
|
-
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
237
|
-
a: (
|
|
238
|
-
_: Effect.Effect<
|
|
239
|
-
AEff,
|
|
240
|
-
[Eff] extends [never] ? never
|
|
241
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
242
|
-
: never,
|
|
243
|
-
[Eff] extends [never] ? never
|
|
244
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
245
|
-
: never
|
|
246
|
-
>,
|
|
247
|
-
...args: NoInfer<Args>
|
|
248
|
-
) => A,
|
|
249
|
-
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
250
|
-
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
251
|
-
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
252
|
-
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
253
|
-
f: (_: E, ...args: NoInfer<Args>) => F
|
|
254
|
-
): CommandOutHelper<Args, F>
|
|
255
|
-
<
|
|
256
|
-
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
257
|
-
AEff,
|
|
258
|
-
Args extends Array<any>,
|
|
259
|
-
A,
|
|
260
|
-
B,
|
|
261
|
-
C,
|
|
262
|
-
D,
|
|
263
|
-
E,
|
|
264
|
-
F,
|
|
265
|
-
G extends Effect.Effect<any, any, RT | CommandContext>
|
|
266
|
-
>(
|
|
267
|
-
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
268
|
-
a: (
|
|
269
|
-
_: Effect.Effect<
|
|
270
|
-
AEff,
|
|
271
|
-
[Eff] extends [never] ? never
|
|
272
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
273
|
-
: never,
|
|
274
|
-
[Eff] extends [never] ? never
|
|
275
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
276
|
-
: never
|
|
277
|
-
>,
|
|
278
|
-
...args: NoInfer<Args>
|
|
279
|
-
) => A,
|
|
280
|
-
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
281
|
-
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
282
|
-
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
283
|
-
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
284
|
-
f: (_: E, ...args: NoInfer<Args>) => F,
|
|
285
|
-
g: (_: F, ...args: NoInfer<Args>) => G
|
|
286
|
-
): CommandOutHelper<Args, G>
|
|
287
|
-
<
|
|
288
|
-
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
289
|
-
AEff,
|
|
290
|
-
Args extends Array<any>,
|
|
291
|
-
A,
|
|
292
|
-
B,
|
|
293
|
-
C,
|
|
294
|
-
D,
|
|
295
|
-
E,
|
|
296
|
-
F,
|
|
297
|
-
G,
|
|
298
|
-
H extends Effect.Effect<any, any, RT | CommandContext>
|
|
299
|
-
>(
|
|
300
|
-
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
301
|
-
a: (
|
|
302
|
-
_: Effect.Effect<
|
|
303
|
-
AEff,
|
|
304
|
-
[Eff] extends [never] ? never
|
|
305
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
306
|
-
: never,
|
|
307
|
-
[Eff] extends [never] ? never
|
|
308
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
309
|
-
: never
|
|
310
|
-
>,
|
|
311
|
-
...args: NoInfer<Args>
|
|
312
|
-
) => A,
|
|
313
|
-
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
314
|
-
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
315
|
-
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
316
|
-
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
317
|
-
f: (_: E, ...args: NoInfer<Args>) => F,
|
|
318
|
-
g: (_: F, ...args: NoInfer<Args>) => G,
|
|
319
|
-
h: (_: G, ...args: NoInfer<Args>) => H
|
|
320
|
-
): CommandOutHelper<Args, H>
|
|
321
|
-
<
|
|
322
|
-
Eff extends YieldWrap<Effect.Effect<any, any, any>>,
|
|
323
|
-
AEff,
|
|
324
|
-
Args extends Array<any>,
|
|
325
|
-
A,
|
|
326
|
-
B,
|
|
327
|
-
C,
|
|
328
|
-
D,
|
|
329
|
-
E,
|
|
330
|
-
F,
|
|
331
|
-
G,
|
|
332
|
-
H,
|
|
333
|
-
I extends Effect.Effect<any, any, RT | CommandContext>
|
|
334
|
-
>(
|
|
335
|
-
body: (...args: Args) => Generator<Eff, AEff, never>,
|
|
336
|
-
a: (
|
|
337
|
-
_: Effect.Effect<
|
|
338
|
-
AEff,
|
|
339
|
-
[Eff] extends [never] ? never
|
|
340
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer E, infer _R>>] ? E
|
|
341
|
-
: never,
|
|
342
|
-
[Eff] extends [never] ? never
|
|
343
|
-
: [Eff] extends [YieldWrap<Effect.Effect<infer _A, infer _E, infer R>>] ? R
|
|
344
|
-
: never
|
|
345
|
-
>,
|
|
346
|
-
...args: NoInfer<Args>
|
|
347
|
-
) => A,
|
|
348
|
-
b: (_: A, ...args: NoInfer<Args>) => B,
|
|
349
|
-
c: (_: B, ...args: NoInfer<Args>) => C,
|
|
350
|
-
d: (_: C, ...args: NoInfer<Args>) => D,
|
|
351
|
-
e: (_: D, ...args: NoInfer<Args>) => E,
|
|
352
|
-
f: (_: E, ...args: NoInfer<Args>) => F,
|
|
353
|
-
g: (_: F, ...args: NoInfer<Args>) => G,
|
|
354
|
-
h: (_: G, ...args: NoInfer<Args>) => H,
|
|
355
|
-
i: (_: H, ...args: NoInfer<Args>) => I
|
|
356
|
-
): CommandOutHelper<Args, I>
|
|
357
|
-
}
|
|
358
|
-
|
|
359
|
-
const makeCommand =
|
|
360
|
-
<RT>(runtime: Runtime.Runtime<RT>) =>
|
|
361
|
-
(actionName: string, errorDef?: Error) =>
|
|
379
|
+
const makeCommand = <RT>(runtime: Runtime.Runtime<RT>) => {
|
|
380
|
+
const runFork = Runtime.runFork(runtime)
|
|
381
|
+
return (actionName: string, errorDef?: Error) =>
|
|
362
382
|
<Args extends ReadonlyArray<any>, A, E, R extends RT | CommandContext>(
|
|
363
383
|
handler: (...args: Args) => Effect.Effect<A, E, R>
|
|
364
384
|
) => {
|
|
@@ -448,28 +468,19 @@ export class Commander extends Effect.Service<Commander>()("Commander", {
|
|
|
448
468
|
return cache
|
|
449
469
|
}
|
|
450
470
|
}
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
Object.defineProperty(command, "result", {
|
|
455
|
-
get() {
|
|
456
|
-
return result.value
|
|
457
|
-
}
|
|
458
|
-
})
|
|
459
|
-
Object.defineProperty(command, "waiting", {
|
|
460
|
-
get() {
|
|
461
|
-
return waiting.value
|
|
462
|
-
}
|
|
463
|
-
})
|
|
471
|
+
const command = Effect.withSpan(mut(...args), actionName, { captureStackTrace })
|
|
472
|
+
return runFork(Effect.flatten(command)) // as we run into a RuntimeFiber anyway, we can flatten A/E anyway, so we don't get an Exit<Exit on addObserver
|
|
473
|
+
}, { action })
|
|
464
474
|
|
|
465
475
|
return reactive({
|
|
466
476
|
result,
|
|
467
477
|
waiting,
|
|
468
478
|
action,
|
|
469
479
|
handle: command,
|
|
470
|
-
handleSubmit:
|
|
480
|
+
handleSubmit: handleSubmit(command as any)
|
|
471
481
|
})
|
|
472
482
|
}
|
|
483
|
+
}
|
|
473
484
|
|
|
474
485
|
return {
|
|
475
486
|
/** Version of confirmOrInterrupt that automatically includes the action name in the default messages */
|
|
@@ -573,7 +584,7 @@ export class Commander extends Effect.Service<Commander>()("Commander", {
|
|
|
573
584
|
*/
|
|
574
585
|
fn: <RT>(runtime: Runtime.Runtime<RT>) => {
|
|
575
586
|
const make = makeCommand(runtime)
|
|
576
|
-
return (actionName: string): Gen<RT> =>
|
|
587
|
+
return (actionName: string): Commander.Gen<RT> =>
|
|
577
588
|
// TODO constrain/type combinators
|
|
578
589
|
(
|
|
579
590
|
fn: any,
|
|
@@ -593,7 +604,7 @@ export class Commander extends Effect.Service<Commander>()("Commander", {
|
|
|
593
604
|
actionName: string
|
|
594
605
|
) => <Args extends Array<any>, A, E, R extends RT | CommandContext>(
|
|
595
606
|
handler: (...args: Args) => Effect.Effect<A, E, R>
|
|
596
|
-
) =>
|
|
607
|
+
) => Commander.CommandOut<Args, A, E>
|
|
597
608
|
}
|
|
598
609
|
})
|
|
599
610
|
}) {}
|