@clicktap/state 0.1.3 → 0.8.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.
@@ -0,0 +1,38 @@
1
+ import { DoneActorEvent } from 'xstate';
2
+ import type { CartMachineContext, AddItemSuccessEvent } from './types';
3
+ export declare const cartMachine: import("xstate").StateMachine<CartMachineContext, import("./types").AddItemEvent | import("./types").RemoveItemEvent | import("./types").ResetItemsEvent | import("./types").SetEmptyEvent | import("./types").SetActiveEvent | DoneActorEvent<AddItemSuccessEvent> | DoneActorEvent<import("./types").RemoveItemSuccessEvent> | DoneActorEvent<import("./types").ResetItemsSuccessEvent>, {
4
+ [x: string]: import("xstate").ActorRef<import("xstate").PromiseSnapshot<AddItemSuccessEvent, {
5
+ cartToken: CartMachineContext['cartToken'];
6
+ }>, {
7
+ [k: string]: unknown;
8
+ type: string;
9
+ }> | undefined;
10
+ }, {
11
+ src: "addItem";
12
+ logic: import("xstate").PromiseActorLogic<AddItemSuccessEvent, {
13
+ cartToken: CartMachineContext['cartToken'];
14
+ }>;
15
+ id: string | undefined;
16
+ }, {
17
+ type: "addItem";
18
+ params: import("xstate").NonReducibleUnknown;
19
+ }, {
20
+ type: string;
21
+ params: import("xstate").NonReducibleUnknown;
22
+ }, string, {}, string, {
23
+ initialContext: Partial<CartMachineContext>;
24
+ initialState?: string | undefined;
25
+ }, import("xstate").NonReducibleUnknown, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, import("./types").AddItemEvent | import("./types").RemoveItemEvent | import("./types").ResetItemsEvent | import("./types").SetEmptyEvent | import("./types").SetActiveEvent | DoneActorEvent<AddItemSuccessEvent> | DoneActorEvent<import("./types").RemoveItemSuccessEvent> | DoneActorEvent<import("./types").ResetItemsSuccessEvent>, {
26
+ src: "addItem";
27
+ logic: import("xstate").PromiseActorLogic<AddItemSuccessEvent, {
28
+ cartToken: CartMachineContext['cartToken'];
29
+ }>;
30
+ id: string | undefined;
31
+ }, {
32
+ type: "addItem";
33
+ params: import("xstate").NonReducibleUnknown;
34
+ }, {
35
+ type: string;
36
+ params: import("xstate").NonReducibleUnknown;
37
+ }, string, string>>;
38
+ export default cartMachine;
@@ -0,0 +1,51 @@
1
+ import { DoneActorEvent } from 'xstate';
2
+ export type CartItem = {
3
+ id: number | string;
4
+ image: string | null;
5
+ name: string;
6
+ price: {
7
+ base: number;
8
+ adjusted?: number;
9
+ };
10
+ quantity: number;
11
+ };
12
+ export interface CartMachineContext {
13
+ cartToken: string;
14
+ currency: string;
15
+ items: Array<CartItem>;
16
+ user: object | null;
17
+ }
18
+ export interface AddItemEvent {
19
+ type: 'ADD_ITEM';
20
+ id: string;
21
+ quantity: number;
22
+ }
23
+ export interface RemoveItemEvent {
24
+ type: 'REMOVE_ITEM';
25
+ id: string;
26
+ quantity: number;
27
+ }
28
+ export interface ResetItemsEvent {
29
+ type: 'RESET_ITEMS';
30
+ }
31
+ export interface SetEmptyEvent {
32
+ type: 'SET_EMPTY';
33
+ }
34
+ export interface SetActiveEvent {
35
+ type: 'SET_ACTIVE';
36
+ }
37
+ export interface AddItemSuccessEvent {
38
+ type: 'ADD_ITEM_SUCCESS';
39
+ [k: string]: any;
40
+ }
41
+ export interface RemoveItemSuccessEvent {
42
+ type: 'ADD_ITEM_SUCCESS';
43
+ }
44
+ export interface ResetItemsSuccessEvent {
45
+ type: 'RESET_ITEMS_SUCCESS';
46
+ }
47
+ export type CartMachineEvents = AddItemEvent | RemoveItemEvent | ResetItemsEvent | SetEmptyEvent | SetActiveEvent | DoneActorEvent<AddItemSuccessEvent> | DoneActorEvent<RemoveItemSuccessEvent> | DoneActorEvent<ResetItemsSuccessEvent>;
48
+ export type AddItemResponse = {
49
+ message?: string;
50
+ success: boolean;
51
+ };
@@ -0,0 +1,2 @@
1
+ export declare function request<T>(url: string, options: object): Promise<T>;
2
+ export default request;
@@ -1,17 +1,69 @@
1
- import type { InterpreterFrom } from 'xstate';
1
+ import type { Actor } from 'xstate';
2
2
  import type { ReactNode } from 'react';
3
3
  import { toastMachine } from './toast';
4
- export declare const ToastContext: import("react").Context<import("xstate").Interpreter<import("./toast").ToastMachineContext, any, import("./toast").ToastMachineEvents, {
5
- value: any;
6
- context: import("./toast").ToastMachineContext;
7
- }, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, import("./toast").ToastMachineEvents, import("xstate").BaseActionObject, import("xstate").ServiceMap>>>;
8
- export declare const useToast: () => import("xstate").Interpreter<import("./toast").ToastMachineContext, any, import("./toast").ToastMachineEvents, {
9
- value: any;
10
- context: import("./toast").ToastMachineContext;
11
- }, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, import("./toast").ToastMachineEvents, import("xstate").BaseActionObject, import("xstate").ServiceMap>>;
4
+ export declare const ToastContext: import("react").Context<Actor<import("xstate").StateMachine<import("./types").ToastMachineContext, import("./types").AddItemEvent | import("./types").RemoveItemEvent | import("./types").SetIdleEvent | import("./types").SetActiveEvent | import("./types").ResumeTimerEvent | import("./types").PauseTimerEvent | import("./types").TimerDoneEvent, Record<string, import("xstate").AnyActorRef>, {
5
+ src: string;
6
+ logic: import("xstate").UnknownActorLogic;
7
+ id: string | undefined;
8
+ }, {
9
+ type: "addItem";
10
+ params: import("xstate").NonReducibleUnknown;
11
+ } | {
12
+ type: "removeItem";
13
+ params: import("xstate").NonReducibleUnknown;
14
+ }, {
15
+ type: "itemHasTimeout";
16
+ params: unknown;
17
+ }, "ITEM_TIMEOUT", {}, string, {
18
+ initialContext: Partial<import("./types").ToastMachineContext>;
19
+ initialState?: string | undefined;
20
+ }, import("xstate").NonReducibleUnknown, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, import("./types").AddItemEvent | import("./types").RemoveItemEvent | import("./types").SetIdleEvent | import("./types").SetActiveEvent | import("./types").ResumeTimerEvent | import("./types").PauseTimerEvent | import("./types").TimerDoneEvent, {
21
+ src: string;
22
+ logic: import("xstate").UnknownActorLogic;
23
+ id: string | undefined;
24
+ }, {
25
+ type: "addItem";
26
+ params: import("xstate").NonReducibleUnknown;
27
+ } | {
28
+ type: "removeItem";
29
+ params: import("xstate").NonReducibleUnknown;
30
+ }, {
31
+ type: "itemHasTimeout";
32
+ params: unknown;
33
+ }, "ITEM_TIMEOUT", string>>>>;
34
+ export declare const useToast: () => Actor<import("xstate").StateMachine<import("./types").ToastMachineContext, import("./types").AddItemEvent | import("./types").RemoveItemEvent | import("./types").SetIdleEvent | import("./types").SetActiveEvent | import("./types").ResumeTimerEvent | import("./types").PauseTimerEvent | import("./types").TimerDoneEvent, Record<string, import("xstate").AnyActorRef>, {
35
+ src: string;
36
+ logic: import("xstate").UnknownActorLogic;
37
+ id: string | undefined;
38
+ }, {
39
+ type: "addItem";
40
+ params: import("xstate").NonReducibleUnknown;
41
+ } | {
42
+ type: "removeItem";
43
+ params: import("xstate").NonReducibleUnknown;
44
+ }, {
45
+ type: "itemHasTimeout";
46
+ params: unknown;
47
+ }, "ITEM_TIMEOUT", {}, string, {
48
+ initialContext: Partial<import("./types").ToastMachineContext>;
49
+ initialState?: string | undefined;
50
+ }, import("xstate").NonReducibleUnknown, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, import("./types").AddItemEvent | import("./types").RemoveItemEvent | import("./types").SetIdleEvent | import("./types").SetActiveEvent | import("./types").ResumeTimerEvent | import("./types").PauseTimerEvent | import("./types").TimerDoneEvent, {
51
+ src: string;
52
+ logic: import("xstate").UnknownActorLogic;
53
+ id: string | undefined;
54
+ }, {
55
+ type: "addItem";
56
+ params: import("xstate").NonReducibleUnknown;
57
+ } | {
58
+ type: "removeItem";
59
+ params: import("xstate").NonReducibleUnknown;
60
+ }, {
61
+ type: "itemHasTimeout";
62
+ params: unknown;
63
+ }, "ITEM_TIMEOUT", string>>>;
12
64
  type Props = {
13
65
  children: ReactNode;
14
- service: InterpreterFrom<typeof toastMachine>;
66
+ actor: Actor<typeof toastMachine>;
15
67
  };
16
- export declare function ToastProvider({ children, service, }: Props): JSX.Element;
68
+ export declare function ToastProvider({ children, actor, }: Props): import("react/jsx-runtime").JSX.Element;
17
69
  export {};
@@ -1,26 +1,26 @@
1
- /// <reference types="node" />
2
- export interface TimerContext {
3
- elapsed: number;
4
- duration: number;
5
- interval: number;
6
- intervalId: NodeJS.Timer | null;
7
- }
8
- export type TimerEvents = {
9
- type: 'START_TIMER';
10
- } | {
11
- type: 'RESUME_TIMER';
12
- } | {
13
- type: 'PAUSE_TIMER';
14
- } | {
15
- type: 'TICK';
16
- } | {
17
- type: 'DURATION.UPDATE';
18
- value: number;
19
- } | {
20
- type: 'RESET_TIMER';
21
- };
22
- export declare const timerMachine: import("xstate").StateMachine<TimerContext, any, TimerEvents, {
23
- value: any;
24
- context: TimerContext;
25
- }, import("xstate").BaseActionObject, import("xstate").ServiceMap, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, TimerEvents, import("xstate").BaseActionObject, import("xstate").ServiceMap>>;
1
+ import { TimerContext, TimerTickEvent } from './types';
2
+ export declare const timerMachine: import("xstate").StateMachine<TimerContext, import("./types").StartTimerEvent | import("./types").ResumeTimerEvent | import("./types").PauseTimerEvent | TimerTickEvent | import("./types").TimerDurationUpdateEvent | import("./types").ResetTimerEvent, Record<string, import("xstate").AnyActorRef>, {
3
+ src: string;
4
+ logic: import("xstate").UnknownActorLogic;
5
+ id: string | undefined;
6
+ }, {
7
+ type: string;
8
+ params: import("xstate").NonReducibleUnknown;
9
+ }, {
10
+ type: string;
11
+ params: import("xstate").NonReducibleUnknown;
12
+ }, string, "running" | "paused" | "completed", string, {
13
+ initialContext: Partial<TimerContext>;
14
+ initialState?: string | undefined;
15
+ }, import("xstate").NonReducibleUnknown, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, import("./types").StartTimerEvent | import("./types").ResumeTimerEvent | import("./types").PauseTimerEvent | TimerTickEvent | import("./types").TimerDurationUpdateEvent | import("./types").ResetTimerEvent, {
16
+ src: string;
17
+ logic: import("xstate").UnknownActorLogic;
18
+ id: string | undefined;
19
+ }, {
20
+ type: string;
21
+ params: import("xstate").NonReducibleUnknown;
22
+ }, {
23
+ type: string;
24
+ params: import("xstate").NonReducibleUnknown;
25
+ }, string, string>>;
26
26
  export default timerMachine;
@@ -1,46 +1,32 @@
1
- import { ReactNode } from 'react';
2
- import type { ReactElement } from 'react';
3
- /** @todo figure out TS here */
4
- export type ToastItem = {
5
- id: string | null;
6
- duration: number;
7
- element: ReactNode;
8
- };
9
- export interface ToastMachineContext {
10
- /** @todo create proper type for Array items */
11
- items: Array<ToastItem>;
12
- order: 'asc' | 'desc';
13
- duration: number;
14
- activeItem: string | null;
15
- }
16
- export interface AddItemEvent {
17
- type: 'ADD_ITEM';
18
- item: ReactElement;
19
- duration?: number;
20
- }
21
- export interface RemoveItemEvent {
22
- type: 'REMOVE_ITEM';
23
- }
24
- export interface SetIdleEvent {
25
- type: 'SET_IDLE';
26
- }
27
- export interface SetActiveEvent {
28
- type: 'SET_ACTIVE';
29
- }
30
- export interface ResumeTimerEvent {
31
- type: 'RESUME_TIMER';
32
- }
33
- export interface PauseTimerEvent {
34
- type: 'PAUSE_TIMER';
35
- }
36
- export interface TimeoutEvent {
37
- type: 'xstate.after(ITEM_TIMEOUT)#toast.active';
38
- }
39
- export interface TimerDoneEvent {
40
- type: 'done.invoke.timer';
41
- }
42
- export type ToastMachineEvents = AddItemEvent | RemoveItemEvent | SetIdleEvent | SetActiveEvent | TimeoutEvent | ResumeTimerEvent | PauseTimerEvent | TimerDoneEvent;
43
- export declare const toastMachine: import("xstate").StateMachine<ToastMachineContext, any, ToastMachineEvents, {
44
- value: any;
45
- context: ToastMachineContext;
46
- }, import("xstate").BaseActionObject, import("xstate").ServiceMap, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, ToastMachineEvents, import("xstate").BaseActionObject, import("xstate").ServiceMap>>;
1
+ import { ToastMachineContext } from './types';
2
+ export declare const toastMachine: import("xstate").StateMachine<ToastMachineContext, import("./types").AddItemEvent | import("./types").RemoveItemEvent | import("./types").SetIdleEvent | import("./types").SetActiveEvent | import("./types").ResumeTimerEvent | import("./types").PauseTimerEvent | import("./types").TimerDoneEvent, Record<string, import("xstate").AnyActorRef>, {
3
+ src: string;
4
+ logic: import("xstate").UnknownActorLogic;
5
+ id: string | undefined;
6
+ }, {
7
+ type: "addItem";
8
+ params: import("xstate").NonReducibleUnknown;
9
+ } | {
10
+ type: "removeItem";
11
+ params: import("xstate").NonReducibleUnknown;
12
+ }, {
13
+ type: "itemHasTimeout";
14
+ params: unknown;
15
+ }, "ITEM_TIMEOUT", {}, string, {
16
+ initialContext: Partial<ToastMachineContext>;
17
+ initialState?: string | undefined;
18
+ }, import("xstate").NonReducibleUnknown, import("xstate").ResolveTypegenMeta<import("xstate").TypegenDisabled, import("./types").AddItemEvent | import("./types").RemoveItemEvent | import("./types").SetIdleEvent | import("./types").SetActiveEvent | import("./types").ResumeTimerEvent | import("./types").PauseTimerEvent | import("./types").TimerDoneEvent, {
19
+ src: string;
20
+ logic: import("xstate").UnknownActorLogic;
21
+ id: string | undefined;
22
+ }, {
23
+ type: "addItem";
24
+ params: import("xstate").NonReducibleUnknown;
25
+ } | {
26
+ type: "removeItem";
27
+ params: import("xstate").NonReducibleUnknown;
28
+ }, {
29
+ type: "itemHasTimeout";
30
+ params: unknown;
31
+ }, "ITEM_TIMEOUT", string>>;
32
+ export default toastMachine;
@@ -0,0 +1,59 @@
1
+ /// <reference types="node" />
2
+ import { ReactElement, ReactNode } from 'react';
3
+ /** @todo figure out TS here */
4
+ export type ToastItem = {
5
+ id: string | null;
6
+ duration: number;
7
+ element: ReactNode;
8
+ };
9
+ export interface ToastMachineContext {
10
+ /** @todo create proper type for Array items */
11
+ items: Array<ToastItem>;
12
+ order: 'asc' | 'desc';
13
+ duration: number;
14
+ activeItem: string | null;
15
+ }
16
+ export interface AddItemEvent {
17
+ type: 'ADD_ITEM';
18
+ item: ReactElement;
19
+ duration?: number;
20
+ }
21
+ export interface RemoveItemEvent {
22
+ type: 'REMOVE_ITEM';
23
+ }
24
+ export interface SetIdleEvent {
25
+ type: 'SET_IDLE';
26
+ }
27
+ export interface SetActiveEvent {
28
+ type: 'SET_ACTIVE';
29
+ }
30
+ export interface ResumeTimerEvent {
31
+ type: 'RESUME_TIMER';
32
+ }
33
+ export interface PauseTimerEvent {
34
+ type: 'PAUSE_TIMER';
35
+ }
36
+ export interface TimerDoneEvent {
37
+ type: 'xstate.done.actor.timer';
38
+ }
39
+ export type ToastMachineEvents = AddItemEvent | RemoveItemEvent | SetIdleEvent | SetActiveEvent | ResumeTimerEvent | PauseTimerEvent | TimerDoneEvent;
40
+ export interface TimerContext {
41
+ elapsed: number;
42
+ duration: number;
43
+ interval: number;
44
+ intervalId: NodeJS.Timer | null;
45
+ }
46
+ export type StartTimerEvent = {
47
+ type: 'START_TIMER';
48
+ };
49
+ export type TimerTickEvent = {
50
+ type: 'TICK';
51
+ };
52
+ export type TimerDurationUpdateEvent = {
53
+ type: 'DURATION.UPDATE';
54
+ value: number;
55
+ };
56
+ export type ResetTimerEvent = {
57
+ type: 'RESET_TIMER';
58
+ };
59
+ export type TimerEvents = StartTimerEvent | ResumeTimerEvent | PauseTimerEvent | TimerTickEvent | TimerDurationUpdateEvent | ResetTimerEvent;