foldkit 0.135.0 → 0.137.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/dist/asyncData/asyncData.d.ts +4 -6
- package/dist/asyncData/asyncData.d.ts.map +1 -1
- package/dist/asyncData/asyncData.js +4 -6
- package/dist/command/brand.d.ts +9 -0
- package/dist/command/brand.d.ts.map +1 -0
- package/dist/command/brand.js +15 -0
- package/dist/command/index.d.ts +124 -24
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +76 -26
- package/dist/command/interruptible/interruptible.d.ts +9 -94
- package/dist/command/interruptible/interruptible.d.ts.map +1 -1
- package/dist/command/interruptible/interruptible.js +9 -75
- package/dist/command/interruptible/public.d.ts +1 -1
- package/dist/command/interruptible/public.d.ts.map +1 -1
- package/dist/command/interruptible/public.js +1 -1
- package/dist/command/public.d.ts +1 -1
- package/dist/command/public.d.ts.map +1 -1
- package/dist/file/select.d.ts +2 -2
- package/dist/file/select.js +2 -2
- package/dist/http/http.d.ts +4 -7
- package/dist/http/http.d.ts.map +1 -1
- package/dist/http/http.js +4 -7
- package/dist/port/port.d.ts +8 -9
- package/dist/port/port.d.ts.map +1 -1
- package/dist/port/port.js +8 -9
- package/dist/test/apps/counter.d.ts.map +1 -1
- package/dist/test/apps/counter.js +9 -2
- package/dist/test/apps/crashOnRender.d.ts +3 -3
- package/dist/test/apps/crashOnRender.d.ts.map +1 -1
- package/dist/test/apps/crashOnRender.js +9 -4
- package/dist/test/apps/drafts.d.ts +1 -2
- package/dist/test/apps/drafts.d.ts.map +1 -1
- package/dist/test/apps/drafts.js +7 -2
- package/dist/test/apps/formChild.d.ts +5 -5
- package/dist/test/apps/formChild.d.ts.map +1 -1
- package/dist/test/apps/formChild.js +11 -5
- package/dist/test/apps/login.d.ts.map +1 -1
- package/dist/test/apps/login.js +4 -1
- package/dist/test/apps/resumeUpload.d.ts +3 -3
- package/dist/test/apps/resumeUpload.d.ts.map +1 -1
- package/dist/test/apps/resumeUpload.js +15 -8
- package/dist/test/apps/uploads.d.ts +4 -4
- package/dist/test/apps/uploads.d.ts.map +1 -1
- package/dist/test/apps/uploads.js +10 -1
- package/dist/test/internal.d.ts +2 -2
- package/dist/test/internal.js +1 -1
- package/dist/test/scene.d.ts +1 -1
- package/dist/test/story.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { Array, Context, Effect, Fiber, Option,
|
|
1
|
+
import { Array, Context, Effect, Fiber, Option, Schema } from 'effect';
|
|
2
2
|
import { ts } from '../../schema/index.js';
|
|
3
|
-
import { CommandDefinitionTypeId } from '../
|
|
3
|
+
import { CommandDefinitionTypeId, brandAsDefinition } from '../brand.js';
|
|
4
4
|
/** At least one in-flight Command held the interrupt key, and every holder
|
|
5
5
|
* has been stopped. Their declared result Messages are guaranteed never to
|
|
6
6
|
* dispatch. */
|
|
@@ -64,7 +64,7 @@ export const __CurrentRegistry = Context.Reference('foldkit/Command/Interruptibl
|
|
|
64
64
|
// `register` but before `ensuring` attached, the fiber would die without
|
|
65
65
|
// ever removing itself from the registry, and every later Interrupt would
|
|
66
66
|
// report `Interrupted` against that dead entry forever.
|
|
67
|
-
const
|
|
67
|
+
export const __registerKeyWhileRunning = (key, effect) => Effect.withFiber(fiber => Effect.gen(function* () {
|
|
68
68
|
const registry = yield* __CurrentRegistry;
|
|
69
69
|
return yield* Effect.uninterruptibleMask(restore => Effect.suspend(() => {
|
|
70
70
|
registry.register(key, fiber);
|
|
@@ -76,16 +76,9 @@ const makeInterruptEffect = (key, toMessage) => Effect.gen(function* () {
|
|
|
76
76
|
const outcome = yield* registry.interrupt(key);
|
|
77
77
|
return toMessage(outcome);
|
|
78
78
|
});
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
configurable: true,
|
|
83
|
-
});
|
|
84
|
-
Object.defineProperty(definition, CommandDefinitionTypeId, {
|
|
85
|
-
value: CommandDefinitionTypeId,
|
|
86
|
-
});
|
|
87
|
-
};
|
|
88
|
-
const makeInterruptDefinitionNoArgs = (name, key) => {
|
|
79
|
+
/** @internal Builds the `Interrupt` constructor for an interruptible definition
|
|
80
|
+
* whose key is the Command name. Internal to the Command module. */
|
|
81
|
+
export const __makeInterruptDefinitionNoArgs = (name, key) => {
|
|
89
82
|
const interruptName = `${name}.Interrupt`;
|
|
90
83
|
const definition = (toMessage) => ({
|
|
91
84
|
name: interruptName,
|
|
@@ -96,7 +89,9 @@ const makeInterruptDefinitionNoArgs = (name, key) => {
|
|
|
96
89
|
brandAsDefinition(definition, interruptName);
|
|
97
90
|
return definition;
|
|
98
91
|
};
|
|
99
|
-
|
|
92
|
+
/** @internal Builds the `Interrupt` constructor for an interruptible definition
|
|
93
|
+
* whose key is derived from its args. Internal to the Command module. */
|
|
94
|
+
export const __makeInterruptDefinitionWithArgs = (name, toFullKey) => {
|
|
100
95
|
const interruptName = `${name}.Interrupt`;
|
|
101
96
|
const definition = (keyArgs, toMessage) => {
|
|
102
97
|
const key = toFullKey(keyArgs);
|
|
@@ -111,64 +106,3 @@ const makeInterruptDefinitionWithArgs = (name, toFullKey) => {
|
|
|
111
106
|
brandAsDefinition(definition, interruptName);
|
|
112
107
|
return definition;
|
|
113
108
|
};
|
|
114
|
-
export function define(name, ...rest) {
|
|
115
|
-
const [maybeArgs, maybeToKey] = rest;
|
|
116
|
-
const isArgsRecord = Predicate.isObject(maybeArgs) && !Schema.isSchema(maybeArgs);
|
|
117
|
-
if (!isArgsRecord) {
|
|
118
|
-
const key = name;
|
|
119
|
-
return (effect) => {
|
|
120
|
-
const definition = () => ({
|
|
121
|
-
name,
|
|
122
|
-
key,
|
|
123
|
-
effect: registerKeyWhileRunning(key, effect),
|
|
124
|
-
messageMappers: [],
|
|
125
|
-
});
|
|
126
|
-
brandAsDefinition(definition, name);
|
|
127
|
-
Object.defineProperty(definition, 'Interrupt', {
|
|
128
|
-
value: makeInterruptDefinitionNoArgs(name, key),
|
|
129
|
-
});
|
|
130
|
-
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
131
|
-
return definition;
|
|
132
|
-
};
|
|
133
|
-
}
|
|
134
|
-
const isToKeyFunction = Predicate.isFunction(maybeToKey) && !Schema.isSchema(maybeToKey);
|
|
135
|
-
if (!isToKeyFunction) {
|
|
136
|
-
const key = name;
|
|
137
|
-
return (effectBuilder) => {
|
|
138
|
-
const definition = (args) => ({
|
|
139
|
-
name,
|
|
140
|
-
args,
|
|
141
|
-
key,
|
|
142
|
-
effect: registerKeyWhileRunning(key, effectBuilder(args)),
|
|
143
|
-
messageMappers: [],
|
|
144
|
-
});
|
|
145
|
-
brandAsDefinition(definition, name);
|
|
146
|
-
Object.defineProperty(definition, 'Interrupt', {
|
|
147
|
-
value: makeInterruptDefinitionNoArgs(name, key),
|
|
148
|
-
});
|
|
149
|
-
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
150
|
-
return definition;
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
154
|
-
const toKey = maybeToKey;
|
|
155
|
-
const toFullKey = (keyArgs) => `${name}:${toKey(keyArgs)}`;
|
|
156
|
-
return (effectBuilder) => {
|
|
157
|
-
const definition = (args) => {
|
|
158
|
-
const key = toFullKey(args);
|
|
159
|
-
return {
|
|
160
|
-
name,
|
|
161
|
-
args,
|
|
162
|
-
key,
|
|
163
|
-
effect: registerKeyWhileRunning(key, effectBuilder(args)),
|
|
164
|
-
messageMappers: [],
|
|
165
|
-
};
|
|
166
|
-
};
|
|
167
|
-
brandAsDefinition(definition, name);
|
|
168
|
-
Object.defineProperty(definition, 'Interrupt', {
|
|
169
|
-
value: makeInterruptDefinitionWithArgs(name, toFullKey),
|
|
170
|
-
});
|
|
171
|
-
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
172
|
-
return definition;
|
|
173
|
-
};
|
|
174
|
-
}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export type { DefinitionNoArgs, DefinitionWithArgs, DefinitionWithArgsNameKeyed, InterruptDefinitionNoArgs, InterruptDefinitionWithArgs, } from './index.js';
|
|
2
|
-
export {
|
|
2
|
+
export { Interrupted, NotFound, Outcome } from './index.js';
|
|
3
3
|
//# sourceMappingURL=public.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/command/interruptible/public.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/command/interruptible/public.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,2BAA2B,EAC3B,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { Interrupted, NotFound, Outcome } from './index.js';
|
package/dist/command/public.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { Command, CommandDefinition, CommandDefinitionNoArgs, CommandDefinitionWithArgs, } from './index.js';
|
|
1
|
+
export type { Command, CommandDefinition, CommandDefinitionNoArgs, CommandDefinitionWithArgs, InterruptOption, } from './index.js';
|
|
2
2
|
export { CommandDefinitionTypeId, define, mapEffect, mapMessage, mapMessages, } from './index.js';
|
|
3
3
|
export * as Interruptible from './interruptible/public.js';
|
|
4
4
|
//# sourceMappingURL=public.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/command/public.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/command/public.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,OAAO,EACP,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EACzB,eAAe,GAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,aAAa,MAAM,2BAA2B,CAAA"}
|
package/dist/file/select.d.ts
CHANGED
|
@@ -15,7 +15,7 @@ import type { File } from './file.js';
|
|
|
15
15
|
* Effect.map(
|
|
16
16
|
* Option.match({
|
|
17
17
|
* onNone: () => CancelledSelectResume(),
|
|
18
|
-
* onSome: file =>
|
|
18
|
+
* onSome: file => CompletedSelectResume({ file }),
|
|
19
19
|
* }),
|
|
20
20
|
* ),
|
|
21
21
|
* ),
|
|
@@ -32,7 +32,7 @@ export declare const select: (accept: ReadonlyArray<string>) => Effect.Effect<Op
|
|
|
32
32
|
* ```typescript
|
|
33
33
|
* SelectAttachments(
|
|
34
34
|
* File.selectMultiple(['image/*', 'application/pdf']).pipe(
|
|
35
|
-
* Effect.map(files =>
|
|
35
|
+
* Effect.map(files => CompletedSelectAttachments({ files })),
|
|
36
36
|
* ),
|
|
37
37
|
* )
|
|
38
38
|
* ```
|
package/dist/file/select.js
CHANGED
|
@@ -40,7 +40,7 @@ const openPicker = ({ accept, multiple, }) => Effect.callback((resume, signal) =
|
|
|
40
40
|
* Effect.map(
|
|
41
41
|
* Option.match({
|
|
42
42
|
* onNone: () => CancelledSelectResume(),
|
|
43
|
-
* onSome: file =>
|
|
43
|
+
* onSome: file => CompletedSelectResume({ file }),
|
|
44
44
|
* }),
|
|
45
45
|
* ),
|
|
46
46
|
* ),
|
|
@@ -57,7 +57,7 @@ export const select = (accept) => openPicker({ accept, multiple: false }).pipe(E
|
|
|
57
57
|
* ```typescript
|
|
58
58
|
* SelectAttachments(
|
|
59
59
|
* File.selectMultiple(['image/*', 'application/pdf']).pipe(
|
|
60
|
-
* Effect.map(files =>
|
|
60
|
+
* Effect.map(files => CompletedSelectAttachments({ files })),
|
|
61
61
|
* ),
|
|
62
62
|
* )
|
|
63
63
|
* ```
|
package/dist/http/http.d.ts
CHANGED
|
@@ -24,12 +24,9 @@ import { HttpClient } from 'effect/unstable/http';
|
|
|
24
24
|
* ```typescript
|
|
25
25
|
* import { Http } from 'foldkit'
|
|
26
26
|
*
|
|
27
|
-
* const FetchCount = Command.define(
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* FailedFetchCount,
|
|
31
|
-
* )(
|
|
32
|
-
* Effect.gen(function* () {
|
|
27
|
+
* const FetchCount = Command.define('FetchCount', {
|
|
28
|
+
* messages: [SucceededFetchCount, FailedFetchCount],
|
|
29
|
+
* execute: Effect.gen(function* () {
|
|
33
30
|
* const client = yield* HttpClient.HttpClient
|
|
34
31
|
* const response = yield* client.get('/api/count')
|
|
35
32
|
* const { count } = yield* S.decodeUnknownEffect(CountResponse)(
|
|
@@ -42,7 +39,7 @@ import { HttpClient } from 'effect/unstable/http';
|
|
|
42
39
|
* ),
|
|
43
40
|
* Effect.provide(Http.layer),
|
|
44
41
|
* ),
|
|
45
|
-
* )
|
|
42
|
+
* })
|
|
46
43
|
* ```
|
|
47
44
|
*/
|
|
48
45
|
export declare const layer: Layer.Layer<HttpClient.HttpClient>;
|
package/dist/http/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC9B,OAAO,EAAmB,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAElE
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/http/http.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC9B,OAAO,EAAmB,UAAU,EAAE,MAAM,sBAAsB,CAAA;AAElE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,eAAO,MAAM,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAGpD,CAAA"}
|
package/dist/http/http.js
CHANGED
|
@@ -24,12 +24,9 @@ import { FetchHttpClient, HttpClient } from 'effect/unstable/http';
|
|
|
24
24
|
* ```typescript
|
|
25
25
|
* import { Http } from 'foldkit'
|
|
26
26
|
*
|
|
27
|
-
* const FetchCount = Command.define(
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* FailedFetchCount,
|
|
31
|
-
* )(
|
|
32
|
-
* Effect.gen(function* () {
|
|
27
|
+
* const FetchCount = Command.define('FetchCount', {
|
|
28
|
+
* messages: [SucceededFetchCount, FailedFetchCount],
|
|
29
|
+
* execute: Effect.gen(function* () {
|
|
33
30
|
* const client = yield* HttpClient.HttpClient
|
|
34
31
|
* const response = yield* client.get('/api/count')
|
|
35
32
|
* const { count } = yield* S.decodeUnknownEffect(CountResponse)(
|
|
@@ -42,7 +39,7 @@ import { FetchHttpClient, HttpClient } from 'effect/unstable/http';
|
|
|
42
39
|
* ),
|
|
43
40
|
* Effect.provide(Http.layer),
|
|
44
41
|
* ),
|
|
45
|
-
* )
|
|
42
|
+
* })
|
|
46
43
|
* ```
|
|
47
44
|
*/
|
|
48
45
|
export const layer = Layer.provide(FetchHttpClient.layer, Layer.succeed(HttpClient.TracerPropagationEnabled, false));
|
package/dist/port/port.d.ts
CHANGED
|
@@ -125,15 +125,14 @@ export declare const subscription: <Value, Encoded, Message>(port: Inbound<Value
|
|
|
125
125
|
* Effect:
|
|
126
126
|
*
|
|
127
127
|
* ```ts
|
|
128
|
-
* const ReportCount = Command.define(
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
* )
|
|
128
|
+
* const ReportCount = Command.define('ReportCount', {
|
|
129
|
+
* args: { count: S.Number },
|
|
130
|
+
* messages: [CompletedReportCount],
|
|
131
|
+
* execute: ({ count }) =>
|
|
132
|
+
* Port.emit(ports.outbound.countChanged, count).pipe(
|
|
133
|
+
* Effect.as(CompletedReportCount()),
|
|
134
|
+
* ),
|
|
135
|
+
* })
|
|
137
136
|
* ```
|
|
138
137
|
*
|
|
139
138
|
* When the program runs without an embed handle (started with `Runtime.run`),
|
package/dist/port/port.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/port/port.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"port.d.ts","sourceRoot":"","sources":["../../src/port/port.ts"],"names":[],"mappings":"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"}
|
package/dist/port/port.js
CHANGED
|
@@ -128,15 +128,14 @@ export const subscription = (port, toMessage) => persistent(Stream.map(stream(po
|
|
|
128
128
|
* Effect:
|
|
129
129
|
*
|
|
130
130
|
* ```ts
|
|
131
|
-
* const ReportCount = Command.define(
|
|
132
|
-
*
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
*
|
|
136
|
-
*
|
|
137
|
-
*
|
|
138
|
-
*
|
|
139
|
-
* )
|
|
131
|
+
* const ReportCount = Command.define('ReportCount', {
|
|
132
|
+
* args: { count: S.Number },
|
|
133
|
+
* messages: [CompletedReportCount],
|
|
134
|
+
* execute: ({ count }) =>
|
|
135
|
+
* Port.emit(ports.outbound.countChanged, count).pipe(
|
|
136
|
+
* Effect.as(CompletedReportCount()),
|
|
137
|
+
* ),
|
|
138
|
+
* })
|
|
140
139
|
* ```
|
|
141
140
|
*
|
|
142
141
|
* When the program runs without an embed handle (started with `Runtime.run`),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../../src/test/apps/counter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEvE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAM5D,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,YAAY,0EAAoB,CAAA;AAC7C,eAAO,MAAM,gBAAgB;;EAA0C,CAAA;AACvE,eAAO,MAAM,MAAM,oEAAc,CAAA;AACjC,eAAO,MAAM,WAAW,yEAAmB,CAAA;AAC3C,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,qBAAqB,mFAA6B,CAAA;AAC/D,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,mBAAmB;;EAAgD,CAAA;AAChF,eAAO,MAAM,gBAAgB;;EAA6C,CAAA;AAE1E,eAAO,MAAM,OAAO;;;;;;IAYlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,UAAU;;;
|
|
1
|
+
{"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../../src/test/apps/counter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEvE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAM5D,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,YAAY,0EAAoB,CAAA;AAC7C,eAAO,MAAM,gBAAgB;;EAA0C,CAAA;AACvE,eAAO,MAAM,MAAM,oEAAc,CAAA;AACjC,eAAO,MAAM,WAAW,yEAAmB,CAAA;AAC3C,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,qBAAqB,mFAA6B,CAAA;AAC/D,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,mBAAmB;;EAAgD,CAAA;AAChF,eAAO,MAAM,gBAAgB;;EAA6C,CAAA;AAE1E,eAAO,MAAM,OAAO;;;;;;IAYlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,UAAU;;;iBAGrB,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;iBAIzB,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,KAA6B,CAAA;AAIxD,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAmCxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAe5D,CAAA"}
|
|
@@ -33,8 +33,15 @@ export const Message = S.Union([
|
|
|
33
33
|
FailedFetchCount,
|
|
34
34
|
]);
|
|
35
35
|
// COMMAND
|
|
36
|
-
export const FetchCount = Command.define('FetchCount',
|
|
37
|
-
|
|
36
|
+
export const FetchCount = Command.define('FetchCount', {
|
|
37
|
+
messages: [SucceededFetchCount, FailedFetchCount],
|
|
38
|
+
execute: Effect.sync(() => SucceededFetchCount({ count: 0 })),
|
|
39
|
+
});
|
|
40
|
+
export const FetchCountById = Command.define('FetchCountById', {
|
|
41
|
+
args: { id: S.Number },
|
|
42
|
+
messages: [SucceededFetchCount, FailedFetchCount],
|
|
43
|
+
execute: ({ id }) => Effect.sync(() => SucceededFetchCount({ count: id })),
|
|
44
|
+
});
|
|
38
45
|
// INIT
|
|
39
46
|
export const initialModel = { count: 0, log: [] };
|
|
40
47
|
// UPDATE
|
|
@@ -19,7 +19,7 @@ export declare const Model: S.Struct<{
|
|
|
19
19
|
}>;
|
|
20
20
|
export type Model = typeof Model.Type;
|
|
21
21
|
export declare const ClickedReload: import("../../schema/index.js").CallableTaggedStruct<"ClickedReload", {}>;
|
|
22
|
-
export declare const
|
|
22
|
+
export declare const CompletedReloadSources: import("../../schema/index.js").CallableTaggedStruct<"CompletedReloadSources", {
|
|
23
23
|
sources: S.$Array<S.Struct<{
|
|
24
24
|
readonly kind: S.Literal<"Book">;
|
|
25
25
|
readonly id: S.String;
|
|
@@ -34,7 +34,7 @@ export declare const SelectedSource: import("../../schema/index.js").CallableTag
|
|
|
34
34
|
export declare const SubmittedNewSourceId: import("../../schema/index.js").CallableTaggedStruct<"SubmittedNewSourceId", {
|
|
35
35
|
id: S.String;
|
|
36
36
|
}>;
|
|
37
|
-
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedReload", {}>, import("../../schema/index.js").CallableTaggedStruct<"
|
|
37
|
+
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedReload", {}>, import("../../schema/index.js").CallableTaggedStruct<"CompletedReloadSources", {
|
|
38
38
|
sources: S.$Array<S.Struct<{
|
|
39
39
|
readonly kind: S.Literal<"Book">;
|
|
40
40
|
readonly id: S.String;
|
|
@@ -50,7 +50,7 @@ export declare const Message: S.Union<readonly [import("../../schema/index.js").
|
|
|
50
50
|
export type Message = typeof Message.Type;
|
|
51
51
|
export declare const reloadedSources: ReadonlyArray<RawSource>;
|
|
52
52
|
export declare const ReloadSources: Command.CommandDefinitionNoArgs<"ReloadSources", Effect.Effect<{
|
|
53
|
-
readonly _tag: "
|
|
53
|
+
readonly _tag: "CompletedReloadSources";
|
|
54
54
|
readonly sources: readonly {
|
|
55
55
|
readonly kind: "Book";
|
|
56
56
|
readonly id: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crashOnRender.d.ts","sourceRoot":"","sources":["../../../src/test/apps/crashOnRender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE/D,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAMhE,eAAO,MAAM,SAAS;;;EAGpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAK7C,eAAO,MAAM,MAAM;;;EAGjB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AAEvC,eAAO,MAAM,KAAK;;;;;EAEhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"crashOnRender.d.ts","sourceRoot":"","sources":["../../../src/test/apps/crashOnRender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE/D,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAMhE,eAAO,MAAM,SAAS;;;EAGpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAK7C,eAAO,MAAM,MAAM;;;EAGjB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AAEvC,eAAO,MAAM,KAAK;;;;;EAEhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,sBAAsB;;;;;EAEjC,CAAA;AACF,eAAO,MAAM,cAAc;;;;;EAA0C,CAAA;AACrE,eAAO,MAAM,oBAAoB;;EAA8C,CAAA;AAE/E,eAAO,MAAM,OAAO;;;;;;;;;;;;IAKlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAMzC,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,SAAS,CAGpD,CAAA;AAED,eAAO,MAAM,aAAa;;;;;;iBAGxB,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,SAAS,CAEjD,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAErD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAiC,CAAA;AAI5D,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAiBxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,QA4B5D,CAAA"}
|
|
@@ -19,12 +19,14 @@ export const Model = S.Struct({
|
|
|
19
19
|
});
|
|
20
20
|
// MESSAGE
|
|
21
21
|
export const ClickedReload = m('ClickedReload');
|
|
22
|
-
export const
|
|
22
|
+
export const CompletedReloadSources = m('CompletedReloadSources', {
|
|
23
|
+
sources: S.Array(RawSource),
|
|
24
|
+
});
|
|
23
25
|
export const SelectedSource = m('SelectedSource', { source: Source });
|
|
24
26
|
export const SubmittedNewSourceId = m('SubmittedNewSourceId', { id: S.String });
|
|
25
27
|
export const Message = S.Union([
|
|
26
28
|
ClickedReload,
|
|
27
|
-
|
|
29
|
+
CompletedReloadSources,
|
|
28
30
|
SelectedSource,
|
|
29
31
|
SubmittedNewSourceId,
|
|
30
32
|
]);
|
|
@@ -35,7 +37,10 @@ export const reloadedSources = [
|
|
|
35
37
|
{ kind: 'Book', id: '1' },
|
|
36
38
|
{ kind: 'Book', id: '' },
|
|
37
39
|
];
|
|
38
|
-
export const ReloadSources = Command.define('ReloadSources',
|
|
40
|
+
export const ReloadSources = Command.define('ReloadSources', {
|
|
41
|
+
messages: [CompletedReloadSources],
|
|
42
|
+
execute: Effect.succeed(CompletedReloadSources({ sources: reloadedSources })),
|
|
43
|
+
});
|
|
39
44
|
// INIT
|
|
40
45
|
export const validSources = [
|
|
41
46
|
{ kind: 'Book', id: '1' },
|
|
@@ -47,7 +52,7 @@ export const initialModel = { sources: validSources };
|
|
|
47
52
|
// UPDATE
|
|
48
53
|
export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
|
|
49
54
|
ClickedReload: () => [model, [ReloadSources()]],
|
|
50
|
-
|
|
55
|
+
CompletedReloadSources: ({ sources }) => [
|
|
51
56
|
evo(model, { sources: () => sources }),
|
|
52
57
|
[],
|
|
53
58
|
],
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Effect, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
|
-
import * as Interruptible from '../../command/interruptible/index.js';
|
|
4
3
|
import type { Document, HtmlBuilder } from '../../html/index.js';
|
|
5
4
|
export declare const SaveStatus: S.Literals<readonly ["Editing", "Saving", "Saved"]>;
|
|
6
5
|
export type SaveStatus = typeof SaveStatus.Type;
|
|
@@ -21,7 +20,7 @@ export declare const SaveDraftArgs: S.Struct<{
|
|
|
21
20
|
readonly revision: S.Number;
|
|
22
21
|
}>;
|
|
23
22
|
export type SaveDraftArgs = typeof SaveDraftArgs.Type;
|
|
24
|
-
export declare const SaveDraft:
|
|
23
|
+
export declare const SaveDraft: import("../../command/interruptible/interruptible.js").DefinitionWithArgsNameKeyed<"SaveDraft", {
|
|
25
24
|
readonly revision: S.Number;
|
|
26
25
|
}, Effect.Effect<{
|
|
27
26
|
readonly _tag: "SucceededSaveDraft";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"drafts.d.ts","sourceRoot":"","sources":["../../../src/test/apps/drafts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"drafts.d.ts","sourceRoot":"","sources":["../../../src/test/apps/drafts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAMhE,eAAO,MAAM,UAAU,qDAA6C,CAAA;AACpE,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,kBAAkB;;EAE7B,CAAA;AAEF,eAAO,MAAM,OAAO;;IAAkD,CAAA;AACtE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,aAAa;;EAAmC,CAAA;AAC7D,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,SAAS;;;;;iBAMpB,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,KAA0C,CAAA;AAIrE,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAYxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,QAU5D,CAAA"}
|
package/dist/test/apps/drafts.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Effect, Match as M, Schema as S } from 'effect';
|
|
2
|
-
import * as
|
|
2
|
+
import * as Command from '../../command/index.js';
|
|
3
3
|
import { m } from '../../message/index.js';
|
|
4
4
|
import { evo } from '../../struct/index.js';
|
|
5
5
|
// MODEL
|
|
@@ -16,7 +16,12 @@ export const SucceededSaveDraft = m('SucceededSaveDraft', {
|
|
|
16
16
|
export const Message = S.Union([ClickedSaveDraft, SucceededSaveDraft]);
|
|
17
17
|
// COMMAND
|
|
18
18
|
export const SaveDraftArgs = S.Struct({ revision: S.Number });
|
|
19
|
-
export const SaveDraft =
|
|
19
|
+
export const SaveDraft = Command.define('SaveDraft', {
|
|
20
|
+
args: SaveDraftArgs.fields,
|
|
21
|
+
messages: [SucceededSaveDraft],
|
|
22
|
+
interrupt: true,
|
|
23
|
+
execute: ({ revision }) => Effect.as(Effect.never, SucceededSaveDraft({ revision })),
|
|
24
|
+
});
|
|
20
25
|
// INIT
|
|
21
26
|
export const initialModel = { revision: 0, status: 'Editing' };
|
|
22
27
|
// UPDATE
|
|
@@ -9,10 +9,10 @@ export declare const SucceededSubmit: import("../../schema/index.js").CallableTa
|
|
|
9
9
|
id: S.String;
|
|
10
10
|
}>;
|
|
11
11
|
export declare const CancelledForm: import("../../schema/index.js").CallableTaggedStruct<"CancelledForm", {}>;
|
|
12
|
-
export declare const
|
|
12
|
+
export declare const CompletedResetForm: import("../../schema/index.js").CallableTaggedStruct<"CompletedResetForm", {}>;
|
|
13
13
|
export declare const ChildMessage: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"SubmittedForm", {}>, import("../../schema/index.js").CallableTaggedStruct<"SucceededSubmit", {
|
|
14
14
|
id: S.String;
|
|
15
|
-
}>, import("../../schema/index.js").CallableTaggedStruct<"CancelledForm", {}>, import("../../schema/index.js").CallableTaggedStruct<"
|
|
15
|
+
}>, import("../../schema/index.js").CallableTaggedStruct<"CancelledForm", {}>, import("../../schema/index.js").CallableTaggedStruct<"CompletedResetForm", {}>]>;
|
|
16
16
|
export type ChildMessage = typeof ChildMessage.Type;
|
|
17
17
|
export declare const RequestedSave: import("../../schema/index.js").CallableTaggedStruct<"RequestedSave", {
|
|
18
18
|
id: S.String;
|
|
@@ -27,7 +27,7 @@ export declare const SubmitForm: Command.CommandDefinitionNoArgs<"SubmitForm", E
|
|
|
27
27
|
readonly id: string;
|
|
28
28
|
}, never, never>>;
|
|
29
29
|
export declare const ResetForm: Command.CommandDefinitionNoArgs<"ResetForm", Effect.Effect<{
|
|
30
|
-
readonly _tag: "
|
|
30
|
+
readonly _tag: "CompletedResetForm";
|
|
31
31
|
}, never, never>>;
|
|
32
32
|
export declare const initialChildModel: ChildModel;
|
|
33
33
|
export declare const childUpdate: (_model: ChildModel, message: ChildMessage) => readonly [ChildModel, ReadonlyArray<Command.Command<ChildMessage>>, Option.Option<ChildOutMessage>];
|
|
@@ -42,13 +42,13 @@ export type ParentModel = typeof ParentModel.Type;
|
|
|
42
42
|
export declare const GotChildMessage: import("../../schema/index.js").CallableTaggedStruct<"GotChildMessage", {
|
|
43
43
|
message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"SubmittedForm", {}>, import("../../schema/index.js").CallableTaggedStruct<"SucceededSubmit", {
|
|
44
44
|
id: S.String;
|
|
45
|
-
}>, import("../../schema/index.js").CallableTaggedStruct<"CancelledForm", {}>, import("../../schema/index.js").CallableTaggedStruct<"
|
|
45
|
+
}>, import("../../schema/index.js").CallableTaggedStruct<"CancelledForm", {}>, import("../../schema/index.js").CallableTaggedStruct<"CompletedResetForm", {}>]>;
|
|
46
46
|
}>;
|
|
47
47
|
export declare const CompletedParentReset: import("../../schema/index.js").CallableTaggedStruct<"CompletedParentReset", {}>;
|
|
48
48
|
export declare const ParentMessage: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"GotChildMessage", {
|
|
49
49
|
message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"SubmittedForm", {}>, import("../../schema/index.js").CallableTaggedStruct<"SucceededSubmit", {
|
|
50
50
|
id: S.String;
|
|
51
|
-
}>, import("../../schema/index.js").CallableTaggedStruct<"CancelledForm", {}>, import("../../schema/index.js").CallableTaggedStruct<"
|
|
51
|
+
}>, import("../../schema/index.js").CallableTaggedStruct<"CancelledForm", {}>, import("../../schema/index.js").CallableTaggedStruct<"CompletedResetForm", {}>]>;
|
|
52
52
|
}>, import("../../schema/index.js").CallableTaggedStruct<"CompletedParentReset", {}>]>;
|
|
53
53
|
export type ParentMessage = typeof ParentMessage.Type;
|
|
54
54
|
export declare const initialParentModel: ParentModel;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formChild.d.ts","sourceRoot":"","sources":["../../../src/test/apps/formChild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAKjD,eAAO,MAAM,UAAU;;EAErB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAI/C,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,eAAe;;EAAyC,CAAA;AACrE,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"formChild.d.ts","sourceRoot":"","sources":["../../../src/test/apps/formChild.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAKjD,eAAO,MAAM,UAAU;;EAErB,CAAA;AACF,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAI/C,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,eAAe;;EAAyC,CAAA;AACrE,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,kBAAkB,gFAA0B,CAAA;AAEzD,eAAO,MAAM,YAAY;;+JAKvB,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AAInD,eAAO,MAAM,aAAa;;EAAuC,CAAA;AACjE,eAAO,MAAM,eAAe,6EAAuB,CAAA;AAEnD,eAAO,MAAM,eAAe;;iFAA4C,CAAA;AACxE,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;AAIzD,eAAO,MAAM,UAAU;;;iBAGrB,CAAA;AAEF,eAAO,MAAM,SAAS;;iBAGpB,CAAA;AAIF,eAAO,MAAM,iBAAiB,EAAE,UAA+B,CAAA;AAI/D,eAAO,MAAM,WAAW,GACtB,QAAQ,UAAU,EAClB,SAAS,YAAY,KACpB,SAAS,CACV,UAAU,EACV,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,EAC5C,MAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CA4B7B,CAAA;AAIH,eAAO,MAAM,WAAW;;;;;;EAItB,CAAA;AACF,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAIjD,eAAO,MAAM,eAAe;;;;EAE1B,CAAA;AACF,eAAO,MAAM,oBAAoB,kFAA4B,CAAA;AAE7D,eAAO,MAAM,aAAa;;;;sFAAmD,CAAA;AAC7E,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAIrD,eAAO,MAAM,kBAAkB,EAAE,WAIhC,CAAA;AAID,eAAO,MAAM,YAAY,GACvB,aAAa,WAAW,EACxB,SAAS,aAAa,KACrB,SAAS,CAAC,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAqCpE,CAAA"}
|
|
@@ -9,20 +9,26 @@ export const ChildModel = S.Struct({
|
|
|
9
9
|
export const SubmittedForm = m('SubmittedForm');
|
|
10
10
|
export const SucceededSubmit = m('SucceededSubmit', { id: S.String });
|
|
11
11
|
export const CancelledForm = m('CancelledForm');
|
|
12
|
-
export const
|
|
12
|
+
export const CompletedResetForm = m('CompletedResetForm');
|
|
13
13
|
export const ChildMessage = S.Union([
|
|
14
14
|
SubmittedForm,
|
|
15
15
|
SucceededSubmit,
|
|
16
16
|
CancelledForm,
|
|
17
|
-
|
|
17
|
+
CompletedResetForm,
|
|
18
18
|
]);
|
|
19
19
|
// CHILD OUT MESSAGE
|
|
20
20
|
export const RequestedSave = m('RequestedSave', { id: S.String });
|
|
21
21
|
export const RequestedCancel = m('RequestedCancel');
|
|
22
22
|
export const ChildOutMessage = S.Union([RequestedSave, RequestedCancel]);
|
|
23
23
|
// CHILD COMMAND
|
|
24
|
-
export const SubmitForm = Command.define('SubmitForm',
|
|
25
|
-
|
|
24
|
+
export const SubmitForm = Command.define('SubmitForm', {
|
|
25
|
+
messages: [SucceededSubmit],
|
|
26
|
+
execute: Effect.sync(() => SucceededSubmit({ id: 'abc' })),
|
|
27
|
+
});
|
|
28
|
+
export const ResetForm = Command.define('ResetForm', {
|
|
29
|
+
messages: [CompletedResetForm],
|
|
30
|
+
execute: Effect.sync(() => CompletedResetForm()),
|
|
31
|
+
});
|
|
26
32
|
// CHILD INIT
|
|
27
33
|
export const initialChildModel = { status: 'Idle' };
|
|
28
34
|
// CHILD UPDATE
|
|
@@ -42,7 +48,7 @@ export const childUpdate = (_model, message) => M.value(message).pipe(M.withRetu
|
|
|
42
48
|
[],
|
|
43
49
|
Option.some(RequestedCancel()),
|
|
44
50
|
],
|
|
45
|
-
|
|
51
|
+
CompletedResetForm: () => [{ status: 'Idle' }, [], Option.none()],
|
|
46
52
|
}));
|
|
47
53
|
// PARENT MODEL
|
|
48
54
|
export const ParentModel = S.Struct({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/test/apps/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAK5D,eAAO,MAAM,KAAK;;;;;;EAMhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,YAAY;;EAAyC,CAAA;AAClE,eAAO,MAAM,eAAe;;EAA4C,CAAA;AACxE,eAAO,MAAM,cAAc,4EAAsB,CAAA;AACjD,eAAO,MAAM,qBAAqB;;EAEhC,CAAA;AACF,eAAO,MAAM,kBAAkB;;EAA+C,CAAA;AAC9E,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAE/C,eAAO,MAAM,OAAO;;;;;;;;+EAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;;
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../../src/test/apps/login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAK5D,eAAO,MAAM,KAAK;;;;;;EAMhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,YAAY;;EAAyC,CAAA;AAClE,eAAO,MAAM,eAAe;;EAA4C,CAAA;AACxE,eAAO,MAAM,cAAc,4EAAsB,CAAA;AACjD,eAAO,MAAM,qBAAqB;;EAEhC,CAAA;AACF,eAAO,MAAM,kBAAkB;;EAA+C,CAAA;AAC9E,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAE/C,eAAO,MAAM,OAAO;;;;;;;;+EAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;;iBAGvB,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,KAM1B,CAAA;AAID,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAyBxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IA8E5D,CAAA"}
|
package/dist/test/apps/login.js
CHANGED
|
@@ -27,7 +27,10 @@ export const Message = S.Union([
|
|
|
27
27
|
ClickedLogout,
|
|
28
28
|
]);
|
|
29
29
|
// COMMAND
|
|
30
|
-
export const Authenticate = Command.define('Authenticate',
|
|
30
|
+
export const Authenticate = Command.define('Authenticate', {
|
|
31
|
+
messages: [SucceededAuthenticate, FailedAuthenticate],
|
|
32
|
+
execute: Effect.sync(() => SucceededAuthenticate({ username: 'alice' })),
|
|
33
|
+
});
|
|
31
34
|
// INIT
|
|
32
35
|
export const initialModel = {
|
|
33
36
|
email: '',
|
|
@@ -8,7 +8,7 @@ export declare const Model: S.Struct<{
|
|
|
8
8
|
}>;
|
|
9
9
|
export type Model = typeof Model.Type;
|
|
10
10
|
export declare const ClickedChooseResume: import("../../schema/index.js").CallableTaggedStruct<"ClickedChooseResume", {}>;
|
|
11
|
-
export declare const
|
|
11
|
+
export declare const CompletedSelectResume: import("../../schema/index.js").CallableTaggedStruct<"CompletedSelectResume", {
|
|
12
12
|
file: S.Schema<File>;
|
|
13
13
|
}>;
|
|
14
14
|
export declare const CancelledSelectResume: import("../../schema/index.js").CallableTaggedStruct<"CancelledSelectResume", {}>;
|
|
@@ -17,7 +17,7 @@ export declare const SucceededReadPreview: import("../../schema/index.js").Calla
|
|
|
17
17
|
}>;
|
|
18
18
|
export declare const FailedReadPreview: import("../../schema/index.js").CallableTaggedStruct<"FailedReadPreview", {}>;
|
|
19
19
|
export declare const ClickedRemoveResume: import("../../schema/index.js").CallableTaggedStruct<"ClickedRemoveResume", {}>;
|
|
20
|
-
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedChooseResume", {}>, import("../../schema/index.js").CallableTaggedStruct<"
|
|
20
|
+
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedChooseResume", {}>, import("../../schema/index.js").CallableTaggedStruct<"CompletedSelectResume", {
|
|
21
21
|
file: S.Schema<File>;
|
|
22
22
|
}>, import("../../schema/index.js").CallableTaggedStruct<"CancelledSelectResume", {}>, import("../../schema/index.js").CallableTaggedStruct<"SucceededReadPreview", {
|
|
23
23
|
dataUrl: S.String;
|
|
@@ -26,7 +26,7 @@ export type Message = typeof Message.Type;
|
|
|
26
26
|
export declare const SelectResume: Command.CommandDefinitionNoArgs<"SelectResume", Effect.Effect<{
|
|
27
27
|
readonly _tag: "CancelledSelectResume";
|
|
28
28
|
} | {
|
|
29
|
-
readonly _tag: "
|
|
29
|
+
readonly _tag: "CompletedSelectResume";
|
|
30
30
|
readonly file: File;
|
|
31
31
|
}, never, never>>;
|
|
32
32
|
export declare const ReadResumePreview: Command.CommandDefinitionWithArgs<"ReadResumePreview", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resumeUpload.d.ts","sourceRoot":"","sources":["../../../src/test/apps/resumeUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAM5D,eAAO,MAAM,KAAK;;;;EAIhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"resumeUpload.d.ts","sourceRoot":"","sources":["../../../src/test/apps/resumeUpload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AAEjD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAM5D,eAAO,MAAM,KAAK;;;;EAIhB,CAAA;AAEF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,qBAAqB;;EAEhC,CAAA;AACF,eAAO,MAAM,qBAAqB,mFAA6B,CAAA;AAC/D,eAAO,MAAM,oBAAoB;;EAE/B,CAAA;AACF,eAAO,MAAM,iBAAiB,+EAAyB,CAAA;AACvD,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAE3D,eAAO,MAAM,OAAO;;;;oKAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;;;;iBAUvB,CAAA;AAEF,eAAO,MAAM,iBAAiB;;;;;;;iBAQ5B,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,KAI1B,CAAA;AAID,KAAK,YAAY,GAAG,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;AAE7E,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO,KAAG,YA+BrD,CAAA;AAsBH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAmB5D,CAAA"}
|