@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.
- package/dist/definition.js.map +1 -1
- package/dist/dts/definition.d.ts +10 -0
- package/dist/dts/definition.d.ts.map +1 -1
- package/dist/dts/index.d.ts +1 -0
- package/dist/dts/index.d.ts.map +1 -1
- package/dist/dts/machines/Form.d.ts +80 -30
- package/dist/dts/machines/Form.d.ts.map +1 -1
- package/dist/dts/machines/QueryState.d.ts +39 -0
- package/dist/dts/machines/QueryState.d.ts.map +1 -0
- package/dist/dts/machines/index.d.ts +2 -2
- package/dist/dts/machines/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/machines/Form.js +147 -54
- package/dist/machines/Form.js.map +1 -1
- package/dist/machines/QueryState.js +28 -0
- package/dist/machines/QueryState.js.map +1 -0
- package/dist/machines/index.js +2 -2
- package/dist/machines/index.js.map +1 -1
- package/package.json +15 -14
- package/src/definition.ts +7 -0
- package/src/index.ts +2 -0
- package/src/machines/Form.test.ts +123 -6
- package/src/machines/Form.ts +453 -140
- package/src/machines/QueryState.ts +89 -0
- package/src/machines/index.ts +2 -2
- package/dist/dts/form/definition.d.ts +0 -20
- package/dist/dts/form/definition.d.ts.map +0 -1
- package/dist/dts/form/index.d.ts +0 -2
- package/dist/dts/form/index.d.ts.map +0 -1
- package/dist/dts/machines/FormValue.d.ts +0 -12
- package/dist/dts/machines/FormValue.d.ts.map +0 -1
- package/dist/form/definition.js +0 -14
- package/dist/form/definition.js.map +0 -1
- package/dist/form/index.js +0 -2
- package/dist/form/index.js.map +0 -1
- package/dist/machines/FormValue.js +0 -12
- package/dist/machines/FormValue.js.map +0 -1
- package/src/form/definition.ts +0 -33
- package/src/form/index.ts +0 -1
- package/src/machines/FormValue.test.ts +0 -18
- package/src/machines/FormValue.ts +0 -17
package/src/machines/index.ts
CHANGED
|
@@ -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"}
|
package/dist/dts/form/index.d.ts
DELETED
|
@@ -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"}
|
package/dist/form/definition.js
DELETED
|
@@ -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"}
|
package/dist/form/index.js
DELETED
package/dist/form/index.js.map
DELETED
|
@@ -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"}
|
package/src/form/definition.ts
DELETED
|
@@ -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
|
-
})
|