foldkit 0.148.2 → 0.149.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.
Files changed (80) hide show
  1. package/README.md +15 -24
  2. package/dist/message/index.d.ts +2 -1
  3. package/dist/message/index.d.ts.map +1 -1
  4. package/dist/message/index.js +1 -1
  5. package/dist/message/public.d.ts +2 -1
  6. package/dist/message/public.d.ts.map +1 -1
  7. package/dist/message/public.js +1 -1
  8. package/dist/runtime/runtime.d.ts +1 -2
  9. package/dist/runtime/runtime.d.ts.map +1 -1
  10. package/dist/schema/index.d.ts +53 -8
  11. package/dist/schema/index.d.ts.map +1 -1
  12. package/dist/schema/index.js +179 -21
  13. package/dist/subscription/subscription.d.ts +1 -1
  14. package/dist/subscription/subscription.js +1 -1
  15. package/dist/test/apps/attributes.d.ts +7 -4
  16. package/dist/test/apps/attributes.d.ts.map +1 -1
  17. package/dist/test/apps/attributes.js +6 -6
  18. package/dist/test/apps/bubbling.d.ts +8 -2
  19. package/dist/test/apps/bubbling.d.ts.map +1 -1
  20. package/dist/test/apps/bubbling.js +10 -9
  21. package/dist/test/apps/colorPicker.d.ts +7 -6
  22. package/dist/test/apps/colorPicker.d.ts.map +1 -1
  23. package/dist/test/apps/colorPicker.js +8 -7
  24. package/dist/test/apps/contextMenu.d.ts +14 -4
  25. package/dist/test/apps/contextMenu.d.ts.map +1 -1
  26. package/dist/test/apps/contextMenu.js +8 -9
  27. package/dist/test/apps/counter.d.ts +52 -24
  28. package/dist/test/apps/counter.d.ts.map +1 -1
  29. package/dist/test/apps/counter.js +23 -34
  30. package/dist/test/apps/crashOnRender.d.ts +44 -28
  31. package/dist/test/apps/crashOnRender.d.ts.map +1 -1
  32. package/dist/test/apps/crashOnRender.js +17 -20
  33. package/dist/test/apps/drafts.d.ts +19 -8
  34. package/dist/test/apps/drafts.d.ts.map +1 -1
  35. package/dist/test/apps/drafts.js +10 -11
  36. package/dist/test/apps/feedSocket.d.ts +13 -13
  37. package/dist/test/apps/feedSocket.d.ts.map +1 -1
  38. package/dist/test/apps/feedSocket.js +17 -28
  39. package/dist/test/apps/fileUpload.d.ts +7 -6
  40. package/dist/test/apps/fileUpload.d.ts.map +1 -1
  41. package/dist/test/apps/fileUpload.js +9 -8
  42. package/dist/test/apps/formChild.d.ts +40 -24
  43. package/dist/test/apps/formChild.d.ts.map +1 -1
  44. package/dist/test/apps/formChild.js +31 -32
  45. package/dist/test/apps/interactions.d.ts +16 -11
  46. package/dist/test/apps/interactions.d.ts.map +1 -1
  47. package/dist/test/apps/interactions.js +21 -24
  48. package/dist/test/apps/keypress.d.ts +11 -11
  49. package/dist/test/apps/keypress.d.ts.map +1 -1
  50. package/dist/test/apps/keypress.js +12 -12
  51. package/dist/test/apps/login.d.ts +43 -23
  52. package/dist/test/apps/login.d.ts.map +1 -1
  53. package/dist/test/apps/login.js +17 -25
  54. package/dist/test/apps/logoutButton.d.ts +12 -6
  55. package/dist/test/apps/logoutButton.d.ts.map +1 -1
  56. package/dist/test/apps/logoutButton.js +15 -11
  57. package/dist/test/apps/mountPanel.d.ts +19 -20
  58. package/dist/test/apps/mountPanel.d.ts.map +1 -1
  59. package/dist/test/apps/mountPanel.js +22 -24
  60. package/dist/test/apps/multiRole.d.ts +6 -3
  61. package/dist/test/apps/multiRole.d.ts.map +1 -1
  62. package/dist/test/apps/multiRole.js +8 -7
  63. package/dist/test/apps/pointer.d.ts +13 -6
  64. package/dist/test/apps/pointer.d.ts.map +1 -1
  65. package/dist/test/apps/pointer.js +11 -10
  66. package/dist/test/apps/resumeUpload.d.ts +11 -14
  67. package/dist/test/apps/resumeUpload.d.ts.map +1 -1
  68. package/dist/test/apps/resumeUpload.js +17 -27
  69. package/dist/test/apps/scorePanel.d.ts +6 -3
  70. package/dist/test/apps/scorePanel.d.ts.map +1 -1
  71. package/dist/test/apps/scorePanel.js +8 -7
  72. package/dist/test/apps/selectiveKeys.d.ts +5 -1
  73. package/dist/test/apps/selectiveKeys.d.ts.map +1 -1
  74. package/dist/test/apps/selectiveKeys.js +13 -12
  75. package/dist/test/apps/uploads.d.ts +52 -30
  76. package/dist/test/apps/uploads.d.ts.map +1 -1
  77. package/dist/test/apps/uploads.js +20 -30
  78. package/dist/update/update.d.ts +4 -7
  79. package/dist/update/update.d.ts.map +1 -1
  80. package/package.json +1 -1
@@ -1,31 +1,32 @@
1
- import { Match as M, Schema as S } from 'effect';
2
- import { m } from '../../message/index.js';
1
+ import { Schema as S } from 'effect';
2
+ import { defineMessageUnion } from '../../message/index.js';
3
3
  // MODEL
4
4
  export const Model = S.Struct({
5
5
  clicks: S.Number,
6
6
  doubleClicks: S.Number,
7
7
  });
8
8
  // MESSAGE
9
- const ClickedContainer = m('ClickedContainer');
10
- const DoubleClickedContainer = m('DoubleClickedContainer');
11
- const Message = S.Union([ClickedContainer, DoubleClickedContainer]);
9
+ const Message = defineMessageUnion({
10
+ ClickedContainer: {},
11
+ DoubleClickedContainer: {},
12
+ });
12
13
  // INIT
13
14
  export const initialModel = {
14
15
  clicks: 0,
15
16
  doubleClicks: 0,
16
17
  };
17
18
  // UPDATE
18
- export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
19
+ export const update = (model, message) => Message.match(message, {
19
20
  ClickedContainer: () => [{ ...model, clicks: model.clicks + 1 }, []],
20
21
  DoubleClickedContainer: () => [
21
22
  { ...model, doubleClicks: model.doubleClicks + 1 },
22
23
  [],
23
24
  ],
24
- }));
25
+ });
25
26
  // VIEW
26
27
  export const view = (model, h) => {
27
28
  return h.div([], [
28
- h.div([h.Role('option'), h.OnClick(ClickedContainer())], [h.span([], [`clicks=${model.clicks}`])]),
29
- h.div([h.Role('listitem'), h.OnDoubleClick(DoubleClickedContainer())], [h.span([], [`dbl=${model.doubleClicks}`])]),
29
+ h.div([h.Role('option'), h.OnClick(Message.ClickedContainer())], [h.span([], [`clicks=${model.clicks}`])]),
30
+ h.div([h.Role('listitem'), h.OnDoubleClick(Message.DoubleClickedContainer())], [h.span([], [`dbl=${model.doubleClicks}`])]),
30
31
  ]);
31
32
  };
@@ -12,17 +12,18 @@ export declare const Model: S.Struct<{
12
12
  readonly color: S.String;
13
13
  }>;
14
14
  export type Model = typeof Model.Type;
15
- export declare const ChangedColor: import("../../schema/index.js").CallableTaggedStruct<"ChangedColor", {
16
- value: S.String;
15
+ export declare const Message: import("../../schema/index.js").MessageUnion<{
16
+ readonly ChangedColor: {
17
+ readonly value: S.String;
18
+ };
17
19
  }>;
18
- export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ChangedColor", {
19
- value: S.String;
20
- }>]>;
21
20
  export type Message = typeof Message.Type;
22
21
  export declare const initialModel: {
23
22
  readonly color: string;
24
23
  };
25
- export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<never>];
24
+ export declare const update: (model: Model, message: Message) => readonly [{
25
+ readonly color: string;
26
+ }, readonly never[]];
26
27
  export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
27
28
  export declare const viewWithoutHandler: (model: Model, h: HtmlBuilder<Message>) => Html;
28
29
  //# sourceMappingURL=colorPicker.d.ts.map
@@ -1 +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"}
1
+ {"version":3,"file":"colorPicker.d.ts","sourceRoot":"","sources":["../../../src/test/apps/colorPicker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEpC,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,OAAO;;;;EAElB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,YAAY;;CAAmC,CAAA;AAI5D,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;oBAGjD,CAAA;AAIJ,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"}
@@ -1,6 +1,6 @@
1
- import { Match as M, Schema as S } from 'effect';
1
+ import { Schema as S } from 'effect';
2
2
  import * as CustomElement from '../../customElement/index.js';
3
- import { m } from '../../message/index.js';
3
+ import { defineMessageUnion } from '../../message/index.js';
4
4
  import { evo } from '../../struct/index.js';
5
5
  // CUSTOM ELEMENT
6
6
  export const hexColorPicker = CustomElement.define({
@@ -15,21 +15,22 @@ export const hexColorPicker = CustomElement.define({
15
15
  // MODEL
16
16
  export const Model = S.Struct({ color: S.String });
17
17
  // MESSAGE
18
- export const ChangedColor = m('ChangedColor', { value: S.String });
19
- export const Message = S.Union([ChangedColor]);
18
+ export const Message = defineMessageUnion({
19
+ ChangedColor: { value: S.String },
20
+ });
20
21
  // INIT
21
22
  export const initialModel = Model.make({ color: '#000000' });
22
23
  // UPDATE
23
- export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
24
+ export const update = (model, message) => Message.match(message, {
24
25
  ChangedColor: ({ value }) => [evo(model, { color: () => value }), []],
25
- }));
26
+ });
26
27
  // VIEW
27
28
  export const view = (model, h) => {
28
29
  const picker = hexColorPicker.withMessage(h);
29
30
  return h.div([], [
30
31
  picker([
31
32
  picker.Color(model.color),
32
- picker.OnColorChanged(detail => ChangedColor({ value: detail.value })),
33
+ picker.OnColorChanged(detail => Message.ChangedColor({ value: detail.value })),
33
34
  ], []),
34
35
  h.span([h.Role('status')], [model.color]),
35
36
  ]);
@@ -7,9 +7,11 @@ export declare const Model: S.Struct<{
7
7
  readonly openCount: S.Number;
8
8
  }>;
9
9
  export type Model = typeof Model.Type;
10
- declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"OpenedContextMenu", {
11
- source: S.Literals<readonly ["Direct", "Inner", "Outer"]>;
12
- }>]>;
10
+ declare const Message: import("../../schema/index.js").MessageUnion<{
11
+ readonly OpenedContextMenu: {
12
+ readonly source: S.Literals<readonly ["Direct", "Inner", "Outer"]>;
13
+ };
14
+ }>;
13
15
  type Message = typeof Message.Type;
14
16
  export declare const initialModel: {
15
17
  readonly contextMenu: {
@@ -20,7 +22,15 @@ export declare const initialModel: {
20
22
  };
21
23
  readonly openCount: number;
22
24
  };
23
- export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<never>];
25
+ export declare const update: (model: Model, message: Message) => readonly [{
26
+ readonly contextMenu: {
27
+ readonly _tag: "Closed";
28
+ } | {
29
+ readonly _tag: "Open";
30
+ readonly source: "Direct" | "Inner" | "Outer";
31
+ };
32
+ readonly openCount: number;
33
+ }, readonly never[]];
24
34
  export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
25
35
  export {};
26
36
  //# sourceMappingURL=contextMenu.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contextMenu.d.ts","sourceRoot":"","sources":["../../../src/test/apps/contextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAiB5D,eAAO,MAAM,KAAK;;;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAQrC,QAAA,MAAM,OAAO;;IAA+B,CAAA;AAC5C,KAAK,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIlC,eAAO,MAAM,YAAY;;;;;;;;CAGvB,CAAA;AAIF,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,KAAK,CAAC,CAYrC,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IA4C5D,CAAA"}
1
+ {"version":3,"file":"contextMenu.d.ts","sourceRoot":"","sources":["../../../src/test/apps/contextMenu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAiB5D,eAAO,MAAM,KAAK;;;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,QAAA,MAAM,OAAO;;;;EAEX,CAAA;AACF,KAAK,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIlC,eAAO,MAAM,YAAY;;;;;;;;CAGvB,CAAA;AAIF,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;oBASjD,CAAA;AAIJ,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IA8C5D,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { Match as M, Number, Schema as S } from 'effect';
2
- import { m } from '../../message/index.js';
2
+ import { defineMessageUnion } from '../../message/index.js';
3
3
  import { ts } from '../../schema/index.js';
4
4
  import { evo } from '../../struct/index.js';
5
5
  // MODEL
@@ -14,17 +14,16 @@ export const Model = S.Struct({
14
14
  openCount: S.Number,
15
15
  });
16
16
  // MESSAGE
17
- const OpenedContextMenu = m('OpenedContextMenu', {
18
- source: ContextMenuSource,
17
+ const Message = defineMessageUnion({
18
+ OpenedContextMenu: { source: ContextMenuSource },
19
19
  });
20
- const Message = S.Union([OpenedContextMenu]);
21
20
  // INIT
22
21
  export const initialModel = Model.make({
23
22
  contextMenu: Closed(),
24
23
  openCount: 0,
25
24
  });
26
25
  // UPDATE
27
- export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
26
+ export const update = (model, message) => Message.match(message, {
28
27
  OpenedContextMenu: ({ source }) => [
29
28
  evo(model, {
30
29
  contextMenu: () => Open({ source }),
@@ -32,7 +31,7 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
32
31
  }),
33
32
  [],
34
33
  ],
35
- }));
34
+ });
36
35
  // VIEW
37
36
  export const view = (model, h) => {
38
37
  const contextMenu = M.value(model.contextMenu).pipe(M.tagsExhaustive({
@@ -42,17 +41,17 @@ export const view = (model, h) => {
42
41
  return h.div([], [
43
42
  h.section([
44
43
  h.AriaLabel('outer context area'),
45
- h.OnContextMenu(OpenedContextMenu({ source: 'Outer' })),
44
+ h.OnContextMenu(Message.OpenedContextMenu({ source: 'Outer' })),
46
45
  ], [
47
46
  h.span([h.AriaLabel('outer target')], ['Outer target']),
48
47
  h.div([
49
48
  h.AriaLabel('inner context area'),
50
- h.OnContextMenu(OpenedContextMenu({ source: 'Inner' })),
49
+ h.OnContextMenu(Message.OpenedContextMenu({ source: 'Inner' })),
51
50
  ], [
52
51
  h.span([h.AriaLabel('nearest target')], ['Nearest target']),
53
52
  h.button([
54
53
  h.AriaLabel('direct target'),
55
- h.OnContextMenu(OpenedContextMenu({ source: 'Direct' })),
54
+ h.OnContextMenu(Message.OpenedContextMenu({ source: 'Direct' })),
56
55
  ], ['Direct target']),
57
56
  ]),
58
57
  ]),
@@ -6,30 +6,25 @@ export declare const Model: S.Struct<{
6
6
  readonly log: S.$Array<S.Number>;
7
7
  }>;
8
8
  export type Model = typeof Model.Type;
9
- export declare const ClickedIncrement: import("../../schema/index.js").CallableTaggedStruct<"ClickedIncrement", {}>;
10
- export declare const ClickedDecrement: import("../../schema/index.js").CallableTaggedStruct<"ClickedDecrement", {}>;
11
- export declare const ClickedFetch: import("../../schema/index.js").CallableTaggedStruct<"ClickedFetch", {}>;
12
- export declare const ClickedFetchById: import("../../schema/index.js").CallableTaggedStruct<"ClickedFetchById", {
13
- id: S.Number;
14
- }>;
15
- export declare const Ticked: import("../../schema/index.js").CallableTaggedStruct<"Ticked", {}>;
16
- export declare const PolledCount: import("../../schema/index.js").CallableTaggedStruct<"PolledCount", {}>;
17
- export declare const StartedThreeFetches: import("../../schema/index.js").CallableTaggedStruct<"StartedThreeFetches", {}>;
18
- export declare const StartedTwoFetchesById: import("../../schema/index.js").CallableTaggedStruct<"StartedTwoFetchesById", {}>;
19
- export declare const StartedMixedFetches: import("../../schema/index.js").CallableTaggedStruct<"StartedMixedFetches", {}>;
20
- export declare const SucceededFetchCount: import("../../schema/index.js").CallableTaggedStruct<"SucceededFetchCount", {
21
- count: S.Number;
22
- }>;
23
- export declare const FailedFetchCount: import("../../schema/index.js").CallableTaggedStruct<"FailedFetchCount", {
24
- error: S.String;
9
+ export declare const Message: import("../../schema/index.js").MessageUnion<{
10
+ readonly ClickedIncrement: {};
11
+ readonly ClickedDecrement: {};
12
+ readonly ClickedFetch: {};
13
+ readonly ClickedFetchById: {
14
+ readonly id: S.Number;
15
+ };
16
+ readonly Ticked: {};
17
+ readonly PolledCount: {};
18
+ readonly StartedThreeFetches: {};
19
+ readonly StartedTwoFetchesById: {};
20
+ readonly StartedMixedFetches: {};
21
+ readonly SucceededFetchCount: {
22
+ readonly count: S.Number;
23
+ };
24
+ readonly FailedFetchCount: {
25
+ readonly error: S.String;
26
+ };
25
27
  }>;
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", {
27
- id: S.Number;
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", {
29
- count: S.Number;
30
- }>, import("../../schema/index.js").CallableTaggedStruct<"FailedFetchCount", {
31
- error: S.String;
32
- }>]>;
33
28
  export type Message = typeof Message.Type;
34
29
  export declare const FetchCount: Command.CommandDefinitionNoArgs<"FetchCount", Effect.Effect<{
35
30
  readonly _tag: "SucceededFetchCount";
@@ -42,6 +37,39 @@ export declare const FetchCountById: Command.CommandDefinitionWithArgs<"FetchCou
42
37
  readonly count: number;
43
38
  }, never, never>>;
44
39
  export declare const initialModel: Model;
45
- export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
40
+ export declare const update: (model: Model, message: Message) => readonly [{
41
+ readonly count: number;
42
+ readonly log: readonly number[];
43
+ }, readonly Readonly<{
44
+ name: string;
45
+ args?: Record<string, unknown>;
46
+ key?: string;
47
+ effect: Effect.Effect<{
48
+ readonly _tag: "ClickedIncrement";
49
+ } | {
50
+ readonly _tag: "ClickedDecrement";
51
+ } | {
52
+ readonly _tag: "ClickedFetch";
53
+ } | {
54
+ readonly _tag: "ClickedFetchById";
55
+ readonly id: number;
56
+ } | {
57
+ readonly _tag: "Ticked";
58
+ } | {
59
+ readonly _tag: "PolledCount";
60
+ } | {
61
+ readonly _tag: "StartedThreeFetches";
62
+ } | {
63
+ readonly _tag: "StartedTwoFetchesById";
64
+ } | {
65
+ readonly _tag: "StartedMixedFetches";
66
+ } | {
67
+ readonly _tag: "SucceededFetchCount";
68
+ readonly count: number;
69
+ } | {
70
+ readonly _tag: "FailedFetchCount";
71
+ readonly error: string;
72
+ }, never, never>;
73
+ }>[]];
46
74
  export declare const view: (model: Model, h: HtmlBuilder<Message>) => Html;
47
75
  //# sourceMappingURL=counter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../../src/test/apps/counter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAsB,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEvE,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAM5D,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,YAAY,0EAAoB,CAAA;AAC7C,eAAO,MAAM,gBAAgB;;EAA0C,CAAA;AACvE,eAAO,MAAM,MAAM,oEAAc,CAAA;AACjC,eAAO,MAAM,WAAW,yEAAmB,CAAA;AAC3C,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,qBAAqB,mFAA6B,CAAA;AAC/D,eAAO,MAAM,mBAAmB,iFAA2B,CAAA;AAC3D,eAAO,MAAM,mBAAmB;;EAAgD,CAAA;AAChF,eAAO,MAAM,gBAAgB;;EAA6C,CAAA;AAE1E,eAAO,MAAM,OAAO;;;;;;IAYlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,UAAU;;;iBAGrB,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;iBAIzB,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,KAA6B,CAAA;AAIxD,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAmCxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAe5D,CAAA"}
1
+ {"version":3,"file":"counter.d.ts","sourceRoot":"","sources":["../../../src/test/apps/counter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAU,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE3D,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,OAAO;;;;;;;;;;;;;;;;;;EAYlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,UAAU;;;iBAGrB,CAAA;AAEF,eAAO,MAAM,cAAc;;;;;iBAKzB,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,KAA6B,CAAA;AAIxD,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAiClD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,IAe5D,CAAA"}
@@ -1,6 +1,6 @@
1
- import { Array, Effect, Match as M, Number, Schema as S } from 'effect';
1
+ import { Array, Effect, Number, Schema as S } from 'effect';
2
2
  import * as Command from '../../command/index.js';
3
- import { m } from '../../message/index.js';
3
+ import { defineMessageUnion } from '../../message/index.js';
4
4
  import { evo } from '../../struct/index.js';
5
5
  // MODEL
6
6
  export const Model = S.Struct({
@@ -8,44 +8,33 @@ export const Model = S.Struct({
8
8
  log: S.Array(S.Number),
9
9
  });
10
10
  // MESSAGE
11
- export const ClickedIncrement = m('ClickedIncrement');
12
- export const ClickedDecrement = m('ClickedDecrement');
13
- export const ClickedFetch = m('ClickedFetch');
14
- export const ClickedFetchById = m('ClickedFetchById', { id: S.Number });
15
- export const Ticked = m('Ticked');
16
- export const PolledCount = m('PolledCount');
17
- export const StartedThreeFetches = m('StartedThreeFetches');
18
- export const StartedTwoFetchesById = m('StartedTwoFetchesById');
19
- export const StartedMixedFetches = m('StartedMixedFetches');
20
- export const SucceededFetchCount = m('SucceededFetchCount', { count: S.Number });
21
- export const FailedFetchCount = m('FailedFetchCount', { error: S.String });
22
- export const Message = S.Union([
23
- ClickedIncrement,
24
- ClickedDecrement,
25
- ClickedFetch,
26
- ClickedFetchById,
27
- Ticked,
28
- PolledCount,
29
- StartedThreeFetches,
30
- StartedTwoFetchesById,
31
- StartedMixedFetches,
32
- SucceededFetchCount,
33
- FailedFetchCount,
34
- ]);
11
+ export const Message = defineMessageUnion({
12
+ ClickedIncrement: {},
13
+ ClickedDecrement: {},
14
+ ClickedFetch: {},
15
+ ClickedFetchById: { id: S.Number },
16
+ Ticked: {},
17
+ PolledCount: {},
18
+ StartedThreeFetches: {},
19
+ StartedTwoFetchesById: {},
20
+ StartedMixedFetches: {},
21
+ SucceededFetchCount: { count: S.Number },
22
+ FailedFetchCount: { error: S.String },
23
+ });
35
24
  // COMMAND
36
25
  export const FetchCount = Command.define('FetchCount', {
37
- messages: [SucceededFetchCount, FailedFetchCount],
38
- execute: Effect.sync(() => SucceededFetchCount({ count: 0 })),
26
+ messages: [Message.SucceededFetchCount, Message.FailedFetchCount],
27
+ execute: Effect.sync(() => Message.SucceededFetchCount({ count: 0 })),
39
28
  });
40
29
  export const FetchCountById = Command.define('FetchCountById', {
41
30
  args: { id: S.Number },
42
- messages: [SucceededFetchCount, FailedFetchCount],
43
- execute: ({ id }) => Effect.sync(() => SucceededFetchCount({ count: id })),
31
+ messages: [Message.SucceededFetchCount, Message.FailedFetchCount],
32
+ execute: ({ id }) => Effect.sync(() => Message.SucceededFetchCount({ count: id })),
44
33
  });
45
34
  // INIT
46
35
  export const initialModel = { count: 0, log: [] };
47
36
  // UPDATE
48
- export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
37
+ export const update = (model, message) => Message.match(message, {
49
38
  ClickedIncrement: () => [evo(model, { count: Number.increment }), []],
50
39
  ClickedDecrement: () => [evo(model, { count: Number.decrement }), []],
51
40
  ClickedFetch: () => [model, [FetchCount()]],
@@ -74,12 +63,12 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
74
63
  [],
75
64
  ],
76
65
  FailedFetchCount: () => [model, []],
77
- }));
66
+ });
78
67
  // VIEW
79
68
  export const view = (model, h) => {
80
69
  return h.div([], [
81
70
  h.span([h.Role('status')], [`count: ${model.count}`]),
82
- h.button([h.OnClick(StartedThreeFetches()), h.Role('button')], ['Start three fetches']),
83
- h.button([h.OnClick(StartedTwoFetchesById()), h.Role('button')], ['Start two fetches by id']),
71
+ h.button([h.OnClick(Message.StartedThreeFetches()), h.Role('button')], ['Start three fetches']),
72
+ h.button([h.OnClick(Message.StartedTwoFetchesById()), h.Role('button')], ['Start two fetches by id']),
84
73
  ]);
85
74
  };
@@ -18,35 +18,24 @@ export declare const Model: S.Struct<{
18
18
  }>>;
19
19
  }>;
20
20
  export type Model = typeof Model.Type;
21
- export declare const ClickedReload: import("../../schema/index.js").CallableTaggedStruct<"ClickedReload", {}>;
22
- export declare const CompletedReloadSources: import("../../schema/index.js").CallableTaggedStruct<"CompletedReloadSources", {
23
- sources: S.$Array<S.Struct<{
24
- readonly kind: S.Literal<"Book">;
25
- readonly id: S.String;
26
- }>>;
27
- }>;
28
- export declare const SelectedSource: import("../../schema/index.js").CallableTaggedStruct<"SelectedSource", {
29
- source: S.Struct<{
30
- readonly kind: S.Literal<"Book">;
21
+ export declare const Message: import("../../schema/index.js").MessageUnion<{
22
+ readonly ClickedReload: {};
23
+ readonly CompletedReloadSources: {
24
+ readonly sources: S.$Array<S.Struct<{
25
+ readonly kind: S.Literal<"Book">;
26
+ readonly id: S.String;
27
+ }>>;
28
+ };
29
+ readonly SelectedSource: {
30
+ readonly source: S.Struct<{
31
+ readonly kind: S.Literal<"Book">;
32
+ readonly id: S.String;
33
+ }>;
34
+ };
35
+ readonly SubmittedNewSourceId: {
31
36
  readonly id: S.String;
32
- }>;
33
- }>;
34
- export declare const SubmittedNewSourceId: import("../../schema/index.js").CallableTaggedStruct<"SubmittedNewSourceId", {
35
- id: S.String;
37
+ };
36
38
  }>;
37
- export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedReload", {}>, import("../../schema/index.js").CallableTaggedStruct<"CompletedReloadSources", {
38
- sources: S.$Array<S.Struct<{
39
- readonly kind: S.Literal<"Book">;
40
- readonly id: S.String;
41
- }>>;
42
- }>, import("../../schema/index.js").CallableTaggedStruct<"SelectedSource", {
43
- source: S.Struct<{
44
- readonly kind: S.Literal<"Book">;
45
- readonly id: S.String;
46
- }>;
47
- }>, import("../../schema/index.js").CallableTaggedStruct<"SubmittedNewSourceId", {
48
- id: S.String;
49
- }>]>;
50
39
  export type Message = typeof Message.Type;
51
40
  export declare const reloadedSources: ReadonlyArray<RawSource>;
52
41
  export declare const ReloadSources: Command.CommandDefinitionNoArgs<"ReloadSources", Effect.Effect<{
@@ -59,6 +48,33 @@ export declare const ReloadSources: Command.CommandDefinitionNoArgs<"ReloadSourc
59
48
  export declare const validSources: ReadonlyArray<RawSource>;
60
49
  export declare const malformedSources: ReadonlyArray<RawSource>;
61
50
  export declare const initialModel: Model;
62
- export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
51
+ export declare const update: (model: Model, message: Message) => readonly [{
52
+ readonly sources: readonly {
53
+ readonly kind: "Book";
54
+ readonly id: string;
55
+ }[];
56
+ }, readonly Readonly<{
57
+ name: string;
58
+ args?: Record<string, unknown>;
59
+ key?: string;
60
+ effect: Effect.Effect<{
61
+ readonly _tag: "ClickedReload";
62
+ } | {
63
+ readonly _tag: "CompletedReloadSources";
64
+ readonly sources: readonly {
65
+ readonly kind: "Book";
66
+ readonly id: string;
67
+ }[];
68
+ } | {
69
+ readonly _tag: "SelectedSource";
70
+ readonly source: {
71
+ readonly kind: "Book";
72
+ readonly id: string;
73
+ };
74
+ } | {
75
+ readonly _tag: "SubmittedNewSourceId";
76
+ readonly id: string;
77
+ }, never, never>;
78
+ }>[]];
63
79
  export declare const view: (model: Model, h: HtmlBuilder<Message>) => Document;
64
80
  //# sourceMappingURL=crashOnRender.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"crashOnRender.d.ts","sourceRoot":"","sources":["../../../src/test/apps/crashOnRender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAE/D,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAMhE,eAAO,MAAM,SAAS;;;EAGpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAK7C,eAAO,MAAM,MAAM;;;EAGjB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AAEvC,eAAO,MAAM,KAAK;;;;;EAEhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,aAAa,2EAAqB,CAAA;AAC/C,eAAO,MAAM,sBAAsB;;;;;EAEjC,CAAA;AACF,eAAO,MAAM,cAAc;;;;;EAA0C,CAAA;AACrE,eAAO,MAAM,oBAAoB;;EAA8C,CAAA;AAE/E,eAAO,MAAM,OAAO;;;;;;;;;;;;IAKlB,CAAA;AACF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAMzC,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,SAAS,CAGpD,CAAA;AAED,eAAO,MAAM,aAAa;;;;;;iBAGxB,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,SAAS,CAEjD,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAErD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAiC,CAAA;AAI5D,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAiBxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,QA4B5D,CAAA"}
1
+ {"version":3,"file":"crashOnRender.d.ts","sourceRoot":"","sources":["../../../src/test/apps/crashOnRender.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAEnD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAMhE,eAAO,MAAM,SAAS;;;EAGpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;AAK7C,eAAO,MAAM,MAAM;;;EAGjB,CAAA;AACF,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,IAAI,CAAA;AAEvC,eAAO,MAAM,KAAK;;;;;EAEhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,OAAO;;;;;;;;;;;;;;;;;EAKlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAMzC,eAAO,MAAM,eAAe,EAAE,aAAa,CAAC,SAAS,CAGpD,CAAA;AAED,eAAO,MAAM,aAAa;;;;;;iBAKxB,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,aAAa,CAAC,SAAS,CAEjD,CAAA;AAED,eAAO,MAAM,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAErD,CAAA;AAED,eAAO,MAAM,YAAY,EAAE,KAAiC,CAAA;AAI5D,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;KAelD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,QAkC5D,CAAA"}
@@ -1,6 +1,6 @@
1
- import { Array, Effect, Match as M, Schema as S } from 'effect';
1
+ import { Array, Effect, Schema as S } from 'effect';
2
2
  import * as Command from '../../command/index.js';
3
- import { m } from '../../message/index.js';
3
+ import { defineMessageUnion } from '../../message/index.js';
4
4
  import { evo } from '../../struct/index.js';
5
5
  // MODEL
6
6
  export const RawSource = S.Struct({
@@ -18,18 +18,12 @@ export const Model = S.Struct({
18
18
  sources: S.Array(RawSource),
19
19
  });
20
20
  // MESSAGE
21
- export const ClickedReload = m('ClickedReload');
22
- export const CompletedReloadSources = m('CompletedReloadSources', {
23
- sources: S.Array(RawSource),
21
+ export const Message = defineMessageUnion({
22
+ ClickedReload: {},
23
+ CompletedReloadSources: { sources: S.Array(RawSource) },
24
+ SelectedSource: { source: Source },
25
+ SubmittedNewSourceId: { id: S.String },
24
26
  });
25
- export const SelectedSource = m('SelectedSource', { source: Source });
26
- export const SubmittedNewSourceId = m('SubmittedNewSourceId', { id: S.String });
27
- export const Message = S.Union([
28
- ClickedReload,
29
- CompletedReloadSources,
30
- SelectedSource,
31
- SubmittedNewSourceId,
32
- ]);
33
27
  // COMMAND
34
28
  // NOTE: the malformed entry (empty id) sits inertly as a RawSource until the
35
29
  // view rebuilds its SelectedSource handler, which constructs a Source and throws.
@@ -38,8 +32,8 @@ export const reloadedSources = [
38
32
  { kind: 'Book', id: '' },
39
33
  ];
40
34
  export const ReloadSources = Command.define('ReloadSources', {
41
- messages: [CompletedReloadSources],
42
- execute: Effect.succeed(CompletedReloadSources({ sources: reloadedSources })),
35
+ messages: [Message.CompletedReloadSources],
36
+ execute: Effect.succeed(Message.CompletedReloadSources({ sources: reloadedSources })),
43
37
  });
44
38
  // INIT
45
39
  export const validSources = [
@@ -50,7 +44,7 @@ export const malformedSources = [
50
44
  ];
51
45
  export const initialModel = { sources: validSources };
52
46
  // UPDATE
53
- export const update = (model, message) => M.value(message).pipe(M.withReturnType(), M.tagsExhaustive({
47
+ export const update = (model, message) => Message.match(message, {
54
48
  ClickedReload: () => [model, [ReloadSources()]],
55
49
  CompletedReloadSources: ({ sources }) => [
56
50
  evo(model, { sources: () => sources }),
@@ -61,14 +55,17 @@ export const update = (model, message) => M.value(message).pipe(M.withReturnType
61
55
  const source = Source.make({ kind: 'Book', id });
62
56
  return [evo(model, { sources: Array.append(source) }), []];
63
57
  },
64
- }));
58
+ });
65
59
  // VIEW
66
60
  export const view = (model, h) => {
67
61
  const body = h.div([], [
68
- h.button([h.OnClick(ClickedReload()), h.Role('button')], ['Reload']),
69
- h.button([h.OnClick(SubmittedNewSourceId({ id: '' })), h.Role('button')], ['Add source']),
62
+ h.button([h.OnClick(Message.ClickedReload()), h.Role('button')], ['Reload']),
63
+ h.button([h.OnClick(Message.SubmittedNewSourceId({ id: '' })), h.Role('button')], ['Add source']),
70
64
  h.ul([h.Role('list')], Array.map(model.sources, source => h.keyed('li')(source.id, [], [
71
- h.button([h.OnClick(SelectedSource({ source })), h.Role('button')], [`Select ${source.id}`]),
65
+ h.button([
66
+ h.OnClick(Message.SelectedSource({ source })),
67
+ h.Role('button'),
68
+ ], [`Select ${source.id}`]),
72
69
  ]))),
73
70
  ]);
74
71
  return { title: 'Sources', body };
@@ -1,5 +1,4 @@
1
1
  import { Effect, Schema as S } from 'effect';
2
- import * as Command from '../../command/index.js';
3
2
  import type { Document, HtmlBuilder } from '../../html/index.js';
4
3
  export declare const SaveStatus: S.Literals<readonly ["Editing", "Saving", "Saved"]>;
5
4
  export type SaveStatus = typeof SaveStatus.Type;
@@ -8,13 +7,12 @@ export declare const Model: S.Struct<{
8
7
  readonly status: S.Literals<readonly ["Editing", "Saving", "Saved"]>;
9
8
  }>;
10
9
  export type Model = typeof Model.Type;
11
- export declare const ClickedSaveDraft: import("../../schema/index.js").CallableTaggedStruct<"ClickedSaveDraft", {}>;
12
- export declare const SucceededSaveDraft: import("../../schema/index.js").CallableTaggedStruct<"SucceededSaveDraft", {
13
- revision: S.Number;
10
+ export declare const Message: import("../../schema/index.js").MessageUnion<{
11
+ readonly ClickedSaveDraft: {};
12
+ readonly SucceededSaveDraft: {
13
+ readonly revision: S.Number;
14
+ };
14
15
  }>;
15
- export declare const Message: S.Union<readonly [import("../../schema/index.js").CallableTaggedStruct<"ClickedSaveDraft", {}>, import("../../schema/index.js").CallableTaggedStruct<"SucceededSaveDraft", {
16
- revision: S.Number;
17
- }>]>;
18
16
  export type Message = typeof Message.Type;
19
17
  export declare const SaveDraftArgs: S.Struct<{
20
18
  readonly revision: S.Number;
@@ -27,6 +25,19 @@ export declare const SaveDraft: import("../../command/interruptible/interruptibl
27
25
  readonly revision: number;
28
26
  }, never, never>>;
29
27
  export declare const initialModel: Model;
30
- export declare const update: (model: Model, message: Message) => readonly [Model, ReadonlyArray<Command.Command<Message>>];
28
+ export declare const update: (model: Model, message: Message) => readonly [{
29
+ readonly revision: number;
30
+ readonly status: "Editing" | "Saving" | "Saved";
31
+ }, readonly Readonly<{
32
+ name: string;
33
+ args?: Record<string, unknown>;
34
+ key?: string;
35
+ effect: Effect.Effect<{
36
+ readonly _tag: "ClickedSaveDraft";
37
+ } | {
38
+ readonly _tag: "SucceededSaveDraft";
39
+ readonly revision: number;
40
+ }, never, never>;
41
+ }>[]];
31
42
  export declare const view: (model: Model, h: HtmlBuilder<Message>) => Document;
32
43
  //# sourceMappingURL=drafts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"drafts.d.ts","sourceRoot":"","sources":["../../../src/test/apps/drafts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAc,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,KAAK,OAAO,MAAM,wBAAwB,CAAA;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAMhE,eAAO,MAAM,UAAU,qDAA6C,CAAA;AACpE,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,gBAAgB,8EAAwB,CAAA;AACrD,eAAO,MAAM,kBAAkB;;EAE7B,CAAA;AAEF,eAAO,MAAM,OAAO;;IAAkD,CAAA;AACtE,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,aAAa;;EAAmC,CAAA;AAC7D,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,SAAS;;;;;iBAMpB,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,KAA0C,CAAA;AAIrE,eAAO,MAAM,MAAM,GACjB,OAAO,KAAK,EACZ,SAAS,OAAO,KACf,SAAS,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAYxD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,QAU5D,CAAA"}
1
+ {"version":3,"file":"drafts.d.ts","sourceRoot":"","sources":["../../../src/test/apps/drafts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,EAAE,MAAM,QAAQ,CAAA;AAG5C,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAMhE,eAAO,MAAM,UAAU,qDAA6C,CAAA;AACpE,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,KAAK;;;EAGhB,CAAA;AACF,MAAM,MAAM,KAAK,GAAG,OAAO,KAAK,CAAC,IAAI,CAAA;AAIrC,eAAO,MAAM,OAAO;;;;;EAGlB,CAAA;AAEF,MAAM,MAAM,OAAO,GAAG,OAAO,OAAO,CAAC,IAAI,CAAA;AAIzC,eAAO,MAAM,aAAa;;EAAmC,CAAA;AAC7D,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;AAErD,eAAO,MAAM,SAAS;;;;;iBAMpB,CAAA;AAIF,eAAO,MAAM,YAAY,EAAE,KAA0C,CAAA;AAIrE,eAAO,MAAM,MAAM,GAAI,OAAO,KAAK,EAAE,SAAS,OAAO;;;;;;;;;;;;;KAUlD,CAAA;AAIH,eAAO,MAAM,IAAI,GAAI,OAAO,KAAK,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,KAAG,QAU5D,CAAA"}