foldkit 0.128.1 → 0.129.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.
@@ -3,14 +3,19 @@ import { Effect, Schema } from 'effect';
3
3
  export declare const CommandDefinitionTypeId: unique symbol;
4
4
  /** Type-level brand for CommandDefinition values. */
5
5
  export type CommandDefinitionTypeId = typeof CommandDefinitionTypeId;
6
- /** A named Effect that produces a message, optionally carrying the args used to construct it. */
6
+ /** A named Effect that produces a message, optionally carrying the args used
7
+ * to construct it. `key` is present on Commands built by
8
+ * `Interruptible.define`: it addresses the invocation in the runtime's
9
+ * interrupt registry so a later Interrupt Command can stop it. */
7
10
  export type Command<T, E = never, R = never> = [T] extends [Schema.Top] ? Readonly<{
8
11
  name: string;
9
12
  args?: Record<string, unknown>;
13
+ key?: string;
10
14
  effect: Effect.Effect<Schema.Schema.Type<T>, E, R>;
11
15
  }> : Readonly<{
12
16
  name: string;
13
17
  args?: Record<string, unknown>;
18
+ key?: string;
14
19
  effect: Effect.Effect<T, E, R>;
15
20
  }>;
16
21
  /** A Command definition for a Command with no declared args. Call as `Definition()` to produce a Command instance. */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './interruptible.js';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/command/interruptible/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAA"}
@@ -0,0 +1 @@
1
+ export * from './interruptible.js';
@@ -0,0 +1,177 @@
1
+ import { Context, Effect, Fiber, Schema } from 'effect';
2
+ import { CommandDefinitionTypeId } from '../index.js';
3
+ /** At least one in-flight Command held the interrupt key, and every holder
4
+ * has been stopped. Their declared result Messages are guaranteed never to
5
+ * dispatch. */
6
+ export declare const Interrupted: import("../../schema/index.js").CallableTaggedStruct<"Interrupted", {}>;
7
+ /** At least one in-flight Command held the interrupt key, and every holder
8
+ * has been stopped. Their declared result Messages are guaranteed never to
9
+ * dispatch. */
10
+ export type Interrupted = typeof Interrupted.Type;
11
+ /** No Command holds the interrupt key: every target already completed (its
12
+ * result Message dispatched or will dispatch) or was never dispatched. The
13
+ * two cases are indistinguishable by design. */
14
+ export declare const NotFound: import("../../schema/index.js").CallableTaggedStruct<"NotFound", {}>;
15
+ /** No Command holds the interrupt key: every target already completed (its
16
+ * result Message dispatched or will dispatch) or was never dispatched. The
17
+ * two cases are indistinguishable by design. */
18
+ export type NotFound = typeof NotFound.Type;
19
+ /** The result of an Interrupt Command: {@link Interrupted} when at least one
20
+ * holder was stopped, {@link NotFound} when nothing held the key.
21
+ * Interruption itself cannot fail. */
22
+ export declare const Outcome: Schema.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"Interrupted", {}>, import("../../schema/index.js").CallableTaggedStruct<"NotFound", {}>]>;
23
+ /** The result of an Interrupt Command: {@link Interrupted} when at least one
24
+ * holder was stopped, {@link NotFound} when nothing held the key.
25
+ * Interruption itself cannot fail. */
26
+ export type Outcome = typeof Outcome.Type;
27
+ /** @internal The per-runtime-instance map from interrupt key to the fibers
28
+ * of the interruptible Commands currently holding it. A key is an address,
29
+ * not a lock: any number of invocations may hold one key concurrently, and
30
+ * dispatching under a held key never interrupts anything. Commands register
31
+ * under their key for the duration of their Effect; Interrupt Commands look
32
+ * the key up and interrupt every holder. Internal to the runtime. */
33
+ export type __Registry = Readonly<{
34
+ lookup: (key: string) => ReadonlyArray<Fiber.Fiber<unknown, unknown>>;
35
+ register: (key: string, fiber: Fiber.Fiber<unknown, unknown>) => void;
36
+ release: (key: string, fiber: Fiber.Fiber<unknown, unknown>) => void;
37
+ interrupt: (key: string) => Effect.Effect<Outcome>;
38
+ }>;
39
+ /** @internal Creates an interrupt registry. The runtime creates one per
40
+ * instance and provides it through {@link __CurrentRegistry}. Internal to
41
+ * the runtime. */
42
+ export declare const __makeRegistry: () => __Registry;
43
+ /** Reference through which the runtime provides the current instance's
44
+ * interrupt registry to Command Effects. A Reference has a default value, so
45
+ * reading it never adds a service requirement; the default is a shared
46
+ * registry for Effects run outside a runtime (unit tests). Internal to the
47
+ * runtime. */
48
+ export declare const __CurrentRegistry: Context.Reference<Readonly<{
49
+ lookup: (key: string) => ReadonlyArray<Fiber.Fiber<unknown, unknown>>;
50
+ register: (key: string, fiber: Fiber.Fiber<unknown, unknown>) => void;
51
+ release: (key: string, fiber: Fiber.Fiber<unknown, unknown>) => void;
52
+ interrupt: (key: string) => Effect.Effect<Outcome>;
53
+ }>>;
54
+ /** An Interrupt Command definition derived from an interruptible Command
55
+ * definition with no declared args. Call as `Definition.Interrupt(toMessage)`
56
+ * to produce a Command that interrupts every holder of the definition's key. */
57
+ export interface InterruptDefinitionNoArgs<Name extends string> {
58
+ readonly [CommandDefinitionTypeId]: CommandDefinitionTypeId;
59
+ readonly name: `${Name}.Interrupt`;
60
+ <ToMessage>(toMessage: (outcome: Outcome) => ToMessage): Readonly<{
61
+ name: `${Name}.Interrupt`;
62
+ interruptsKey: string;
63
+ effect: Effect.Effect<ToMessage>;
64
+ }>;
65
+ }
66
+ /** An Interrupt Command definition derived from an interruptible Command
67
+ * definition with declared args. Call as
68
+ * `Definition.Interrupt(keyArgs, toMessage)` to produce a Command that
69
+ * interrupts every holder of the key derived from `keyArgs`. */
70
+ export interface InterruptDefinitionWithArgs<Name extends string, KeyArgs> {
71
+ readonly [CommandDefinitionTypeId]: CommandDefinitionTypeId;
72
+ readonly name: `${Name}.Interrupt`;
73
+ <ToMessage>(keyArgs: KeyArgs, toMessage: (outcome: Outcome) => ToMessage): Readonly<{
74
+ name: `${Name}.Interrupt`;
75
+ args: KeyArgs;
76
+ interruptsKey: string;
77
+ effect: Effect.Effect<ToMessage>;
78
+ }>;
79
+ }
80
+ /** An interruptible Command definition with no declared args; its key is the
81
+ * Command name. Call as `Definition()` to produce a Command instance; use
82
+ * `Definition.Interrupt` to build the Command that stops it. */
83
+ export interface DefinitionNoArgs<Name extends string, Eff extends Effect.Effect<any, any, any>> {
84
+ readonly [CommandDefinitionTypeId]: CommandDefinitionTypeId;
85
+ readonly name: Name;
86
+ readonly Interrupt: InterruptDefinitionNoArgs<Name>;
87
+ (): Readonly<{
88
+ name: Name;
89
+ key: string;
90
+ effect: Eff;
91
+ }>;
92
+ }
93
+ /** An interruptible Command definition with declared args and a key derived
94
+ * from them, namespaced by the Command name. Call as `Definition(args)` to
95
+ * produce a Command instance; use `Definition.Interrupt` to build the
96
+ * Command that stops every holder of a specific key. */
97
+ export interface DefinitionWithArgs<Name extends string, Fields extends Schema.Struct.Fields, KeyArgs extends Partial<Schema.Schema.Type<Schema.Struct<Fields>>>, Eff extends Effect.Effect<any, any, any>> {
98
+ readonly [CommandDefinitionTypeId]: CommandDefinitionTypeId;
99
+ readonly name: Name;
100
+ readonly Interrupt: InterruptDefinitionWithArgs<Name, KeyArgs>;
101
+ (args: Schema.Schema.Type<Schema.Struct<Fields>>): Readonly<{
102
+ name: Name;
103
+ args: Schema.Schema.Type<Schema.Struct<Fields>>;
104
+ key: string;
105
+ effect: Eff;
106
+ }>;
107
+ }
108
+ /**
109
+ * Defines an interruptible Command. Like `Command.define`, but every
110
+ * invocation registers under a key in the runtime's interrupt registry for
111
+ * the duration of its Effect, and the returned Definition carries an
112
+ * `Interrupt` constructor that builds the Command to stop it.
113
+ *
114
+ * Keys are namespaced by the Command name automatically. With no declared
115
+ * args the key is the Command name itself. With declared args, `toKey` maps
116
+ * them to the part that distinguishes invocations, and the full key becomes
117
+ * `` `${name}:${toKey(args)}` ``, so keys never collide across definitions
118
+ * and call sites never restate the name. Derive the key part from the Model
119
+ * identity that owns the in-flight work (a list item id, an entity id), never
120
+ * from a generated value: the update function is pure, and any invocation you
121
+ * can meaningfully target is already distinguished by data in the Model.
122
+ *
123
+ * Semantics:
124
+ *
125
+ * - A key is an address, not a lock. Any number of invocations may run under
126
+ * one key concurrently, and dispatching never interrupts anything.
127
+ * Interruption only happens when update returns an Interrupt Command.
128
+ * - `Definition.Interrupt` produces a Command whose Effect interrupts every
129
+ * current holder of the key and results in `toMessage(outcome)`. The
130
+ * outcome is `Interrupted` when at least one holder was stopped (the
131
+ * stopped holders' result Messages are guaranteed never to dispatch) or
132
+ * `NotFound` when nothing held the key. Name the result Message
133
+ * `CompletedCancel<CommandName>`.
134
+ * - To dispatch a replacement after cancelling, sequence through the
135
+ * Interrupt's result Message: return the new Command from the
136
+ * `CompletedCancel<CommandName>` handler. Commands in one batch run
137
+ * concurrently with no execution-order guarantee, so `[Interrupt, Next]`
138
+ * in a single list is a race, not a sequence.
139
+ *
140
+ * For work that should stop when the Model says so, reach for a Subscription
141
+ * or ManagedResource instead; interruption is for one-shot async work that is
142
+ * structurally a Command (for example an in-flight HTTP request, a file read,
143
+ * or an upload).
144
+ *
145
+ * @example No args
146
+ * ```ts
147
+ * const SyncLibrary = Command.Interruptible.define(
148
+ * 'SyncLibrary',
149
+ * SucceededSyncLibrary,
150
+ * FailedSyncLibrary,
151
+ * )(Effect.gen(function* () { ... }))
152
+ * // Call sites:
153
+ * SyncLibrary()
154
+ * SyncLibrary.Interrupt(outcome => CompletedCancelSyncLibrary({ outcome }))
155
+ * ```
156
+ *
157
+ * @example With args, key derived from them
158
+ * ```ts
159
+ * const UploadFile = Command.Interruptible.define(
160
+ * 'UploadFile',
161
+ * { uploadId: S.Number, file: S.instanceOf(File) },
162
+ * ({ uploadId }: { uploadId: number }) => String(uploadId),
163
+ * SucceededUploadFile,
164
+ * FailedUploadFile,
165
+ * )(({ uploadId, file }) =>
166
+ * Effect.gen(function* () { ... }),
167
+ * )
168
+ * // Call sites:
169
+ * UploadFile({ uploadId: 1, file })
170
+ * UploadFile.Interrupt({ uploadId: 1 }, outcome =>
171
+ * CompletedCancelUploadFile({ uploadId: 1, outcome }),
172
+ * )
173
+ * ```
174
+ */
175
+ export declare function define<const Name extends string, Results extends ReadonlyArray<Schema.Top>>(name: Name, ...results: Results): <Eff extends Effect.Effect<Schema.Schema.Type<Results[number]>, any, any>>(effect: Eff) => DefinitionNoArgs<Name, Eff>;
176
+ export declare function define<const Name extends string, Fields extends Schema.Struct.Fields, KeyArgs extends Partial<Schema.Schema.Type<Schema.Struct<Fields>>>, Results extends ReadonlyArray<Schema.Top>>(name: Name, args: Fields, toKey: (keyArgs: KeyArgs) => string, ...results: Results): <Eff extends Effect.Effect<Schema.Schema.Type<Results[number]>, any, any>>(effectBuilder: (args: Schema.Schema.Type<Schema.Struct<Fields>>) => Eff) => DefinitionWithArgs<Name, Fields, KeyArgs, Eff>;
177
+ //# sourceMappingURL=interruptible.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"interruptible.d.ts","sourceRoot":"","sources":["../../../src/command/interruptible/interruptible.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,155 @@
1
+ import { Array, Context, Effect, Fiber, Option, Predicate, Schema, } from 'effect';
2
+ import { ts } from '../../schema/index.js';
3
+ import { CommandDefinitionTypeId } from '../index.js';
4
+ /** At least one in-flight Command held the interrupt key, and every holder
5
+ * has been stopped. Their declared result Messages are guaranteed never to
6
+ * dispatch. */
7
+ export const Interrupted = ts('Interrupted');
8
+ /** No Command holds the interrupt key: every target already completed (its
9
+ * result Message dispatched or will dispatch) or was never dispatched. The
10
+ * two cases are indistinguishable by design. */
11
+ export const NotFound = ts('NotFound');
12
+ /** The result of an Interrupt Command: {@link Interrupted} when at least one
13
+ * holder was stopped, {@link NotFound} when nothing held the key.
14
+ * Interruption itself cannot fail. */
15
+ export const Outcome = Schema.Union([Interrupted, NotFound]);
16
+ /** @internal Creates an interrupt registry. The runtime creates one per
17
+ * instance and provides it through {@link __CurrentRegistry}. Internal to
18
+ * the runtime. */
19
+ export const __makeRegistry = () => {
20
+ const holders = new Map();
21
+ const lookup = (key) => Option.match(Option.fromNullishOr(holders.get(key)), {
22
+ onNone: () => [],
23
+ onSome: fibers => Array.fromIterable(fibers),
24
+ });
25
+ const register = (key, fiber) => {
26
+ Option.match(Option.fromNullishOr(holders.get(key)), {
27
+ onNone: () => {
28
+ holders.set(key, new Set([fiber]));
29
+ },
30
+ onSome: fibers => {
31
+ fibers.add(fiber);
32
+ },
33
+ });
34
+ };
35
+ const release = (key, fiber) => {
36
+ const maybeFibers = Option.fromNullishOr(holders.get(key));
37
+ if (Option.isSome(maybeFibers)) {
38
+ maybeFibers.value.delete(fiber);
39
+ if (maybeFibers.value.size === 0) {
40
+ holders.delete(key);
41
+ }
42
+ }
43
+ };
44
+ // NOTE: `Effect.suspend` defers the lookup to each run of the returned
45
+ // Effect. Without it the holders would be snapshotted when the Effect
46
+ // value is built, so a stored or retried Interrupt Effect would act on
47
+ // stale fibers instead of whatever holds the key at run time.
48
+ const interrupt = (key) => Effect.suspend(() => Array.match(lookup(key), {
49
+ onEmpty: () => Effect.succeed(NotFound()),
50
+ onNonEmpty: fibers => Effect.map(Fiber.interruptAll(fibers), () => Interrupted()),
51
+ }));
52
+ return { lookup, register, release, interrupt };
53
+ };
54
+ /** Reference through which the runtime provides the current instance's
55
+ * interrupt registry to Command Effects. A Reference has a default value, so
56
+ * reading it never adds a service requirement; the default is a shared
57
+ * registry for Effects run outside a runtime (unit tests). Internal to the
58
+ * runtime. */
59
+ export const __CurrentRegistry = Context.Reference('foldkit/Command/Interruptible/CurrentRegistry', { defaultValue: __makeRegistry });
60
+ // NOTE: registration and its cleanup must attach as one atomic step, the
61
+ // same guarantee `Effect.acquireRelease` gives, built by hand here. The
62
+ // whole region is uninterruptible except the Command's own Effect, which
63
+ // `restore` makes interruptible again. If an interrupt could land after
64
+ // `register` but before `ensuring` attached, the fiber would die without
65
+ // ever removing itself from the registry, and every later Interrupt would
66
+ // report `Interrupted` against that dead entry forever.
67
+ const registerKeyWhileRunning = (key, effect) => Effect.withFiber(fiber => Effect.gen(function* () {
68
+ const registry = yield* __CurrentRegistry;
69
+ return yield* Effect.uninterruptibleMask(restore => Effect.suspend(() => {
70
+ registry.register(key, fiber);
71
+ return restore(effect).pipe(Effect.ensuring(Effect.sync(() => registry.release(key, fiber))));
72
+ }));
73
+ }));
74
+ const makeInterruptEffect = (key, toMessage) => Effect.gen(function* () {
75
+ const registry = yield* __CurrentRegistry;
76
+ const outcome = yield* registry.interrupt(key);
77
+ return toMessage(outcome);
78
+ });
79
+ const brandAsDefinition = (definition, name) => {
80
+ Object.defineProperty(definition, 'name', {
81
+ value: name,
82
+ configurable: true,
83
+ });
84
+ Object.defineProperty(definition, CommandDefinitionTypeId, {
85
+ value: CommandDefinitionTypeId,
86
+ });
87
+ };
88
+ const makeInterruptDefinitionNoArgs = (name, key) => {
89
+ const interruptName = `${name}.Interrupt`;
90
+ const definition = (toMessage) => ({
91
+ name: interruptName,
92
+ interruptsKey: key,
93
+ effect: makeInterruptEffect(key, toMessage),
94
+ messageMappers: [],
95
+ });
96
+ brandAsDefinition(definition, interruptName);
97
+ return definition;
98
+ };
99
+ const makeInterruptDefinitionWithArgs = (name, toFullKey) => {
100
+ const interruptName = `${name}.Interrupt`;
101
+ const definition = (keyArgs, toMessage) => {
102
+ const key = toFullKey(keyArgs);
103
+ return {
104
+ name: interruptName,
105
+ args: keyArgs,
106
+ interruptsKey: key,
107
+ effect: makeInterruptEffect(key, toMessage),
108
+ messageMappers: [],
109
+ };
110
+ };
111
+ brandAsDefinition(definition, interruptName);
112
+ return definition;
113
+ };
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
+ /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
135
+ const toKey = maybeToKey;
136
+ const toFullKey = (keyArgs) => `${name}:${toKey(keyArgs)}`;
137
+ return (effectBuilder) => {
138
+ const definition = (args) => {
139
+ const key = toFullKey(args);
140
+ return {
141
+ name,
142
+ args,
143
+ key,
144
+ effect: registerKeyWhileRunning(key, effectBuilder(args)),
145
+ messageMappers: [],
146
+ };
147
+ };
148
+ brandAsDefinition(definition, name);
149
+ Object.defineProperty(definition, 'Interrupt', {
150
+ value: makeInterruptDefinitionWithArgs(name, toFullKey),
151
+ });
152
+ /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
153
+ return definition;
154
+ };
155
+ }
@@ -0,0 +1,3 @@
1
+ export type { DefinitionNoArgs, DefinitionWithArgs, InterruptDefinitionNoArgs, InterruptDefinitionWithArgs, } from './index.js';
2
+ export { define, Interrupted, NotFound, Outcome } from './index.js';
3
+ //# sourceMappingURL=public.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../../src/command/interruptible/public.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,kBAAkB,EAClB,yBAAyB,EACzB,2BAA2B,GAC5B,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA"}
@@ -0,0 +1 @@
1
+ export { define, Interrupted, NotFound, Outcome } from './index.js';
@@ -1,3 +1,4 @@
1
1
  export type { Command, CommandDefinition, CommandDefinitionNoArgs, CommandDefinitionWithArgs, } from './index.js';
2
2
  export { CommandDefinitionTypeId, define, mapEffect, mapMessage, mapMessages, } from './index.js';
3
+ export * as Interruptible from './interruptible/public.js';
3
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,GAC1B,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,uBAAuB,EACvB,MAAM,EACN,SAAS,EACT,UAAU,EACV,WAAW,GACZ,MAAM,YAAY,CAAA"}
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,GAC1B,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"}
@@ -1 +1,2 @@
1
1
  export { CommandDefinitionTypeId, define, mapEffect, mapMessage, mapMessages, } from './index.js';
2
+ export * as Interruptible from './interruptible/public.js';
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/runtime.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import { Array, Cause, Context, Duration, Effect, Exit, Fiber, Function, Layer, Match, Option, Predicate, PubSub, Queue, Record, Ref, Scheduler, Schema, Stream, SubscriptionRef, pipe, } from 'effect';
2
2
  import { BrowserRuntime } from '@effect/platform-browser';
3
+ import { __CurrentRegistry as __CurrentInterruptRegistry, __makeRegistry as __makeInterruptRegistry, } from '../command/interruptible/index.js';
3
4
  import { createDevToolsStore, } from '../devTools/store.js';
4
5
  import { startWebSocketBridge } from '../devTools/webSocketBridge.js';
5
6
  import { __beginRender as beginHtmlRender, __beginReplayRender as beginReplayHtmlRender, __clearRuntime as clearHtmlRuntime, __createBoundaryRegistry as createHtmlBoundaryRegistry, __endReplayRender as endReplayHtmlRender, __setRuntime as setHtmlRuntime, } from '../html/index.js';
@@ -434,6 +435,7 @@ const makeRuntime = ({ ports, Model, flags: resolveFlags, init, update, view, ma
434
435
  /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
435
436
  Layer.empty, mergeResourceIntoLayer)),
436
437
  });
438
+ const interruptRegistry = __makeInterruptRegistry();
437
439
  const provideAllResources = (effect) => {
438
440
  const withResources = Option.match(maybeAcquireResourceContext, {
439
441
  onNone: () => effect,
@@ -446,10 +448,11 @@ const makeRuntime = ({ ports, Model, flags: resolveFlags, init, update, view, ma
446
448
  /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
447
449
  Effect.provide(withResources, managedLayer),
448
450
  });
449
- return Option.match(maybePortChannels, {
451
+ const withPortChannels = Option.match(maybePortChannels, {
450
452
  onNone: () => withManagedResources,
451
453
  onSome: portChannels => Effect.provideService(withManagedResources, __CurrentPortChannels, portChannels.channels),
452
454
  });
455
+ return Effect.provideService(withPortChannels, __CurrentInterruptRegistry, interruptRegistry);
453
456
  };
454
457
  const flags = yield* resolveFlags;
455
458
  const ModelJsonCodec = Schema.toCodecJson(
@@ -0,0 +1,81 @@
1
+ import { Effect, Schema as S } from 'effect';
2
+ import * as Command from '../../command/index.js';
3
+ import * as Interruptible from '../../command/interruptible/index.js';
4
+ import { type Document } from '../../html/index.js';
5
+ export declare const UploadStatus: S.Literals<readonly ["Uploading", "Done", "Cancelled", "Failed"]>;
6
+ export type UploadStatus = typeof UploadStatus.Type;
7
+ export declare const Upload: S.Struct<{
8
+ readonly id: S.Number;
9
+ readonly status: S.Literals<readonly ["Uploading", "Done", "Cancelled", "Failed"]>;
10
+ }>;
11
+ export type Upload = typeof Upload.Type;
12
+ export declare const Model: S.Struct<{
13
+ readonly uploadId: S.Number;
14
+ readonly uploads: S.$Array<S.Struct<{
15
+ readonly id: S.Number;
16
+ readonly status: S.Literals<readonly ["Uploading", "Done", "Cancelled", "Failed"]>;
17
+ }>>;
18
+ }>;
19
+ export type Model = typeof Model.Type;
20
+ export declare const ClickedStartUpload: import("../../schema/index.js").CallableTaggedStruct<"ClickedStartUpload", {}>;
21
+ export declare const ClickedRetryUpload: import("../../schema/index.js").CallableTaggedStruct<"ClickedRetryUpload", {
22
+ uploadId: S.Number;
23
+ }>;
24
+ export declare const ClickedCancelUpload: import("../../schema/index.js").CallableTaggedStruct<"ClickedCancelUpload", {
25
+ uploadId: S.Number;
26
+ }>;
27
+ export declare const SucceededUploadFile: import("../../schema/index.js").CallableTaggedStruct<"SucceededUploadFile", {
28
+ uploadId: S.Number;
29
+ }>;
30
+ export declare const FailedUploadFile: import("../../schema/index.js").CallableTaggedStruct<"FailedUploadFile", {
31
+ uploadId: S.Number;
32
+ }>;
33
+ export declare const CompletedCancelUploadFile: import("../../schema/index.js").CallableTaggedStruct<"CompletedCancelUploadFile", {
34
+ uploadId: S.Number;
35
+ outcome: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"Interrupted", {}>, import("../../schema/index.js").CallableTaggedStruct<"NotFound", {}>]>;
36
+ }>;
37
+ export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedStartUpload", {}>, import("../../schema/index.js").CallableTaggedStruct<"ClickedRetryUpload", {
38
+ uploadId: S.Number;
39
+ }>, import("../../schema/index.js").CallableTaggedStruct<"ClickedCancelUpload", {
40
+ uploadId: S.Number;
41
+ }>, import("../../schema/index.js").CallableTaggedStruct<"SucceededUploadFile", {
42
+ uploadId: S.Number;
43
+ }>, import("../../schema/index.js").CallableTaggedStruct<"FailedUploadFile", {
44
+ uploadId: S.Number;
45
+ }>, import("../../schema/index.js").CallableTaggedStruct<"CompletedCancelUploadFile", {
46
+ uploadId: S.Number;
47
+ outcome: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"Interrupted", {}>, import("../../schema/index.js").CallableTaggedStruct<"NotFound", {}>]>;
48
+ }>]>;
49
+ export type Message = typeof Message.Type;
50
+ export declare const UploadFileArgs: S.Struct<{
51
+ readonly uploadId: S.Number;
52
+ }>;
53
+ export type UploadFileArgs = typeof UploadFileArgs.Type;
54
+ export declare const UploadFile: Interruptible.DefinitionWithArgs<"UploadFile", {
55
+ readonly uploadId: S.Number;
56
+ }, S.Struct.ReadonlySide<{
57
+ readonly uploadId: S.Number;
58
+ }, "Type">, Effect.Effect<{
59
+ readonly _tag: "SucceededUploadFile";
60
+ readonly uploadId: number;
61
+ }, never, never>>;
62
+ export declare const CancelUploadFile: ({ uploadId }: UploadFileArgs) => Readonly<{
63
+ name: "UploadFile.Interrupt";
64
+ args: S.Struct.ReadonlySide<{
65
+ readonly uploadId: S.Number;
66
+ }, "Type">;
67
+ interruptsKey: string;
68
+ effect: Effect.Effect<{
69
+ readonly _tag: "CompletedCancelUploadFile";
70
+ readonly uploadId: number;
71
+ readonly outcome: S.Struct.ReadonlySide<{
72
+ readonly _tag: S.tag<"Interrupted">;
73
+ }, "Type"> | S.Struct.ReadonlySide<{
74
+ readonly _tag: S.tag<"NotFound">;
75
+ }, "Type">;
76
+ }, never, never>;
77
+ }>;
78
+ export declare const initialModel: Model;
79
+ export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
80
+ export declare const view: (model: Model) => Document;
81
+ //# sourceMappingURL=uploads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uploads.d.ts","sourceRoot":"","sources":["../../../src/test/apps/uploads.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,aAAa,MAAM,sCAAsC,CAAA;AACrE,OAAO,EAAE,KAAK,QAAQ,EAAQ,MAAM,qBAAqB,CAAA;AAMzD,eAAO,MAAM,YAAY,mEAKvB,CAAA;AACF,MAAM,MAAM,YAAY,GAAG,OAAO,YAAY,CAAC,IAAI,CAAA;AAEnD,eAAO,MAAM,MAAM;;;EAGjB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AAEvC,eAAO,MAAM,KAAK;;;;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,kBAAkB,gFAA0B,CAAA;AACzD,eAAO,MAAM,kBAAkB;;EAE7B,CAAA;AACF,eAAO,MAAM,mBAAmB;;EAE9B,CAAA;AACF,eAAO,MAAM,mBAAmB;;EAE9B,CAAA;AACF,eAAO,MAAM,gBAAgB;;EAAgD,CAAA;AAC7E,eAAO,MAAM,yBAAyB;;;EAGpC,CAAA;AAEF,eAAO,MAAM,OAAO;;;;;;;;;;;IAOlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,cAAc;;EAAmC,CAAA;AAC9D,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,UAAU;;;;;;;iBAMwD,CAAA;AAE/E,eAAO,MAAM,gBAAgB,GAAI,cAAc,cAAc;;;;;;;;;;;;;;;EAG1D,CAAA;AAIH,eAAO,MAAM,YAAY,EAAE,KAAoC,CAAA;AAS/D,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAiDxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,KAAG,QA2BnC,CAAA"}
@@ -0,0 +1,102 @@
1
+ import { Array, Effect, Match as M, Number, Schema as S } from 'effect';
2
+ import * as Interruptible from '../../command/interruptible/index.js';
3
+ import { html } from '../../html/index.js';
4
+ import { m } from '../../message/index.js';
5
+ import { evo } from '../../struct/index.js';
6
+ // MODEL
7
+ export const UploadStatus = S.Literals([
8
+ 'Uploading',
9
+ 'Done',
10
+ 'Cancelled',
11
+ 'Failed',
12
+ ]);
13
+ export const Upload = S.Struct({
14
+ id: S.Number,
15
+ status: UploadStatus,
16
+ });
17
+ export const Model = S.Struct({
18
+ uploadId: S.Number,
19
+ uploads: S.Array(Upload),
20
+ });
21
+ // MESSAGE
22
+ export const ClickedStartUpload = m('ClickedStartUpload');
23
+ export const ClickedRetryUpload = m('ClickedRetryUpload', {
24
+ uploadId: S.Number,
25
+ });
26
+ export const ClickedCancelUpload = m('ClickedCancelUpload', {
27
+ uploadId: S.Number,
28
+ });
29
+ export const SucceededUploadFile = m('SucceededUploadFile', {
30
+ uploadId: S.Number,
31
+ });
32
+ export const FailedUploadFile = m('FailedUploadFile', { uploadId: S.Number });
33
+ export const CompletedCancelUploadFile = m('CompletedCancelUploadFile', {
34
+ uploadId: S.Number,
35
+ outcome: Interruptible.Outcome,
36
+ });
37
+ export const Message = S.Union([
38
+ ClickedStartUpload,
39
+ ClickedRetryUpload,
40
+ ClickedCancelUpload,
41
+ SucceededUploadFile,
42
+ FailedUploadFile,
43
+ CompletedCancelUploadFile,
44
+ ]);
45
+ // COMMAND
46
+ export const UploadFileArgs = S.Struct({ uploadId: S.Number });
47
+ export const UploadFile = Interruptible.define('UploadFile', UploadFileArgs.fields, ({ uploadId }) => String(uploadId), SucceededUploadFile, FailedUploadFile)(({ uploadId }) => Effect.as(Effect.never, SucceededUploadFile({ uploadId })));
48
+ export const CancelUploadFile = ({ uploadId }) => UploadFile.Interrupt({ uploadId }, outcome => CompletedCancelUploadFile({ uploadId, outcome }));
49
+ // INIT
50
+ export const initialModel = { uploadId: 0, uploads: [] };
51
+ // UPDATE
52
+ const setStatusById = (uploadId, status) => Array.map((upload) => upload.id === uploadId ? evo(upload, { status: () => status }) : upload);
53
+ export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
54
+ ClickedStartUpload: () => {
55
+ const startedUpload = {
56
+ id: model.uploadId,
57
+ status: 'Uploading',
58
+ };
59
+ return [
60
+ evo(model, {
61
+ uploadId: Number.increment,
62
+ uploads: Array.append(startedUpload),
63
+ }),
64
+ [UploadFile({ uploadId: model.uploadId })],
65
+ ];
66
+ },
67
+ ClickedRetryUpload: ({ uploadId }) => [
68
+ evo(model, { uploads: setStatusById(uploadId, 'Uploading') }),
69
+ [UploadFile({ uploadId })],
70
+ ],
71
+ ClickedCancelUpload: ({ uploadId }) => [
72
+ model,
73
+ [CancelUploadFile({ uploadId })],
74
+ ],
75
+ SucceededUploadFile: ({ uploadId }) => [
76
+ evo(model, { uploads: setStatusById(uploadId, 'Done') }),
77
+ [],
78
+ ],
79
+ FailedUploadFile: ({ uploadId }) => [
80
+ evo(model, { uploads: setStatusById(uploadId, 'Failed') }),
81
+ [],
82
+ ],
83
+ CompletedCancelUploadFile: ({ uploadId, outcome }) => M.value(outcome).pipe(M.withReturnType(), M.tagsExhaustive({
84
+ Interrupted: () => [
85
+ evo(model, { uploads: setStatusById(uploadId, 'Cancelled') }),
86
+ [],
87
+ ],
88
+ NotFound: () => [model, []],
89
+ })),
90
+ }));
91
+ // VIEW
92
+ export const view = (model) => {
93
+ const h = html();
94
+ const body = h.div([], [
95
+ h.button([h.OnClick(ClickedStartUpload())], ['Start upload']),
96
+ h.ul([], Array.map(model.uploads, upload => h.keyed('li')(String(upload.id), [], [
97
+ h.span([], [`upload ${upload.id}: ${upload.status}`]),
98
+ h.button([h.OnClick(ClickedCancelUpload({ uploadId: upload.id }))], [`Cancel upload ${upload.id}`]),
99
+ ]))),
100
+ ]);
101
+ return { title: 'Uploads', body };
102
+ };
@@ -10,10 +10,18 @@ import { type MountDefinition } from '../mount/index.js';
10
10
  * `Command.mapMessage`/`mapMessages`). It rides along on pending Commands so
11
11
  * `resolve` can apply the parent's wrapping to a substitute result Message
12
12
  * without the test restating it. Absent on synthetic matchers built for
13
- * formatting; treated as empty then. */
13
+ * formatting; treated as empty then.
14
+ *
15
+ * `key` is present on Commands built with `Command.Interruptible.define`:
16
+ * such Commands may stay pending across Messages (they model long-running
17
+ * work). `interruptsKey` is present on Interrupt Commands: resolving one
18
+ * drops every pending Command holding that key, mirroring the runtime
19
+ * guarantee that an interrupted Command's result Message never dispatches. */
14
20
  export type AnyCommand = Readonly<{
15
21
  name: string;
16
22
  args?: Record<string, unknown>;
23
+ key?: string;
24
+ interruptsKey?: string;
17
25
  messageMappers?: ReadonlyArray<(message: unknown) => unknown>;
18
26
  }>;
19
27
  /** Pattern for matching a Command in test assertions. A Definition matches
@@ -135,7 +143,13 @@ export declare const assertHasCommands: (commands: ReadonlyArray<AnyCommand>, ma
135
143
  export declare const assertExactCommands: (commands: ReadonlyArray<AnyCommand>, matchers: ReadonlyArray<CommandMatcher>) => void;
136
144
  /** Throws if there are any pending Commands. */
137
145
  export declare const assertZeroCommands: (commands: ReadonlyArray<AnyCommand>) => void;
138
- /** Throws when trying to send a message with unresolved Commands. */
146
+ /** Throws when trying to send a message with unresolved Commands. Keyed
147
+ * Commands (built with `Command.Interruptible.define`) and Interrupt
148
+ * Commands are exempt: they model in-flight async work that legitimately
149
+ * stays pending while later Messages arrive, so a story can dispatch the
150
+ * Message that interrupts a keyed Command, or keep typing while a
151
+ * cancellation is in flight. They must still be resolved by the end of the
152
+ * test. */
139
153
  export declare const assertNoUnresolvedCommands: (commands: ReadonlyArray<AnyCommand>, context: string) => void;
140
154
  /** Throws when Commands remain at the end of a test. */
141
155
  export declare const assertAllCommandsResolved: (commands: ReadonlyArray<AnyCommand>) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/test/internal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../src/test/internal.ts"],"names":[],"mappings":"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"}
@@ -31,6 +31,14 @@ export const mountMatches = (matcher, mount) => matcher.name === mount.name &&
31
31
  export const formatMountMatcher = (matcher) => isMountDefinitionMatcher(matcher)
32
32
  ? matcher.name
33
33
  : `${matcher.name}${formatArgs(matcher.args)}`;
34
+ /** Drops every pending Command holding `interruptsKey` when a resolved
35
+ * Command declares one (an Interrupt Command). Resolving the Interrupt
36
+ * before the target declares that the interrupt won the race, so the
37
+ * target's result Message never arrives; resolving the target first models
38
+ * completion before the interrupt ran. */
39
+ const dropInterruptedCommands = (pending, resolvedCommand) => Predicate.isUndefined(resolvedCommand.interruptsKey)
40
+ ? pending
41
+ : Array.filter(pending, pendingCommand => pendingCommand.key !== resolvedCommand.interruptsKey);
34
42
  /** Folds a recorded message-mapping chain over `resultMessage`, reproducing the
35
43
  * wrapping a resolved Command or mounted child's result travels through in
36
44
  * production: the parent's `Command.mapMessages` for a Command, or the
@@ -45,7 +53,7 @@ const foldMessageMappers = (messageMappers, resultMessage) => Array.reduce(messa
45
53
  export const resolveByMatcher = (internal, matcher, resultMessage) => pipe(internal.commands, Array.findFirstIndex(command => commandMatches(matcher, command)), Option.flatMap(commandIndex => pipe(internal.commands, Array.get(commandIndex), Option.map(matchedCommand => {
46
54
  /* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
47
55
  const resolverMessage = foldMessageMappers(matchedCommand.messageMappers, resultMessage);
48
- const remainingCommands = Array.remove(internal.commands, commandIndex);
56
+ const remainingCommands = dropInterruptedCommands(Array.remove(internal.commands, commandIndex), matchedCommand);
49
57
  const [nextModel, newCommands, ...rest] = internal.updateFn(internal.model, resolverMessage);
50
58
  const outMessage = Array.matchLeft(rest, {
51
59
  onEmpty: () => internal.outMessage,
@@ -155,10 +163,18 @@ export const assertZeroCommands = (commands) => {
155
163
  throw new Error(`Expected no Commands but found:\n\n${formatCommandList(commands)}`);
156
164
  }
157
165
  };
158
- /** Throws when trying to send a message with unresolved Commands. */
166
+ /** Throws when trying to send a message with unresolved Commands. Keyed
167
+ * Commands (built with `Command.Interruptible.define`) and Interrupt
168
+ * Commands are exempt: they model in-flight async work that legitimately
169
+ * stays pending while later Messages arrive, so a story can dispatch the
170
+ * Message that interrupts a keyed Command, or keep typing while a
171
+ * cancellation is in flight. They must still be resolved by the end of the
172
+ * test. */
159
173
  export const assertNoUnresolvedCommands = (commands, context) => {
160
- if (Array.isReadonlyArrayNonEmpty(commands)) {
161
- throw new Error(`I found unresolved Commands ${context}:\n\n${formatCommandList(commands)}\n\n` +
174
+ const unresolvable = Array.filter(commands, command => Predicate.isUndefined(command.key) &&
175
+ Predicate.isUndefined(command.interruptsKey));
176
+ if (Array.isReadonlyArrayNonEmpty(unresolvable)) {
177
+ throw new Error(`I found unresolved Commands ${context}:\n\n${formatCommandList(unresolvable)}\n\n` +
162
178
  'Resolve all Commands before sending the next Message.\n' +
163
179
  'Use resolve(Definition | instance, ResultMessage) for each one,\n' +
164
180
  'or resolveAll(...resolvers) to resolve them all at once.');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "foldkit",
3
- "version": "0.128.1",
3
+ "version": "0.129.0",
4
4
  "description": "A TypeScript frontend framework, built on Effect and architected like Elm",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",