foldkit 0.38.0 → 0.40.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/README.md +4 -2
- package/dist/command/index.d.ts +15 -9
- package/dist/command/index.d.ts.map +1 -1
- package/dist/command/index.js +16 -4
- package/dist/command/public.d.ts +2 -2
- package/dist/command/public.d.ts.map +1 -1
- package/dist/command/public.js +1 -1
- package/dist/devtools/overlay.d.ts +34 -1
- package/dist/devtools/overlay.d.ts.map +1 -1
- package/dist/devtools/overlay.js +24 -16
- package/dist/fieldValidation/index.d.ts +45 -37
- package/dist/fieldValidation/index.d.ts.map +1 -1
- package/dist/fieldValidation/public.d.ts +1 -1
- package/dist/fieldValidation/public.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/runtime/managedResource.d.ts +1 -1
- package/dist/runtime/managedResource.js +1 -1
- package/dist/runtime/runtime.d.ts +10 -10
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +2 -2
- package/dist/runtime/subscription.d.ts +3 -3
- package/dist/runtime/subscription.d.ts.map +1 -1
- package/dist/runtime/subscription.js +2 -2
- package/dist/task/dom.d.ts +6 -6
- package/dist/task/dom.js +6 -6
- package/dist/task/inert.d.ts +2 -2
- package/dist/task/inert.js +2 -2
- package/dist/task/scrollLock.d.ts +2 -2
- package/dist/task/scrollLock.js +2 -2
- package/dist/task/time.d.ts +1 -1
- package/dist/task/time.js +1 -1
- package/dist/test/index.d.ts +40 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +138 -0
- package/dist/test/public.d.ts +3 -0
- package/dist/test/public.d.ts.map +1 -0
- package/dist/test/public.js +1 -0
- package/dist/ui/checkbox/index.d.ts +1 -1
- package/dist/ui/checkbox/index.d.ts.map +1 -1
- package/dist/ui/combobox/multi.d.ts +8 -8
- package/dist/ui/combobox/public.d.ts +1 -1
- package/dist/ui/combobox/shared.d.ts +58 -26
- package/dist/ui/combobox/shared.d.ts.map +1 -1
- package/dist/ui/combobox/shared.js +34 -24
- package/dist/ui/combobox/single.d.ts +8 -8
- package/dist/ui/dialog/index.d.ts +20 -8
- package/dist/ui/dialog/index.d.ts.map +1 -1
- package/dist/ui/dialog/index.js +15 -11
- package/dist/ui/dialog/public.d.ts +1 -1
- package/dist/ui/dialog/public.js +1 -1
- package/dist/ui/disclosure/index.d.ts +8 -5
- package/dist/ui/disclosure/index.d.ts.map +1 -1
- package/dist/ui/disclosure/index.js +6 -5
- package/dist/ui/disclosure/public.d.ts +1 -1
- package/dist/ui/listbox/multi.d.ts +8 -8
- package/dist/ui/listbox/public.d.ts +1 -1
- package/dist/ui/listbox/shared.d.ts +61 -22
- package/dist/ui/listbox/shared.d.ts.map +1 -1
- package/dist/ui/listbox/shared.js +41 -29
- package/dist/ui/listbox/single.d.ts +8 -8
- package/dist/ui/menu/index.d.ts +56 -17
- package/dist/ui/menu/index.d.ts.map +1 -1
- package/dist/ui/menu/index.js +46 -34
- package/dist/ui/popover/index.d.ts +42 -13
- package/dist/ui/popover/index.d.ts.map +1 -1
- package/dist/ui/popover/index.js +34 -25
- package/dist/ui/radioGroup/index.d.ts +8 -5
- package/dist/ui/radioGroup/index.d.ts.map +1 -1
- package/dist/ui/radioGroup/index.js +5 -4
- package/dist/ui/switch/index.d.ts +1 -1
- package/dist/ui/switch/index.d.ts.map +1 -1
- package/dist/ui/tabs/index.d.ts +6 -3
- package/dist/ui/tabs/index.d.ts.map +1 -1
- package/dist/ui/tabs/index.js +6 -5
- package/package.json +5 -1
package/README.md
CHANGED
|
@@ -70,9 +70,11 @@ type Message = typeof Message.Type
|
|
|
70
70
|
const update = (
|
|
71
71
|
model: Model,
|
|
72
72
|
message: Message,
|
|
73
|
-
): [Model, ReadonlyArray<Command.Command<Message>>] =>
|
|
73
|
+
): readonly [Model, ReadonlyArray<Command.Command<Message>>] =>
|
|
74
74
|
M.value(message).pipe(
|
|
75
|
-
M.withReturnType<
|
|
75
|
+
M.withReturnType<
|
|
76
|
+
readonly [Model, ReadonlyArray<Command.Command<Message>>]
|
|
77
|
+
>(),
|
|
76
78
|
M.tagsExhaustive({
|
|
77
79
|
ClickedDecrement: () => [{ count: model.count - 1 }, []],
|
|
78
80
|
ClickedIncrement: () => [{ count: model.count + 1 }, []],
|
package/dist/command/index.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { Effect, Schema } from 'effect';
|
|
2
|
+
/** Type-level brand for CommandDefinition values. */
|
|
3
|
+
export declare const CommandDefinitionTypeId: unique symbol;
|
|
4
|
+
/** Type-level brand for CommandDefinition values. */
|
|
5
|
+
export type CommandDefinitionTypeId = typeof CommandDefinitionTypeId;
|
|
2
6
|
/** A named Effect that produces a message. */
|
|
3
7
|
export type Command<T, E = never, R = never> = [T] extends [Schema.Schema.Any] ? Readonly<{
|
|
4
8
|
name: string;
|
|
@@ -7,16 +11,18 @@ export type Command<T, E = never, R = never> = [T] extends [Schema.Schema.Any] ?
|
|
|
7
11
|
name: string;
|
|
8
12
|
effect: Effect.Effect<T, E, R>;
|
|
9
13
|
}>;
|
|
10
|
-
/**
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
name: string;
|
|
18
|
-
effect: Effect.Effect<A, E, R>;
|
|
14
|
+
/** A Command identity created with `Command.define`. Call with an Effect to create a Command. */
|
|
15
|
+
export interface CommandDefinition<Name extends string, ResultMessage = any> {
|
|
16
|
+
readonly [CommandDefinitionTypeId]: CommandDefinitionTypeId;
|
|
17
|
+
readonly name: Name;
|
|
18
|
+
<CommandEffect extends Effect.Effect<ResultMessage, any, any>>(effect: CommandEffect): Readonly<{
|
|
19
|
+
name: Name;
|
|
20
|
+
effect: CommandEffect;
|
|
19
21
|
}>;
|
|
22
|
+
}
|
|
23
|
+
/** Defines a named Command identity with the Messages it returns. */
|
|
24
|
+
export declare const define: {
|
|
25
|
+
<const Name extends string, Results extends ReadonlyArray<Schema.Schema.Any>>(name: Name, ...results: Results): CommandDefinition<Name, Schema.Schema.Type<Results[number]>>;
|
|
20
26
|
};
|
|
21
27
|
/** Transforms the Effect inside a Command while preserving its name. */
|
|
22
28
|
export declare const mapEffect: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEvC,8CAA8C;AAC9C,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAC1E,QAAQ,CAAC;IACP,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CACnD,CAAC,GACF,QAAQ,CAAC;IACP,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;CAC/B,CAAC,CAAA;AAEN,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/command/index.ts"],"names":[],"mappings":"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"}
|
package/dist/command/index.js
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
/** Type-level brand for CommandDefinition values. */
|
|
2
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
3
|
+
export const CommandDefinitionTypeId = Symbol.for('foldkit/CommandDefinition');
|
|
4
|
+
/** Defines a named Command identity with the Messages it returns. */
|
|
5
|
+
export const define = (name, ..._results) => {
|
|
6
|
+
const create = (effect) => ({
|
|
7
|
+
name,
|
|
8
|
+
effect,
|
|
9
|
+
});
|
|
10
|
+
Object.defineProperty(create, 'name', { value: name, configurable: true });
|
|
11
|
+
Object.defineProperty(create, CommandDefinitionTypeId, {
|
|
12
|
+
value: CommandDefinitionTypeId,
|
|
13
|
+
});
|
|
14
|
+
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
15
|
+
return create;
|
|
16
|
+
};
|
|
5
17
|
/** Transforms the Effect inside a Command while preserving its name. */
|
|
6
18
|
export const mapEffect = ((...args) => args.length === 1
|
|
7
19
|
? (command) => ({
|
package/dist/command/public.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export type { Command } from './index';
|
|
2
|
-
export {
|
|
1
|
+
export type { Command, CommandDefinition } from './index';
|
|
2
|
+
export { CommandDefinitionTypeId, define, mapEffect } from './index';
|
|
3
3
|
//# sourceMappingURL=public.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/command/public.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/command/public.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,uBAAuB,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/command/public.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { CommandDefinitionTypeId, define, mapEffect } from './index';
|
|
@@ -1,5 +1,38 @@
|
|
|
1
|
-
import { Effect, Option } from 'effect';
|
|
1
|
+
import { Effect, HashSet, Option } from 'effect';
|
|
2
|
+
import * as Command from '../command';
|
|
2
3
|
import type { DevtoolsMode, DevtoolsPosition } from '../runtime/runtime';
|
|
3
4
|
import { type DevtoolsStore } from './store';
|
|
5
|
+
export declare const JumpTo: Command.CommandDefinition<"JumpTo", {
|
|
6
|
+
readonly _tag: "CompletedJump";
|
|
7
|
+
}>;
|
|
8
|
+
export declare const InspectState: Command.CommandDefinition<"InspectState", {
|
|
9
|
+
readonly _tag: "ReceivedInspectedState";
|
|
10
|
+
readonly model: unknown;
|
|
11
|
+
readonly changedPaths: HashSet.HashSet<string>;
|
|
12
|
+
readonly affectedPaths: HashSet.HashSet<string>;
|
|
13
|
+
readonly maybeMessage: Option.Option<unknown>;
|
|
14
|
+
}>;
|
|
15
|
+
export declare const InspectLatest: Command.CommandDefinition<"InspectLatest", {
|
|
16
|
+
readonly _tag: "ReceivedInspectedState";
|
|
17
|
+
readonly model: unknown;
|
|
18
|
+
readonly changedPaths: HashSet.HashSet<string>;
|
|
19
|
+
readonly affectedPaths: HashSet.HashSet<string>;
|
|
20
|
+
readonly maybeMessage: Option.Option<unknown>;
|
|
21
|
+
}>;
|
|
22
|
+
export declare const Resume: Command.CommandDefinition<"Resume", {
|
|
23
|
+
readonly _tag: "CompletedResume";
|
|
24
|
+
}>;
|
|
25
|
+
export declare const Clear: Command.CommandDefinition<"Clear", {
|
|
26
|
+
readonly _tag: "CompletedClear";
|
|
27
|
+
}>;
|
|
28
|
+
export declare const LockScroll: Command.CommandDefinition<"LockScroll", {
|
|
29
|
+
readonly _tag: "LockedScroll";
|
|
30
|
+
}>;
|
|
31
|
+
export declare const UnlockScroll: Command.CommandDefinition<"UnlockScroll", {
|
|
32
|
+
readonly _tag: "UnlockedScroll";
|
|
33
|
+
}>;
|
|
34
|
+
export declare const ScrollToTop: Command.CommandDefinition<"ScrollToTop", {
|
|
35
|
+
readonly _tag: "ScrolledToTop";
|
|
36
|
+
}>;
|
|
4
37
|
export declare const createOverlay: (store: DevtoolsStore, position: DevtoolsPosition, mode: DevtoolsMode, maybeBanner: Option.Option<string>) => Effect.Effect<void, never, never>;
|
|
5
38
|
//# sourceMappingURL=overlay.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/devtools/overlay.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,
|
|
1
|
+
{"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../src/devtools/overlay.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,MAAM,EACN,OAAO,EAGP,MAAM,EAQP,MAAM,QAAQ,CAAA;AAEf,OAAO,KAAK,OAAO,MAAM,YAAY,CAAA;AAKrC,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAMxE,OAAO,EAAE,KAAK,aAAa,EAA+B,MAAM,SAAS,CAAA;AAwQzE,eAAO,MAAM,MAAM;;EAA0C,CAAA;AAC7D,eAAO,MAAM,YAAY;;;;;;EAGxB,CAAA;AACD,eAAO,MAAM,aAAa;;;;;;EAGzB,CAAA;AACD,eAAO,MAAM,MAAM;;EAA4C,CAAA;AAC/D,eAAO,MAAM,KAAK;;EAA0C,CAAA;AAC5D,eAAO,MAAM,UAAU;;EAA6C,CAAA;AACpE,eAAO,MAAM,YAAY;;EAAiD,CAAA;AAC1E,eAAO,MAAM,WAAW;;EAA+C,CAAA;AAyiCvE,eAAO,MAAM,aAAa,GACxB,OAAO,aAAa,EACpB,UAAU,gBAAgB,EAC1B,MAAM,YAAY,EAClB,aAAa,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,sCA4ChC,CAAA"}
|
package/dist/devtools/overlay.js
CHANGED
|
@@ -174,44 +174,52 @@ const computeDiff = (previous, current) => {
|
|
|
174
174
|
};
|
|
175
175
|
};
|
|
176
176
|
// UPDATE
|
|
177
|
+
export const JumpTo = Command.define('JumpTo', CompletedJump);
|
|
178
|
+
export const InspectState = Command.define('InspectState', ReceivedInspectedState);
|
|
179
|
+
export const InspectLatest = Command.define('InspectLatest', ReceivedInspectedState);
|
|
180
|
+
export const Resume = Command.define('Resume', CompletedResume);
|
|
181
|
+
export const Clear = Command.define('Clear', CompletedClear);
|
|
182
|
+
export const LockScroll = Command.define('LockScroll', LockedScroll);
|
|
183
|
+
export const UnlockScroll = Command.define('UnlockScroll', UnlockedScroll);
|
|
184
|
+
export const ScrollToTop = Command.define('ScrollToTop', ScrolledToTop);
|
|
177
185
|
const makeUpdate = (store, shadow, mode) => {
|
|
178
|
-
const jumpTo = (index) => Effect.gen(function* () {
|
|
186
|
+
const jumpTo = (index) => JumpTo(Effect.gen(function* () {
|
|
179
187
|
yield* store.jumpTo(index);
|
|
180
188
|
return CompletedJump();
|
|
181
|
-
})
|
|
182
|
-
const inspectState = (index) => Effect.gen(function* () {
|
|
189
|
+
}));
|
|
190
|
+
const inspectState = (index) => InspectState(Effect.gen(function* () {
|
|
183
191
|
const model = yield* store.getModelAtIndex(index);
|
|
184
192
|
const maybeMessage = yield* store.getMessageAtIndex(index);
|
|
185
193
|
const diff = index === INIT_INDEX
|
|
186
194
|
? emptyDiff
|
|
187
195
|
: yield* pipe(store.getModelAtIndex(index - 1), Effect.map(previousModel => computeDiff(previousModel, model)), Effect.catchAll(() => Effect.succeed(emptyDiff)));
|
|
188
196
|
return ReceivedInspectedState({ model, maybeMessage, ...diff });
|
|
189
|
-
})
|
|
190
|
-
const inspectLatest = Effect.gen(function* () {
|
|
197
|
+
}));
|
|
198
|
+
const inspectLatest = InspectLatest(Effect.gen(function* () {
|
|
191
199
|
const state = yield* SubscriptionRef.get(store.stateRef);
|
|
192
200
|
const latestIndex = Array_.isEmptyReadonlyArray(state.entries)
|
|
193
201
|
? INIT_INDEX
|
|
194
202
|
: state.startIndex + state.entries.length - 1;
|
|
195
203
|
return yield* inspectState(latestIndex).effect;
|
|
196
|
-
})
|
|
197
|
-
const resume = Effect.gen(function* () {
|
|
204
|
+
}));
|
|
205
|
+
const resume = Resume(Effect.gen(function* () {
|
|
198
206
|
yield* store.resume;
|
|
199
207
|
return CompletedResume();
|
|
200
|
-
})
|
|
201
|
-
const clear = Effect.gen(function* () {
|
|
208
|
+
}));
|
|
209
|
+
const clear = Clear(Effect.gen(function* () {
|
|
202
210
|
yield* store.clear;
|
|
203
211
|
return CompletedClear();
|
|
204
|
-
})
|
|
212
|
+
}));
|
|
205
213
|
const toggleScrollLock = (shouldLock) => shouldLock
|
|
206
|
-
? lockScroll.pipe(Effect.as(LockedScroll())
|
|
207
|
-
: unlockScroll.pipe(Effect.as(UnlockedScroll())
|
|
208
|
-
const scrollToTop = Effect.sync(() => {
|
|
214
|
+
? LockScroll(lockScroll.pipe(Effect.as(LockedScroll())))
|
|
215
|
+
: UnlockScroll(unlockScroll.pipe(Effect.as(UnlockedScroll())));
|
|
216
|
+
const scrollToTop = ScrollToTop(Effect.sync(() => {
|
|
209
217
|
const messageList = shadow.querySelector(MESSAGE_LIST_SELECTOR);
|
|
210
218
|
if (messageList instanceof HTMLElement) {
|
|
211
219
|
messageList.scrollTop = 0;
|
|
212
220
|
}
|
|
213
221
|
return ScrolledToTop();
|
|
214
|
-
})
|
|
222
|
+
}));
|
|
215
223
|
return (model, message) => M.value(message).pipe(M.withReturnType(), M.tags({
|
|
216
224
|
ClickedToggle: () => {
|
|
217
225
|
const nextIsOpen = !model.isOpen;
|
|
@@ -321,11 +329,11 @@ const SubscriptionDeps = S.Struct({
|
|
|
321
329
|
const makeOverlaySubscriptions = (store) => makeSubscriptions(SubscriptionDeps)({
|
|
322
330
|
storeUpdates: {
|
|
323
331
|
modelToDependencies: () => null,
|
|
324
|
-
|
|
332
|
+
dependenciesToStream: () => Stream.concat(Stream.fromEffect(pipe(SubscriptionRef.get(store.stateRef), Effect.map(state => ReceivedStoreUpdate(toDisplayState(state))))), pipe(store.stateRef.changes, Stream.map(state => ReceivedStoreUpdate(toDisplayState(state))))),
|
|
325
333
|
},
|
|
326
334
|
mobileBreakpoint: {
|
|
327
335
|
modelToDependencies: () => null,
|
|
328
|
-
|
|
336
|
+
dependenciesToStream: () => Stream.async(emit => {
|
|
329
337
|
const mediaQuery = window.matchMedia(MOBILE_BREAKPOINT_QUERY);
|
|
330
338
|
const handler = (event) => {
|
|
331
339
|
emit.single(CrossedMobileBreakpoint({ isMobile: event.matches }));
|
|
@@ -1,46 +1,54 @@
|
|
|
1
1
|
import { Predicate, Schema as S } from 'effect';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
2
|
+
import { CallableTaggedStruct } from '../schema';
|
|
3
|
+
/** A tagged union of field states for use with form validation. */
|
|
4
|
+
export type Field<A, I> = Readonly<{
|
|
5
|
+
NotValidated: CallableTaggedStruct<'NotValidated', {
|
|
6
|
+
value: S.Schema<A, I>;
|
|
6
7
|
}>;
|
|
7
|
-
Validating:
|
|
8
|
-
value: S.Schema<A, I
|
|
8
|
+
Validating: CallableTaggedStruct<'Validating', {
|
|
9
|
+
value: S.Schema<A, I>;
|
|
9
10
|
}>;
|
|
10
|
-
Valid:
|
|
11
|
-
value: S.Schema<A, I
|
|
11
|
+
Valid: CallableTaggedStruct<'Valid', {
|
|
12
|
+
value: S.Schema<A, I>;
|
|
12
13
|
}>;
|
|
13
|
-
Invalid:
|
|
14
|
-
value: S.Schema<A, I
|
|
14
|
+
Invalid: CallableTaggedStruct<'Invalid', {
|
|
15
|
+
value: S.Schema<A, I>;
|
|
15
16
|
errors: S.NonEmptyArray<typeof S.String>;
|
|
16
17
|
}>;
|
|
17
|
-
Union: S.Union<[
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
}
|
|
18
|
+
Union: S.Union<[
|
|
19
|
+
CallableTaggedStruct<'NotValidated', {
|
|
20
|
+
value: S.Schema<A, I>;
|
|
21
|
+
}>,
|
|
22
|
+
CallableTaggedStruct<'Validating', {
|
|
23
|
+
value: S.Schema<A, I>;
|
|
24
|
+
}>,
|
|
25
|
+
CallableTaggedStruct<'Valid', {
|
|
26
|
+
value: S.Schema<A, I>;
|
|
27
|
+
}>,
|
|
28
|
+
CallableTaggedStruct<'Invalid', {
|
|
29
|
+
value: S.Schema<A, I>;
|
|
30
|
+
errors: S.NonEmptyArray<typeof S.String>;
|
|
31
|
+
}>
|
|
32
|
+
]>;
|
|
33
|
+
validate: (fieldValidations: ReadonlyArray<Validation<A>>) => (fieldValue: A) => Readonly<{
|
|
34
|
+
_tag: 'Valid';
|
|
35
|
+
value: A;
|
|
36
|
+
}> | Readonly<{
|
|
37
|
+
_tag: 'Invalid';
|
|
38
|
+
value: A;
|
|
39
|
+
errors: readonly [string, ...Array<string>];
|
|
40
|
+
}>;
|
|
41
|
+
validateAll: (fieldValidations: ReadonlyArray<Validation<A>>) => (fieldValue: A) => Readonly<{
|
|
42
|
+
_tag: 'Valid';
|
|
43
|
+
value: A;
|
|
44
|
+
}> | Readonly<{
|
|
45
|
+
_tag: 'Invalid';
|
|
46
|
+
value: A;
|
|
47
|
+
errors: readonly [string, ...Array<string>];
|
|
48
|
+
}>;
|
|
49
|
+
}>;
|
|
50
|
+
/** Creates a tagged union of field states (`NotValidated`, `Validating`, `Valid`, `Invalid`) for a given value schema. */
|
|
51
|
+
export declare const makeField: <A, I>(value: S.Schema<A, I>) => Field<A, I>;
|
|
44
52
|
/** An error message for a validation rule — either a static string or a function that receives the invalid value. */
|
|
45
53
|
export type ValidationMessage<T> = string | ((value: T) => string);
|
|
46
54
|
/** A tuple of a predicate and error message used for field validation. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fieldValidation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,MAAM,IAAI,CAAC,EAIZ,MAAM,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/fieldValidation/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,SAAS,EACT,MAAM,IAAI,CAAC,EAIZ,MAAM,QAAQ,CAAA;AAEf,OAAO,EAAE,oBAAoB,EAAM,MAAM,WAAW,CAAA;AAEpD,mEAAmE;AACnE,MAAM,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC;IACjC,YAAY,EAAE,oBAAoB,CAAC,cAAc,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAAE,CAAC,CAAA;IAC7E,UAAU,EAAE,oBAAoB,CAAC,YAAY,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAAE,CAAC,CAAA;IACzE,KAAK,EAAE,oBAAoB,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;KAAE,CAAC,CAAA;IAC/D,OAAO,EAAE,oBAAoB,CAC3B,SAAS,EACT;QAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;KAAE,CACpE,CAAA;IACD,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ;QACE,oBAAoB,CAAC,cAAc,EAAE;YAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SAAE,CAAC;QAC/D,oBAAoB,CAAC,YAAY,EAAE;YAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SAAE,CAAC;QAC7D,oBAAoB,CAAC,OAAO,EAAE;YAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;SAAE,CAAC;QACxD,oBAAoB,CAClB,SAAS,EACT;YAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAAC,MAAM,EAAE,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;SAAE,CACpE;KACF,CACF,CAAA;IACD,QAAQ,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAC5D,UAAU,EAAE,CAAC,KAEX,QAAQ,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,GACrC,QAAQ,CAAC;QACP,IAAI,EAAE,SAAS,CAAA;QACf,KAAK,EAAE,CAAC,CAAA;QACR,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;KAC5C,CAAC,CAAA;IACN,WAAW,EAAE,CAAC,gBAAgB,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAC/D,UAAU,EAAE,CAAC,KAEX,QAAQ,CAAC;QAAE,IAAI,EAAE,OAAO,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC,GACrC,QAAQ,CAAC;QACP,IAAI,EAAE,SAAS,CAAA;QACf,KAAK,EAAE,CAAC,CAAA;QACR,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;KAC5C,CAAC,CAAA;CACP,CAAC,CAAA;AAEF,0HAA0H;AAC1H,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CA6CjE,CAAA;AAED,qHAAqH;AACrH,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,CAAA;AAElE,0EAA0E;AAC1E,MAAM,MAAM,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAA;AAE1E,eAAO,MAAM,cAAc,GAAI,CAAC,EAC9B,SAAS,iBAAiB,CAAC,CAAC,CAAC,EAC7B,OAAO,CAAC,KACP,MAAkE,CAAA;AAIrE,mEAAmE;AACnE,eAAO,MAAM,QAAQ,GACnB,UAAS,iBAAiB,CAAC,MAAM,CAAc,KAC9C,UAAU,CAAC,MAAM,CAAiC,CAAA;AAErD,6EAA6E;AAC7E,eAAO,MAAM,SAAS,GACpB,KAAK,MAAM,EACX,UAAU,iBAAiB,CAAC,MAAM,CAAC,KAClC,UAAU,CAAC,MAAM,CAGnB,CAAA;AAED,uFAAuF;AACvF,eAAO,MAAM,SAAS,GACpB,KAAK,MAAM,EACX,UAAU,iBAAiB,CAAC,MAAM,CAAC,KAClC,UAAU,CAAC,MAAM,CAGnB,CAAA;AAED,mFAAmF;AACnF,eAAO,MAAM,OAAO,GAClB,OAAO,MAAM,EACb,UAAS,iBAAiB,CAAC,MAAM,CAAoB,KACpD,UAAU,CAAC,MAAM,CAAwD,CAAA;AAI5E,8EAA8E;AAC9E,eAAO,MAAM,KAAK,GAChB,UAAS,iBAAiB,CAAC,MAAM,CAA2B,KAC3D,UAAU,CAAC,MAAM,CAAkC,CAAA;AAItD,4EAA4E;AAC5E,eAAO,MAAM,GAAG,GACd,UAAS,iBAAiB,CAAC,MAAM,CAAiB,KACjD,UAAU,CAAC,MAAM,CAAgC,CAAA;AAEpD,qFAAqF;AACrF,eAAO,MAAM,UAAU,GACrB,QAAQ,MAAM,EACd,UAAU,iBAAiB,CAAC,MAAM,CAAC,KAClC,UAAU,CAAC,MAAM,CAGnB,CAAA;AAED,mFAAmF;AACnF,eAAO,MAAM,QAAQ,GACnB,QAAQ,MAAM,EACd,UAAU,iBAAiB,CAAC,MAAM,CAAC,KAClC,UAAU,CAAC,MAAM,CAGnB,CAAA;AAED,qFAAqF;AACrF,eAAO,MAAM,QAAQ,GACnB,WAAW,MAAM,EACjB,UAAU,iBAAiB,CAAC,MAAM,CAAC,KAClC,UAAU,CAAC,MAAM,CAGnB,CAAA;AAED,wFAAwF;AACxF,eAAO,MAAM,MAAM,GACjB,UAAU,MAAM,EAChB,UAAU,iBAAiB,CAAC,MAAM,CAAC,KAClC,UAAU,CAAC,MAAM,CAGnB,CAAA;AAID,kGAAkG;AAClG,eAAO,MAAM,GAAG,GACd,KAAK,MAAM,EACX,UAAU,iBAAiB,CAAC,MAAM,CAAC,KAClC,UAAU,CAAC,MAAM,CAGnB,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,GAAG,GACd,KAAK,MAAM,EACX,UAAU,iBAAiB,CAAC,MAAM,CAAC,KAClC,UAAU,CAAC,MAAM,CAGnB,CAAA;AAED,+FAA+F;AAC/F,eAAO,MAAM,OAAO,GAClB,KAAK,MAAM,EACX,KAAK,MAAM,EACX,UAAU,iBAAiB,CAAC,MAAM,CAAC,KAClC,UAAU,CAAC,MAAM,CAMnB,CAAA;AAED,2EAA2E;AAC3E,eAAO,MAAM,QAAQ,GACnB,UAAS,iBAAiB,CAAC,MAAM,CAAsB,KACtD,UAAU,CAAC,MAAM,CAAsC,CAAA;AAE1D,yEAAyE;AACzE,eAAO,MAAM,WAAW,GACtB,UAAS,iBAAiB,CAAC,MAAM,CAA0B,KAC1D,UAAU,CAAC,MAAM,CAA+C,CAAA;AAEnE,kFAAkF;AAClF,eAAO,MAAM,OAAO,GAClB,UAAS,iBAAiB,CAAC,MAAM,CAA4B,KAC5D,UAAU,CAAC,MAAM,CAAgD,CAAA;AAIpE,kGAAkG;AAClG,eAAO,MAAM,KAAK,GAChB,QAAQ,aAAa,CAAC,MAAM,CAAC,EAC7B,UAAU,iBAAiB,CAAC,MAAM,CAAC,KAClC,UAAU,CAAC,MAAM,CAMnB,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { makeField, required, minLength, maxLength, pattern, email, url, startsWith, endsWith, includes, equals, min, max, between, positive, nonNegative, integer, oneOf, } from './index';
|
|
2
|
-
export type { Validation, ValidationMessage } from './index';
|
|
2
|
+
export type { Field, Validation, ValidationMessage } from './index';
|
|
3
3
|
//# sourceMappingURL=public.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/fieldValidation/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,OAAO,EACP,KAAK,EACL,GAAG,EACH,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,GAAG,EACH,GAAG,EACH,OAAO,EACP,QAAQ,EACR,WAAW,EACX,OAAO,EACP,KAAK,GACN,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA"}
|
|
1
|
+
{"version":3,"file":"public.d.ts","sourceRoot":"","sources":["../../src/fieldValidation/public.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,QAAQ,EACR,SAAS,EACT,SAAS,EACT,OAAO,EACP,KAAK,EACL,GAAG,EACH,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,MAAM,EACN,GAAG,EACH,GAAG,EACH,OAAO,EACP,QAAQ,EACR,WAAW,EACX,OAAO,EACP,KAAK,GACN,MAAM,SAAS,CAAA;AAEhB,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -10,6 +10,7 @@ export * as Schema from './schema/public';
|
|
|
10
10
|
export * as Struct from './struct/public';
|
|
11
11
|
export * as Subscription from './subscription/public';
|
|
12
12
|
export * as Task from './task/public';
|
|
13
|
+
export * as Test from './test/public';
|
|
13
14
|
export * as Ui from './ui';
|
|
14
15
|
export * as Url from './url/public';
|
|
15
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,IAAI,MAAM,eAAe,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,eAAe,CAAA;AACrC,OAAO,KAAK,EAAE,MAAM,MAAM,CAAA;AAC1B,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,eAAe,MAAM,0BAA0B,CAAA;AAC3D,OAAO,KAAK,IAAI,MAAM,eAAe,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,UAAU,MAAM,qBAAqB,CAAA;AACjD,OAAO,KAAK,KAAK,MAAM,gBAAgB,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,kBAAkB,CAAA;AAC3C,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,MAAM,MAAM,iBAAiB,CAAA;AACzC,OAAO,KAAK,YAAY,MAAM,uBAAuB,CAAA;AACrD,OAAO,KAAK,IAAI,MAAM,eAAe,CAAA;AACrC,OAAO,KAAK,IAAI,MAAM,eAAe,CAAA;AACrC,OAAO,KAAK,EAAE,MAAM,MAAM,CAAA;AAC1B,OAAO,KAAK,GAAG,MAAM,cAAc,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -10,5 +10,6 @@ export * as Schema from './schema/public';
|
|
|
10
10
|
export * as Struct from './struct/public';
|
|
11
11
|
export * as Subscription from './subscription/public';
|
|
12
12
|
export * as Task from './task/public';
|
|
13
|
+
export * as Test from './test/public';
|
|
13
14
|
export * as Ui from './ui';
|
|
14
15
|
export * as Url from './url/public';
|
|
@@ -89,7 +89,7 @@ export type ManagedResourceServicesOf<MR> = MR extends ManagedResources<any, any
|
|
|
89
89
|
* release: stream =>
|
|
90
90
|
* Effect.sync(() => stream.getTracks().forEach(track => track.stop())),
|
|
91
91
|
* onAcquired: () => AcquiredCamera(),
|
|
92
|
-
* onAcquireError: error =>
|
|
92
|
+
* onAcquireError: error => FailedAcquireCamera({ error: String(error) }),
|
|
93
93
|
* onReleased: () => ReleasedCamera(),
|
|
94
94
|
* },
|
|
95
95
|
* })
|
|
@@ -70,7 +70,7 @@ import { Record } from 'effect';
|
|
|
70
70
|
* release: stream =>
|
|
71
71
|
* Effect.sync(() => stream.getTracks().forEach(track => track.stop())),
|
|
72
72
|
* onAcquired: () => AcquiredCamera(),
|
|
73
|
-
* onAcquireError: error =>
|
|
73
|
+
* onAcquireError: error => FailedAcquireCamera({ error: String(error) }),
|
|
74
74
|
* onReleased: () => ReleasedCamera(),
|
|
75
75
|
* },
|
|
76
76
|
* })
|
|
@@ -78,7 +78,7 @@ export type CrashConfig<Model, Message> = Readonly<{
|
|
|
78
78
|
}>;
|
|
79
79
|
type BaseElementConfig<Model, Message, StreamDepsMap extends Schema.Struct<Schema.Struct.Fields>, Resources = never, ManagedResourceServices = never> = Readonly<{
|
|
80
80
|
Model: Schema.Schema<Model, any, never>;
|
|
81
|
-
update: (model: Model, message: Message) => [
|
|
81
|
+
update: (model: Model, message: Message) => readonly [
|
|
82
82
|
Model,
|
|
83
83
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
84
84
|
];
|
|
@@ -95,21 +95,21 @@ type BaseElementConfig<Model, Message, StreamDepsMap extends Schema.Struct<Schem
|
|
|
95
95
|
export type ElementConfigWithFlags<Model, Message, StreamDepsMap extends Schema.Struct<Schema.Struct.Fields>, Flags, Resources = never, ManagedResourceServices = never> = BaseElementConfig<Model, Message, StreamDepsMap, Resources, ManagedResourceServices> & Readonly<{
|
|
96
96
|
Flags: Schema.Schema<Flags, any, never>;
|
|
97
97
|
flags: Effect.Effect<Flags>;
|
|
98
|
-
init: (flags: Flags) => [
|
|
98
|
+
init: (flags: Flags) => readonly [
|
|
99
99
|
Model,
|
|
100
100
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
101
101
|
];
|
|
102
102
|
}>;
|
|
103
103
|
/** Configuration for `makeElement` without flags. */
|
|
104
104
|
export type ElementConfigWithoutFlags<Model, Message, StreamDepsMap extends Schema.Struct<Schema.Struct.Fields>, Resources = never, ManagedResourceServices = never> = BaseElementConfig<Model, Message, StreamDepsMap, Resources, ManagedResourceServices> & Readonly<{
|
|
105
|
-
init: () => [
|
|
105
|
+
init: () => readonly [
|
|
106
106
|
Model,
|
|
107
107
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
108
108
|
];
|
|
109
109
|
}>;
|
|
110
110
|
type BaseApplicationConfig<Model, Message, StreamDepsMap extends Schema.Struct<Schema.Struct.Fields>, Resources = never, ManagedResourceServices = never> = Readonly<{
|
|
111
111
|
Model: Schema.Schema<Model, any, never>;
|
|
112
|
-
update: (model: Model, message: Message) => [
|
|
112
|
+
update: (model: Model, message: Message) => readonly [
|
|
113
113
|
Model,
|
|
114
114
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
115
115
|
];
|
|
@@ -127,31 +127,31 @@ type BaseApplicationConfig<Model, Message, StreamDepsMap extends Schema.Struct<S
|
|
|
127
127
|
export type ApplicationConfigWithFlags<Model, Message, StreamDepsMap extends Schema.Struct<Schema.Struct.Fields>, Flags, Resources = never, ManagedResourceServices = never> = BaseApplicationConfig<Model, Message, StreamDepsMap, Resources, ManagedResourceServices> & Readonly<{
|
|
128
128
|
Flags: Schema.Schema<Flags, any, never>;
|
|
129
129
|
flags: Effect.Effect<Flags>;
|
|
130
|
-
init: (flags: Flags, url: Url) => [
|
|
130
|
+
init: (flags: Flags, url: Url) => readonly [
|
|
131
131
|
Model,
|
|
132
132
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
133
133
|
];
|
|
134
134
|
}>;
|
|
135
135
|
/** Configuration for `makeApplication` without flags. */
|
|
136
136
|
export type ApplicationConfigWithoutFlags<Model, Message, StreamDepsMap extends Schema.Struct<Schema.Struct.Fields>, Resources = never, ManagedResourceServices = never> = BaseApplicationConfig<Model, Message, StreamDepsMap, Resources, ManagedResourceServices> & Readonly<{
|
|
137
|
-
init: (url: Url) => [
|
|
137
|
+
init: (url: Url) => readonly [
|
|
138
138
|
Model,
|
|
139
139
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
140
140
|
];
|
|
141
141
|
}>;
|
|
142
142
|
/** The `init` function type for elements, with an optional `flags` parameter when `Flags` is not `void`. */
|
|
143
|
-
export type ElementInit<Model, Message, Flags = void, Resources = never, ManagedResourceServices = never> = Flags extends void ? () => [
|
|
143
|
+
export type ElementInit<Model, Message, Flags = void, Resources = never, ManagedResourceServices = never> = Flags extends void ? () => readonly [
|
|
144
144
|
Model,
|
|
145
145
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
146
|
-
] : (flags: Flags) => [
|
|
146
|
+
] : (flags: Flags) => readonly [
|
|
147
147
|
Model,
|
|
148
148
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
149
149
|
];
|
|
150
150
|
/** The `init` function type for applications, receives the current URL and optional flags. */
|
|
151
|
-
export type ApplicationInit<Model, Message, Flags = void, Resources = never, ManagedResourceServices = never> = Flags extends void ? (url: Url) => [
|
|
151
|
+
export type ApplicationInit<Model, Message, Flags = void, Resources = never, ManagedResourceServices = never> = Flags extends void ? (url: Url) => readonly [
|
|
152
152
|
Model,
|
|
153
153
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
154
|
-
] : (flags: Flags, url: Url) => [
|
|
154
|
+
] : (flags: Flags, url: Url) => readonly [
|
|
155
155
|
Model,
|
|
156
156
|
ReadonlyArray<Command<Message, never, Resources | ManagedResourceServices>>
|
|
157
157
|
];
|
|
@@ -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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"}
|
package/dist/runtime/runtime.js
CHANGED
|
@@ -195,9 +195,9 @@ const makeRuntime = ({ Model, flags: resolveFlags, init, update, view, subscript
|
|
|
195
195
|
yield* render(initModel, Option.none());
|
|
196
196
|
addBfcacheRestoreListener();
|
|
197
197
|
if (subscriptions) {
|
|
198
|
-
yield* pipe(subscriptions, Record.toEntries, Effect.forEach(([_key, { schema, modelToDependencies,
|
|
198
|
+
yield* pipe(subscriptions, Record.toEntries, Effect.forEach(([_key, { schema, modelToDependencies, dependenciesToStream },]) => {
|
|
199
199
|
const modelStream = Stream.concat(Stream.make(initModel), modelSubscriptionRef.changes);
|
|
200
|
-
return Effect.forkDaemon(modelStream.pipe(Stream.map(modelToDependencies), Stream.changesWith(Schema.equivalence(schema)), Stream.flatMap(
|
|
200
|
+
return Effect.forkDaemon(modelStream.pipe(Stream.map(modelToDependencies), Stream.changesWith(Schema.equivalence(schema)), Stream.flatMap(dependenciesToStream, { switch: true }), Stream.runForEach(enqueueMessage), provideAllResources));
|
|
201
201
|
}, {
|
|
202
202
|
concurrency: 'unbounded',
|
|
203
203
|
discard: true,
|
|
@@ -3,7 +3,7 @@ type ResolveMessage<T> = [T] extends [Schema.Schema.Any] ? Schema.Schema.Type<T>
|
|
|
3
3
|
/** A reactive binding between Model state and a long-running stream of Messages. */
|
|
4
4
|
export type Subscription<Model, Message, StreamDeps, Resources = never> = {
|
|
5
5
|
readonly modelToDependencies: (model: Model) => StreamDeps;
|
|
6
|
-
readonly
|
|
6
|
+
readonly dependenciesToStream: (deps: StreamDeps) => Stream.Stream<ResolveMessage<Message>, never, Resources>;
|
|
7
7
|
};
|
|
8
8
|
type SubscriptionConfig<Model, Message, StreamDeps, Resources = never> = {
|
|
9
9
|
readonly schema: Schema.Schema<StreamDeps>;
|
|
@@ -15,11 +15,11 @@ export type Subscriptions<Model, Message, SubscriptionDeps extends Schema.Struct
|
|
|
15
15
|
/** Creates type-safe subscription configurations from a dependency schema. */
|
|
16
16
|
export declare const makeSubscriptions: <SubscriptionDeps extends Schema.Struct<any>>(SubscriptionDeps: SubscriptionDeps) => <Model, Message, Resources = never>(configs: { [K in keyof Schema.Schema.Type<SubscriptionDeps>]: {
|
|
17
17
|
modelToDependencies: (model: Model) => Schema.Schema.Type<SubscriptionDeps>[K];
|
|
18
|
-
|
|
18
|
+
dependenciesToStream: (deps: Schema.Schema.Type<SubscriptionDeps>[K]) => Stream.Stream<ResolveMessage<Message>, never, Resources>;
|
|
19
19
|
}; }) => Record<string, {
|
|
20
20
|
schema: any;
|
|
21
21
|
modelToDependencies: (model: Model) => Schema.Schema.Type<SubscriptionDeps>[K];
|
|
22
|
-
|
|
22
|
+
dependenciesToStream: (deps: Schema.Schema.Type<SubscriptionDeps>[K]) => Stream.Stream<ResolveMessage<Message>, never, Resources>;
|
|
23
23
|
}>;
|
|
24
24
|
export {};
|
|
25
25
|
//# sourceMappingURL=subscription.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/runtime/subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEzD,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GACpD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GACrB,CAAC,CAAA;AAEL,oFAAoF;AACpF,MAAM,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,GAAG,KAAK,IAAI;IACxE,QAAQ,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,UAAU,CAAA;IAC1D,QAAQ,CAAC,
|
|
1
|
+
{"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/runtime/subscription.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,MAAM,EAAE,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAA;AAEzD,KAAK,cAAc,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GACpD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,GACrB,CAAC,CAAA;AAEL,oFAAoF;AACpF,MAAM,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,GAAG,KAAK,IAAI;IACxE,QAAQ,CAAC,mBAAmB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,UAAU,CAAA;IAC1D,QAAQ,CAAC,oBAAoB,EAAE,CAC7B,IAAI,EAAE,UAAU,KACb,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;CAC9D,CAAA;AAED,KAAK,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,GAAG,KAAK,IAAI;IACvE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAA;CAC3C,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAA;AAEvD,qFAAqF;AACrF,MAAM,MAAM,aAAa,CACvB,KAAK,EACL,OAAO,EACP,gBAAgB,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAC3C,SAAS,GAAG,KAAK,IACf;IACF,QAAQ,EAAE,CAAC,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,kBAAkB,CAC5E,KAAK,EACL,OAAO,EACP,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EACvC,SAAS,CACV;CACF,CAAA;AAED,8EAA8E;AAC9E,eAAO,MAAM,iBAAiB,GAC3B,gBAAgB,SAAS,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAC1C,kBAAkB,gBAAgB,MAEnC,KAAK,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,EAAE,SAAS,GAC1C,CAAC,IAAI,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG;IACjD,mBAAmB,EAAE,CACnB,KAAK,EAAE,KAAK,KACT,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5C,oBAAoB,EAAE,CACpB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAC1C,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC,CAAA;CAC9D,GACF;;iCANY,KAAK,KACT,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;iCAEpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,KAC1C,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,SAAS,CAAC;EAU9D,CAAA"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Record } from 'effect';
|
|
2
2
|
/** Creates type-safe subscription configurations from a dependency schema. */
|
|
3
|
-
export const makeSubscriptions = (SubscriptionDeps) => (configs) => Record.map(configs, ({ modelToDependencies,
|
|
3
|
+
export const makeSubscriptions = (SubscriptionDeps) => (configs) => Record.map(configs, ({ modelToDependencies, dependenciesToStream }, key) => ({
|
|
4
4
|
schema: SubscriptionDeps.fields[key],
|
|
5
5
|
modelToDependencies,
|
|
6
|
-
|
|
6
|
+
dependenciesToStream,
|
|
7
7
|
}));
|