foldkit 0.134.0 → 0.135.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/customElement/index.d.ts +3 -0
- package/dist/customElement/index.d.ts.map +1 -1
- package/dist/customElement/index.js +3 -1
- package/dist/managedResource/managedResource.d.ts +21 -10
- package/dist/managedResource/managedResource.d.ts.map +1 -1
- package/dist/managedResource/managedResource.js +6 -1
- package/dist/test/apps/colorPicker.d.ts +28 -0
- package/dist/test/apps/colorPicker.d.ts.map +1 -0
- package/dist/test/apps/colorPicker.js +43 -0
- package/dist/test/apps/counter.d.ts +3 -1
- package/dist/test/apps/counter.d.ts.map +1 -1
- package/dist/test/apps/counter.js +11 -4
- package/dist/test/apps/feedSocket.d.ts +74 -0
- package/dist/test/apps/feedSocket.d.ts.map +1 -0
- package/dist/test/apps/feedSocket.js +69 -0
- package/dist/test/apps/scorePanel.d.ts +32 -0
- package/dist/test/apps/scorePanel.d.ts.map +1 -0
- package/dist/test/apps/scorePanel.js +19 -0
- package/dist/test/scene.d.ts +78 -6
- package/dist/test/scene.d.ts.map +1 -1
- package/dist/test/scene.js +204 -24
- package/dist/test/story.d.ts +4 -5
- package/dist/test/story.d.ts.map +1 -1
- package/dist/test/story.js +1 -2
- package/package.json +1 -1
|
@@ -39,6 +39,9 @@ export interface CustomElementSpec<Tag extends string, Properties extends Record
|
|
|
39
39
|
* the value `Spec.withMessage<Message>()` returns, expressed as a type
|
|
40
40
|
* consumers can name without reaching for `ReturnType<typeof ...>`. */
|
|
41
41
|
export type Builder<Spec, Message> = Spec extends CustomElementSpec<string, infer Properties, infer Events> ? ElementBuilder<Message, Properties, Events> : never;
|
|
42
|
+
/** @internal Shared with the Scene test helpers so their error messages name
|
|
43
|
+
* the same `On*` factory this module generates. */
|
|
44
|
+
export declare const kebabToPascal: (input: string) => string;
|
|
42
45
|
/**
|
|
43
46
|
* Define a typed binding for a custom element. The returned spec describes
|
|
44
47
|
* the element's properties and events with Schema, and exposes a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/customElement/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/customElement/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { Array, String, pipe } from 'effect';
|
|
2
2
|
import { OnCustomEvent, Prop, customElement as customElementVNode, } from '../html/index.js';
|
|
3
|
-
|
|
3
|
+
/** @internal Shared with the Scene test helpers so their error messages name
|
|
4
|
+
* the same `On*` factory this module generates. */
|
|
5
|
+
export const kebabToPascal = (input) => pipe(input, String.split('-'), Array.map(String.capitalize), Array.join(''));
|
|
4
6
|
const IDENTIFIER_PATTERN = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
|
|
5
7
|
const isValidPropertyName = (name) => IDENTIFIER_PATTERN.test(name);
|
|
6
8
|
const isValidEventName = (name) => {
|
|
@@ -49,8 +49,8 @@ export type ManagedResourceConfig<Model, Message> = {
|
|
|
49
49
|
export type ManagedResources<Model, Message, Services = never> = Record<string, ManagedResourceConfig<Model, Message>> & {
|
|
50
50
|
readonly __managedResourceServices?: Services;
|
|
51
51
|
};
|
|
52
|
-
type EntryBrand = {
|
|
53
|
-
readonly __managedResourceEntry:
|
|
52
|
+
type EntryBrand<Model, Message> = {
|
|
53
|
+
readonly __managedResourceEntry: (model: Model) => Message;
|
|
54
54
|
};
|
|
55
55
|
/**
|
|
56
56
|
* The requirements value the runtime hands to `acquire`. When the requirements
|
|
@@ -71,17 +71,22 @@ type AcquireParams<Requirements> = Requirements extends Option.Option<infer Para
|
|
|
71
71
|
* The `Service` parameter carries the resource tag's identity so `make`,
|
|
72
72
|
* `lift`, and `aggregate` can union the services a record requires. Read the
|
|
73
73
|
* union off a finished record with `ManagedResource.ServicesOf`.
|
|
74
|
+
*
|
|
75
|
+
* The `OnAcquired` parameter preserves the arity of the `onAcquired` handler:
|
|
76
|
+
* an entry whose handler ignores the acquired value keeps that fact in its
|
|
77
|
+
* type, so callers that replay the handler (the Scene test steps) only demand
|
|
78
|
+
* the value when the handler consumes it.
|
|
74
79
|
*/
|
|
75
|
-
export type Entry<Model, Message, Requirements, Value, Service = unknown> = {
|
|
80
|
+
export type Entry<Model, Message, Requirements, Value, Service = unknown, OnAcquired extends (...args: any) => Message = (value: Value) => Message> = {
|
|
76
81
|
readonly schema: Schema.Schema<Requirements>;
|
|
77
82
|
readonly resource: ManagedResource<Value, Service>;
|
|
78
83
|
readonly modelToMaybeRequirements: (model: Model) => Requirements;
|
|
79
84
|
readonly acquire: (params: AcquireParams<Requirements>) => Effect.Effect<Value, unknown, Scope.Scope>;
|
|
80
85
|
readonly release: (value: Value) => Effect.Effect<void>;
|
|
81
|
-
readonly onAcquired:
|
|
86
|
+
readonly onAcquired: OnAcquired;
|
|
82
87
|
readonly onReleased: () => Message;
|
|
83
88
|
readonly onAcquireError: (error: unknown) => Message;
|
|
84
|
-
} & EntryBrand
|
|
89
|
+
} & EntryBrand<Model, Message>;
|
|
85
90
|
/** Type-level utility to extract the service union from a Managed Resources record. */
|
|
86
91
|
export type ServicesOf<Resources> = {
|
|
87
92
|
[Key in keyof Resources]: Resources[Key] extends {
|
|
@@ -95,16 +100,22 @@ export type ServicesOf<Resources> = {
|
|
|
95
100
|
* before contextually typing `modelToMaybeRequirements` and `acquire`, so
|
|
96
101
|
* destructuring patterns are inferred correctly even when the schema uses
|
|
97
102
|
* transforms like `S.Option`.
|
|
103
|
+
*
|
|
104
|
+
* The `onAcquired` field is typed as `OnAcquired` intersected with the
|
|
105
|
+
* concrete `(value: Value) => Message` signature: the concrete member keeps
|
|
106
|
+
* contextual typing intact for destructured handler parameters, while the
|
|
107
|
+
* naked generic captures the handler's own type so the Entry records its
|
|
108
|
+
* arity.
|
|
98
109
|
*/
|
|
99
|
-
export type EntryBuilder<Model, Message> = <RequirementsSchema extends Schema.Schema<any>, Value, Service>(schema: RequirementsSchema, config: {
|
|
110
|
+
export type EntryBuilder<Model, Message> = <RequirementsSchema extends Schema.Schema<any>, Value, Service, OnAcquired extends (value: Value) => Message>(schema: RequirementsSchema, config: {
|
|
100
111
|
readonly resource: ManagedResource<Value, Service>;
|
|
101
112
|
readonly modelToMaybeRequirements: (model: Model) => Schema.Schema.Type<RequirementsSchema>;
|
|
102
113
|
readonly acquire: (params: AcquireParams<Schema.Schema.Type<RequirementsSchema>>) => Effect.Effect<Value, unknown, Scope.Scope>;
|
|
103
114
|
readonly release: (value: Value) => Effect.Effect<void>;
|
|
104
|
-
readonly onAcquired: (value: Value) => Message;
|
|
115
|
+
readonly onAcquired: OnAcquired & ((value: Value) => Message);
|
|
105
116
|
readonly onReleased: () => Message;
|
|
106
117
|
readonly onAcquireError: (error: unknown) => Message;
|
|
107
|
-
}) => Entry<Model, Message, Schema.Schema.Type<RequirementsSchema>, Value, Service>;
|
|
118
|
+
}) => Entry<Model, Message, Schema.Schema.Type<RequirementsSchema>, Value, Service, OnAcquired>;
|
|
108
119
|
/**
|
|
109
120
|
* Declares a Managed Resources record. The Model and Message generics are
|
|
110
121
|
* provided up front; the entries record follows, built from calls to the
|
|
@@ -192,7 +203,7 @@ export type EntryBuilder<Model, Message> = <RequirementsSchema extends Schema.Sc
|
|
|
192
203
|
*
|
|
193
204
|
* @see {@link ManagedResource.tag} for creating the resource identity.
|
|
194
205
|
*/
|
|
195
|
-
export declare const make: <Model, Message>() => <Entries extends Record<string,
|
|
206
|
+
export declare const make: <Model, Message>() => <Entries extends Record<string, EntryBrand<Model, Message>>>(build: (entry: EntryBuilder<Model, Message>) => Entries) => Entries;
|
|
196
207
|
type ChildModelOf<Resources> = Resources[keyof Resources] extends Entry<infer ChildModel, any, any, any, any> ? ChildModel : never;
|
|
197
208
|
type ChildMessageOf<Resources> = Resources[keyof Resources] extends Entry<any, infer ChildMessage, any, any, any> ? ChildMessage : never;
|
|
198
209
|
/**
|
|
@@ -210,7 +221,7 @@ type ChildMessageOf<Resources> = Resources[keyof Resources] extends Entry<any, i
|
|
|
210
221
|
export declare const lift: <Resources extends Record<string, Entry<any, any, Option.Option<any>, any, any>>>(resources: Resources) => <ParentModel, ParentMessage>(config: {
|
|
211
222
|
readonly toChildModel: (parentModel: ParentModel) => Option.Option<ChildModelOf<Resources>>;
|
|
212
223
|
readonly toParentMessage: (message: ChildMessageOf<Resources>) => ParentMessage;
|
|
213
|
-
}) => { readonly [Key in keyof Resources]: Resources[Key] extends Entry<any, any, infer Requirements, infer Value, infer Service> ? Entry<ParentModel, ParentMessage, Requirements, Value, Service> : never; };
|
|
224
|
+
}) => { readonly [Key in keyof Resources]: Resources[Key] extends Entry<any, any, infer Requirements, infer Value, infer Service, infer OnAcquired extends (...args: ReadonlyArray<any>) => any> ? Entry<ParentModel, ParentMessage, Requirements, Value, Service, (...args: Parameters<OnAcquired>) => ParentMessage> : never; };
|
|
214
225
|
type MergeRecords<Records extends ReadonlyArray<unknown>> = Records extends readonly [infer Head, ...infer Rest] ? Head & (Rest extends ReadonlyArray<unknown> ? MergeRecords<Rest> : {}) : {};
|
|
215
226
|
/**
|
|
216
227
|
* Combines multiple Managed Resources records into one. Throws on duplicate
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managedResource.d.ts","sourceRoot":"","sources":["../../src/managedResource/managedResource.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EAEP,MAAM,EACN,MAAM,EAGN,KAAK,MAAM,EACX,KAAK,KAAK,EACX,MAAM,QAAQ,CAAA;;;;AAEf,oGAAoG;AACpG,qBAAa,oBAAqB,SAAQ,0BAExC;IACA,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;CAC1B,CAAC;CAAG;AAEL,QAAA,MAAM,qBAAqB,EAAE,OAAO,MAEnC,CAAA;AAED,KAAK,qBAAqB,GAAG,OAAO,qBAAqB,CAAA;AAEzD,OAAO,CAAC,MAAM,oBAAoB,EAAE,OAAO,MAAM,CAAA;AAEjD,kFAAkF;AAClF,MAAM,WAAW,sBAAsB,CAAC,GAAG,SAAS,MAAM;IACxD,QAAQ,CAAC,CAAC,oBAAoB,CAAC,EAAE,GAAG,CAAA;CACrC;AAED;;;;;;GAMG;AACH,MAAM,WAAW,eAAe,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,GAAG,OAAO;IAClE,QAAQ,CAAC,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IACvD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,oBAAoB,EAAE,OAAO,CAAC,CAAA;IACjE,gBAAgB;IAChB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;CACzC;AAED,sFAAsF;AACtF,eAAO,MAAM,GAAG,GACb,KAAK,QACL,KAAK,CAAC,GAAG,SAAS,MAAM,EACvB,KAAK,GAAG,KACP,eAAe,CAAC,KAAK,EAAE,sBAAsB,CAAC,GAAG,CAAC,CAsBpD,CAAA;AAEH,2EAA2E;AAC3E,MAAM,MAAM,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,eAAe,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE1E,sFAAsF;AACtF,MAAM,MAAM,SAAS,CAAC,CAAC,IAAI,CAAC,SAAS,eAAe,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;AAE9E,iFAAiF;AACjF,MAAM,MAAM,qBAAqB,CAAC,KAAK,EAAE,OAAO,IAAI;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;IACnC,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,CAAA;IACvC,QAAQ,CAAC,wBAAwB,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,GAAG,CAAA;IACxD,QAAQ,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;IAC3E,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACrD,QAAQ,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAA;IAC5C,QAAQ,CAAC,UAAU,EAAE,MAAM,OAAO,CAAA;IAClC,QAAQ,CAAC,cAAc,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAA;CACrD,CAAA;AAED,iFAAiF;AACjF,MAAM,MAAM,gBAAgB,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,GAAG,KAAK,IAAI,MAAM,CACrE,MAAM,EACN,qBAAqB,CAAC,KAAK,EAAE,OAAO,CAAC,CACtC,GAAG;IACF,QAAQ,CAAC,yBAAyB,CAAC,EAAE,QAAQ,CAAA;CAC9C,CAAA;AAED,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"managedResource.d.ts","sourceRoot":"","sources":["../../src/managedResource/managedResource.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,7 +105,12 @@ export const tag = () => (key) => {
|
|
|
105
105
|
*
|
|
106
106
|
* @see {@link ManagedResource.tag} for creating the resource identity.
|
|
107
107
|
*/
|
|
108
|
-
export const make = () =>
|
|
108
|
+
export const make = () =>
|
|
109
|
+
// NOTE: the Entries constraint is the brand alone, not Entry. Naming Entry
|
|
110
|
+
// here hands the checker a concrete onAcquired signature through the return
|
|
111
|
+
// position, which poisons contextual typing of destructured onAcquired
|
|
112
|
+
// parameters at every entry call site (their bindings become any).
|
|
113
|
+
(build) => {
|
|
109
114
|
/* eslint-disable-next-line @typescript-eslint/consistent-type-assertions */
|
|
110
115
|
const entry = ((schema, config) => ({
|
|
111
116
|
schema,
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Schema as S } from 'effect';
|
|
2
|
+
import * as CustomElement from '../../customElement/index.js';
|
|
3
|
+
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
4
|
+
export declare const hexColorPicker: CustomElement.CustomElementSpec<"hex-color-picker", {
|
|
5
|
+
color: S.String;
|
|
6
|
+
}, {
|
|
7
|
+
'color-changed': S.Struct<{
|
|
8
|
+
readonly value: S.String;
|
|
9
|
+
}>;
|
|
10
|
+
}>;
|
|
11
|
+
export declare const Model: S.Struct<{
|
|
12
|
+
readonly color: S.String;
|
|
13
|
+
}>;
|
|
14
|
+
export type Model = typeof Model.Type;
|
|
15
|
+
export declare const ChangedColor: import("../../schema/index.js").CallableTaggedStruct<"ChangedColor", {
|
|
16
|
+
value: S.String;
|
|
17
|
+
}>;
|
|
18
|
+
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ChangedColor", {
|
|
19
|
+
value: S.String;
|
|
20
|
+
}>]>;
|
|
21
|
+
export type Message = typeof Message.Type;
|
|
22
|
+
export declare const initialModel: {
|
|
23
|
+
readonly color: string;
|
|
24
|
+
};
|
|
25
|
+
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<never>];
|
|
26
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
27
|
+
export declare const viewWithoutHandler: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
28
|
+
//# sourceMappingURL=colorPicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"colorPicker.d.ts","sourceRoot":"","sources":["../../../src/test/apps/colorPicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEhD,OAAO,KAAK,aAAa,MAAM,8BAA8B,CAAA;AAC7D,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAM5D,eAAO,MAAM,cAAc;;;;;;EAQzB,CAAA;AAIF,eAAO,MAAM,KAAK;;EAAgC,CAAA;AAClD,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,YAAY;;EAAyC,CAAA;AAElE,eAAO,MAAM,OAAO;;IAA0B,CAAA;AAC9C,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;CAAmC,CAAA;AAI5D,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAMrC,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAkB5D,CAAA;AAED,eAAO,MAAM,kBAAkB,GAC7B,OAAO,KAAK,EACZ,GAAG,WAAW,CAAC,OAAO,CAAC,KACtB,IAUF,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { Match as M, Schema as S } from 'effect';
|
|
2
|
+
import * as CustomElement from '../../customElement/index.js';
|
|
3
|
+
import { m } from '../../message/index.js';
|
|
4
|
+
import { evo } from '../../struct/index.js';
|
|
5
|
+
// CUSTOM ELEMENT
|
|
6
|
+
export const hexColorPicker = CustomElement.define({
|
|
7
|
+
tag: 'hex-color-picker',
|
|
8
|
+
properties: {
|
|
9
|
+
color: S.String,
|
|
10
|
+
},
|
|
11
|
+
events: {
|
|
12
|
+
'color-changed': S.Struct({ value: S.String }),
|
|
13
|
+
},
|
|
14
|
+
});
|
|
15
|
+
// MODEL
|
|
16
|
+
export const Model = S.Struct({ color: S.String });
|
|
17
|
+
// MESSAGE
|
|
18
|
+
export const ChangedColor = m('ChangedColor', { value: S.String });
|
|
19
|
+
export const Message = S.Union([ChangedColor]);
|
|
20
|
+
// INIT
|
|
21
|
+
export const initialModel = Model.make({ color: '#000000' });
|
|
22
|
+
// UPDATE
|
|
23
|
+
export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
|
|
24
|
+
ChangedColor: ({ value }) => [evo(model, { color: () => value }), []],
|
|
25
|
+
}));
|
|
26
|
+
// VIEW
|
|
27
|
+
export const view = (model, h) => {
|
|
28
|
+
const picker = hexColorPicker.withMessage(h);
|
|
29
|
+
return h.div([], [
|
|
30
|
+
picker([
|
|
31
|
+
picker.Color(model.color),
|
|
32
|
+
picker.OnColorChanged(detail => ChangedColor({ value: detail.value })),
|
|
33
|
+
], []),
|
|
34
|
+
h.span([h.Role('status')], [model.color]),
|
|
35
|
+
]);
|
|
36
|
+
};
|
|
37
|
+
export const viewWithoutHandler = (model, h) => {
|
|
38
|
+
const picker = hexColorPicker.withMessage(h);
|
|
39
|
+
return h.div([], [
|
|
40
|
+
picker([picker.Color(model.color)], []),
|
|
41
|
+
h.span([h.Role('status')], [model.color]),
|
|
42
|
+
]);
|
|
43
|
+
};
|
|
@@ -12,6 +12,8 @@ export declare const ClickedFetch: import("../../schema/index.js").CallableTagge
|
|
|
12
12
|
export declare const ClickedFetchById: import("../../schema/index.js").CallableTaggedStruct<"ClickedFetchById", {
|
|
13
13
|
id: S.Number;
|
|
14
14
|
}>;
|
|
15
|
+
export declare const Ticked: import("../../schema/index.js").CallableTaggedStruct<"Ticked", {}>;
|
|
16
|
+
export declare const PolledCount: import("../../schema/index.js").CallableTaggedStruct<"PolledCount", {}>;
|
|
15
17
|
export declare const StartedThreeFetches: import("../../schema/index.js").CallableTaggedStruct<"StartedThreeFetches", {}>;
|
|
16
18
|
export declare const StartedTwoFetchesById: import("../../schema/index.js").CallableTaggedStruct<"StartedTwoFetchesById", {}>;
|
|
17
19
|
export declare const StartedMixedFetches: import("../../schema/index.js").CallableTaggedStruct<"StartedMixedFetches", {}>;
|
|
@@ -23,7 +25,7 @@ export declare const FailedFetchCount: import("../../schema/index.js").CallableT
|
|
|
23
25
|
}>;
|
|
24
26
|
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedIncrement", {}>, import("../../schema/index.js").CallableTaggedStruct<"ClickedDecrement", {}>, import("../../schema/index.js").CallableTaggedStruct<"ClickedFetch", {}>, import("../../schema/index.js").CallableTaggedStruct<"ClickedFetchById", {
|
|
25
27
|
id: S.Number;
|
|
26
|
-
}>, import("../../schema/index.js").CallableTaggedStruct<"StartedThreeFetches", {}>, import("../../schema/index.js").CallableTaggedStruct<"StartedTwoFetchesById", {}>, import("../../schema/index.js").CallableTaggedStruct<"StartedMixedFetches", {}>, import("../../schema/index.js").CallableTaggedStruct<"SucceededFetchCount", {
|
|
28
|
+
}>, import("../../schema/index.js").CallableTaggedStruct<"Ticked", {}>, import("../../schema/index.js").CallableTaggedStruct<"PolledCount", {}>, import("../../schema/index.js").CallableTaggedStruct<"StartedThreeFetches", {}>, import("../../schema/index.js").CallableTaggedStruct<"StartedTwoFetchesById", {}>, import("../../schema/index.js").CallableTaggedStruct<"StartedMixedFetches", {}>, import("../../schema/index.js").CallableTaggedStruct<"SucceededFetchCount", {
|
|
27
29
|
count: S.Number;
|
|
28
30
|
}>, import("../../schema/index.js").CallableTaggedStruct<"FailedFetchCount", {
|
|
29
31
|
error: S.String;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../../src/test/apps/counter.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
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;;;iBAIgC,CAAA;AAEvD,eAAO,MAAM,cAAc;;;;;iBAKyC,CAAA;AAIpE,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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { Effect, Match as M, Schema as S } from 'effect';
|
|
1
|
+
import { Array, Effect, Match as M, Number, Schema as S } from 'effect';
|
|
2
2
|
import * as Command from '../../command/index.js';
|
|
3
3
|
import { m } from '../../message/index.js';
|
|
4
|
+
import { evo } from '../../struct/index.js';
|
|
4
5
|
// MODEL
|
|
5
6
|
export const Model = S.Struct({
|
|
6
7
|
count: S.Number,
|
|
@@ -11,6 +12,8 @@ export const ClickedIncrement = m('ClickedIncrement');
|
|
|
11
12
|
export const ClickedDecrement = m('ClickedDecrement');
|
|
12
13
|
export const ClickedFetch = m('ClickedFetch');
|
|
13
14
|
export const ClickedFetchById = m('ClickedFetchById', { id: S.Number });
|
|
15
|
+
export const Ticked = m('Ticked');
|
|
16
|
+
export const PolledCount = m('PolledCount');
|
|
14
17
|
export const StartedThreeFetches = m('StartedThreeFetches');
|
|
15
18
|
export const StartedTwoFetchesById = m('StartedTwoFetchesById');
|
|
16
19
|
export const StartedMixedFetches = m('StartedMixedFetches');
|
|
@@ -21,6 +24,8 @@ export const Message = S.Union([
|
|
|
21
24
|
ClickedDecrement,
|
|
22
25
|
ClickedFetch,
|
|
23
26
|
ClickedFetchById,
|
|
27
|
+
Ticked,
|
|
28
|
+
PolledCount,
|
|
24
29
|
StartedThreeFetches,
|
|
25
30
|
StartedTwoFetchesById,
|
|
26
31
|
StartedMixedFetches,
|
|
@@ -34,10 +39,12 @@ export const FetchCountById = Command.define('FetchCountById', { id: S.Number },
|
|
|
34
39
|
export const initialModel = { count: 0, log: [] };
|
|
35
40
|
// UPDATE
|
|
36
41
|
export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
|
|
37
|
-
ClickedIncrement: () => [
|
|
38
|
-
ClickedDecrement: () => [
|
|
42
|
+
ClickedIncrement: () => [evo(model, { count: Number.increment }), []],
|
|
43
|
+
ClickedDecrement: () => [evo(model, { count: Number.decrement }), []],
|
|
39
44
|
ClickedFetch: () => [model, [FetchCount()]],
|
|
40
45
|
ClickedFetchById: ({ id }) => [model, [FetchCountById({ id })]],
|
|
46
|
+
Ticked: () => [evo(model, { count: Number.increment }), []],
|
|
47
|
+
PolledCount: () => [model, [FetchCount()]],
|
|
41
48
|
StartedThreeFetches: () => [
|
|
42
49
|
model,
|
|
43
50
|
[FetchCount(), FetchCount(), FetchCount()],
|
|
@@ -56,7 +63,7 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
|
|
|
56
63
|
],
|
|
57
64
|
],
|
|
58
65
|
SucceededFetchCount: ({ count }) => [
|
|
59
|
-
{ count, log:
|
|
66
|
+
evo(model, { count: () => count, log: Array.append(count) }),
|
|
60
67
|
[],
|
|
61
68
|
],
|
|
62
69
|
FailedFetchCount: () => [model, []],
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { Option, Schema as S } from 'effect';
|
|
2
|
+
import type { Html, HtmlBuilder } from '../../html/index.js';
|
|
3
|
+
import * as ManagedResource from '../../managedResource/index.js';
|
|
4
|
+
export declare const Model: S.Struct<{
|
|
5
|
+
readonly isFeedOpen: S.Boolean;
|
|
6
|
+
readonly status: S.Literals<readonly ["Disconnected", "Connected", "Failed"]>;
|
|
7
|
+
}>;
|
|
8
|
+
export type Model = typeof Model.Type;
|
|
9
|
+
export declare const ClickedToggleFeed: import("../../schema/index.js").CallableTaggedStruct<"ClickedToggleFeed", {}>;
|
|
10
|
+
export declare const AcquiredFeedSocket: import("../../schema/index.js").CallableTaggedStruct<"AcquiredFeedSocket", {
|
|
11
|
+
socketId: S.String;
|
|
12
|
+
}>;
|
|
13
|
+
export declare const ReleasedFeedSocket: import("../../schema/index.js").CallableTaggedStruct<"ReleasedFeedSocket", {}>;
|
|
14
|
+
export declare const FailedAcquireFeedSocket: import("../../schema/index.js").CallableTaggedStruct<"FailedAcquireFeedSocket", {
|
|
15
|
+
error: S.String;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedToggleFeed", {}>, import("../../schema/index.js").CallableTaggedStruct<"AcquiredFeedSocket", {
|
|
18
|
+
socketId: S.String;
|
|
19
|
+
}>, import("../../schema/index.js").CallableTaggedStruct<"ReleasedFeedSocket", {}>, import("../../schema/index.js").CallableTaggedStruct<"FailedAcquireFeedSocket", {
|
|
20
|
+
error: S.String;
|
|
21
|
+
}>]>;
|
|
22
|
+
export type Message = typeof Message.Type;
|
|
23
|
+
export type FeedSocket = Readonly<{
|
|
24
|
+
socketId: string;
|
|
25
|
+
}>;
|
|
26
|
+
export declare const feedResources: {
|
|
27
|
+
feedSocket: ManagedResource.Entry<{
|
|
28
|
+
readonly isFeedOpen: boolean;
|
|
29
|
+
readonly status: "Disconnected" | "Connected" | "Failed";
|
|
30
|
+
}, {
|
|
31
|
+
readonly _tag: "ClickedToggleFeed";
|
|
32
|
+
} | {
|
|
33
|
+
readonly _tag: "AcquiredFeedSocket";
|
|
34
|
+
readonly socketId: string;
|
|
35
|
+
} | {
|
|
36
|
+
readonly _tag: "ReleasedFeedSocket";
|
|
37
|
+
} | {
|
|
38
|
+
readonly _tag: "FailedAcquireFeedSocket";
|
|
39
|
+
readonly error: string;
|
|
40
|
+
}, Option.Option<{
|
|
41
|
+
readonly channel: string;
|
|
42
|
+
}>, Readonly<{
|
|
43
|
+
socketId: string;
|
|
44
|
+
}>, ManagedResource.ManagedResourceService<"FeedSocket">, (socket: Readonly<{
|
|
45
|
+
socketId: string;
|
|
46
|
+
}>) => {
|
|
47
|
+
readonly _tag: "AcquiredFeedSocket";
|
|
48
|
+
readonly socketId: string;
|
|
49
|
+
}>;
|
|
50
|
+
presence: ManagedResource.Entry<{
|
|
51
|
+
readonly isFeedOpen: boolean;
|
|
52
|
+
readonly status: "Disconnected" | "Connected" | "Failed";
|
|
53
|
+
}, {
|
|
54
|
+
readonly _tag: "ClickedToggleFeed";
|
|
55
|
+
} | {
|
|
56
|
+
readonly _tag: "AcquiredFeedSocket";
|
|
57
|
+
readonly socketId: string;
|
|
58
|
+
} | {
|
|
59
|
+
readonly _tag: "ReleasedFeedSocket";
|
|
60
|
+
} | {
|
|
61
|
+
readonly _tag: "FailedAcquireFeedSocket";
|
|
62
|
+
readonly error: string;
|
|
63
|
+
}, Option.Option<null>, string, ManagedResource.ManagedResourceService<"Presence">, () => {
|
|
64
|
+
readonly _tag: "AcquiredFeedSocket";
|
|
65
|
+
readonly socketId: string;
|
|
66
|
+
}>;
|
|
67
|
+
};
|
|
68
|
+
export declare const initialModel: {
|
|
69
|
+
readonly isFeedOpen: boolean;
|
|
70
|
+
readonly status: "Disconnected" | "Connected" | "Failed";
|
|
71
|
+
};
|
|
72
|
+
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<never>];
|
|
73
|
+
export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
74
|
+
//# sourceMappingURL=feedSocket.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"feedSocket.d.ts","sourceRoot":"","sources":["../../../src/test/apps/feedSocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAA+B,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEzE,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,eAAe,MAAM,gCAAgC,CAAA;AAMjE,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,iBAAiB,+EAAyB,CAAA;AACvD,eAAO,MAAM,kBAAkB;;EAE7B,CAAA;AACF,eAAO,MAAM,kBAAkB,gFAA0B,CAAA;AACzD,eAAO,MAAM,uBAAuB;;EAElC,CAAA;AAEF,eAAO,MAAM,OAAO;;;;IAKlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAAE,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAAA;AAMvD,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;kBANoB,MAAM;;kBAAN,MAAM;;;;;;;;;;;;;;;;;;;;;;CA2BjD,CAAA;AAIH,eAAO,MAAM,YAAY;;;CAGvB,CAAA;AAIF,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAerC,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAU1D,CAAA"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Boolean, Effect, Match as M, Option, Schema as S } from 'effect';
|
|
2
|
+
import * as ManagedResource from '../../managedResource/index.js';
|
|
3
|
+
import { m } from '../../message/index.js';
|
|
4
|
+
import { evo } from '../../struct/index.js';
|
|
5
|
+
// MODEL
|
|
6
|
+
export const Model = S.Struct({
|
|
7
|
+
isFeedOpen: S.Boolean,
|
|
8
|
+
status: S.Literals(['Disconnected', 'Connected', 'Failed']),
|
|
9
|
+
});
|
|
10
|
+
// MESSAGE
|
|
11
|
+
export const ClickedToggleFeed = m('ClickedToggleFeed');
|
|
12
|
+
export const AcquiredFeedSocket = m('AcquiredFeedSocket', {
|
|
13
|
+
socketId: S.String,
|
|
14
|
+
});
|
|
15
|
+
export const ReleasedFeedSocket = m('ReleasedFeedSocket');
|
|
16
|
+
export const FailedAcquireFeedSocket = m('FailedAcquireFeedSocket', {
|
|
17
|
+
error: S.String,
|
|
18
|
+
});
|
|
19
|
+
export const Message = S.Union([
|
|
20
|
+
ClickedToggleFeed,
|
|
21
|
+
AcquiredFeedSocket,
|
|
22
|
+
ReleasedFeedSocket,
|
|
23
|
+
FailedAcquireFeedSocket,
|
|
24
|
+
]);
|
|
25
|
+
const FeedSocketResource = ManagedResource.tag()('FeedSocket');
|
|
26
|
+
const PresenceResource = ManagedResource.tag()('Presence');
|
|
27
|
+
export const feedResources = ManagedResource.make()(entry => ({
|
|
28
|
+
feedSocket: entry(S.Option(S.Struct({ channel: S.String })), {
|
|
29
|
+
resource: FeedSocketResource,
|
|
30
|
+
modelToMaybeRequirements: model => model.isFeedOpen ? Option.some({ channel: 'general' }) : Option.none(),
|
|
31
|
+
acquire: () => Effect.succeed({ socketId: 'live' }),
|
|
32
|
+
release: () => Effect.void,
|
|
33
|
+
onAcquired: socket => AcquiredFeedSocket({ socketId: socket.socketId }),
|
|
34
|
+
onReleased: () => ReleasedFeedSocket(),
|
|
35
|
+
onAcquireError: error => FailedAcquireFeedSocket({ error: String(error) }),
|
|
36
|
+
}),
|
|
37
|
+
presence: entry(S.Option(S.Null), {
|
|
38
|
+
resource: PresenceResource,
|
|
39
|
+
modelToMaybeRequirements: model => model.isFeedOpen ? Option.some(null) : Option.none(),
|
|
40
|
+
acquire: () => Effect.succeed('online'),
|
|
41
|
+
release: () => Effect.void,
|
|
42
|
+
onAcquired: () => AcquiredFeedSocket({ socketId: 'presence' }),
|
|
43
|
+
onReleased: () => ReleasedFeedSocket(),
|
|
44
|
+
onAcquireError: error => FailedAcquireFeedSocket({ error: String(error) }),
|
|
45
|
+
}),
|
|
46
|
+
}));
|
|
47
|
+
// INIT
|
|
48
|
+
export const initialModel = Model.make({
|
|
49
|
+
isFeedOpen: false,
|
|
50
|
+
status: 'Disconnected',
|
|
51
|
+
});
|
|
52
|
+
// UPDATE
|
|
53
|
+
export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
|
|
54
|
+
ClickedToggleFeed: () => [evo(model, { isFeedOpen: Boolean.not }), []],
|
|
55
|
+
AcquiredFeedSocket: () => [evo(model, { status: () => 'Connected' }), []],
|
|
56
|
+
ReleasedFeedSocket: () => [
|
|
57
|
+
evo(model, { status: () => 'Disconnected' }),
|
|
58
|
+
[],
|
|
59
|
+
],
|
|
60
|
+
FailedAcquireFeedSocket: () => [
|
|
61
|
+
evo(model, { status: () => 'Failed' }),
|
|
62
|
+
[],
|
|
63
|
+
],
|
|
64
|
+
}));
|
|
65
|
+
// VIEW
|
|
66
|
+
export const view = (model, h) => h.div([], [
|
|
67
|
+
h.span([h.Role('status')], [model.status]),
|
|
68
|
+
h.button([h.OnClick(ClickedToggleFeed()), h.Role('button')], [model.isFeedOpen ? 'Close feed' : 'Open feed']),
|
|
69
|
+
]);
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Schema as S } from 'effect';
|
|
2
|
+
import type { Html } from '../../html/index.js';
|
|
3
|
+
export declare const Model: S.Struct<{
|
|
4
|
+
readonly score: S.Number;
|
|
5
|
+
}>;
|
|
6
|
+
export type Model = typeof Model.Type;
|
|
7
|
+
export declare const ClickedIncrement: import("../../schema/index.js").CallableTaggedStruct<"ClickedIncrement", {}>;
|
|
8
|
+
export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedIncrement", {}>]>;
|
|
9
|
+
export type Message = typeof Message.Type;
|
|
10
|
+
export declare const initialModel: {
|
|
11
|
+
readonly score: number;
|
|
12
|
+
};
|
|
13
|
+
export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<never>];
|
|
14
|
+
export type ViewInputs = Readonly<{
|
|
15
|
+
label: string;
|
|
16
|
+
toView: (content: Readonly<{
|
|
17
|
+
label: string;
|
|
18
|
+
score: number;
|
|
19
|
+
}>) => Html;
|
|
20
|
+
}>;
|
|
21
|
+
export declare const view: import("../../html/submodel.js").SubmodelView<{
|
|
22
|
+
readonly score: number;
|
|
23
|
+
}, {
|
|
24
|
+
readonly _tag: "ClickedIncrement";
|
|
25
|
+
}, Readonly<{
|
|
26
|
+
label: string;
|
|
27
|
+
toView: (content: Readonly<{
|
|
28
|
+
label: string;
|
|
29
|
+
score: number;
|
|
30
|
+
}>) => Html;
|
|
31
|
+
}>>;
|
|
32
|
+
//# sourceMappingURL=scorePanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scorePanel.d.ts","sourceRoot":"","sources":["../../../src/test/apps/scorePanel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAA;AAO/C,eAAO,MAAM,KAAK;;EAAgC,CAAA;AAClD,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AAErD,eAAO,MAAM,OAAO,kGAA8B,CAAA;AAClD,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;CAA2B,CAAA;AAIpD,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAMrC,CAAA;AAIH,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI,CAAA;CACtE,CAAC,CAAA;AAEF,eAAO,MAAM,IAAI;;;;;WAJR,MAAM;YACL,CAAC,OAAO,EAAE,QAAQ,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,KAAK,IAAI;GAetE,CAAA"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Match as M, Number, Schema as S } from 'effect';
|
|
2
|
+
import { m } from '../../message/index.js';
|
|
3
|
+
import { evo } from '../../struct/index.js';
|
|
4
|
+
import { defineView } from '../../submodel/public.js';
|
|
5
|
+
// MODEL
|
|
6
|
+
export const Model = S.Struct({ score: S.Number });
|
|
7
|
+
// MESSAGE
|
|
8
|
+
export const ClickedIncrement = m('ClickedIncrement');
|
|
9
|
+
export const Message = S.Union([ClickedIncrement]);
|
|
10
|
+
// INIT
|
|
11
|
+
export const initialModel = Model.make({ score: 0 });
|
|
12
|
+
// UPDATE
|
|
13
|
+
export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
|
|
14
|
+
ClickedIncrement: () => [evo(model, { score: Number.increment }), []],
|
|
15
|
+
}));
|
|
16
|
+
export const view = defineView((model, viewInputs, h) => h.div([], [
|
|
17
|
+
viewInputs.toView({ label: viewInputs.label, score: model.score }),
|
|
18
|
+
h.button([h.OnClick(ClickedIncrement()), h.Role('button')], ['Increment']),
|
|
19
|
+
]));
|
package/dist/test/scene.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
|
-
import { Effect } from 'effect';
|
|
1
|
+
import { Effect, Option, type Schema } from 'effect';
|
|
2
2
|
import type { CommandDefinition } from '../command/index.js';
|
|
3
3
|
import type * as Interruptible from '../command/interruptible/index.js';
|
|
4
|
+
import type { CustomElementSpec } from '../customElement/index.js';
|
|
4
5
|
import type { File } from '../file/index.js';
|
|
5
6
|
import type { Document, Html, HtmlBuilder, KeyboardModifiers } from '../html/index.js';
|
|
7
|
+
import type { Entry as ManagedResourceEntry } from '../managedResource/index.js';
|
|
6
8
|
import type { MountDefinition } from '../mount/index.js';
|
|
7
9
|
import type { VNode } from '../vdom.js';
|
|
8
10
|
import type { AnyCommand, AnyMount, CommandMatcher, MountMatcher, MountResolver, PendingMount, Resolver } from './internal.js';
|
|
@@ -47,11 +49,11 @@ export type SceneSimulation<Model, Message, OutMessage = undefined> = Readonly<{
|
|
|
47
49
|
html: VNode;
|
|
48
50
|
}>;
|
|
49
51
|
/** A callable step that sets the initial Model. Carries phantom type for compile-time validation. */
|
|
50
|
-
type
|
|
52
|
+
type GivenStep<Model> = Readonly<{
|
|
51
53
|
_phantomModel: Model;
|
|
52
54
|
}> & (<M, Message, OutMessage = undefined>(simulation: SceneSimulation<M, Message, OutMessage>) => SceneSimulation<M, Message, OutMessage>);
|
|
53
|
-
/** A single step in a scene: either a `
|
|
54
|
-
export type SceneStep<Model, Message, OutMessage> =
|
|
55
|
+
/** A single step in a scene: either a `given` step or a scene simulation transform. */
|
|
56
|
+
export type SceneStep<Model, Message, OutMessage> = GivenStep<NoInfer<Model>> | ((simulation: SceneSimulation<Model, Message, OutMessage>) => SceneSimulation<Model, Message, OutMessage>);
|
|
55
57
|
/** A typed Command instance carrying the result Message type via its
|
|
56
58
|
* `effect` field, so passing `FetchWeather({ zipCode })` to `Scene.Command.resolve`
|
|
57
59
|
* preserves the link between the Command and its declared result Message. */
|
|
@@ -67,8 +69,11 @@ type SceneCommandInstance<ResultMessage = unknown> = Readonly<{
|
|
|
67
69
|
* accepts either, the way `expectHas`/`expectExact` already do. */
|
|
68
70
|
type ResolvableCommandDefinition<Name extends string, ResultMessage> = CommandDefinition<Name, ResultMessage> | Interruptible.DefinitionNoArgs<Name, Effect.Effect<ResultMessage, any, any>> | Interruptible.DefinitionWithArgs<Name, any, any, Effect.Effect<ResultMessage, any, any>> | Interruptible.DefinitionWithArgsNameKeyed<Name, any, Effect.Effect<ResultMessage, any, any>>;
|
|
69
71
|
/** Sets the initial Model for a scene test. */
|
|
70
|
-
export
|
|
71
|
-
|
|
72
|
+
export declare const given: <Model>(model: Model) => GivenStep<Model>;
|
|
73
|
+
/** A ManagedResource entry a scene can drive: the Option-shaped requirements
|
|
74
|
+
* are what the runtime watches, so the steps can check the current Model
|
|
75
|
+
* against them before dispatching a lifecycle Message. */
|
|
76
|
+
type SceneManagedResourceEntry<EntryModel, EntryMessage, Value, OnAcquired extends (...args: any) => EntryMessage = (value: Value) => EntryMessage> = ManagedResourceEntry<EntryModel, EntryMessage, Option.Option<any>, Value, any, OnAcquired>;
|
|
72
77
|
/** Steps that operate on the pending Commands of a scene simulation.
|
|
73
78
|
* Destructure as `const { Command } = Scene` for concise call sites. */
|
|
74
79
|
export declare const Command: {
|
|
@@ -107,6 +112,56 @@ export declare const Mount: {
|
|
|
107
112
|
* every Mount that fires and then unmounts during a scene. */
|
|
108
113
|
readonly expectEnded: (...matchers: ReadonlyArray<MountMatcher>) => <Model, Message, OutMessage = undefined>(simulation: SceneSimulation<Model, Message, OutMessage>) => SceneSimulation<Model, Message, OutMessage>;
|
|
109
114
|
};
|
|
115
|
+
/** Steps that model Messages arriving from a Subscription.
|
|
116
|
+
* Destructure as `const { Subscription } = Scene` for concise call sites. */
|
|
117
|
+
export declare const Subscription: {
|
|
118
|
+
/** Feeds a Message through update as if a Subscription had emitted it,
|
|
119
|
+
* then re-renders. Only for Messages whose real cause is a Subscription;
|
|
120
|
+
* if the Message has a DOM affordance, click it instead. */
|
|
121
|
+
readonly emit: <MessageInput>(message: MessageInput) => <Model, Message, OutMessage = undefined>(simulation: SceneSimulation<Model, Message, OutMessage>) => SceneSimulation<Model, Message, OutMessage>;
|
|
122
|
+
};
|
|
123
|
+
/** Steps that model the lifecycle Messages of a ManagedResource. The test
|
|
124
|
+
* declares the lifecycle outcome the way `Scene.Command.resolve` declares a
|
|
125
|
+
* Command result, and each step checks the current Model against the
|
|
126
|
+
* entry's `modelToMaybeRequirements` gate first, mirroring the runtime's
|
|
127
|
+
* None to Some and Some to None transitions. The Some to Some re-acquire
|
|
128
|
+
* transition has no step yet. Destructure as
|
|
129
|
+
* `const { ManagedResource } = Scene` for concise call sites. */
|
|
130
|
+
export declare const ManagedResource: {
|
|
131
|
+
/** Declares a successful acquire, feeding the entry's `onAcquired` Message
|
|
132
|
+
* through update. Takes exactly the arguments `onAcquired` declares. The
|
|
133
|
+
* current Model must request the resource. */
|
|
134
|
+
readonly acquire: <EntryModel, EntryMessage, Value, Args extends ReadonlyArray<any>>(entry: SceneManagedResourceEntry<EntryModel, EntryMessage, Value, (...args: Args) => EntryMessage>, ...args: NoInfer<Args>) => <Message, OutMessage = undefined>(simulation: SceneSimulation<EntryModel, Message, OutMessage>) => SceneSimulation<EntryModel, Message, OutMessage>;
|
|
135
|
+
/** Declares a failed acquire, feeding `onAcquireError(error)` through
|
|
136
|
+
* update. The current Model must request the resource. */
|
|
137
|
+
readonly failAcquire: <EntryModel, EntryMessage, Value>(entry: SceneManagedResourceEntry<EntryModel, EntryMessage, Value>, error: unknown) => <Message, OutMessage = undefined>(simulation: SceneSimulation<EntryModel, Message, OutMessage>) => SceneSimulation<EntryModel, Message, OutMessage>;
|
|
138
|
+
/** Declares a release, feeding `onReleased()` through update. The current
|
|
139
|
+
* Model must no longer request the resource. */
|
|
140
|
+
readonly release: <EntryModel, EntryMessage, Value>(entry: SceneManagedResourceEntry<EntryModel, EntryMessage, Value>) => <Message, OutMessage = undefined>(simulation: SceneSimulation<EntryModel, Message, OutMessage>) => SceneSimulation<EntryModel, Message, OutMessage>;
|
|
141
|
+
};
|
|
142
|
+
/** Steps that model CustomEvents arriving from a rendered custom element.
|
|
143
|
+
* Destructure as `const { CustomElement } = Scene` for concise call sites. */
|
|
144
|
+
export declare const CustomElement: {
|
|
145
|
+
/** Dispatches a declared CustomEvent through the element's event mapping.
|
|
146
|
+
* The event name and detail are typed by the spec's event Schemas. */
|
|
147
|
+
readonly emit: <Events extends Record<string, Schema.Top>, Name extends keyof Events & string>(spec: CustomElementSpec<string, Record<string, Schema.Top>, Events>, target: string | Locator, eventName: Name, detail: Schema.Schema.Type<Events[Name]>) => <Model, Message, OutMessage = undefined>(simulation: SceneSimulation<Model, Message, OutMessage>) => SceneSimulation<Model, Message, OutMessage>;
|
|
148
|
+
};
|
|
149
|
+
/** Asserts that the OutMessage is Some with the expected value.
|
|
150
|
+
*
|
|
151
|
+
* The tracked OutMessage is the third element of the most recent update
|
|
152
|
+
* result that had one. An update branch that returns a two-tuple leaves
|
|
153
|
+
* the previous value latched in place, so keep every branch of an
|
|
154
|
+
* OutMessage-returning update on the three-tuple shape, returning
|
|
155
|
+
* `Option.none()` when there is nothing to report. */
|
|
156
|
+
export declare const expectOutMessage: <Expected>(expected: Expected) => <Model, Message, OutMessage>(simulation: SceneSimulation<Model, Message, Option.Option<OutMessage>>) => SceneSimulation<Model, Message, Option.Option<OutMessage>>;
|
|
157
|
+
/** Asserts that the OutMessage is None.
|
|
158
|
+
*
|
|
159
|
+
* The tracked OutMessage is the third element of the most recent update
|
|
160
|
+
* result that had one. An update branch that returns a two-tuple leaves
|
|
161
|
+
* the previous value latched in place, so keep every branch of an
|
|
162
|
+
* OutMessage-returning update on the three-tuple shape, returning
|
|
163
|
+
* `Option.none()` when there is nothing to report. */
|
|
164
|
+
export declare const expectNoOutMessage: () => <Model, Message, OutMessage>(simulation: SceneSimulation<Model, Message, Option.Option<OutMessage>>) => SceneSimulation<Model, Message, Option.Option<OutMessage>>;
|
|
110
165
|
/** Runs a function for side effects (e.g. assertions) without breaking the step chain. */
|
|
111
166
|
export declare const tap: <Model, Message, OutMessage = undefined>(f: (simulation: SceneSimulation<Model, Message, OutMessage>) => void) => (simulation: SceneSimulation<Model, Message, OutMessage>) => SceneSimulation<Model, Message, OutMessage>;
|
|
112
167
|
/** Scopes a sequence of steps to a parent element. Every Locator referenced by
|
|
@@ -250,6 +305,23 @@ export declare const expectAll: (locatorAll: LocatorAll) => {
|
|
|
250
305
|
toHaveCount: (expected: number) => <Model, Message, OutMessage = undefined>(simulation: SceneSimulation<Model, Message, OutMessage>) => SceneSimulation<Model, Message, OutMessage>;
|
|
251
306
|
toBeEmpty: () => <Model, Message, OutMessage = undefined>(simulation: SceneSimulation<Model, Message, OutMessage>) => SceneSimulation<Model, Message, OutMessage>;
|
|
252
307
|
};
|
|
308
|
+
/** Adapts a Submodel view that declares `ViewInputs` to the `(model, h)`
|
|
309
|
+
* shape `Scene.scene` takes. `defaults` supplies the full `ViewInputs`
|
|
310
|
+
* once; the returned factory accepts per-test overrides for everything
|
|
311
|
+
* except `toView`, so tests vary value inputs while the renderer stays
|
|
312
|
+
* pinned:
|
|
313
|
+
*
|
|
314
|
+
* ```ts
|
|
315
|
+
* const sceneView = Scene.withViewInputs(view, {
|
|
316
|
+
* value: 5,
|
|
317
|
+
* toView: testToView,
|
|
318
|
+
* })
|
|
319
|
+
*
|
|
320
|
+
* Scene.scene({ update, view: sceneView() }, ...)
|
|
321
|
+
* Scene.scene({ update, view: sceneView({ isDisabled: true }) }, ...)
|
|
322
|
+
* ```
|
|
323
|
+
*/
|
|
324
|
+
export declare const withViewInputs: <Model, Message, ViewInputs extends object>(view: (model: Model, viewInputs: ViewInputs, h: HtmlBuilder<Message>) => Html, defaults: NoInfer<ViewInputs>) => (overrides?: Omit<Partial<NoInfer<ViewInputs>>, "toView">) => (model: Model, h: HtmlBuilder<Message>) => Html;
|
|
253
325
|
/** Executes a scene test. Throws if any Commands remain unresolved. */
|
|
254
326
|
export declare const scene: {
|
|
255
327
|
<Model, Message, OutMessage>(config: Readonly<{
|
package/dist/test/scene.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../src/test/scene.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scene.d.ts","sourceRoot":"","sources":["../../src/test/scene.ts"],"names":[],"mappings":"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"}
|
package/dist/test/scene.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { Array, Context, Effect, Function, Option, Predicate, String as String_, pipe, } from 'effect';
|
|
1
|
+
import { Array, Context, Effect, Equal, Function, Option, Predicate, String as String_, pipe, } from 'effect';
|
|
2
2
|
import { dual } from 'effect/Function';
|
|
3
|
+
import { kebabToPascal } from '../customElement/index.js';
|
|
3
4
|
import { FOLDKIT_MOUNT_KEY, FileHandlerSymbol, __clearRuntime as clearHtmlRuntime, __htmlBuilder as htmlBuilderFor, __setRuntime as setHtmlRuntime, } from '../html/index.js';
|
|
4
5
|
import { MountTracker } from '../mount/index.js';
|
|
5
6
|
import { Dispatch } from '../runtime/index.js';
|
|
@@ -157,7 +158,7 @@ const EVENT_NAMES = {
|
|
|
157
158
|
pointerdown: 'OnPointerDown',
|
|
158
159
|
pointerup: 'OnPointerUp',
|
|
159
160
|
};
|
|
160
|
-
const
|
|
161
|
+
const maybeCaptureFromElement = (simulation, element, description, eventName, invokeHandler) => {
|
|
161
162
|
const internal = toInternal(simulation);
|
|
162
163
|
const maybeHandler = Option.fromNullishOr(element.data?.on?.[eventName]);
|
|
163
164
|
if (Option.isNone(maybeHandler)) {
|
|
@@ -168,27 +169,9 @@ const captureFromElement = (simulation, element, description, eventName, invokeH
|
|
|
168
169
|
internal.capturingDispatch.reset();
|
|
169
170
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
170
171
|
invokeHandler(maybeHandler.value);
|
|
171
|
-
|
|
172
|
-
if (Predicate.isUndefined(captured)) {
|
|
173
|
-
return simulation;
|
|
174
|
-
}
|
|
175
|
-
assertNoUnresolvedCommands(internal.commands, 'when an interaction dispatched a new Message');
|
|
176
|
-
assertNoUnresolvedMounts(internal.mounts, 'when an interaction dispatched a new Message');
|
|
177
|
-
assertNoUnacknowledgedUnmounts(unacknowledgedEndedMountsOf(internal.mountSlots), 'when an interaction dispatched a new Message');
|
|
178
|
-
/* eslint-disable @typescript-eslint/consistent-type-assertions */
|
|
179
|
-
const capturedMessage = captured;
|
|
180
|
-
const result = internal.updateFn(internal.model, capturedMessage);
|
|
181
|
-
const [nextModel, commands] = result;
|
|
182
|
-
const outMessage = result.length === 3 ? result[2] : internal.outMessage;
|
|
183
|
-
return {
|
|
184
|
-
...internal,
|
|
185
|
-
model: nextModel,
|
|
186
|
-
message: capturedMessage,
|
|
187
|
-
commands: Array.appendAll(internal.commands, commands),
|
|
188
|
-
outMessage,
|
|
189
|
-
};
|
|
190
|
-
/* eslint-enable @typescript-eslint/consistent-type-assertions */
|
|
172
|
+
return Option.map(Option.fromNullishOr(internal.capturingDispatch.getCapturedMessage()), captured => applyExternalMessage(simulation, captured, 'when an interaction dispatched a new Message'));
|
|
191
173
|
};
|
|
174
|
+
const captureFromElement = (simulation, element, description, eventName, invokeHandler) => Option.getOrElse(maybeCaptureFromElement(simulation, element, description, eventName, invokeHandler), () => simulation);
|
|
192
175
|
const invokeAndCapture = (simulation, target, eventName, invokeHandler) => {
|
|
193
176
|
const internal = toInternal(simulation);
|
|
194
177
|
const scopedTarget = applyScopeToTarget(internal.scope, target);
|
|
@@ -262,8 +245,7 @@ const assertFileHandler = (handler, expectedTag, helperName) => {
|
|
|
262
245
|
};
|
|
263
246
|
// STEPS
|
|
264
247
|
/** Sets the initial Model for a scene test. */
|
|
265
|
-
export
|
|
266
|
-
const with_ = (model) => {
|
|
248
|
+
export const given = (model) => {
|
|
267
249
|
const step = (simulation) => {
|
|
268
250
|
const internal = toInternal(simulation);
|
|
269
251
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|
|
@@ -415,6 +397,119 @@ const expectEndedMountsStep = (...matchers) => (simulation) => {
|
|
|
415
397
|
};
|
|
416
398
|
/* eslint-enable @typescript-eslint/consistent-type-assertions */
|
|
417
399
|
};
|
|
400
|
+
const applyExternalMessage = (simulation, message, context) => {
|
|
401
|
+
const internal = toInternal(simulation);
|
|
402
|
+
assertNoUnresolvedCommands(internal.commands, context);
|
|
403
|
+
assertNoUnresolvedMounts(internal.mounts, context);
|
|
404
|
+
assertNoUnacknowledgedUnmounts(unacknowledgedEndedMountsOf(internal.mountSlots), context);
|
|
405
|
+
/* eslint-disable @typescript-eslint/consistent-type-assertions */
|
|
406
|
+
const messageAsParent = message;
|
|
407
|
+
const result = internal.updateFn(internal.model, messageAsParent);
|
|
408
|
+
const [nextModel, commands] = result;
|
|
409
|
+
const outMessage = result.length === 3 ? result[2] : internal.outMessage;
|
|
410
|
+
return {
|
|
411
|
+
...internal,
|
|
412
|
+
model: nextModel,
|
|
413
|
+
message: messageAsParent,
|
|
414
|
+
commands: Array.appendAll(internal.commands, commands),
|
|
415
|
+
outMessage,
|
|
416
|
+
};
|
|
417
|
+
/* eslint-enable @typescript-eslint/consistent-type-assertions */
|
|
418
|
+
};
|
|
419
|
+
/** Feeds a Message through update as if a Subscription had emitted it,
|
|
420
|
+
* then re-renders. Use it for Messages whose real cause is a Subscription
|
|
421
|
+
* (a timer tick, a WebSocket frame, a global listener), which have no
|
|
422
|
+
* element in the rendered tree to interact with. Do NOT reach for it when
|
|
423
|
+
* the Message has a DOM affordance: click the actual button instead, so
|
|
424
|
+
* the test exercises the handler wiring this step skips. Like an
|
|
425
|
+
* interaction, it throws if unresolved Commands, unresolved Mounts, or
|
|
426
|
+
* unacknowledged unmounts are pending. */
|
|
427
|
+
const emitSubscriptionMessage = (message) => (simulation) => applyExternalMessage(simulation, message, 'when a Subscription emitted a new Message');
|
|
428
|
+
const MANAGED_RESOURCE_CONTEXT = 'when a ManagedResource dispatched a new Message';
|
|
429
|
+
/** Declares that a ManagedResource's acquire succeeded, feeding the entry's
|
|
430
|
+
* `onAcquired` Message through update the way the runtime would. The step
|
|
431
|
+
* takes exactly the arguments the entry's `onAcquired` declares: a handler
|
|
432
|
+
* that consumes the acquired value needs one here, and a handler that
|
|
433
|
+
* ignores it needs none. Requires the current Model to request the
|
|
434
|
+
* resource: the runtime only acquires while `modelToMaybeRequirements`
|
|
435
|
+
* returns Some, so drive the Model into that state through real steps
|
|
436
|
+
* first. */
|
|
437
|
+
const acquireManagedResource = (entry, ...args) => (simulation) => {
|
|
438
|
+
const internal = toInternal(simulation);
|
|
439
|
+
const maybeRequirements = entry.modelToMaybeRequirements(internal.model);
|
|
440
|
+
if (Option.isNone(maybeRequirements)) {
|
|
441
|
+
throw new Error(`I tried to acquire the ManagedResource "${entry.resource.key}" but the current Model does not request it.\n\n` +
|
|
442
|
+
'modelToMaybeRequirements returned None. The runtime only acquires while the Model requests the resource, so drive that transition through real steps first.');
|
|
443
|
+
}
|
|
444
|
+
return applyExternalMessage(simulation, entry.onAcquired(...args), MANAGED_RESOURCE_CONTEXT);
|
|
445
|
+
};
|
|
446
|
+
/** Declares that a ManagedResource's acquire failed, feeding the entry's
|
|
447
|
+
* `onAcquireError(error)` Message through update the way the runtime
|
|
448
|
+
* would. Requires the current Model to request the resource, the same as
|
|
449
|
+
* {@link acquireManagedResource}: the runtime only attempts acquisition
|
|
450
|
+
* while `modelToMaybeRequirements` returns Some. */
|
|
451
|
+
const failAcquireManagedResource = (entry, error) => (simulation) => {
|
|
452
|
+
const internal = toInternal(simulation);
|
|
453
|
+
const maybeRequirements = entry.modelToMaybeRequirements(internal.model);
|
|
454
|
+
if (Option.isNone(maybeRequirements)) {
|
|
455
|
+
throw new Error(`I tried to fail acquiring the ManagedResource "${entry.resource.key}" but the current Model does not request it.\n\n` +
|
|
456
|
+
'modelToMaybeRequirements returned None. The runtime only attempts acquisition while the Model requests the resource, so drive that transition through real steps first.');
|
|
457
|
+
}
|
|
458
|
+
return applyExternalMessage(simulation, entry.onAcquireError(error), MANAGED_RESOURCE_CONTEXT);
|
|
459
|
+
};
|
|
460
|
+
/** Declares that a ManagedResource was released, feeding the entry's
|
|
461
|
+
* `onReleased()` Message through update. Models the runtime's Some to
|
|
462
|
+
* None transition, which releases and then dispatches `onReleased()`, so
|
|
463
|
+
* it requires the current Model to no longer request the resource: drive
|
|
464
|
+
* the Model out of the requesting state through real steps first. The
|
|
465
|
+
* runtime's Some to Some re-acquire (structurally changed requirements),
|
|
466
|
+
* which also dispatches `onReleased()` and then `onAcquired(value)` while
|
|
467
|
+
* the Model still requests the resource, has no step yet. */
|
|
468
|
+
const releaseManagedResource = (entry) => (simulation) => {
|
|
469
|
+
const internal = toInternal(simulation);
|
|
470
|
+
const maybeRequirements = entry.modelToMaybeRequirements(internal.model);
|
|
471
|
+
if (Option.isSome(maybeRequirements)) {
|
|
472
|
+
throw new Error(`I tried to release the ManagedResource "${entry.resource.key}" but the current Model still requests it.\n\n` +
|
|
473
|
+
'modelToMaybeRequirements returned Some. This step models the Some to None transition, so drive the Model out of the requesting state through real steps first.');
|
|
474
|
+
}
|
|
475
|
+
return applyExternalMessage(simulation, entry.onReleased(), MANAGED_RESOURCE_CONTEXT);
|
|
476
|
+
};
|
|
477
|
+
/** Dispatches a CustomEvent a rendered custom element declares, feeding the
|
|
478
|
+
* Message its `On*` event mapping produces through update. The event name
|
|
479
|
+
* and detail are typed by the spec's event Schemas. The element must be in
|
|
480
|
+
* the rendered tree with the event's attribute attached, so the test
|
|
481
|
+
* exercises the same mapping the browser event would. */
|
|
482
|
+
const emitCustomElementEvent = (spec, target, eventName, detail) => (simulation) => {
|
|
483
|
+
if (!Object.hasOwn(spec.events, eventName)) {
|
|
484
|
+
const declared = Object.keys(spec.events).join(', ');
|
|
485
|
+
throw new Error(`I tried to emit "${eventName}" but the '${spec.tag}' element does not declare it.\n\n` +
|
|
486
|
+
`Declared events: ${String_.isEmpty(declared) ? '(none)' : declared}.`);
|
|
487
|
+
}
|
|
488
|
+
const internal = toInternal(simulation);
|
|
489
|
+
const scopedTarget = applyScopeToTarget(internal.scope, target);
|
|
490
|
+
const { maybeElement, description } = resolveTarget(internal.html, scopedTarget);
|
|
491
|
+
if (Option.isNone(maybeElement)) {
|
|
492
|
+
throw new Error(`I could not find an element matching ${description}.\n\n` +
|
|
493
|
+
'Check that your selector matches an element in the current view.');
|
|
494
|
+
}
|
|
495
|
+
const element = maybeElement.value;
|
|
496
|
+
if (element.data?.on?.[eventName] === undefined) {
|
|
497
|
+
throw new Error(`I found an element matching ${description} but it has no ${eventName} handler.\n\n` +
|
|
498
|
+
`Make sure the element has the On${kebabToPascal(eventName)} attribute from its CustomElement builder.`);
|
|
499
|
+
}
|
|
500
|
+
// NOTE: the OnCustomEvent handler only dispatches when the event is a
|
|
501
|
+
// real CustomEvent instance, so the synthetic event must be constructed
|
|
502
|
+
// with `new CustomEvent(...)`, never a plain object literal like the
|
|
503
|
+
// other interaction helpers use. A None capture means nothing was
|
|
504
|
+
// dispatched, and since the handler dispatches unconditionally for a
|
|
505
|
+
// genuine CustomEvent, that can only be the instanceof check failing
|
|
506
|
+
// (a CustomEvent realm mismatch in the test environment).
|
|
507
|
+
const maybeNext = maybeCaptureFromElement(simulation, element, description, eventName, handler => {
|
|
508
|
+
handler(new CustomEvent(eventName, { detail }));
|
|
509
|
+
});
|
|
510
|
+
return Option.getOrThrowWith(maybeNext, () => new Error(`I dispatched "${eventName}" on the element matching ${description} but its handler produced no Message.\n\n` +
|
|
511
|
+
"The OnCustomEvent handler only dispatches for CustomEvent instances, so the synthetic event failed the runtime's instanceof check. This points to a CustomEvent realm mismatch in the test environment."));
|
|
512
|
+
};
|
|
418
513
|
/** Steps that operate on the pending Commands of a scene simulation.
|
|
419
514
|
* Destructure as `const { Command } = Scene` for concise call sites. */
|
|
420
515
|
export const Command = {
|
|
@@ -450,6 +545,73 @@ export const Mount = {
|
|
|
450
545
|
* every Mount that fires and then unmounts during a scene. */
|
|
451
546
|
expectEnded: expectEndedMountsStep,
|
|
452
547
|
};
|
|
548
|
+
/** Steps that model Messages arriving from a Subscription.
|
|
549
|
+
* Destructure as `const { Subscription } = Scene` for concise call sites. */
|
|
550
|
+
export const Subscription = {
|
|
551
|
+
/** Feeds a Message through update as if a Subscription had emitted it,
|
|
552
|
+
* then re-renders. Only for Messages whose real cause is a Subscription;
|
|
553
|
+
* if the Message has a DOM affordance, click it instead. */
|
|
554
|
+
emit: emitSubscriptionMessage,
|
|
555
|
+
};
|
|
556
|
+
/** Steps that model the lifecycle Messages of a ManagedResource. The test
|
|
557
|
+
* declares the lifecycle outcome the way `Scene.Command.resolve` declares a
|
|
558
|
+
* Command result, and each step checks the current Model against the
|
|
559
|
+
* entry's `modelToMaybeRequirements` gate first, mirroring the runtime's
|
|
560
|
+
* None to Some and Some to None transitions. The Some to Some re-acquire
|
|
561
|
+
* transition has no step yet. Destructure as
|
|
562
|
+
* `const { ManagedResource } = Scene` for concise call sites. */
|
|
563
|
+
export const ManagedResource = {
|
|
564
|
+
/** Declares a successful acquire, feeding the entry's `onAcquired` Message
|
|
565
|
+
* through update. Takes exactly the arguments `onAcquired` declares. The
|
|
566
|
+
* current Model must request the resource. */
|
|
567
|
+
acquire: acquireManagedResource,
|
|
568
|
+
/** Declares a failed acquire, feeding `onAcquireError(error)` through
|
|
569
|
+
* update. The current Model must request the resource. */
|
|
570
|
+
failAcquire: failAcquireManagedResource,
|
|
571
|
+
/** Declares a release, feeding `onReleased()` through update. The current
|
|
572
|
+
* Model must no longer request the resource. */
|
|
573
|
+
release: releaseManagedResource,
|
|
574
|
+
};
|
|
575
|
+
/** Steps that model CustomEvents arriving from a rendered custom element.
|
|
576
|
+
* Destructure as `const { CustomElement } = Scene` for concise call sites. */
|
|
577
|
+
export const CustomElement = {
|
|
578
|
+
/** Dispatches a declared CustomEvent through the element's event mapping.
|
|
579
|
+
* The event name and detail are typed by the spec's event Schemas. */
|
|
580
|
+
emit: emitCustomElementEvent,
|
|
581
|
+
};
|
|
582
|
+
/** Asserts that the OutMessage is Some with the expected value.
|
|
583
|
+
*
|
|
584
|
+
* The tracked OutMessage is the third element of the most recent update
|
|
585
|
+
* result that had one. An update branch that returns a two-tuple leaves
|
|
586
|
+
* the previous value latched in place, so keep every branch of an
|
|
587
|
+
* OutMessage-returning update on the three-tuple shape, returning
|
|
588
|
+
* `Option.none()` when there is nothing to report. */
|
|
589
|
+
export const expectOutMessage = (expected) => (simulation) => {
|
|
590
|
+
const internal = toInternal(simulation);
|
|
591
|
+
const outMessage = internal.outMessage;
|
|
592
|
+
if (!Option.isOption(outMessage) ||
|
|
593
|
+
Option.isNone(outMessage) ||
|
|
594
|
+
!Equal.equals(outMessage.value, expected)) {
|
|
595
|
+
throw new Error(`Expected OutMessage:\n\n Some(${JSON.stringify(expected)})\n\nBut got:\n\n ${JSON.stringify(outMessage)}`);
|
|
596
|
+
}
|
|
597
|
+
return simulation;
|
|
598
|
+
};
|
|
599
|
+
/** Asserts that the OutMessage is None.
|
|
600
|
+
*
|
|
601
|
+
* The tracked OutMessage is the third element of the most recent update
|
|
602
|
+
* result that had one. An update branch that returns a two-tuple leaves
|
|
603
|
+
* the previous value latched in place, so keep every branch of an
|
|
604
|
+
* OutMessage-returning update on the three-tuple shape, returning
|
|
605
|
+
* `Option.none()` when there is nothing to report. */
|
|
606
|
+
export const expectNoOutMessage = () => (simulation) => {
|
|
607
|
+
const internal = toInternal(simulation);
|
|
608
|
+
const outMessage = internal.outMessage;
|
|
609
|
+
if (!Predicate.isUndefined(outMessage) &&
|
|
610
|
+
!(Option.isOption(outMessage) && Option.isNone(outMessage))) {
|
|
611
|
+
throw new Error(`Expected no OutMessage but got:\n\n ${JSON.stringify(outMessage)}`);
|
|
612
|
+
}
|
|
613
|
+
return simulation;
|
|
614
|
+
};
|
|
453
615
|
/** Runs a function for side effects (e.g. assertions) without breaking the step chain. */
|
|
454
616
|
export const tap = (f) => (simulation) => {
|
|
455
617
|
f(simulation);
|
|
@@ -960,6 +1122,24 @@ export const expectAll = (locatorAll) => ({
|
|
|
960
1122
|
...buildExpectAllChain(locatorAll, false),
|
|
961
1123
|
not: buildExpectAllChain(locatorAll, true),
|
|
962
1124
|
});
|
|
1125
|
+
// VIEW ADAPTERS
|
|
1126
|
+
/** Adapts a Submodel view that declares `ViewInputs` to the `(model, h)`
|
|
1127
|
+
* shape `Scene.scene` takes. `defaults` supplies the full `ViewInputs`
|
|
1128
|
+
* once; the returned factory accepts per-test overrides for everything
|
|
1129
|
+
* except `toView`, so tests vary value inputs while the renderer stays
|
|
1130
|
+
* pinned:
|
|
1131
|
+
*
|
|
1132
|
+
* ```ts
|
|
1133
|
+
* const sceneView = Scene.withViewInputs(view, {
|
|
1134
|
+
* value: 5,
|
|
1135
|
+
* toView: testToView,
|
|
1136
|
+
* })
|
|
1137
|
+
*
|
|
1138
|
+
* Scene.scene({ update, view: sceneView() }, ...)
|
|
1139
|
+
* Scene.scene({ update, view: sceneView({ isDisabled: true }) }, ...)
|
|
1140
|
+
* ```
|
|
1141
|
+
*/
|
|
1142
|
+
export const withViewInputs = (view, defaults) => (overrides) => (model, h) => view(model, { ...defaults, ...overrides }, h);
|
|
963
1143
|
// SCENE
|
|
964
1144
|
/** Executes a scene test. Throws if any Commands remain unresolved. */
|
|
965
1145
|
export const scene = (config, ...steps) => {
|
package/dist/test/story.d.ts
CHANGED
|
@@ -26,7 +26,7 @@ export type StorySimulation<Model, Message, OutMessage = undefined> = Readonly<{
|
|
|
26
26
|
outMessage: OutMessage;
|
|
27
27
|
}>;
|
|
28
28
|
/** A callable step that sets the initial Model. Carries phantom type for compile-time validation. */
|
|
29
|
-
export type
|
|
29
|
+
export type GivenStep<Model> = Readonly<{
|
|
30
30
|
_phantomModel: Model;
|
|
31
31
|
}> & (<M, Message, OutMessage = undefined>(simulation: StorySimulation<M, Message, OutMessage>) => StorySimulation<M, Message, OutMessage>);
|
|
32
32
|
/** A model-assertion step produced by {@link model}. */
|
|
@@ -34,12 +34,11 @@ export type ModelStep<Model> = Readonly<{
|
|
|
34
34
|
readonly _tag: 'ModelStep';
|
|
35
35
|
readonly assert: (model: Model) => void;
|
|
36
36
|
}>;
|
|
37
|
-
/** A single step in a story: a {@link
|
|
37
|
+
/** A single step in a story: a {@link GivenStep}, a {@link ModelStep},
|
|
38
38
|
* or a simulation transform. */
|
|
39
|
-
export type StoryStep<Model> =
|
|
39
|
+
export type StoryStep<Model> = GivenStep<NoInfer<Model>> | ModelStep<NoInfer<Model>> | ((sim: StorySimulation<any, any, any>) => StorySimulation<any, any, any>);
|
|
40
40
|
/** Sets the initial Model for a test story. */
|
|
41
|
-
export
|
|
42
|
-
declare const with_: <Model>(model: Model) => WithStep<Model>;
|
|
41
|
+
export declare const given: <Model>(model: Model) => GivenStep<Model>;
|
|
43
42
|
/** Sends a Message through update. Commands stay pending until resolve or
|
|
44
43
|
* resolveAll. */
|
|
45
44
|
export declare const message: <MessageInput>(message_: MessageInput) => <Model, Message, OutMessage>(simulation: StorySimulation<Model, Message, OutMessage>) => StorySimulation<Model, Message, OutMessage>;
|
package/dist/test/story.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../../src/test/story.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAS,MAAM,EAAmB,MAAM,QAAQ,CAAA;AAEtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,KAAK,KAAK,aAAa,MAAM,mCAAmC,CAAA;AACvE,OAAO,KAAK,EACV,UAAU,EAEV,cAAc,EACd,QAAQ,EAET,MAAM,eAAe,CAAA;AActB,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,QAAQ,EAAE,CAAA;AAEpD;;8EAE8E;AAC9E,KAAK,kBAAkB,CAAC,aAAa,GAAG,OAAO,IAAI,QAAQ,CAAC;IAC1D,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAC/C,CAAC,CAAA;AAEF;;;;oEAIoE;AACpE,KAAK,2BAA2B,CAAC,IAAI,SAAS,MAAM,EAAE,aAAa,IAC/D,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,GACtC,aAAa,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,GAC5E,aAAa,CAAC,kBAAkB,CAC9B,IAAI,EACJ,GAAG,EACH,GAAG,EACH,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,CACvC,GACD,aAAa,CAAC,2BAA2B,CACvC,IAAI,EACJ,GAAG,EACH,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,GAAG,EAAE,GAAG,CAAC,CACvC,CAAA;AAEL,yDAAyD;AACzD,MAAM,MAAM,eAAe,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,GAAG,SAAS,IAAI,QAAQ,CAAC;IAC7E,iEAAiE;IACjE,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,KAAK,EAAE,KAAK,CAAA;IACZ,QAAQ,EAAE,aAAa,CAAC,UAAU,CAAC,CAAA;IACnC,UAAU,EAAE,UAAU,CAAA;CACvB,CAAC,CAAA;AAEF,qGAAqG;AACrG,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"story.d.ts","sourceRoot":"","sources":["../../src/test/story.ts"],"names":[],"mappings":"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"}
|
package/dist/test/story.js
CHANGED
|
@@ -5,8 +5,7 @@ const toInternal = (simulation) =>
|
|
|
5
5
|
simulation;
|
|
6
6
|
// STEPS
|
|
7
7
|
/** Sets the initial Model for a test story. */
|
|
8
|
-
export
|
|
9
|
-
const with_ = (model) => {
|
|
8
|
+
export const given = (model) => {
|
|
10
9
|
const step = (simulation) => {
|
|
11
10
|
const internal = toInternal(simulation);
|
|
12
11
|
// eslint-disable-next-line @typescript-eslint/consistent-type-assertions
|