@clicktap/state 0.16.2 → 0.16.4

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 (61) hide show
  1. package/__mocks__/nanoid.d.ts +7 -0
  2. package/auth/AuthProvider.d.ts +133 -0
  3. package/auth/actions/addError.d.ts +8 -0
  4. package/auth/actions/clearErrors.d.ts +5 -0
  5. package/auth/actions/index.d.ts +8 -0
  6. package/auth/actions/notifyAuthenticated.d.ts +6 -0
  7. package/auth/actions/setAccessToken.d.ts +9 -0
  8. package/auth/actions/setIgnoreRefreshToken.d.ts +4 -0
  9. package/auth/actions/setUserContext.d.ts +9 -0
  10. package/auth/actions/unsetRefreshToken.d.ts +4 -0
  11. package/auth/actions/unsetUserContext.d.ts +8 -0
  12. package/auth/actors/authenticate.d.ts +16 -0
  13. package/auth/actors/index.d.ts +3 -0
  14. package/auth/actors/refreshAccessToken.d.ts +18 -0
  15. package/auth/actors/unauthenticate.d.ts +14 -0
  16. package/auth/auth.d.ts +54 -0
  17. package/auth/types.d.ts +50 -0
  18. package/helpers/request.d.ts +2 -0
  19. package/index.js +41 -34
  20. package/index.mjs +1979 -1636
  21. package/package.json +2 -2
  22. package/quote/CheckoutProvider.d.ts +159 -0
  23. package/quote/QuoteProvider.d.ts +242 -0
  24. package/quote/checkout/actions/changeStep.d.ts +8 -0
  25. package/quote/checkout/actions/index.d.ts +5 -0
  26. package/quote/checkout/actions/nextStep.d.ts +8 -0
  27. package/quote/checkout/actions/resetCheckout.d.ts +104 -0
  28. package/quote/checkout/actions/updateQuote.d.ts +216 -0
  29. package/quote/checkout/actions/updateSuccessId.d.ts +8 -0
  30. package/quote/checkout/actors/index.d.ts +2 -0
  31. package/quote/checkout/actors/placeOrder.d.ts +20 -0
  32. package/quote/checkout/actors/submitStepData.d.ts +19 -0
  33. package/quote/checkout/guards/index.d.ts +1 -0
  34. package/quote/checkout/guards/quoteExists.d.ts +10 -0
  35. package/quote/checkout/types.d.ts +55 -0
  36. package/quote/checkout.d.ts +46 -0
  37. package/quote/quote/actions/addItems.d.ts +217 -0
  38. package/quote/quote/actions/index.d.ts +9 -0
  39. package/quote/quote/actions/notifyAddItems.d.ts +6 -0
  40. package/quote/quote/actions/notifyRemoveItems.d.ts +6 -0
  41. package/quote/quote/actions/notifyUpdateItems.d.ts +6 -0
  42. package/quote/quote/actions/refresh.d.ts +216 -0
  43. package/quote/quote/actions/removeItems.d.ts +217 -0
  44. package/quote/quote/actions/reset.d.ts +40 -0
  45. package/quote/quote/actions/syncAccessToken.d.ts +100 -0
  46. package/quote/quote/actions/updateItems.d.ts +217 -0
  47. package/quote/quote/actors/addItems.d.ts +24 -0
  48. package/quote/quote/actors/index.d.ts +4 -0
  49. package/quote/quote/actors/refresh.d.ts +22 -0
  50. package/quote/quote/actors/removeItems.d.ts +24 -0
  51. package/quote/quote/actors/updateItems.d.ts +24 -0
  52. package/quote/quote/guards/canRefresh.d.ts +10 -0
  53. package/quote/quote/guards/hasItems.d.ts +5 -0
  54. package/quote/quote/guards/index.d.ts +2 -0
  55. package/quote/quote/types.d.ts +291 -0
  56. package/quote/quote.d.ts +72 -0
  57. package/quote/types.d.ts +5 -0
  58. package/toast/ToastProvider.d.ts +80 -0
  59. package/toast/timer.d.ts +23 -0
  60. package/toast/toast.d.ts +69 -0
  61. package/toast/types.d.ts +58 -0
@@ -0,0 +1,7 @@
1
+ export declare const nanoid: (_size?: number) => string;
2
+ export declare const customAlphabet: (_alphabet: string, _defaultSize?: number) => (_size?: number) => string;
3
+ declare const _default: {
4
+ nanoid: (_size?: number) => string;
5
+ customAlphabet: (_alphabet: string, _defaultSize?: number) => (_size?: number) => string;
6
+ };
7
+ export default _default;
@@ -0,0 +1,133 @@
1
+ import { ReactNode } from 'react';
2
+ import { Actor, InspectionEvent, Observer } from 'xstate';
3
+ import { authMachine } from './auth';
4
+ export interface AuthContextType {
5
+ authActor: Actor<typeof authMachine>;
6
+ isLoggedIn: boolean;
7
+ }
8
+ export declare const AuthContext: import('react').Context<Actor<import('xstate').StateMachine<import('./types').AuthMachineContext, import('./types').RefreshTokenEvent | import('./types').LoginEvent | import('./types').LogoutEvent | import('./types').ClearErrorsEvent | import('./types').RestoreEvent | import('xstate').DoneActorEvent<import('./types').AuthenticateSuccessEvent, string> | import('xstate').DoneActorEvent<import('./types').RefreshTokenSuccessEvent, string>, {
9
+ [x: string]: import('xstate').ActorRefFromLogic<import('xstate').PromiseActorLogic<import('./types').AuthenticateSuccessEvent, import('./actors').AuthenticateInput, import('xstate').EventObject>> | import('xstate').ActorRefFromLogic<import('xstate').PromiseActorLogic<import('./types').RefreshTokenSuccessEvent, import('./actors').RefreshTokenInput, import('xstate').EventObject>> | import('xstate').ActorRefFromLogic<import('xstate').PromiseActorLogic<import('./types').UnauthenticateSuccessEvent, import('./actors').UnauthenticateInput, import('xstate').EventObject>> | undefined;
10
+ }, {
11
+ src: "authenticate";
12
+ logic: import('xstate').PromiseActorLogic<import('./types').AuthenticateSuccessEvent, import('./actors').AuthenticateInput, import('xstate').EventObject>;
13
+ id: string | undefined;
14
+ } | {
15
+ src: "refreshAccessToken";
16
+ logic: import('xstate').PromiseActorLogic<import('./types').RefreshTokenSuccessEvent, import('./actors').RefreshTokenInput, import('xstate').EventObject>;
17
+ id: string | undefined;
18
+ } | {
19
+ src: "unauthenticate";
20
+ logic: import('xstate').PromiseActorLogic<import('./types').UnauthenticateSuccessEvent, import('./actors').UnauthenticateInput, import('xstate').EventObject>;
21
+ id: string | undefined;
22
+ }, {
23
+ type: "addError";
24
+ params: import('xstate').NonReducibleUnknown;
25
+ } | {
26
+ type: "clearErrors";
27
+ params: import('xstate').NonReducibleUnknown;
28
+ } | {
29
+ type: "notifyAuthenticated";
30
+ params: import('xstate').NonReducibleUnknown;
31
+ } | {
32
+ type: "setAccessToken";
33
+ params: import('xstate').NonReducibleUnknown;
34
+ } | {
35
+ type: "setIgnoreRefreshToken";
36
+ params: import('xstate').NonReducibleUnknown;
37
+ } | {
38
+ type: "setUserContext";
39
+ params: import('xstate').NonReducibleUnknown;
40
+ } | {
41
+ type: "unsetRefreshToken";
42
+ params: import('xstate').NonReducibleUnknown;
43
+ } | {
44
+ type: "unsetUserContext";
45
+ params: import('xstate').NonReducibleUnknown;
46
+ }, never, "refresh", "refreshing" | "authenticating" | "loggedIn" | "loggedOut" | "unauthenticating" | "loggedInReady", string, {
47
+ initialContext: Partial<import('./types').AuthMachineContext>;
48
+ initialState?: string;
49
+ }, import('xstate').NonReducibleUnknown, import('./types').AuthenticatedEmittedEvent, import('xstate').MetaObject, {
50
+ id: "auth";
51
+ states: {
52
+ readonly authenticating: {};
53
+ readonly unauthenticating: {};
54
+ readonly refreshing: {};
55
+ readonly loggedOut: {};
56
+ readonly loggedInReady: {};
57
+ readonly loggedIn: {};
58
+ };
59
+ }>>>;
60
+ export declare const useAuth: () => AuthContextType;
61
+ type AuthOptions = {
62
+ inspect: Observer<InspectionEvent> | undefined;
63
+ endpoints: {
64
+ login: string;
65
+ logout: string;
66
+ refresh: string;
67
+ ssrRefresh: string;
68
+ };
69
+ };
70
+ /**
71
+ * runs on server side as part of withAuth HOF
72
+ *
73
+ * @todo should probably update signature to pass Partial<AuthContext> and
74
+ * Options, endpoints should probably be moved into context
75
+ */
76
+ export declare const getAuth: (refreshToken?: string, options?: AuthOptions) => Promise<Actor<import('xstate').StateMachine<import('./types').AuthMachineContext, import('./types').RefreshTokenEvent | import('./types').LoginEvent | import('./types').LogoutEvent | import('./types').ClearErrorsEvent | import('./types').RestoreEvent | import('xstate').DoneActorEvent<import('./types').AuthenticateSuccessEvent, string> | import('xstate').DoneActorEvent<import('./types').RefreshTokenSuccessEvent, string>, {
77
+ [x: string]: import('xstate').ActorRefFromLogic<import('xstate').PromiseActorLogic<import('./types').AuthenticateSuccessEvent, import('./actors').AuthenticateInput, import('xstate').EventObject>> | import('xstate').ActorRefFromLogic<import('xstate').PromiseActorLogic<import('./types').RefreshTokenSuccessEvent, import('./actors').RefreshTokenInput, import('xstate').EventObject>> | import('xstate').ActorRefFromLogic<import('xstate').PromiseActorLogic<import('./types').UnauthenticateSuccessEvent, import('./actors').UnauthenticateInput, import('xstate').EventObject>> | undefined;
78
+ }, {
79
+ src: "authenticate";
80
+ logic: import('xstate').PromiseActorLogic<import('./types').AuthenticateSuccessEvent, import('./actors').AuthenticateInput, import('xstate').EventObject>;
81
+ id: string | undefined;
82
+ } | {
83
+ src: "refreshAccessToken";
84
+ logic: import('xstate').PromiseActorLogic<import('./types').RefreshTokenSuccessEvent, import('./actors').RefreshTokenInput, import('xstate').EventObject>;
85
+ id: string | undefined;
86
+ } | {
87
+ src: "unauthenticate";
88
+ logic: import('xstate').PromiseActorLogic<import('./types').UnauthenticateSuccessEvent, import('./actors').UnauthenticateInput, import('xstate').EventObject>;
89
+ id: string | undefined;
90
+ }, {
91
+ type: "addError";
92
+ params: import('xstate').NonReducibleUnknown;
93
+ } | {
94
+ type: "clearErrors";
95
+ params: import('xstate').NonReducibleUnknown;
96
+ } | {
97
+ type: "notifyAuthenticated";
98
+ params: import('xstate').NonReducibleUnknown;
99
+ } | {
100
+ type: "setAccessToken";
101
+ params: import('xstate').NonReducibleUnknown;
102
+ } | {
103
+ type: "setIgnoreRefreshToken";
104
+ params: import('xstate').NonReducibleUnknown;
105
+ } | {
106
+ type: "setUserContext";
107
+ params: import('xstate').NonReducibleUnknown;
108
+ } | {
109
+ type: "unsetRefreshToken";
110
+ params: import('xstate').NonReducibleUnknown;
111
+ } | {
112
+ type: "unsetUserContext";
113
+ params: import('xstate').NonReducibleUnknown;
114
+ }, never, "refresh", "refreshing" | "authenticating" | "loggedIn" | "loggedOut" | "unauthenticating" | "loggedInReady", string, {
115
+ initialContext: Partial<import('./types').AuthMachineContext>;
116
+ initialState?: string;
117
+ }, import('xstate').NonReducibleUnknown, import('./types').AuthenticatedEmittedEvent, import('xstate').MetaObject, {
118
+ id: "auth";
119
+ states: {
120
+ readonly authenticating: {};
121
+ readonly unauthenticating: {};
122
+ readonly refreshing: {};
123
+ readonly loggedOut: {};
124
+ readonly loggedInReady: {};
125
+ readonly loggedIn: {};
126
+ };
127
+ }>>>;
128
+ type Props = {
129
+ children: ReactNode;
130
+ actor: Actor<typeof authMachine>;
131
+ };
132
+ export declare function AuthProvider({ actor, children }: Props): import("react/jsx-runtime").JSX.Element;
133
+ export {};
@@ -0,0 +1,8 @@
1
+ import { AuthMachineContext, AuthMachineEvents } from '../types';
2
+ export declare function addError({ context, event, }: {
3
+ context: AuthMachineContext;
4
+ event: AuthMachineEvents;
5
+ }): AuthMachineContext | {
6
+ errors: string[];
7
+ };
8
+ export default addError;
@@ -0,0 +1,5 @@
1
+ /** @todo should we assertEvent here? */
2
+ export declare function clearErrors(): {
3
+ errors: never[];
4
+ };
5
+ export default clearErrors;
@@ -0,0 +1,8 @@
1
+ export * from './addError';
2
+ export * from './clearErrors';
3
+ export * from './notifyAuthenticated';
4
+ export * from './setAccessToken';
5
+ export * from './setIgnoreRefreshToken';
6
+ export * from './setUserContext';
7
+ export * from './unsetRefreshToken';
8
+ export * from './unsetUserContext';
@@ -0,0 +1,6 @@
1
+ import { AuthenticatedEmittedEvent, AuthMachineContext, AuthMachineEvents } from '../types';
2
+ export declare function notifyAuthenticated({ event, }: {
3
+ context: AuthMachineContext;
4
+ event: AuthMachineEvents;
5
+ }): AuthenticatedEmittedEvent;
6
+ export default notifyAuthenticated;
@@ -0,0 +1,9 @@
1
+ import { AuthMachineContext, AuthMachineEvents } from '../types';
2
+ export declare function setAccessToken({ context, event, }: {
3
+ context: AuthMachineContext;
4
+ event: AuthMachineEvents;
5
+ }): AuthMachineContext | {
6
+ accessToken: string;
7
+ ignoreRefreshToken: boolean;
8
+ };
9
+ export default setAccessToken;
@@ -0,0 +1,4 @@
1
+ export declare function setIgnoreRefreshToken(): {
2
+ ignoreRefreshToken: boolean;
3
+ };
4
+ export default setIgnoreRefreshToken;
@@ -0,0 +1,9 @@
1
+ import { AuthMachineContext, AuthMachineEvents } from '../types';
2
+ export declare function setUserContext({ context, event, }: {
3
+ context: AuthMachineContext;
4
+ event: AuthMachineEvents;
5
+ }): AuthMachineContext | {
6
+ accessToken: string;
7
+ ignoreRefreshToken: boolean;
8
+ };
9
+ export default setUserContext;
@@ -0,0 +1,4 @@
1
+ export declare function unsetRefreshToken(): {
2
+ refreshToken: string;
3
+ };
4
+ export default unsetRefreshToken;
@@ -0,0 +1,8 @@
1
+ /** @todo should we assertEvent here? */
2
+ export declare function unsetUserContext(): {
3
+ user: null;
4
+ accessToken: string;
5
+ refreshToken: string;
6
+ ignoreRefreshToken: boolean;
7
+ };
8
+ export default unsetUserContext;
@@ -0,0 +1,16 @@
1
+ import { AuthenticateSuccessEvent, AuthMachineContext } from '../types';
2
+ export type AuthenticateInput = {
3
+ endpoint: {
4
+ client: AuthMachineContext['endpoints']['login'];
5
+ };
6
+ password: string;
7
+ username: string;
8
+ };
9
+ export type AuthenticateResponse = {
10
+ success: boolean;
11
+ message?: string;
12
+ accessToken?: string;
13
+ };
14
+ /** @todo pass locale for auth server? */
15
+ export declare const authenticate: import('xstate').PromiseActorLogic<AuthenticateSuccessEvent, AuthenticateInput, import('xstate').EventObject>;
16
+ export default authenticate;
@@ -0,0 +1,3 @@
1
+ export * from './authenticate';
2
+ export * from './refreshAccessToken';
3
+ export * from './unauthenticate';
@@ -0,0 +1,18 @@
1
+ import { RefreshTokenSuccessEvent, AuthMachineContext } from '../types';
2
+ export type RefreshTokenInput = {
3
+ refreshToken: AuthMachineContext['refreshToken'];
4
+ endpoint: {
5
+ client: AuthMachineContext['endpoints']['refresh'];
6
+ server: AuthMachineContext['endpoints']['ssrRefresh'];
7
+ };
8
+ };
9
+ export type RefreshTokenResponse = {
10
+ accessToken?: string;
11
+ };
12
+ export type RefreshTokenOutput = {
13
+ type: string;
14
+ accessToken: string;
15
+ };
16
+ /** @todo pass locale for auth server? */
17
+ export declare const refreshAccessToken: import('xstate').PromiseActorLogic<RefreshTokenSuccessEvent, RefreshTokenInput, import('xstate').EventObject>;
18
+ export default refreshAccessToken;
@@ -0,0 +1,14 @@
1
+ import { UnauthenticateSuccessEvent, AuthMachineContext } from '../types';
2
+ export type UnauthenticateInput = {
3
+ endpoint: {
4
+ client: AuthMachineContext['endpoints']['logout'];
5
+ };
6
+ };
7
+ export type UnauthenticateResponse = {
8
+ success: boolean;
9
+ message?: string;
10
+ accessToken?: string;
11
+ };
12
+ /** @todo pass locale for auth server? */
13
+ export declare const unauthenticate: import('xstate').PromiseActorLogic<UnauthenticateSuccessEvent, UnauthenticateInput, import('xstate').EventObject>;
14
+ export default unauthenticate;
package/auth/auth.d.ts ADDED
@@ -0,0 +1,54 @@
1
+ import { AuthMachineContext } from './types';
2
+ export declare const authMachine: import('xstate').StateMachine<AuthMachineContext, import('./types').RefreshTokenEvent | import('./types').LoginEvent | import('./types').LogoutEvent | import('./types').ClearErrorsEvent | import('./types').RestoreEvent | import('xstate').DoneActorEvent<import('./types').AuthenticateSuccessEvent, string> | import('xstate').DoneActorEvent<import('./types').RefreshTokenSuccessEvent, string>, {
3
+ [x: string]: import('xstate').ActorRefFromLogic<import('xstate').PromiseActorLogic<import('./types').AuthenticateSuccessEvent, import('./actors').AuthenticateInput, import('xstate').EventObject>> | import('xstate').ActorRefFromLogic<import('xstate').PromiseActorLogic<import('./types').RefreshTokenSuccessEvent, import('./actors').RefreshTokenInput, import('xstate').EventObject>> | import('xstate').ActorRefFromLogic<import('xstate').PromiseActorLogic<import('./types').UnauthenticateSuccessEvent, import('./actors').UnauthenticateInput, import('xstate').EventObject>> | undefined;
4
+ }, {
5
+ src: "authenticate";
6
+ logic: import('xstate').PromiseActorLogic<import('./types').AuthenticateSuccessEvent, import('./actors').AuthenticateInput, import('xstate').EventObject>;
7
+ id: string | undefined;
8
+ } | {
9
+ src: "refreshAccessToken";
10
+ logic: import('xstate').PromiseActorLogic<import('./types').RefreshTokenSuccessEvent, import('./actors').RefreshTokenInput, import('xstate').EventObject>;
11
+ id: string | undefined;
12
+ } | {
13
+ src: "unauthenticate";
14
+ logic: import('xstate').PromiseActorLogic<import('./types').UnauthenticateSuccessEvent, import('./actors').UnauthenticateInput, import('xstate').EventObject>;
15
+ id: string | undefined;
16
+ }, {
17
+ type: "addError";
18
+ params: import('xstate').NonReducibleUnknown;
19
+ } | {
20
+ type: "clearErrors";
21
+ params: import('xstate').NonReducibleUnknown;
22
+ } | {
23
+ type: "notifyAuthenticated";
24
+ params: import('xstate').NonReducibleUnknown;
25
+ } | {
26
+ type: "setAccessToken";
27
+ params: import('xstate').NonReducibleUnknown;
28
+ } | {
29
+ type: "setIgnoreRefreshToken";
30
+ params: import('xstate').NonReducibleUnknown;
31
+ } | {
32
+ type: "setUserContext";
33
+ params: import('xstate').NonReducibleUnknown;
34
+ } | {
35
+ type: "unsetRefreshToken";
36
+ params: import('xstate').NonReducibleUnknown;
37
+ } | {
38
+ type: "unsetUserContext";
39
+ params: import('xstate').NonReducibleUnknown;
40
+ }, never, "refresh", "refreshing" | "authenticating" | "loggedIn" | "loggedOut" | "unauthenticating" | "loggedInReady", string, {
41
+ initialContext: Partial<AuthMachineContext>;
42
+ initialState?: string;
43
+ }, import('xstate').NonReducibleUnknown, import('./types').AuthenticatedEmittedEvent, import('xstate').MetaObject, {
44
+ id: "auth";
45
+ states: {
46
+ readonly authenticating: {};
47
+ readonly unauthenticating: {};
48
+ readonly refreshing: {};
49
+ readonly loggedOut: {};
50
+ readonly loggedInReady: {};
51
+ readonly loggedIn: {};
52
+ };
53
+ }>;
54
+ export default authMachine;
@@ -0,0 +1,50 @@
1
+ import { DoneActorEvent } from 'xstate';
2
+ export interface AuthMachineContext {
3
+ user: Record<string, any> | null;
4
+ accessToken: string;
5
+ refreshToken: string;
6
+ ignoreRefreshToken: boolean;
7
+ endpoints: {
8
+ login: string;
9
+ logout: string;
10
+ refresh: string;
11
+ ssrRefresh: string;
12
+ };
13
+ errors: Array<string>;
14
+ }
15
+ export interface RefreshTokenEvent {
16
+ type: 'REFRESH_TOKEN';
17
+ accessToken: AuthMachineContext['accessToken'];
18
+ }
19
+ export interface LoginEvent {
20
+ type: 'LOGIN';
21
+ username: string;
22
+ password: string;
23
+ }
24
+ export interface LogoutEvent {
25
+ type: 'LOGOUT';
26
+ }
27
+ export interface ClearErrorsEvent {
28
+ type: 'CLEAR_ERRORS';
29
+ }
30
+ export interface RestoreEvent {
31
+ type: 'RESTORE';
32
+ }
33
+ export interface AuthenticateSuccessEvent {
34
+ type: 'AUTHENTICATE_SUCCESS';
35
+ user: Partial<AuthMachineContext['user']>;
36
+ accessToken: AuthMachineContext['accessToken'];
37
+ }
38
+ export interface RefreshTokenSuccessEvent {
39
+ type: 'REFRESH_TOKEN_SUCCESS';
40
+ accessToken: AuthMachineContext['accessToken'];
41
+ }
42
+ export interface UnauthenticateSuccessEvent {
43
+ type: 'UNAUTHENTICATE_SUCCESS';
44
+ }
45
+ export interface AuthenticatedEmittedEvent {
46
+ type: 'EMIT_AUTHENTICATED';
47
+ accessToken: AuthMachineContext['accessToken'];
48
+ }
49
+ export type AuthMachineEvents = RefreshTokenEvent | RestoreEvent | LoginEvent | LogoutEvent | ClearErrorsEvent | DoneActorEvent<AuthenticateSuccessEvent> | DoneActorEvent<RefreshTokenSuccessEvent>;
50
+ export type AuthMachineEmittedEvents = AuthenticatedEmittedEvent;
@@ -0,0 +1,2 @@
1
+ export declare function request<T>(url: string, options: object): Promise<T>;
2
+ export default request;