@data-client/core 0.4.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.
Files changed (99) hide show
  1. package/data_client_logo_and_text.svg +50 -0
  2. package/dist/index.js +57 -90
  3. package/dist/index.umd.min.js +1 -1
  4. package/dist/next.js +0 -454
  5. package/legacy/actionTypes.js +11 -13
  6. package/legacy/actions.js +2 -0
  7. package/legacy/controller/Controller.js +24 -41
  8. package/legacy/index.js +2 -2
  9. package/legacy/internal.js +2 -2
  10. package/legacy/manager/DevtoolsManager.js +3 -3
  11. package/legacy/manager/NetworkManager.js +11 -11
  12. package/legacy/manager/SubscriptionManager.js +6 -6
  13. package/legacy/manager/applyManager.js +2 -9
  14. package/legacy/middlewareTypes.js +1 -1
  15. package/legacy/next/index.js +2 -3
  16. package/legacy/state/reducer/fetchReducer.js +5 -5
  17. package/legacy/state/reducer/setReducer.js +2 -2
  18. package/legacy/types.js +3 -4
  19. package/lib/actionTypes.d.ts +10 -12
  20. package/lib/actionTypes.d.ts.map +1 -1
  21. package/lib/actionTypes.js +11 -13
  22. package/lib/{newActions.d.ts → actions.d.ts} +1 -3
  23. package/lib/actions.d.ts.map +1 -0
  24. package/lib/actions.js +2 -0
  25. package/lib/controller/Controller.d.ts +20 -33
  26. package/lib/controller/Controller.d.ts.map +1 -1
  27. package/lib/controller/Controller.js +24 -41
  28. package/lib/index.d.ts +1 -1
  29. package/lib/index.d.ts.map +1 -1
  30. package/lib/index.js +2 -2
  31. package/lib/internal.d.ts +1 -1
  32. package/lib/internal.d.ts.map +1 -1
  33. package/lib/internal.js +2 -2
  34. package/lib/manager/DevtoolsManager.js +3 -3
  35. package/lib/manager/NetworkManager.d.ts +6 -6
  36. package/lib/manager/NetworkManager.d.ts.map +1 -1
  37. package/lib/manager/NetworkManager.js +11 -11
  38. package/lib/manager/SubscriptionManager.d.ts +5 -5
  39. package/lib/manager/SubscriptionManager.js +6 -6
  40. package/lib/manager/applyManager.d.ts.map +1 -1
  41. package/lib/manager/applyManager.js +2 -9
  42. package/lib/middlewareTypes.d.ts +2 -5
  43. package/lib/middlewareTypes.d.ts.map +1 -1
  44. package/lib/middlewareTypes.js +1 -1
  45. package/lib/next/index.d.ts +0 -2
  46. package/lib/next/index.d.ts.map +1 -1
  47. package/lib/next/index.js +2 -3
  48. package/lib/state/reducer/expireReducer.d.ts +1 -1
  49. package/lib/state/reducer/fetchReducer.js +5 -5
  50. package/lib/state/reducer/invalidateReducer.d.ts +1 -1
  51. package/lib/state/reducer/setReducer.d.ts +2 -2
  52. package/lib/state/reducer/setReducer.d.ts.map +1 -1
  53. package/lib/state/reducer/setReducer.js +2 -2
  54. package/lib/types.d.ts +3 -4
  55. package/lib/types.d.ts.map +1 -1
  56. package/lib/types.js +3 -4
  57. package/package.json +3 -3
  58. package/src/actionTypes.ts +10 -12
  59. package/src/{newActions.ts → actions.ts} +1 -6
  60. package/src/controller/Controller.ts +23 -54
  61. package/src/index.ts +1 -1
  62. package/src/internal.ts +1 -1
  63. package/src/manager/DevtoolsManager.ts +2 -2
  64. package/src/manager/NetworkManager.ts +10 -10
  65. package/src/manager/SubscriptionManager.ts +5 -5
  66. package/src/manager/__tests__/__snapshots__/pollingSubscription.ts.snap +2 -2
  67. package/src/manager/__tests__/logoutManager.ts +2 -2
  68. package/src/manager/__tests__/manager.ts +1 -1
  69. package/src/manager/__tests__/networkManager.ts +13 -16
  70. package/src/manager/applyManager.ts +1 -6
  71. package/src/middlewareTypes.ts +4 -9
  72. package/src/next/index.ts +0 -2
  73. package/src/state/__tests__/__snapshots__/reducer.ts.snap +1 -1
  74. package/src/state/__tests__/reducer.ts +27 -9
  75. package/src/state/reducer/fetchReducer.ts +5 -5
  76. package/src/state/reducer/setReducer.ts +5 -5
  77. package/src/types.ts +3 -4
  78. package/ts3.4/actionTypes.d.ts +10 -12
  79. package/ts3.4/{newActions.d.ts → actions.d.ts} +1 -3
  80. package/ts3.4/controller/Controller.d.ts +20 -39
  81. package/ts3.4/index.d.ts +1 -1
  82. package/ts3.4/internal.d.ts +1 -1
  83. package/ts3.4/manager/NetworkManager.d.ts +6 -6
  84. package/ts3.4/manager/SubscriptionManager.d.ts +5 -5
  85. package/ts3.4/middlewareTypes.d.ts +2 -5
  86. package/ts3.4/next/index.d.ts +0 -2
  87. package/ts3.4/state/reducer/expireReducer.d.ts +1 -1
  88. package/ts3.4/state/reducer/invalidateReducer.d.ts +1 -1
  89. package/ts3.4/state/reducer/setReducer.d.ts +2 -2
  90. package/ts3.4/types.d.ts +3 -5
  91. package/legacy/fsa.js +0 -2
  92. package/legacy/newActions.js +0 -2
  93. package/lib/fsa.d.ts +0 -41
  94. package/lib/fsa.d.ts.map +0 -1
  95. package/lib/fsa.js +0 -2
  96. package/lib/newActions.d.ts.map +0 -1
  97. package/lib/newActions.js +0 -2
  98. package/src/fsa.ts +0 -99
  99. package/ts3.4/fsa.d.ts +0 -41
@@ -143,20 +143,38 @@ describe('reducer', () => {
143
143
  expect(nextMeta.date).toBe(action.meta.date);
144
144
  });
145
145
 
146
- it('should use entity.expiresAt()', () => {
146
+ it('should use entity.mergeMetaWithStore()', () => {
147
147
  class ExpiresSoon extends Article {
148
148
  static get key() {
149
149
  return Article.key;
150
150
  }
151
151
 
152
- static expiresAt(
153
- { expiresAt, date }: { expiresAt: number; date: number },
154
- input: any,
155
- ): number {
156
- return input.content ? expiresAt : 0;
152
+ static mergeMetaWithStore(
153
+ existingMeta: {
154
+ expiresAt: number;
155
+ date: number;
156
+ fetchedAt: number;
157
+ },
158
+ incomingMeta: { expiresAt: number; date: number; fetchedAt: number },
159
+ existing: any,
160
+ incoming: any,
161
+ ) {
162
+ return this.shouldReorder(
163
+ existingMeta,
164
+ incomingMeta,
165
+ existing,
166
+ incoming,
167
+ )
168
+ ? existingMeta
169
+ : {
170
+ ...incomingMeta,
171
+ expiresAt: incoming.content
172
+ ? incomingMeta.expiresAt
173
+ : existingMeta.expiresAt,
174
+ };
157
175
  }
158
176
  }
159
- const spy = jest.spyOn(ExpiresSoon, 'expiresAt');
177
+ const spy = jest.spyOn(ExpiresSoon, 'mergeMetaWithStore');
160
178
  const localAction = {
161
179
  ...partialResultAction,
162
180
  endpoint: (partialResultAction.endpoint as any).extend({
@@ -401,7 +419,7 @@ describe('reducer', () => {
401
419
  expectedMeta['20'] = { expiresAt: 0, invalidated: true };
402
420
  expect(newState.meta).toEqual(expectedMeta);
403
421
  });
404
- it('should set error in meta for "receive"', () => {
422
+ it('should set error in meta for "set"', () => {
405
423
  const id = 20;
406
424
  const error = new Error('hi');
407
425
  const action: SetAction = {
@@ -472,7 +490,7 @@ describe('reducer', () => {
472
490
  const newState = reducer(iniState, action);
473
491
  expect(newState.entities).toBe(iniState.entities);
474
492
  });
475
- it('rest-hooks/fetch should console.warn()', () => {
493
+ it('rdc/fetch should console.warn()', () => {
476
494
  const warnspy = jest
477
495
  .spyOn(global.console, 'warn')
478
496
  .mockImplementation(() => {});
@@ -1,16 +1,16 @@
1
1
  import createOptimistic from '../../controller/createOptimistic.js';
2
2
  import type {
3
3
  State,
4
- ReceiveAction,
4
+ SetAction,
5
5
  OptimisticAction,
6
6
  FetchAction,
7
7
  } from '../../types.js';
8
8
 
9
9
  export function fetchReducer(state: State<unknown>, action: FetchAction) {
10
- let receiveAction: ReceiveAction | OptimisticAction;
10
+ let setAction: SetAction | OptimisticAction;
11
11
 
12
12
  if (action.endpoint.getOptimisticResponse && action.endpoint.sideEffect) {
13
- receiveAction = createOptimistic(action.endpoint, {
13
+ setAction = createOptimistic(action.endpoint, {
14
14
  args: action.meta.args,
15
15
  fetchedAt: action.meta.createdAt,
16
16
  });
@@ -22,7 +22,7 @@ export function fetchReducer(state: State<unknown>, action: FetchAction) {
22
22
  'Fetch appears unhandled - you are likely missing the NetworkManager middleware',
23
23
  );
24
24
  console.warn(
25
- 'See https://resthooks.io/docs/guides/redux#indextsx for hooking up redux',
25
+ 'See https://dataclient.io/docs/guides/redux#indextsx for hooking up redux',
26
26
  );
27
27
  }
28
28
 
@@ -30,6 +30,6 @@ export function fetchReducer(state: State<unknown>, action: FetchAction) {
30
30
  }
31
31
  return {
32
32
  ...state,
33
- optimistic: [...state.optimistic, receiveAction],
33
+ optimistic: [...state.optimistic, setAction],
34
34
  };
35
35
  }
@@ -2,11 +2,11 @@ import { normalize } from '@data-client/normalizr';
2
2
 
3
3
  import { OPTIMISTIC_TYPE } from '../../actionTypes.js';
4
4
  import type Controller from '../../controller/Controller.js';
5
- import type { State, ReceiveAction, OptimisticAction } from '../../types.js';
5
+ import type { State, SetAction, OptimisticAction } from '../../types.js';
6
6
 
7
7
  export function setReducer(
8
8
  state: State<unknown>,
9
- action: OptimisticAction | ReceiveAction,
9
+ action: OptimisticAction | SetAction,
10
10
  controller: Controller,
11
11
  ) {
12
12
  if (action.error) {
@@ -14,7 +14,7 @@ export function setReducer(
14
14
  }
15
15
  try {
16
16
  let payload: any;
17
- // for true receives payload is contained in action
17
+ // for true set's payload is contained in action
18
18
  if (action.type === OPTIMISTIC_TYPE) {
19
19
  // this should never happen
20
20
  if (!action.endpoint.getOptimisticResponse) return state;
@@ -104,7 +104,7 @@ export function setReducer(
104
104
 
105
105
  function reduceError(
106
106
  state: State<unknown>,
107
- action: ReceiveAction | OptimisticAction,
107
+ action: SetAction | OptimisticAction,
108
108
  error: any,
109
109
  ): State<unknown> {
110
110
  if (error.name === 'AbortError') {
@@ -133,7 +133,7 @@ function reduceError(
133
133
  /** Filter all requests with same serialization that did not start after the resolving request */
134
134
  function filterOptimistic(
135
135
  state: State<unknown>,
136
- resolvingAction: ReceiveAction | OptimisticAction,
136
+ resolvingAction: SetAction | OptimisticAction,
137
137
  ) {
138
138
  return state.optimistic.filter(
139
139
  optimisticAction =>
package/src/types.ts CHANGED
@@ -5,13 +5,13 @@ import type {
5
5
  } from '@data-client/normalizr';
6
6
  import type { ErrorTypes } from '@data-client/normalizr';
7
7
 
8
+ import type { ActionTypes, SetAction, OptimisticAction } from './actions.js';
8
9
  import { SET_TYPE } from './actionTypes.js';
9
10
  import type { Dispatch, Middleware, MiddlewareAPI } from './middlewareTypes.js';
10
- import type { ActionTypes, SetAction, OptimisticAction } from './newActions.js';
11
11
 
12
12
  export type { AbstractInstanceType, UpdateFunction };
13
13
 
14
- export type ReceiveTypes = typeof SET_TYPE;
14
+ export type SetTypes = typeof SET_TYPE;
15
15
 
16
16
  export type PK = string;
17
17
 
@@ -44,8 +44,7 @@ export interface State<T> {
44
44
  readonly lastReset: number;
45
45
  }
46
46
 
47
- export * as newActions from './newActions.js';
48
- export * from './newActions.js';
47
+ export * from './actions.js';
49
48
 
50
49
  export interface Manager<Actions = ActionTypes> {
51
50
  getMiddleware(): Middleware<Actions>;
@@ -1,13 +1,11 @@
1
- export declare const FETCH_TYPE: "rest-hooks/fetch";
2
- /** @deprecated use SET_TYPE instead */
3
- export declare const RECEIVE_TYPE: "rest-hooks/receive";
4
- export declare const SET_TYPE: "rest-hooks/receive";
5
- export declare const OPTIMISTIC_TYPE: "rest-hooks/optimistic";
6
- export declare const RESET_TYPE: "rest-hooks/reset";
7
- export declare const SUBSCRIBE_TYPE: "rest-hooks/subscribe";
8
- export declare const UNSUBSCRIBE_TYPE: "rest-hook/unsubscribe";
9
- export declare const INVALIDATE_TYPE: "rest-hooks/invalidate";
10
- export declare const INVALIDATEALL_TYPE: "rest-hooks/invalidateall";
11
- export declare const EXPIREALL_TYPE: "rest-hooks/expireall";
12
- export declare const GC_TYPE: "rest-hooks/gc";
1
+ export declare const FETCH_TYPE: "rdc/fetch";
2
+ export declare const SET_TYPE: "rdc/set";
3
+ export declare const OPTIMISTIC_TYPE: "rdc/optimistic";
4
+ export declare const RESET_TYPE: "rdc/reset";
5
+ export declare const SUBSCRIBE_TYPE: "rdc/subscribe";
6
+ export declare const UNSUBSCRIBE_TYPE: "rdc/unsubscribe";
7
+ export declare const INVALIDATE_TYPE: "rdc/invalidate";
8
+ export declare const INVALIDATEALL_TYPE: "rdc/invalidateall";
9
+ export declare const EXPIREALL_TYPE: "rdc/expireall";
10
+ export declare const GC_TYPE: "rdc/gc";
13
11
  //# sourceMappingURL=actionTypes.d.ts.map
@@ -29,8 +29,6 @@ export interface SetActionError<E extends EndpointAndUpdate<E> = EndpointDefault
29
29
  error: true;
30
30
  }
31
31
  export type SetAction<E extends EndpointAndUpdate<E> = EndpointDefault> = SetActionSuccess<E> | SetActionError<E>;
32
- /** @deprecated use SetAction instead */
33
- export type ReceiveAction<E extends EndpointAndUpdate<E> = EndpointDefault> = SetAction<E>;
34
32
  export interface FetchMeta {
35
33
  args: readonly any[];
36
34
  key: string;
@@ -97,4 +95,4 @@ export interface GCAction {
97
95
  }
98
96
  export type ActionTypes = FetchAction | OptimisticAction | SetAction | SubscribeAction | UnsubscribeAction | InvalidateAction | InvalidateAllAction | ExpireAllAction | ResetAction | GCAction;
99
97
  export {};
100
- //# sourceMappingURL=newActions.d.ts.map
98
+ //# sourceMappingURL=actions.d.ts.map
@@ -10,14 +10,14 @@ interface ConstructorProps<D extends GenericDispatch = DataClientDispatch> {
10
10
  globalCache?: DenormalizeCache;
11
11
  }
12
12
  /**
13
- * Imperative control of Rest Hooks store
14
- * @see https://resthooks.io/docs/api/Controller
13
+ * Imperative control of Reactive Data Client store
14
+ * @see https://dataclient.io/docs/api/Controller
15
15
  */
16
16
  export default class Controller<D extends GenericDispatch = DataClientDispatch> {
17
17
  /**
18
- * Dispatches an action to Rest Hooks reducer.
18
+ * Dispatches an action to Reactive Data Client reducer.
19
19
  *
20
- * @see https://resthooks.io/docs/api/Controller#dispatch
20
+ * @see https://dataclient.io/docs/api/Controller#dispatch
21
21
  */
22
22
  readonly dispatch: D;
23
23
  /**
@@ -25,15 +25,15 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
25
25
  *
26
26
  * This can be useful for imperative use-cases like event handlers.
27
27
  * This should *not* be used to render; instead useSuspense() or useCache()
28
- * @see https://resthooks.io/docs/api/Controller#getState
28
+ * @see https://dataclient.io/docs/api/Controller#getState
29
29
  */
30
30
  readonly getState: () => State<unknown>;
31
31
  readonly globalCache: DenormalizeCache;
32
32
  constructor({ dispatch, getState, globalCache, }?: ConstructorProps<D>);
33
33
  /*************** Action Dispatchers ***************/
34
34
  /**
35
- * Fetches the endpoint with given args, updating the Rest Hooks cache with the response or error upon completion.
36
- * @see https://resthooks.io/docs/api/Controller#fetch
35
+ * Fetches the endpoint with given args, updating the Reactive Data Client cache with the response or error upon completion.
36
+ * @see https://dataclient.io/docs/api/Controller#fetch
37
37
  */
38
38
  fetch: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
39
39
  update?: EndpointUpdateFunction<E> | undefined;
@@ -47,7 +47,7 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
47
47
  }>(endpoint: E, ...args_0: Parameters<E>) => E["schema"] extends null | undefined ? ReturnType<E> | ResolveType<E> : Denormalize<E["schema"]> | Promise<Denormalize<E["schema"]>>;
48
48
  /**
49
49
  * Forces refetching and suspense on useSuspense with the same Endpoint and parameters.
50
- * @see https://resthooks.io/docs/api/Controller#invalidate
50
+ * @see https://dataclient.io/docs/api/Controller#invalidate
51
51
  */
52
52
  invalidate: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined>>(endpoint: E, ...args: readonly [
53
53
  ...Parameters<E>
@@ -56,7 +56,7 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
56
56
  ]) => Promise<void>;
57
57
  /**
58
58
  * Forces refetching and suspense on useSuspense on all matching endpoint result keys.
59
- * @see https://resthooks.io/docs/api/Controller#invalidateAll
59
+ * @see https://dataclient.io/docs/api/Controller#invalidateAll
60
60
  * @returns Promise that resolves when invalidation is commited.
61
61
  */
62
62
  invalidateAll: (options: {
@@ -71,13 +71,13 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
71
71
  testKey: (key: string) => boolean;
72
72
  }) => Promise<void>;
73
73
  /**
74
- * Resets the entire Rest Hooks cache. All inflight requests will not resolve.
75
- * @see https://resthooks.io/docs/api/Controller#resetEntireStore
74
+ * Resets the entire Reactive Data Client cache. All inflight requests will not resolve.
75
+ * @see https://dataclient.io/docs/api/Controller#resetEntireStore
76
76
  */
77
77
  resetEntireStore: () => Promise<void>;
78
78
  /**
79
79
  * Stores response in cache for given Endpoint and args.
80
- * @see https://resthooks.io/docs/api/Controller#set
80
+ * @see https://dataclient.io/docs/api/Controller#set
81
81
  */
82
82
  setResponse: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
83
83
  update?: EndpointUpdateFunction<E> | undefined;
@@ -85,18 +85,9 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
85
85
  ...Parameters<E>,
86
86
  any
87
87
  ]) => Promise<void>;
88
- /**
89
- * @deprecated use https://resthooks.io/docs/api/Controller#setResponse instead
90
- */
91
- receive: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
92
- update?: EndpointUpdateFunction<E> | undefined;
93
- }>(endpoint: E, ...rest: readonly [
94
- ...Parameters<E>,
95
- any
96
- ]) => Promise<void>;
97
88
  /**
98
89
  * Stores the result of Endpoint and args as the error provided.
99
- * @see https://resthooks.io/docs/api/Controller#setError
90
+ * @see https://dataclient.io/docs/api/Controller#setError
100
91
  */
101
92
  setError: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
102
93
  update?: EndpointUpdateFunction<E> | undefined;
@@ -104,19 +95,9 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
104
95
  ...Parameters<E>,
105
96
  Error
106
97
  ]) => Promise<void>;
107
- /**
108
- * Another name for setError
109
- * @deprecated use https://resthooks.io/docs/api/Controller#setError instead
110
- */
111
- receiveError: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
112
- update?: EndpointUpdateFunction<E> | undefined;
113
- }>(endpoint: E, ...rest: readonly [
114
- ...Parameters<E>,
115
- Error
116
- ]) => Promise<void>;
117
98
  /**
118
99
  * Resolves an inflight fetch. `fetchedAt` should `fetch`'s `createdAt`
119
- * @see https://resthooks.io/docs/api/Controller#resolve
100
+ * @see https://dataclient.io/docs/api/Controller#resolve
120
101
  */
121
102
  resolve: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
122
103
  update?: EndpointUpdateFunction<E> | undefined;
@@ -137,7 +118,7 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
137
118
  }) => Promise<void>;
138
119
  /**
139
120
  * Marks a new subscription to a given Endpoint.
140
- * @see https://resthooks.io/docs/api/Controller#subscribe
121
+ * @see https://dataclient.io/docs/api/Controller#subscribe
141
122
  */
142
123
  subscribe: <E extends EndpointInterface<FetchFunction, Schema | undefined, false | undefined>>(endpoint: E, ...args: readonly [
143
124
  null
@@ -146,7 +127,7 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
146
127
  ]) => Promise<void>;
147
128
  /**
148
129
  * Marks completion of subscription to a given Endpoint.
149
- * @see https://resthooks.io/docs/api/Controller#unsubscribe
130
+ * @see https://dataclient.io/docs/api/Controller#unsubscribe
150
131
  */
151
132
  unsubscribe: <E extends EndpointInterface<FetchFunction, Schema | undefined, false | undefined>>(endpoint: E, ...args: readonly [
152
133
  null
@@ -155,13 +136,13 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
155
136
  ]) => Promise<void>;
156
137
  /*************** More ***************/
157
138
  /**
158
- * Gets a snapshot (https://resthooks.io/docs/api/Snapshot)
159
- * @see https://resthooks.io/docs/api/Controller#snapshot
139
+ * Gets a snapshot (https://dataclient.io/docs/api/Snapshot)
140
+ * @see https://dataclient.io/docs/api/Controller#snapshot
160
141
  */
161
142
  snapshot: (state: State<unknown>, fetchedAt?: number) => SnapshotInterface;
162
143
  /**
163
144
  * Gets the error, if any, for a given endpoint. Returns undefined for no errors.
164
- * @see https://resthooks.io/docs/api/Controller#getError
145
+ * @see https://dataclient.io/docs/api/Controller#getError
165
146
  */
166
147
  getError: <E extends Pick<EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined>, "key">, Args extends readonly [
167
148
  null
@@ -173,7 +154,7 @@ export default class Controller<D extends GenericDispatch = DataClientDispatch>
173
154
  ]) => ErrorTypes | undefined;
174
155
  /**
175
156
  * Gets the (globally referentially stable) response for a given endpoint/args pair from state given.
176
- * @see https://resthooks.io/docs/api/Controller#getResponse
157
+ * @see https://dataclient.io/docs/api/Controller#getResponse
177
158
  */
178
159
  getResponse: <E extends Pick<EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined>, "schema" | "key" | "invalidIfStale">, Args extends readonly [
179
160
  null
package/ts3.4/index.d.ts CHANGED
@@ -8,7 +8,7 @@ export { default as applyManager } from './manager/applyManager.js';
8
8
  export { default as Controller } from './controller/Controller.js';
9
9
  export { DataClientDispatch, GenericDispatch, } from './controller/Controller.js';
10
10
  export { default as createFetch } from './controller/createFetch.js';
11
- export { default as createReceive } from './controller/createSet.js';
11
+ export { default as createSet } from './controller/createSet.js';
12
12
  export * from './controller/types.js';
13
13
  import * as actionTypes_1 from './actionTypes.js';
14
14
  export { actionTypes_1 as actionTypes };
@@ -1,4 +1,4 @@
1
- export { inferResults, DELETED, INVALID } from '@data-client/normalizr';
1
+ export { inferResults, INVALID } from '@data-client/normalizr';
2
2
  export { default as RIC } from './state/RIC.js';
3
3
  export { initialState } from './state/reducer/createReducer.js';
4
4
  //# sourceMappingURL=internal.d.ts.map
@@ -44,7 +44,7 @@ export default class NetworkManager implements Manager {
44
44
  /** Clear promise state for a given key */
45
45
  protected clear(key: string): void;
46
46
  protected getLastReset(): number;
47
- /** Called when middleware intercepts 'rest-hooks/fetch' action.
47
+ /** Called when middleware intercepts 'rdc/fetch' action.
48
48
  *
49
49
  * Will then start a promise for a key and potentially start the network
50
50
  * fetch.
@@ -53,16 +53,16 @@ export default class NetworkManager implements Manager {
53
53
  * for ensures mutation requests always go through.
54
54
  */
55
55
  protected handleFetch(action: FetchAction): Promise<any>;
56
- /** Called when middleware intercepts a receive action.
56
+ /** Called when middleware intercepts a set action.
57
57
  *
58
- * Will resolve the promise associated with receive key.
58
+ * Will resolve the promise associated with set key.
59
59
  */
60
- protected handleReceive(action: SetAction): void;
60
+ protected handleSet(action: SetAction): void;
61
61
  /** Attaches NetworkManager to store
62
62
  *
63
- * Intercepts 'rest-hooks/fetch' actions to start requests.
63
+ * Intercepts 'rdc/fetch' actions to start requests.
64
64
  *
65
- * Resolve/rejects a request when matching 'rest-hooks/receive' event
65
+ * Resolve/rejects a request when matching 'rdc/set' event
66
66
  * is seen.
67
67
  */
68
68
  getMiddleware(): Middleware;
@@ -11,7 +11,7 @@ export interface Subscription {
11
11
  export interface SubscriptionConstructable {
12
12
  new (action: Pick<SubscribeAction, Exclude<keyof SubscribeAction, 'type'>>, controller: Controller): Subscription;
13
13
  }
14
- /** Handles subscription actions -> fetch or receive actions
14
+ /** Handles subscription actions -> fetch or set actions
15
15
  *
16
16
  * Constructor takes a SubscriptionConstructable class to control how
17
17
  * subscriptions are handled. (e.g., polling, websockets)
@@ -28,20 +28,20 @@ export default class SubscriptionManager<S extends SubscriptionConstructable> im
28
28
  constructor(Subscription: S);
29
29
  /** Ensures all subscriptions are cleaned up. */
30
30
  cleanup(): void;
31
- /** Called when middleware intercepts 'rest-hooks/subscribe' action.
31
+ /** Called when middleware intercepts 'rdc/subscribe' action.
32
32
  *
33
33
  */
34
34
  protected handleSubscribe(action: SubscribeAction): void;
35
- /** Called when middleware intercepts 'rest-hooks/unsubscribe' action.
35
+ /** Called when middleware intercepts 'rdc/unsubscribe' action.
36
36
  *
37
37
  */
38
38
  protected handleUnsubscribe(action: UnsubscribeAction): void;
39
39
  /** Attaches Manager to store
40
40
  *
41
- * Intercepts 'rest-hooks/subscribe'/'rest-hooks/unsubscribe' to register resources that
41
+ * Intercepts 'rdc/subscribe'/'rest-hordc/ribe' to register resources that
42
42
  * need to be kept up to date.
43
43
  *
44
- * Will possibly dispatch 'rest-hooks/fetch' or 'rest-hooks/receive' to keep resources fresh
44
+ * Will possibly dispatch 'rdc/fetch' or 'rest-hordc/' to keep resources fresh
45
45
  *
46
46
  */
47
47
  getMiddleware(): Middleware;
@@ -1,15 +1,12 @@
1
1
  import Controller from './controller/Controller.js';
2
2
  import { ActionTypes, State } from './types.js';
3
3
  type RHDispatch<Actions = any> = (value: Actions) => Promise<void>;
4
- export interface MiddlewareAPI<R extends RestHooksReducer = RestHooksReducer> extends Controller<RHDispatch<ActionTypes>> {
5
- /** @deprecated use members directly instead */
6
- controller: Controller<RHDispatch<ActionTypes>>;
4
+ export interface MiddlewareAPI<R extends DataClientReducer = DataClientReducer> extends Controller<RHDispatch<ActionTypes>> {
7
5
  }
8
6
  export interface MiddlewareController<Actions = ActionTypes> extends Controller<RHDispatch<Actions>> {
9
- controller: Controller<RHDispatch<Actions>>;
10
7
  }
11
8
  export type Middleware<Actions = any> = <C extends MiddlewareController<Actions>>(controller: C) => (next: C['dispatch']) => C['dispatch'];
12
- export type RestHooksReducer = (prevState: State<unknown>, action: ActionTypes) => State<unknown>;
9
+ export type DataClientReducer = (prevState: State<unknown>, action: ActionTypes) => State<unknown>;
13
10
  export type Dispatch<R extends Reducer<any, any>> = (action: ReducerAction<R>) => Promise<void>;
14
11
  export type Reducer<S, A> = (prevState: S, action: A) => S;
15
12
  export type ReducerState<R extends Reducer<any, any>> = R extends Reducer<infer S, any> ? S : never;
@@ -1,3 +1 @@
1
- export { default as Controller } from '../controller/Controller.js';
2
- export * from '../controller/Controller.js';
3
1
  //# sourceMappingURL=index.d.ts.map
@@ -28,7 +28,7 @@ export declare function expireReducer(state: State<unknown>, action: ExpireAllAc
28
28
  };
29
29
  };
30
30
  };
31
- optimistic: (import("../../newActions.js").SetAction | import("../../newActions.js").OptimisticAction<import("packages/normalizr/lib/index.js").EndpointInterface<import("packages/normalizr/lib/index.js").FetchFunction, import("packages/normalizr/lib/interface.js").Schema | undefined, boolean | undefined> & {
31
+ optimistic: (import("../../actions.js").SetAction | import("../../actions.js").OptimisticAction<import("packages/normalizr/lib/index.js").EndpointInterface<import("packages/normalizr/lib/index.js").FetchFunction, import("packages/normalizr/lib/interface.js").Schema | undefined, boolean | undefined> & {
32
32
  update?: import("../../index.js").EndpointUpdateFunction<import("packages/normalizr/lib/index.js").EndpointInterface<import("packages/normalizr/lib/index.js").FetchFunction, import("packages/normalizr/lib/interface.js").Schema | undefined, boolean | undefined>> | undefined;
33
33
  }>)[];
34
34
  lastReset: number;
@@ -28,7 +28,7 @@ export declare function invalidateReducer(state: State<unknown>, action: Invalid
28
28
  };
29
29
  };
30
30
  };
31
- optimistic: (import("../../newActions.js").SetAction | import("../../newActions.js").OptimisticAction<import("packages/normalizr/lib/index.js").EndpointInterface<import("packages/normalizr/lib/index.js").FetchFunction, import("packages/normalizr/lib/interface.js").Schema | undefined, boolean | undefined> & {
31
+ optimistic: (import("../../actions.js").SetAction | import("../../actions.js").OptimisticAction<import("packages/normalizr/lib/index.js").EndpointInterface<import("packages/normalizr/lib/index.js").FetchFunction, import("packages/normalizr/lib/interface.js").Schema | undefined, boolean | undefined> & {
32
32
  update?: import("../../index.js").EndpointUpdateFunction<import("packages/normalizr/lib/index.js").EndpointInterface<import("packages/normalizr/lib/index.js").FetchFunction, import("packages/normalizr/lib/interface.js").Schema | undefined, boolean | undefined>> | undefined;
33
33
  }>)[];
34
34
  lastReset: number;
@@ -1,4 +1,4 @@
1
1
  import Controller from '../../controller/Controller.js';
2
- import { State, ReceiveAction, OptimisticAction } from '../../types.js';
3
- export declare function setReducer(state: State<unknown>, action: OptimisticAction | ReceiveAction, controller: Controller): State<unknown>;
2
+ import { State, SetAction, OptimisticAction } from '../../types.js';
3
+ export declare function setReducer(state: State<unknown>, action: OptimisticAction | SetAction, controller: Controller): State<unknown>;
4
4
  //# sourceMappingURL=setReducer.d.ts.map
package/ts3.4/types.d.ts CHANGED
@@ -1,11 +1,11 @@
1
1
  import { NormalizedIndex } from '@data-client/normalizr';
2
2
  import { UpdateFunction, AbstractInstanceType } from '@data-client/normalizr';
3
3
  import { ErrorTypes } from '@data-client/normalizr';
4
+ import { ActionTypes, SetAction, OptimisticAction } from './actions.js';
4
5
  import { SET_TYPE } from './actionTypes.js';
5
6
  import { Dispatch, Middleware, MiddlewareAPI } from './middlewareTypes.js';
6
- import { ActionTypes, SetAction, OptimisticAction } from './newActions.js';
7
7
  export { AbstractInstanceType, UpdateFunction };
8
- export type ReceiveTypes = typeof SET_TYPE;
8
+ export type SetTypes = typeof SET_TYPE;
9
9
  export type PK = string;
10
10
  export interface State<T> {
11
11
  readonly entities: {
@@ -39,9 +39,7 @@ export interface State<T> {
39
39
  readonly optimistic: (SetAction | OptimisticAction)[];
40
40
  readonly lastReset: number;
41
41
  }
42
- import * as newActions_1 from './newActions.js';
43
- export { newActions_1 as newActions };
44
- export * from './newActions.js';
42
+ export * from './actions.js';
45
43
  export interface Manager<Actions = ActionTypes> {
46
44
  getMiddleware(): Middleware<Actions>;
47
45
  cleanup(): void;
package/legacy/fsa.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2ZzYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkQW5kTWV0YSxcbiAgRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25XaXRoUGF5bG9hZCxcbiAgRlNBLFxufSBmcm9tICdmbHV4LXN0YW5kYXJkLWFjdGlvbic7XG5cbmV4cG9ydCB0eXBlIEVycm9yYWJsZUZTQVdpdGhQYXlsb2FkQW5kTWV0YTxcbiAgVHlwZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgUGF5bG9hZCA9IHVuZGVmaW5lZCxcbiAgTWV0YSA9IHVuZGVmaW5lZCxcbiAgQ3VzdG9tRXJyb3IgZXh0ZW5kcyBFcnJvciA9IEVycm9yLFxuPiA9XG4gIHwgRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25XaXRoUGF5bG9hZEFuZE1ldGE8VHlwZSwgQ3VzdG9tRXJyb3IsIE1ldGE+XG4gIHwgTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkQW5kTWV0YTxUeXBlLCBQYXlsb2FkLCBNZXRhPjtcblxuZXhwb3J0IHR5cGUgRXJyb3JhYmxlRlNBV2l0aE1ldGE8XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBheWxvYWQgPSB1bmRlZmluZWQsXG4gIE1ldGEgPSB1bmRlZmluZWQsXG4gIEN1c3RvbUVycm9yIGV4dGVuZHMgRXJyb3IgPSBFcnJvcixcbj4gPVxuICB8IEVycm9yRmx1eFN0YW5kYXJkQWN0aW9uV2l0aFBheWxvYWRBbmRNZXRhPFR5cGUsIEN1c3RvbUVycm9yLCBNZXRhPlxuICB8IE5vRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25XaXRoTWV0YTxUeXBlLCBQYXlsb2FkLCBNZXRhPjtcblxuZXhwb3J0IHR5cGUgRXJyb3JhYmxlRlNBV2l0aFBheWxvYWQ8XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBheWxvYWQgPSB1bmRlZmluZWQsXG4gIE1ldGEgPSB1bmRlZmluZWQsXG4gIEN1c3RvbUVycm9yIGV4dGVuZHMgRXJyb3IgPSBFcnJvcixcbj4gPVxuICB8IEVycm9yRmx1eFN0YW5kYXJkQWN0aW9uV2l0aFBheWxvYWQ8VHlwZSwgQ3VzdG9tRXJyb3IsIE1ldGE+XG4gIHwgTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkPFR5cGUsIFBheWxvYWQsIE1ldGE+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb248XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBheWxvYWQgPSB1bmRlZmluZWQsXG4gIE1ldGEgPSB1bmRlZmluZWQsXG4+IGV4dGVuZHMgRlNBPFR5cGUsIFBheWxvYWQsIE1ldGE+IHtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cblxuLyoqXG4gKiBBIEZsdXggU3RhbmRhcmQgYWN0aW9uIHdpdGggYSByZXF1aXJlZCBwYXlsb2FkIHByb3BlcnR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25XaXRoUGF5bG9hZDxcbiAgVHlwZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgUGF5bG9hZCA9IHVuZGVmaW5lZCxcbiAgTWV0YSA9IHVuZGVmaW5lZCxcbj4gZXh0ZW5kcyBOb0Vycm9yRmx1eFN0YW5kYXJkQWN0aW9uPFR5cGUsIFBheWxvYWQsIE1ldGE+IHtcbiAgLyoqXG4gICAqIFRoZSByZXF1aXJlZCBgcGF5bG9hZGAgcHJvcGVydHkgTUFZIGJlIGFueSB0eXBlIG9mIHZhbHVlLlxuICAgKiBJdCByZXByZXNlbnRzIHRoZSBwYXlsb2FkIG9mIHRoZSBhY3Rpb24uXG4gICAqIEFueSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWN0aW9uIHRoYXQgaXMgbm90IHRoZSB0eXBlIG9yIHN0YXR1cyBvZiB0aGUgYWN0aW9uIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBgcGF5bG9hZGAgZmllbGQuXG4gICAqIEJ5IGNvbnZlbnRpb24sIGlmIGBlcnJvcmAgaXMgYHRydWVgLCB0aGUgYHBheWxvYWRgIFNIT1VMRCBiZSBhbiBlcnJvciBvYmplY3QuXG4gICAqIFRoaXMgaXMgYWtpbiB0byByZWplY3RpbmcgYSBwcm9taXNlIHdpdGggYW4gZXJyb3Igb2JqZWN0LlxuICAgKi9cbiAgcGF5bG9hZDogUGF5bG9hZDtcbn1cblxuLyoqXG4gKiBBIEZsdXggU3RhbmRhcmQgYWN0aW9uIHdpdGggYSByZXF1aXJlZCBtZXRhZGF0YSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb0Vycm9yRmx1eFN0YW5kYXJkQWN0aW9uV2l0aE1ldGE8XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBheWxvYWQgPSB1bmRlZmluZWQsXG4gIE1ldGEgPSB1bmRlZmluZWQsXG4+IGV4dGVuZHMgTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbjxUeXBlLCBQYXlsb2FkLCBNZXRhPiB7XG4gIC8qKlxuICAgKiBUaGUgcmVxdWlyZWQgYG1ldGFgIHByb3BlcnR5IE1BWSBiZSBhbnkgdHlwZSBvZiB2YWx1ZS5cbiAgICogSXQgaXMgaW50ZW5kZWQgZm9yIGFueSBleHRyYSBpbmZvcm1hdGlvbiB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZSBwYXlsb2FkLlxuICAgKi9cbiAgbWV0YTogTWV0YTtcbn1cbi8qKlxuICogQSBGbHV4IFN0YW5kYXJkIGFjdGlvbiB3aXRoIHJlcXVpcmVkIHBheWxvYWQgYW5kIG1ldGFkYXRhIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIE5vRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25XaXRoUGF5bG9hZEFuZE1ldGE8XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBheWxvYWQgPSB1bmRlZmluZWQsXG4gIE1ldGEgPSB1bmRlZmluZWQsXG4+ID0gTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkPFR5cGUsIFBheWxvYWQsIE1ldGE+ICZcbiAgTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhNZXRhPFR5cGUsIFBheWxvYWQsIE1ldGE+O1xuXG4vKipcbiAqIEEgRmx1eCBTdGFuZGFyZCBhY3Rpb24gd2l0aCBpbmZlcnJlZCByZXF1aXJlbWVudHMgZm9yIHRoZSBwYXlsb2FkIGFuZCBtZXRhZGF0YSBwcm9wZXJ0aWVzLlxuICogVGhlIGBwYXlsb2FkYCBhbmQgYG1ldGFgIHByb3BlcnRpZXMgd2lsbCBiZSByZXF1aXJlZCBpZiB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGFyZ3VtZW50XG4gKiBpZiBub3QgdGhlIGB1bmRlZmluZWRgIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIE5vRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25BdXRvPFxuICBUeXBlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxuICBQYXlsb2FkID0gdW5kZWZpbmVkLFxuICBNZXRhID0gdW5kZWZpbmVkLFxuPiA9IFBheWxvYWQgZXh0ZW5kcyB1bmRlZmluZWRcbiAgPyBNZXRhIGV4dGVuZHMgdW5kZWZpbmVkXG4gICAgPyBOb0Vycm9yRmx1eFN0YW5kYXJkQWN0aW9uPFR5cGUsIFBheWxvYWQsIE1ldGE+XG4gICAgOiBOb0Vycm9yRmx1eFN0YW5kYXJkQWN0aW9uV2l0aE1ldGE8VHlwZSwgUGF5bG9hZCwgTWV0YT5cbiAgOiBNZXRhIGV4dGVuZHMgdW5kZWZpbmVkXG4gID8gTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkPFR5cGUsIFBheWxvYWQsIE1ldGE+XG4gIDogTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkQW5kTWV0YTxUeXBlLCBQYXlsb2FkLCBNZXRhPjtcbiJdLCJtYXBwaW5ncyI6IiJ9
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL25ld0FjdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBFbmRwb2ludEludGVyZmFjZSxcbiAgUmVzb2x2ZVR5cGUsXG4gIFVua25vd25FcnJvcixcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB0eXBlIHtcbiAgU0VUX1RZUEUsXG4gIFJFU0VUX1RZUEUsXG4gIEZFVENIX1RZUEUsXG4gIFNVQlNDUklCRV9UWVBFLFxuICBVTlNVQlNDUklCRV9UWVBFLFxuICBJTlZBTElEQVRFX1RZUEUsXG4gIEdDX1RZUEUsXG4gIE9QVElNSVNUSUNfVFlQRSxcbiAgSU5WQUxJREFURUFMTF9UWVBFLFxuICBFWFBJUkVBTExfVFlQRSxcbn0gZnJvbSAnLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL2NvbnRyb2xsZXIvdHlwZXMuanMnO1xuXG50eXBlIEVuZHBvaW50QW5kVXBkYXRlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4gPSBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbn07XG50eXBlIEVuZHBvaW50RGVmYXVsdCA9IEVuZHBvaW50SW50ZXJmYWNlICYge1xuICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEVuZHBvaW50SW50ZXJmYWNlPjtcbn07XG5cbi8qIFJFQ0VJVkUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2V0TWV0YSB7XG4gIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICBrZXk6IHN0cmluZztcbiAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gIGRhdGU6IG51bWJlcjtcbiAgZXhwaXJlc0F0OiBudW1iZXI7XG59XG5leHBvcnQgaW50ZXJmYWNlIFNldEFjdGlvblN1Y2Nlc3M8XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdCxcbj4ge1xuICB0eXBlOiB0eXBlb2YgU0VUX1RZUEU7XG4gIGVuZHBvaW50OiBFO1xuICBtZXRhOiBTZXRNZXRhO1xuICBwYXlsb2FkOiBSZXNvbHZlVHlwZTxFPjtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgU2V0QWN0aW9uRXJyb3I8XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdCxcbj4ge1xuICB0eXBlOiB0eXBlb2YgU0VUX1RZUEU7XG4gIGVuZHBvaW50OiBFO1xuICBtZXRhOiBTZXRNZXRhO1xuICBwYXlsb2FkOiBVbmtub3duRXJyb3I7XG4gIGVycm9yOiB0cnVlO1xufVxuZXhwb3J0IHR5cGUgU2V0QWN0aW9uPEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdD4gPVxuICB8IFNldEFjdGlvblN1Y2Nlc3M8RT5cbiAgfCBTZXRBY3Rpb25FcnJvcjxFPjtcblxuLy8gVE9ETyhicmVha2luZyk6IFJlbW92ZSAtIGxlZ2FjeSBuYW1lIGNvbXBhdGliaWxpdHlcbi8qKiBAZGVwcmVjYXRlZCB1c2UgU2V0QWN0aW9uIGluc3RlYWQgKi9cbmV4cG9ydCB0eXBlIFJlY2VpdmVBY3Rpb248RSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0PiA9XG4gIFNldEFjdGlvbjxFPjtcblxuLyogRkVUQ0ggKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hNZXRhIHtcbiAgYXJnczogcmVhZG9ubHkgYW55W107XG4gIGtleTogc3RyaW5nO1xuICB0aHJvdHRsZTogYm9vbGVhbjtcbiAgcmVzb2x2ZTogKHZhbHVlPzogYW55IHwgUHJvbWlzZUxpa2U8YW55PikgPT4gdm9pZDtcbiAgcmVqZWN0OiAocmVhc29uPzogYW55KSA9PiB2b2lkO1xuICBwcm9taXNlOiBQcm9taXNlTGlrZTxhbnk+O1xuICBjcmVhdGVkQXQ6IG51bWJlcjtcbiAgLy8gaW5kaWNhdGVzIHdoZXRoZXIgbmV0d29yayBtYW5hZ2VyIHByb2Nlc3NlZCBpdFxuICBubT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hBY3Rpb248RSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0PiB7XG4gIHR5cGU6IHR5cGVvZiBGRVRDSF9UWVBFO1xuICBlbmRwb2ludDogRTtcbiAgbWV0YTogRmV0Y2hNZXRhO1xuICBwYXlsb2FkOiAoKSA9PiBSZXR1cm5UeXBlPEU+O1xufVxuXG4vKiBPUFRJTUlTVElDICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGltaXN0aWNBY3Rpb248XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEFuZFVwZGF0ZTxFPiA9IEVuZHBvaW50RGVmYXVsdCxcbj4ge1xuICB0eXBlOiB0eXBlb2YgT1BUSU1JU1RJQ19UWVBFO1xuICBlbmRwb2ludDogRTtcbiAgbWV0YTogU2V0TWV0YTtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cblxuLyogU1VCU0NSSUJFICovXG5leHBvcnQgaW50ZXJmYWNlIFN1YnNjcmliZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBTVUJTQ1JJQkVfVFlQRTtcbiAgZW5kcG9pbnQ6IEU7XG4gIG1ldGE6IHtcbiAgICBhcmdzOiByZWFkb25seSBhbnlbXTtcbiAgICBrZXk6IHN0cmluZztcbiAgfTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBVbnN1YnNjcmliZUFjdGlvbjxcbiAgRSBleHRlbmRzIEVuZHBvaW50QW5kVXBkYXRlPEU+ID0gRW5kcG9pbnREZWZhdWx0LFxuPiB7XG4gIHR5cGU6IHR5cGVvZiBVTlNVQlNDUklCRV9UWVBFO1xuICBlbmRwb2ludDogRTtcbiAgbWV0YToge1xuICAgIGFyZ3M6IHJlYWRvbmx5IGFueVtdO1xuICAgIGtleTogc3RyaW5nO1xuICB9O1xufVxuXG4vKiBFWFBJUlkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXhwaXJlQWxsQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEVYUElSRUFMTF9UWVBFO1xuICB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW47XG59XG5cbi8qIElOVkFMSURBVEUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW52YWxpZGF0ZUFsbEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBJTlZBTElEQVRFQUxMX1RZUEU7XG4gIHRlc3RLZXk6IChrZXk6IHN0cmluZykgPT4gYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJbnZhbGlkYXRlQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIElOVkFMSURBVEVfVFlQRTtcbiAgbWV0YToge1xuICAgIGtleTogc3RyaW5nO1xuICB9O1xufVxuXG4vKiBSRVNFVCAqL1xuZXhwb3J0IGludGVyZmFjZSBSZXNldEFjdGlvbiB7XG4gIHR5cGU6IHR5cGVvZiBSRVNFVF9UWVBFO1xuICBkYXRlOiBudW1iZXI7XG59XG5cbi8qIEdDICovXG5leHBvcnQgaW50ZXJmYWNlIEdDQWN0aW9uIHtcbiAgdHlwZTogdHlwZW9mIEdDX1RZUEU7XG4gIGVudGl0aWVzOiBbc3RyaW5nLCBzdHJpbmddW107XG4gIHJlc3VsdHM6IHN0cmluZ1tdO1xufVxuXG5leHBvcnQgdHlwZSBBY3Rpb25UeXBlcyA9XG4gIHwgRmV0Y2hBY3Rpb25cbiAgfCBPcHRpbWlzdGljQWN0aW9uXG4gIHwgU2V0QWN0aW9uXG4gIHwgU3Vic2NyaWJlQWN0aW9uXG4gIHwgVW5zdWJzY3JpYmVBY3Rpb25cbiAgfCBJbnZhbGlkYXRlQWN0aW9uXG4gIHwgSW52YWxpZGF0ZUFsbEFjdGlvblxuICB8IEV4cGlyZUFsbEFjdGlvblxuICB8IFJlc2V0QWN0aW9uXG4gIHwgR0NBY3Rpb247XG4iXSwibWFwcGluZ3MiOiIifQ==
package/lib/fsa.d.ts DELETED
@@ -1,41 +0,0 @@
1
- import { ErrorFluxStandardActionWithPayloadAndMeta, ErrorFluxStandardActionWithPayload, FSA } from 'flux-standard-action';
2
- export type ErrorableFSAWithPayloadAndMeta<Type extends string = string, Payload = undefined, Meta = undefined, CustomError extends Error = Error> = ErrorFluxStandardActionWithPayloadAndMeta<Type, CustomError, Meta> | NoErrorFluxStandardActionWithPayloadAndMeta<Type, Payload, Meta>;
3
- export type ErrorableFSAWithMeta<Type extends string = string, Payload = undefined, Meta = undefined, CustomError extends Error = Error> = ErrorFluxStandardActionWithPayloadAndMeta<Type, CustomError, Meta> | NoErrorFluxStandardActionWithMeta<Type, Payload, Meta>;
4
- export type ErrorableFSAWithPayload<Type extends string = string, Payload = undefined, Meta = undefined, CustomError extends Error = Error> = ErrorFluxStandardActionWithPayload<Type, CustomError, Meta> | NoErrorFluxStandardActionWithPayload<Type, Payload, Meta>;
5
- export interface NoErrorFluxStandardAction<Type extends string = string, Payload = undefined, Meta = undefined> extends FSA<Type, Payload, Meta> {
6
- error?: false;
7
- }
8
- /**
9
- * A Flux Standard action with a required payload property.
10
- */
11
- export interface NoErrorFluxStandardActionWithPayload<Type extends string = string, Payload = undefined, Meta = undefined> extends NoErrorFluxStandardAction<Type, Payload, Meta> {
12
- /**
13
- * The required `payload` property MAY be any type of value.
14
- * It represents the payload of the action.
15
- * Any information about the action that is not the type or status of the action should be part of the `payload` field.
16
- * By convention, if `error` is `true`, the `payload` SHOULD be an error object.
17
- * This is akin to rejecting a promise with an error object.
18
- */
19
- payload: Payload;
20
- }
21
- /**
22
- * A Flux Standard action with a required metadata property.
23
- */
24
- export interface NoErrorFluxStandardActionWithMeta<Type extends string = string, Payload = undefined, Meta = undefined> extends NoErrorFluxStandardAction<Type, Payload, Meta> {
25
- /**
26
- * The required `meta` property MAY be any type of value.
27
- * It is intended for any extra information that is not part of the payload.
28
- */
29
- meta: Meta;
30
- }
31
- /**
32
- * A Flux Standard action with required payload and metadata properties.
33
- */
34
- export type NoErrorFluxStandardActionWithPayloadAndMeta<Type extends string = string, Payload = undefined, Meta = undefined> = NoErrorFluxStandardActionWithPayload<Type, Payload, Meta> & NoErrorFluxStandardActionWithMeta<Type, Payload, Meta>;
35
- /**
36
- * A Flux Standard action with inferred requirements for the payload and metadata properties.
37
- * The `payload` and `meta` properties will be required if the corresponding type argument
38
- * if not the `undefined` type.
39
- */
40
- export type NoErrorFluxStandardActionAuto<Type extends string = string, Payload = undefined, Meta = undefined> = Payload extends undefined ? Meta extends undefined ? NoErrorFluxStandardAction<Type, Payload, Meta> : NoErrorFluxStandardActionWithMeta<Type, Payload, Meta> : Meta extends undefined ? NoErrorFluxStandardActionWithPayload<Type, Payload, Meta> : NoErrorFluxStandardActionWithPayloadAndMeta<Type, Payload, Meta>;
41
- //# sourceMappingURL=fsa.d.ts.map
package/lib/fsa.d.ts.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"fsa.d.ts","sourceRoot":"","sources":["../src/fsa.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yCAAyC,EACzC,kCAAkC,EAClC,GAAG,EACJ,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,8BAA8B,CACxC,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,WAAW,SAAS,KAAK,GAAG,KAAK,IAE/B,yCAAyC,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAClE,2CAA2C,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAErE,MAAM,MAAM,oBAAoB,CAC9B,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,WAAW,SAAS,KAAK,GAAG,KAAK,IAE/B,yCAAyC,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAClE,iCAAiC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAE3D,MAAM,MAAM,uBAAuB,CACjC,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,EAChB,WAAW,SAAS,KAAK,GAAG,KAAK,IAE/B,kCAAkC,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,GAC3D,oCAAoC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAE9D,MAAM,WAAW,yBAAyB,CACxC,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,CAChB,SAAQ,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,oCAAoC,CACnD,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,CAChB,SAAQ,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;IACtD;;;;;;OAMG;IACH,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iCAAiC,CAChD,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,CAChB,SAAQ,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC;IACtD;;;OAGG;IACH,IAAI,EAAE,IAAI,CAAC;CACZ;AACD;;GAEG;AACH,MAAM,MAAM,2CAA2C,CACrD,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,IACd,oCAAoC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAC3D,iCAAiC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AAEzD;;;;GAIG;AACH,MAAM,MAAM,6BAA6B,CACvC,IAAI,SAAS,MAAM,GAAG,MAAM,EAC5B,OAAO,GAAG,SAAS,EACnB,IAAI,GAAG,SAAS,IACd,OAAO,SAAS,SAAS,GACzB,IAAI,SAAS,SAAS,GACpB,yBAAyB,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GAC9C,iCAAiC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GACxD,IAAI,SAAS,SAAS,GACtB,oCAAoC,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,GACzD,2CAA2C,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC"}
package/lib/fsa.js DELETED
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2ZzYS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBFcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkQW5kTWV0YSxcbiAgRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25XaXRoUGF5bG9hZCxcbiAgRlNBLFxufSBmcm9tICdmbHV4LXN0YW5kYXJkLWFjdGlvbic7XG5cbmV4cG9ydCB0eXBlIEVycm9yYWJsZUZTQVdpdGhQYXlsb2FkQW5kTWV0YTxcbiAgVHlwZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgUGF5bG9hZCA9IHVuZGVmaW5lZCxcbiAgTWV0YSA9IHVuZGVmaW5lZCxcbiAgQ3VzdG9tRXJyb3IgZXh0ZW5kcyBFcnJvciA9IEVycm9yLFxuPiA9XG4gIHwgRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25XaXRoUGF5bG9hZEFuZE1ldGE8VHlwZSwgQ3VzdG9tRXJyb3IsIE1ldGE+XG4gIHwgTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkQW5kTWV0YTxUeXBlLCBQYXlsb2FkLCBNZXRhPjtcblxuZXhwb3J0IHR5cGUgRXJyb3JhYmxlRlNBV2l0aE1ldGE8XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBheWxvYWQgPSB1bmRlZmluZWQsXG4gIE1ldGEgPSB1bmRlZmluZWQsXG4gIEN1c3RvbUVycm9yIGV4dGVuZHMgRXJyb3IgPSBFcnJvcixcbj4gPVxuICB8IEVycm9yRmx1eFN0YW5kYXJkQWN0aW9uV2l0aFBheWxvYWRBbmRNZXRhPFR5cGUsIEN1c3RvbUVycm9yLCBNZXRhPlxuICB8IE5vRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25XaXRoTWV0YTxUeXBlLCBQYXlsb2FkLCBNZXRhPjtcblxuZXhwb3J0IHR5cGUgRXJyb3JhYmxlRlNBV2l0aFBheWxvYWQ8XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBheWxvYWQgPSB1bmRlZmluZWQsXG4gIE1ldGEgPSB1bmRlZmluZWQsXG4gIEN1c3RvbUVycm9yIGV4dGVuZHMgRXJyb3IgPSBFcnJvcixcbj4gPVxuICB8IEVycm9yRmx1eFN0YW5kYXJkQWN0aW9uV2l0aFBheWxvYWQ8VHlwZSwgQ3VzdG9tRXJyb3IsIE1ldGE+XG4gIHwgTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkPFR5cGUsIFBheWxvYWQsIE1ldGE+O1xuXG5leHBvcnQgaW50ZXJmYWNlIE5vRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb248XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBheWxvYWQgPSB1bmRlZmluZWQsXG4gIE1ldGEgPSB1bmRlZmluZWQsXG4+IGV4dGVuZHMgRlNBPFR5cGUsIFBheWxvYWQsIE1ldGE+IHtcbiAgZXJyb3I/OiBmYWxzZTtcbn1cblxuLyoqXG4gKiBBIEZsdXggU3RhbmRhcmQgYWN0aW9uIHdpdGggYSByZXF1aXJlZCBwYXlsb2FkIHByb3BlcnR5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5vRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25XaXRoUGF5bG9hZDxcbiAgVHlwZSBleHRlbmRzIHN0cmluZyA9IHN0cmluZyxcbiAgUGF5bG9hZCA9IHVuZGVmaW5lZCxcbiAgTWV0YSA9IHVuZGVmaW5lZCxcbj4gZXh0ZW5kcyBOb0Vycm9yRmx1eFN0YW5kYXJkQWN0aW9uPFR5cGUsIFBheWxvYWQsIE1ldGE+IHtcbiAgLyoqXG4gICAqIFRoZSByZXF1aXJlZCBgcGF5bG9hZGAgcHJvcGVydHkgTUFZIGJlIGFueSB0eXBlIG9mIHZhbHVlLlxuICAgKiBJdCByZXByZXNlbnRzIHRoZSBwYXlsb2FkIG9mIHRoZSBhY3Rpb24uXG4gICAqIEFueSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYWN0aW9uIHRoYXQgaXMgbm90IHRoZSB0eXBlIG9yIHN0YXR1cyBvZiB0aGUgYWN0aW9uIHNob3VsZCBiZSBwYXJ0IG9mIHRoZSBgcGF5bG9hZGAgZmllbGQuXG4gICAqIEJ5IGNvbnZlbnRpb24sIGlmIGBlcnJvcmAgaXMgYHRydWVgLCB0aGUgYHBheWxvYWRgIFNIT1VMRCBiZSBhbiBlcnJvciBvYmplY3QuXG4gICAqIFRoaXMgaXMgYWtpbiB0byByZWplY3RpbmcgYSBwcm9taXNlIHdpdGggYW4gZXJyb3Igb2JqZWN0LlxuICAgKi9cbiAgcGF5bG9hZDogUGF5bG9hZDtcbn1cblxuLyoqXG4gKiBBIEZsdXggU3RhbmRhcmQgYWN0aW9uIHdpdGggYSByZXF1aXJlZCBtZXRhZGF0YSBwcm9wZXJ0eS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOb0Vycm9yRmx1eFN0YW5kYXJkQWN0aW9uV2l0aE1ldGE8XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBheWxvYWQgPSB1bmRlZmluZWQsXG4gIE1ldGEgPSB1bmRlZmluZWQsXG4+IGV4dGVuZHMgTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbjxUeXBlLCBQYXlsb2FkLCBNZXRhPiB7XG4gIC8qKlxuICAgKiBUaGUgcmVxdWlyZWQgYG1ldGFgIHByb3BlcnR5IE1BWSBiZSBhbnkgdHlwZSBvZiB2YWx1ZS5cbiAgICogSXQgaXMgaW50ZW5kZWQgZm9yIGFueSBleHRyYSBpbmZvcm1hdGlvbiB0aGF0IGlzIG5vdCBwYXJ0IG9mIHRoZSBwYXlsb2FkLlxuICAgKi9cbiAgbWV0YTogTWV0YTtcbn1cbi8qKlxuICogQSBGbHV4IFN0YW5kYXJkIGFjdGlvbiB3aXRoIHJlcXVpcmVkIHBheWxvYWQgYW5kIG1ldGFkYXRhIHByb3BlcnRpZXMuXG4gKi9cbmV4cG9ydCB0eXBlIE5vRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25XaXRoUGF5bG9hZEFuZE1ldGE8XG4gIFR5cGUgZXh0ZW5kcyBzdHJpbmcgPSBzdHJpbmcsXG4gIFBheWxvYWQgPSB1bmRlZmluZWQsXG4gIE1ldGEgPSB1bmRlZmluZWQsXG4+ID0gTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkPFR5cGUsIFBheWxvYWQsIE1ldGE+ICZcbiAgTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhNZXRhPFR5cGUsIFBheWxvYWQsIE1ldGE+O1xuXG4vKipcbiAqIEEgRmx1eCBTdGFuZGFyZCBhY3Rpb24gd2l0aCBpbmZlcnJlZCByZXF1aXJlbWVudHMgZm9yIHRoZSBwYXlsb2FkIGFuZCBtZXRhZGF0YSBwcm9wZXJ0aWVzLlxuICogVGhlIGBwYXlsb2FkYCBhbmQgYG1ldGFgIHByb3BlcnRpZXMgd2lsbCBiZSByZXF1aXJlZCBpZiB0aGUgY29ycmVzcG9uZGluZyB0eXBlIGFyZ3VtZW50XG4gKiBpZiBub3QgdGhlIGB1bmRlZmluZWRgIHR5cGUuXG4gKi9cbmV4cG9ydCB0eXBlIE5vRXJyb3JGbHV4U3RhbmRhcmRBY3Rpb25BdXRvPFxuICBUeXBlIGV4dGVuZHMgc3RyaW5nID0gc3RyaW5nLFxuICBQYXlsb2FkID0gdW5kZWZpbmVkLFxuICBNZXRhID0gdW5kZWZpbmVkLFxuPiA9IFBheWxvYWQgZXh0ZW5kcyB1bmRlZmluZWRcbiAgPyBNZXRhIGV4dGVuZHMgdW5kZWZpbmVkXG4gICAgPyBOb0Vycm9yRmx1eFN0YW5kYXJkQWN0aW9uPFR5cGUsIFBheWxvYWQsIE1ldGE+XG4gICAgOiBOb0Vycm9yRmx1eFN0YW5kYXJkQWN0aW9uV2l0aE1ldGE8VHlwZSwgUGF5bG9hZCwgTWV0YT5cbiAgOiBNZXRhIGV4dGVuZHMgdW5kZWZpbmVkXG4gID8gTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkPFR5cGUsIFBheWxvYWQsIE1ldGE+XG4gIDogTm9FcnJvckZsdXhTdGFuZGFyZEFjdGlvbldpdGhQYXlsb2FkQW5kTWV0YTxUeXBlLCBQYXlsb2FkLCBNZXRhPjtcbiJdLCJtYXBwaW5ncyI6IiJ9