@matheuspuel/state-machine 0.4.0 → 0.6.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 (42) hide show
  1. package/dist/definition.js.map +1 -1
  2. package/dist/dts/definition.d.ts +10 -0
  3. package/dist/dts/definition.d.ts.map +1 -1
  4. package/dist/dts/index.d.ts +1 -0
  5. package/dist/dts/index.d.ts.map +1 -1
  6. package/dist/dts/machines/Form.d.ts +80 -30
  7. package/dist/dts/machines/Form.d.ts.map +1 -1
  8. package/dist/dts/machines/QueryState.d.ts +39 -0
  9. package/dist/dts/machines/QueryState.d.ts.map +1 -0
  10. package/dist/dts/machines/index.d.ts +2 -2
  11. package/dist/dts/machines/index.d.ts.map +1 -1
  12. package/dist/index.js +1 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/machines/Form.js +147 -54
  15. package/dist/machines/Form.js.map +1 -1
  16. package/dist/machines/QueryState.js +28 -0
  17. package/dist/machines/QueryState.js.map +1 -0
  18. package/dist/machines/index.js +2 -2
  19. package/dist/machines/index.js.map +1 -1
  20. package/package.json +15 -14
  21. package/src/definition.ts +7 -0
  22. package/src/index.ts +2 -0
  23. package/src/machines/Form.test.ts +123 -6
  24. package/src/machines/Form.ts +453 -140
  25. package/src/machines/QueryState.ts +89 -0
  26. package/src/machines/index.ts +2 -2
  27. package/dist/dts/form/definition.d.ts +0 -20
  28. package/dist/dts/form/definition.d.ts.map +0 -1
  29. package/dist/dts/form/index.d.ts +0 -2
  30. package/dist/dts/form/index.d.ts.map +0 -1
  31. package/dist/dts/machines/FormValue.d.ts +0 -12
  32. package/dist/dts/machines/FormValue.d.ts.map +0 -1
  33. package/dist/form/definition.js +0 -14
  34. package/dist/form/definition.js.map +0 -1
  35. package/dist/form/index.js +0 -2
  36. package/dist/form/index.js.map +0 -1
  37. package/dist/machines/FormValue.js +0 -12
  38. package/dist/machines/FormValue.js.map +0 -1
  39. package/src/form/definition.ts +0 -33
  40. package/src/form/index.ts +0 -1
  41. package/src/machines/FormValue.test.ts +0 -18
  42. package/src/machines/FormValue.ts +0 -17
@@ -1,4 +1,4 @@
1
- export { Form } from './Form.js'
2
- export { FormValue } from './FormValue.js'
1
+ export * as Form from './Form.js'
3
2
  export { of } from './of.js'
3
+ export { QueryState, trackEffect } from './QueryState.js'
4
4
  export { Struct } from './Struct.js'
@@ -1,20 +0,0 @@
1
- import { Effect, Schema } from 'effect';
2
- import { ParseError } from 'effect/ParseResult';
3
- export type AnyForm = {
4
- [key: string]: AnyForm | FormField<any, any, any>;
5
- };
6
- export type FormField<A, I, E> = {
7
- initial: I;
8
- validate: (value: I) => Effect.Effect<A, E>;
9
- fromData: (data: A) => I;
10
- };
11
- export declare const field: <A, I, E>(args: FormField<A, I, E>) => FormField<A, I, E>;
12
- export declare const fieldSchema: <A, I>(args: {
13
- initial: I;
14
- schema: Schema.Schema<A, I>;
15
- }) => FormField<A, I, ParseError>;
16
- export declare const fieldSuccess: <A>(args: {
17
- initial: A;
18
- }) => FormField<A, A, never>;
19
- export declare const Struct: <Fields extends AnyForm>(fields: Fields) => Fields;
20
- //# sourceMappingURL=definition.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"definition.d.ts","sourceRoot":"","sources":["../../../src/form/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACvC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;CAClD,CAAA;AAED,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI;IAC/B,OAAO,EAAE,CAAC,CAAA;IACV,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAC3C,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAA;CACzB,CAAA;AAED,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,uBAAS,CAAA;AAEhE,eAAO,MAAM,WAAW,GAAI,CAAC,EAAE,CAAC,EAAE,MAAM;IACtC,OAAO,EAAE,CAAC,CAAA;IACV,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAC5B,gCAKG,CAAA;AAEJ,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,MAAM;IAAE,OAAO,EAAE,CAAC,CAAA;CAAE,2BAKhD,CAAA;AAEJ,eAAO,MAAM,MAAM,GAAI,MAAM,SAAS,OAAO,EAAE,QAAQ,MAAM,WAAW,CAAA"}
@@ -1,2 +0,0 @@
1
- export * as Form from './definition.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA"}
@@ -1,12 +0,0 @@
1
- export type FormValue<A, E> = {
2
- value: A;
3
- error: E | null;
4
- };
5
- export declare const FormValue: <A, E>(initialValue: A) => import("../definition.js").StateMachine<FormValue<A, E>, {
6
- update: (f: (previous: A) => A) => void;
7
- set: (value: A) => void;
8
- error: {
9
- set: (error: E | null) => void;
10
- };
11
- }>;
12
- //# sourceMappingURL=FormValue.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormValue.d.ts","sourceRoot":"","sources":["../../../src/machines/FormValue.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,CAAA;AAE3D,eAAO,MAAM,SAAS,GAAI,CAAC,EAAE,CAAC,EAAE,cAAc,CAAC;gBAI7B,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC;iBAEjB,CAAC;;qBAEC,CAAC,GAAG,IAAI;;EAIzB,CAAA"}
@@ -1,14 +0,0 @@
1
- import { Effect, Schema } from 'effect';
2
- export const field = (args) => args;
3
- export const fieldSchema = (args) => field({
4
- initial: args.initial,
5
- validate: Schema.decode(args.schema),
6
- fromData: Schema.encodeSync(args.schema),
7
- });
8
- export const fieldSuccess = (args) => field({
9
- initial: args.initial,
10
- validate: Effect.succeed,
11
- fromData: _ => _,
12
- });
13
- export const Struct = (fields) => fields;
14
- //# sourceMappingURL=definition.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"definition.js","sourceRoot":"","sources":["../../src/form/definition.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAavC,MAAM,CAAC,MAAM,KAAK,GAAG,CAAU,IAAwB,EAAE,EAAE,CAAC,IAAI,CAAA;AAEhE,MAAM,CAAC,MAAM,WAAW,GAAG,CAAO,IAGjC,EAAE,EAAE,CACH,KAAK,CAAmB;IACtB,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;IACpC,QAAQ,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;CACzC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,YAAY,GAAG,CAAI,IAAoB,EAAE,EAAE,CACtD,KAAK,CAAc;IACjB,OAAO,EAAE,IAAI,CAAC,OAAO;IACrB,QAAQ,EAAE,MAAM,CAAC,OAAO;IACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;CACjB,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,MAAM,GAAG,CAAyB,MAAc,EAAE,EAAE,CAAC,MAAM,CAAA"}
@@ -1,2 +0,0 @@
1
- export * as Form from './definition.js';
2
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/form/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,iBAAiB,CAAA"}
@@ -1,12 +0,0 @@
1
- import { make } from '../definition.js';
2
- export const FormValue = (initialValue) => make()({
3
- initialState: { value: initialValue, error: null },
4
- actions: ({ Store }) => ({
5
- update: (f) => Store.update(_ => ({ value: f(_.value), error: null })),
6
- set: (value) => Store.update(() => ({ value, error: null })),
7
- error: {
8
- set: (error) => Store.update(_ => ({ value: _.value, error })),
9
- },
10
- }),
11
- });
12
- //# sourceMappingURL=FormValue.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FormValue.js","sourceRoot":"","sources":["../../src/machines/FormValue.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAIvC,MAAM,CAAC,MAAM,SAAS,GAAG,CAAO,YAAe,EAAE,EAAE,CACjD,IAAI,EAAmB,CAAC;IACtB,YAAY,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,EAAE;IAClD,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACvB,MAAM,EAAE,CAAC,CAAqB,EAAE,EAAE,CAChC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,GAAG,EAAE,CAAC,KAAQ,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,KAAK,EAAE;YACL,GAAG,EAAE,CAAC,KAAe,EAAE,EAAE,CACvB,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;SACjD;KACF,CAAC;CACH,CAAC,CAAA"}
@@ -1,33 +0,0 @@
1
- import { Effect, Schema } from 'effect'
2
- import { ParseError } from 'effect/ParseResult'
3
-
4
- export type AnyForm = {
5
- [key: string]: AnyForm | FormField<any, any, any>
6
- }
7
-
8
- export type FormField<A, I, E> = {
9
- initial: I
10
- validate: (value: I) => Effect.Effect<A, E>
11
- fromData: (data: A) => I
12
- }
13
-
14
- export const field = <A, I, E>(args: FormField<A, I, E>) => args
15
-
16
- export const fieldSchema = <A, I>(args: {
17
- initial: I
18
- schema: Schema.Schema<A, I>
19
- }) =>
20
- field<A, I, ParseError>({
21
- initial: args.initial,
22
- validate: Schema.decode(args.schema),
23
- fromData: Schema.encodeSync(args.schema),
24
- })
25
-
26
- export const fieldSuccess = <A>(args: { initial: A }) =>
27
- field<A, A, never>({
28
- initial: args.initial,
29
- validate: Effect.succeed,
30
- fromData: _ => _,
31
- })
32
-
33
- export const Struct = <Fields extends AnyForm>(fields: Fields) => fields
package/src/form/index.ts DELETED
@@ -1 +0,0 @@
1
- export * as Form from './definition.js'
@@ -1,18 +0,0 @@
1
- import { describe, expect, it } from '@effect/vitest'
2
- import { StateMachine } from '@matheuspuel/state-machine'
3
- import { Effect } from 'effect'
4
-
5
- describe('FormValue', () => {
6
- it('should work', () => {
7
- const machine = StateMachine.FormValue<number, string>(0)
8
- const instance = StateMachine.run(machine)
9
- const getState = () => instance.ref.get.pipe(Effect.runSync)
10
- expect(getState()).toStrictEqual({ value: 0, error: null })
11
- instance.actions.set(1)
12
- expect(getState()).toStrictEqual({ value: 1, error: null })
13
- instance.actions.error.set('a')
14
- expect(getState()).toStrictEqual({ value: 1, error: 'a' })
15
- instance.actions.set(2)
16
- expect(getState()).toStrictEqual({ value: 2, error: null })
17
- })
18
- })
@@ -1,17 +0,0 @@
1
- import { make } from '../definition.js'
2
-
3
- export type FormValue<A, E> = { value: A; error: E | null }
4
-
5
- export const FormValue = <A, E>(initialValue: A) =>
6
- make<FormValue<A, E>>()({
7
- initialState: { value: initialValue, error: null },
8
- actions: ({ Store }) => ({
9
- update: (f: (previous: A) => A) =>
10
- Store.update(_ => ({ value: f(_.value), error: null })),
11
- set: (value: A) => Store.update(() => ({ value, error: null })),
12
- error: {
13
- set: (error: E | null) =>
14
- Store.update(_ => ({ value: _.value, error })),
15
- },
16
- }),
17
- })