@data-client/core 0.1.0 → 0.2.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 (243) hide show
  1. package/dist/index.js +133 -409
  2. package/dist/index.umd.min.js +1 -1
  3. package/dist/next.js +61 -101
  4. package/legacy/actionTypes.js +2 -2
  5. package/legacy/controller/Controller.js +276 -6
  6. package/legacy/controller/createFetch.js +3 -14
  7. package/legacy/controller/createInvalidate.js +1 -1
  8. package/legacy/controller/createInvalidateAll.js +1 -1
  9. package/legacy/controller/createOptimistic.js +1 -7
  10. package/legacy/controller/createReset.js +1 -1
  11. package/legacy/controller/createSet.js +31 -0
  12. package/legacy/controller/createSubscription.js +3 -7
  13. package/legacy/index.js +2 -5
  14. package/legacy/internal.js +2 -2
  15. package/legacy/manager/DevtoolsManager.js +2 -2
  16. package/legacy/manager/LogoutManager.js +2 -2
  17. package/legacy/manager/NetworkManager.js +28 -59
  18. package/legacy/manager/PollingSubscription.js +18 -27
  19. package/legacy/manager/SubscriptionManager.js +16 -42
  20. package/legacy/middlewareTypes.js +1 -1
  21. package/legacy/newActions.js +1 -1
  22. package/legacy/next/index.js +3 -3
  23. package/legacy/state/reducer/createReducer.js +2 -6
  24. package/legacy/state/reducer/fetchReducer.js +3 -13
  25. package/legacy/state/reducer/invalidateReducer.js +1 -1
  26. package/legacy/state/reducer/setReducer.js +9 -16
  27. package/legacy/types.js +2 -6
  28. package/lib/actionTypes.d.ts +1 -0
  29. package/lib/actionTypes.d.ts.map +1 -1
  30. package/lib/actionTypes.js +2 -2
  31. package/lib/controller/Controller.d.ts +126 -6
  32. package/lib/controller/Controller.d.ts.map +1 -1
  33. package/lib/controller/Controller.js +276 -6
  34. package/lib/controller/createFetch.d.ts +2 -2
  35. package/lib/controller/createFetch.d.ts.map +1 -1
  36. package/lib/controller/createFetch.js +3 -14
  37. package/lib/controller/createInvalidate.d.ts +1 -1
  38. package/lib/controller/createInvalidate.d.ts.map +1 -1
  39. package/lib/controller/createInvalidate.js +1 -1
  40. package/lib/controller/createInvalidateAll.d.ts +1 -1
  41. package/lib/controller/createInvalidateAll.d.ts.map +1 -1
  42. package/lib/controller/createInvalidateAll.js +1 -1
  43. package/lib/controller/createOptimistic.d.ts +2 -2
  44. package/lib/controller/createOptimistic.d.ts.map +1 -1
  45. package/lib/controller/createOptimistic.js +1 -7
  46. package/lib/controller/createReset.d.ts +1 -1
  47. package/lib/controller/createReset.d.ts.map +1 -1
  48. package/lib/controller/createReset.js +1 -1
  49. package/lib/controller/{createReceive.d.ts → createSet.d.ts} +6 -6
  50. package/lib/controller/createSet.d.ts.map +1 -0
  51. package/lib/controller/createSet.js +31 -0
  52. package/lib/controller/createSubscription.d.ts +3 -3
  53. package/lib/controller/createSubscription.d.ts.map +1 -1
  54. package/lib/controller/createSubscription.js +3 -7
  55. package/lib/index.d.ts +2 -6
  56. package/lib/index.d.ts.map +1 -1
  57. package/lib/index.js +2 -5
  58. package/lib/internal.d.ts +1 -1
  59. package/lib/internal.d.ts.map +1 -1
  60. package/lib/internal.js +2 -2
  61. package/lib/manager/DevtoolsManager.d.ts +1 -1
  62. package/lib/manager/DevtoolsManager.js +2 -2
  63. package/lib/manager/LogoutManager.d.ts +4 -5
  64. package/lib/manager/LogoutManager.d.ts.map +1 -1
  65. package/lib/manager/LogoutManager.js +2 -2
  66. package/lib/manager/NetworkManager.d.ts +4 -5
  67. package/lib/manager/NetworkManager.d.ts.map +1 -1
  68. package/lib/manager/NetworkManager.js +28 -61
  69. package/lib/manager/PollingSubscription.d.ts +9 -9
  70. package/lib/manager/PollingSubscription.d.ts.map +1 -1
  71. package/lib/manager/PollingSubscription.js +18 -27
  72. package/lib/manager/SubscriptionManager.d.ts +10 -15
  73. package/lib/manager/SubscriptionManager.d.ts.map +1 -1
  74. package/lib/manager/SubscriptionManager.js +16 -42
  75. package/lib/middlewareTypes.d.ts +5 -5
  76. package/lib/middlewareTypes.d.ts.map +1 -1
  77. package/lib/middlewareTypes.js +1 -1
  78. package/lib/newActions.d.ts +26 -18
  79. package/lib/newActions.d.ts.map +1 -1
  80. package/lib/newActions.js +1 -1
  81. package/lib/next/index.d.ts +2 -2
  82. package/lib/next/index.d.ts.map +1 -1
  83. package/lib/next/index.js +3 -3
  84. package/lib/state/reducer/createReducer.d.ts.map +1 -1
  85. package/lib/state/reducer/createReducer.js +2 -6
  86. package/lib/state/reducer/fetchReducer.d.ts +1 -2
  87. package/lib/state/reducer/fetchReducer.d.ts.map +1 -1
  88. package/lib/state/reducer/fetchReducer.js +3 -14
  89. package/lib/state/reducer/invalidateReducer.d.ts +3 -4
  90. package/lib/state/reducer/invalidateReducer.d.ts.map +1 -1
  91. package/lib/state/reducer/invalidateReducer.js +1 -1
  92. package/lib/state/reducer/setReducer.d.ts +2 -38
  93. package/lib/state/reducer/setReducer.d.ts.map +1 -1
  94. package/lib/state/reducer/setReducer.js +9 -17
  95. package/lib/types.d.ts +9 -30
  96. package/lib/types.d.ts.map +1 -1
  97. package/lib/types.js +2 -6
  98. package/package.json +3 -3
  99. package/src/actionTypes.ts +1 -1
  100. package/src/controller/Controller.ts +491 -10
  101. package/src/controller/createFetch.ts +4 -19
  102. package/src/controller/createInvalidate.ts +1 -1
  103. package/src/controller/createInvalidateAll.ts +1 -1
  104. package/src/controller/createOptimistic.ts +3 -9
  105. package/src/controller/createReset.ts +1 -1
  106. package/src/controller/{createReceive.ts → createSet.ts} +9 -17
  107. package/src/controller/createSubscription.ts +3 -10
  108. package/src/index.ts +2 -16
  109. package/src/internal.ts +1 -1
  110. package/src/manager/DevtoolsManager.ts +1 -1
  111. package/src/manager/LogoutManager.ts +4 -5
  112. package/src/manager/NetworkManager.ts +31 -80
  113. package/src/manager/PollingSubscription.ts +26 -27
  114. package/src/manager/SubscriptionManager.ts +22 -54
  115. package/src/manager/__tests__/__snapshots__/pollingSubscription.ts.snap +10 -8
  116. package/src/manager/__tests__/logoutManager.ts +5 -5
  117. package/src/manager/__tests__/manager.ts +2 -4
  118. package/src/manager/__tests__/networkManager.ts +8 -42
  119. package/src/manager/__tests__/pollingSubscription.ts +259 -151
  120. package/src/manager/__tests__/subscriptionManager.ts +7 -13
  121. package/src/middlewareTypes.ts +5 -10
  122. package/src/newActions.ts +33 -23
  123. package/src/next/index.ts +2 -2
  124. package/src/state/__tests__/reducer.ts +59 -297
  125. package/src/state/reducer/createReducer.ts +3 -11
  126. package/src/state/reducer/fetchReducer.ts +5 -18
  127. package/src/state/reducer/invalidateReducer.ts +2 -2
  128. package/src/state/reducer/setReducer.ts +10 -22
  129. package/src/types.ts +9 -78
  130. package/ts3.4/actionTypes.d.ts +1 -0
  131. package/ts3.4/controller/Controller.d.ts +168 -6
  132. package/ts3.4/controller/createFetch.d.ts +2 -2
  133. package/ts3.4/controller/createInvalidate.d.ts +1 -1
  134. package/ts3.4/controller/createInvalidateAll.d.ts +1 -1
  135. package/ts3.4/controller/createOptimistic.d.ts +1 -1
  136. package/ts3.4/controller/createReset.d.ts +1 -1
  137. package/ts3.4/controller/{createReceive.d.ts → createSet.d.ts} +6 -6
  138. package/ts3.4/controller/createSubscription.d.ts +3 -3
  139. package/ts3.4/index.d.ts +2 -7
  140. package/ts3.4/internal.d.ts +1 -1
  141. package/ts3.4/manager/DevtoolsManager.d.ts +1 -1
  142. package/ts3.4/manager/LogoutManager.d.ts +4 -5
  143. package/ts3.4/manager/NetworkManager.d.ts +4 -5
  144. package/ts3.4/manager/PollingSubscription.d.ts +9 -9
  145. package/ts3.4/manager/SubscriptionManager.d.ts +10 -15
  146. package/ts3.4/middlewareTypes.d.ts +5 -5
  147. package/ts3.4/newActions.d.ts +26 -18
  148. package/ts3.4/next/index.d.ts +2 -2
  149. package/ts3.4/state/reducer/fetchReducer.d.ts +1 -2
  150. package/ts3.4/state/reducer/invalidateReducer.d.ts +3 -4
  151. package/ts3.4/state/reducer/setReducer.d.ts +2 -38
  152. package/ts3.4/types.d.ts +8 -30
  153. package/legacy/compatibleActions.js +0 -2
  154. package/legacy/controller/BaseController.js +0 -289
  155. package/legacy/controller/createReceive.js +0 -36
  156. package/legacy/endpoint/index.js +0 -2
  157. package/legacy/endpoint/shapes.js +0 -2
  158. package/legacy/endpoint/types.js +0 -2
  159. package/legacy/legacyActions.js +0 -2
  160. package/legacy/next/Controller.js +0 -24
  161. package/legacy/previousActions.js +0 -2
  162. package/legacy/state/applyUpdatersToResults.js +0 -4
  163. package/legacy/state/legacy-actions/createFetch.js +0 -62
  164. package/legacy/state/legacy-actions/createReceive.js +0 -37
  165. package/legacy/state/legacy-actions/createReceiveError.js +0 -28
  166. package/legacy/state/legacy-actions/index.js +0 -4
  167. package/legacy/state/reducerInstance.js +0 -9
  168. package/lib/compatibleActions.d.ts +0 -47
  169. package/lib/compatibleActions.d.ts.map +0 -1
  170. package/lib/compatibleActions.js +0 -2
  171. package/lib/controller/BaseController.d.ts +0 -128
  172. package/lib/controller/BaseController.d.ts.map +0 -1
  173. package/lib/controller/BaseController.js +0 -289
  174. package/lib/controller/createReceive.d.ts.map +0 -1
  175. package/lib/controller/createReceive.js +0 -36
  176. package/lib/endpoint/index.d.ts +0 -3
  177. package/lib/endpoint/index.d.ts.map +0 -1
  178. package/lib/endpoint/index.js +0 -2
  179. package/lib/endpoint/shapes.d.ts +0 -25
  180. package/lib/endpoint/shapes.d.ts.map +0 -1
  181. package/lib/endpoint/shapes.js +0 -2
  182. package/lib/endpoint/types.d.ts +0 -45
  183. package/lib/endpoint/types.d.ts.map +0 -1
  184. package/lib/endpoint/types.js +0 -2
  185. package/lib/legacyActions.d.ts +0 -92
  186. package/lib/legacyActions.d.ts.map +0 -1
  187. package/lib/legacyActions.js +0 -2
  188. package/lib/next/Controller.d.ts +0 -14
  189. package/lib/next/Controller.d.ts.map +0 -1
  190. package/lib/next/Controller.js +0 -24
  191. package/lib/previousActions.d.ts +0 -91
  192. package/lib/previousActions.d.ts.map +0 -1
  193. package/lib/previousActions.js +0 -2
  194. package/lib/state/applyUpdatersToResults.d.ts +0 -13
  195. package/lib/state/applyUpdatersToResults.d.ts.map +0 -1
  196. package/lib/state/applyUpdatersToResults.js +0 -7
  197. package/lib/state/legacy-actions/createFetch.d.ts +0 -19
  198. package/lib/state/legacy-actions/createFetch.d.ts.map +0 -1
  199. package/lib/state/legacy-actions/createFetch.js +0 -62
  200. package/lib/state/legacy-actions/createReceive.d.ts +0 -14
  201. package/lib/state/legacy-actions/createReceive.d.ts.map +0 -1
  202. package/lib/state/legacy-actions/createReceive.js +0 -37
  203. package/lib/state/legacy-actions/createReceiveError.d.ts +0 -9
  204. package/lib/state/legacy-actions/createReceiveError.d.ts.map +0 -1
  205. package/lib/state/legacy-actions/createReceiveError.js +0 -28
  206. package/lib/state/legacy-actions/index.d.ts +0 -4
  207. package/lib/state/legacy-actions/index.d.ts.map +0 -1
  208. package/lib/state/legacy-actions/index.js +0 -4
  209. package/lib/state/reducerInstance.d.ts +0 -7
  210. package/lib/state/reducerInstance.d.ts.map +0 -1
  211. package/lib/state/reducerInstance.js +0 -9
  212. package/src/compatibleActions.ts +0 -96
  213. package/src/controller/BaseController.ts +0 -508
  214. package/src/endpoint/index.ts +0 -14
  215. package/src/endpoint/shapes.ts +0 -53
  216. package/src/endpoint/types.ts +0 -72
  217. package/src/legacyActions.ts +0 -163
  218. package/src/manager/__tests__/__snapshots__/pollingSubscription-endpoint.ts.snap +0 -49
  219. package/src/manager/__tests__/networkManager-legacy.ts +0 -394
  220. package/src/manager/__tests__/pollingSubscription-endpoint.ts +0 -423
  221. package/src/next/Controller.ts +0 -39
  222. package/src/previousActions.ts +0 -159
  223. package/src/state/__tests__/applyUpdatersToResults.ts +0 -40
  224. package/src/state/applyUpdatersToResults.ts +0 -29
  225. package/src/state/legacy-actions/createFetch.ts +0 -95
  226. package/src/state/legacy-actions/createReceive.ts +0 -68
  227. package/src/state/legacy-actions/createReceiveError.ts +0 -43
  228. package/src/state/legacy-actions/index.ts +0 -3
  229. package/src/state/reducerInstance.ts +0 -14
  230. package/ts3.4/compatibleActions.d.ts +0 -47
  231. package/ts3.4/controller/BaseController.d.ts +0 -170
  232. package/ts3.4/endpoint/index.d.ts +0 -3
  233. package/ts3.4/endpoint/shapes.d.ts +0 -25
  234. package/ts3.4/endpoint/types.d.ts +0 -45
  235. package/ts3.4/legacyActions.d.ts +0 -95
  236. package/ts3.4/next/Controller.d.ts +0 -14
  237. package/ts3.4/previousActions.d.ts +0 -94
  238. package/ts3.4/state/applyUpdatersToResults.d.ts +0 -13
  239. package/ts3.4/state/legacy-actions/createFetch.d.ts +0 -19
  240. package/ts3.4/state/legacy-actions/createReceive.d.ts +0 -14
  241. package/ts3.4/state/legacy-actions/createReceiveError.d.ts +0 -9
  242. package/ts3.4/state/legacy-actions/index.d.ts +0 -4
  243. package/ts3.4/state/reducerInstance.d.ts +0 -7
@@ -1,14 +1,134 @@
1
- import type { EndpointInterface } from '@data-client/normalizr';
2
- import BaseController, { CompatibleDispatch, GenericDispatch } from './BaseController.js';
1
+ import type { ErrorTypes, SnapshotInterface, DenormalizeCache, Schema, Denormalize } from '@data-client/normalizr';
2
+ import { ExpiryStatus, EndpointInterface, FetchFunction, DenormalizeNullable } from '@data-client/normalizr';
3
3
  import type { EndpointUpdateFunction } from './types.js';
4
- export default class Controller<D extends GenericDispatch = CompatibleDispatch> extends BaseController<D> {
4
+ import type { ActionTypes, State } from '../types.js';
5
+ export type GenericDispatch = (value: any) => Promise<void>;
6
+ export type DataClientDispatch = (value: ActionTypes) => Promise<void>;
7
+ interface ConstructorProps<D extends GenericDispatch = DataClientDispatch> {
8
+ dispatch?: D;
9
+ getState?: () => State<unknown>;
10
+ globalCache?: DenormalizeCache;
11
+ }
12
+ /**
13
+ * Imperative control of Rest Hooks store
14
+ * @see https://resthooks.io/docs/api/Controller
15
+ */
16
+ export default class Controller<D extends GenericDispatch = DataClientDispatch> {
17
+ /**
18
+ * Dispatches an action to Rest Hooks reducer.
19
+ *
20
+ * @see https://resthooks.io/docs/api/Controller#dispatch
21
+ */
22
+ readonly dispatch: D;
23
+ /**
24
+ * Gets the latest state snapshot that is fully committed.
25
+ *
26
+ * This can be useful for imperative use-cases like event handlers.
27
+ * This should *not* be used to render; instead useSuspense() or useCache()
28
+ * @see https://resthooks.io/docs/api/Controller#getState
29
+ */
30
+ readonly getState: () => State<unknown>;
31
+ readonly globalCache: DenormalizeCache;
32
+ constructor({ dispatch, getState, globalCache, }?: ConstructorProps<D>);
33
+ /*************** Action Dispatchers ***************/
5
34
  /**
6
35
  * Fetches the endpoint with given args, updating the Rest Hooks cache with the response or error upon completion.
7
36
  * @see https://resthooks.io/docs/api/Controller#fetch
8
37
  */
9
- fetch: <E extends EndpointInterface<import("@data-client/normalizr").FetchFunction, import("@data-client/normalizr").Schema | undefined, boolean | undefined> & {
38
+ fetch: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
39
+ update?: EndpointUpdateFunction<E> | undefined;
40
+ }>(endpoint: E, ...args_0: Parameters<E>) => E["schema"] extends null | undefined ? ReturnType<E> : Promise<Denormalize<E["schema"]>>;
41
+ /**
42
+ * Forces refetching and suspense on useSuspense with the same Endpoint and parameters.
43
+ * @see https://resthooks.io/docs/api/Controller#invalidate
44
+ */
45
+ invalidate: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined>>(endpoint: E, ...args: readonly [...Parameters<E>] | readonly [null]) => Promise<void>;
46
+ /**
47
+ * Forces refetching and suspense on useSuspense on all matching endpoint result keys.
48
+ * @see https://resthooks.io/docs/api/Controller#invalidateAll
49
+ */
50
+ invalidateAll: (options: {
51
+ testKey: (key: string) => boolean;
52
+ }) => Promise<void>;
53
+ /**
54
+ * Resets the entire Rest Hooks cache. All inflight requests will not resolve.
55
+ * @see https://resthooks.io/docs/api/Controller#resetEntireStore
56
+ */
57
+ resetEntireStore: () => Promise<void>;
58
+ /**
59
+ * Stores response in cache for given Endpoint and args.
60
+ * @see https://resthooks.io/docs/api/Controller#set
61
+ */
62
+ setResponse: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
63
+ update?: EndpointUpdateFunction<E> | undefined;
64
+ }>(endpoint: E, ...rest: readonly [...Parameters<E>, any]) => Promise<void>;
65
+ /**
66
+ * @deprecated use https://resthooks.io/docs/api/Controller#setResponse instead
67
+ */
68
+ receive: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
69
+ update?: EndpointUpdateFunction<E> | undefined;
70
+ }>(endpoint: E, ...rest: readonly [...Parameters<E>, any]) => Promise<void>;
71
+ /**
72
+ * Stores the result of Endpoint and args as the error provided.
73
+ * @see https://resthooks.io/docs/api/Controller#setError
74
+ */
75
+ setError: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
76
+ update?: EndpointUpdateFunction<E> | undefined;
77
+ }>(endpoint: E, ...rest: readonly [...Parameters<E>, Error]) => Promise<void>;
78
+ /**
79
+ * Another name for setError
80
+ * @deprecated use https://resthooks.io/docs/api/Controller#setError instead
81
+ */
82
+ receiveError: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
10
83
  update?: EndpointUpdateFunction<E> | undefined;
11
- }>(endpoint: E, ...args_0: Parameters<E>) => ReturnType<E>;
84
+ }>(endpoint: E, ...rest: readonly [...Parameters<E>, Error]) => Promise<void>;
85
+ /**
86
+ * Resolves an inflight fetch. `fetchedAt` should `fetch`'s `createdAt`
87
+ * @see https://resthooks.io/docs/api/Controller#resolve
88
+ */
89
+ resolve: <E extends EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined> & {
90
+ update?: EndpointUpdateFunction<E> | undefined;
91
+ }>(endpoint: E, meta: {
92
+ args: readonly [...Parameters<E>];
93
+ response: Error;
94
+ fetchedAt: number;
95
+ error: true;
96
+ } | {
97
+ args: readonly [...Parameters<E>];
98
+ response: any;
99
+ fetchedAt: number;
100
+ error?: false | undefined;
101
+ }) => Promise<void>;
102
+ /**
103
+ * Marks a new subscription to a given Endpoint.
104
+ * @see https://resthooks.io/docs/api/Controller#subscribe
105
+ */
106
+ subscribe: <E extends EndpointInterface<FetchFunction, Schema | undefined, false | undefined>>(endpoint: E, ...args: readonly [null] | readonly [...Parameters<E>]) => Promise<void>;
107
+ /**
108
+ * Marks completion of subscription to a given Endpoint.
109
+ * @see https://resthooks.io/docs/api/Controller#unsubscribe
110
+ */
111
+ unsubscribe: <E extends EndpointInterface<FetchFunction, Schema | undefined, false | undefined>>(endpoint: E, ...args: readonly [null] | readonly [...Parameters<E>]) => Promise<void>;
112
+ /*************** More ***************/
113
+ /**
114
+ * Gets a snapshot (https://resthooks.io/docs/api/Snapshot)
115
+ * @see https://resthooks.io/docs/api/Controller#snapshot
116
+ */
117
+ snapshot: (state: State<unknown>, fetchedAt?: number) => SnapshotInterface;
118
+ /**
119
+ * Gets the error, if any, for a given endpoint. Returns undefined for no errors.
120
+ * @see https://resthooks.io/docs/api/Controller#getError
121
+ */
122
+ getError: <E extends Pick<EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined>, "key">, Args extends readonly [null] | readonly [...Parameters<E["key"]>]>(endpoint: E, ...rest: [...Args, State<unknown>]) => ErrorTypes | undefined;
123
+ /**
124
+ * Gets the (globally referentially stable) response for a given endpoint/args pair from state given.
125
+ * @see https://resthooks.io/docs/api/Controller#getResponse
126
+ */
127
+ getResponse: <E extends Pick<EndpointInterface<FetchFunction, Schema | undefined, boolean | undefined>, "schema" | "key" | "invalidIfStale">, Args extends readonly [null] | readonly [...Parameters<E["key"]>]>(endpoint: E, ...rest: [...Args, State<unknown>]) => {
128
+ data: DenormalizeNullable<E["schema"]>;
129
+ expiryStatus: ExpiryStatus;
130
+ expiresAt: number;
131
+ };
12
132
  }
13
- export * from './BaseController.js';
133
+ export type { ErrorTypes };
14
134
  //# sourceMappingURL=Controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/controller/Controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,cAAc,EAAE,EACrB,kBAAkB,EAClB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEzD,MAAM,CAAC,OAAO,OAAO,UAAU,CAC7B,CAAC,SAAS,eAAe,GAAG,kBAAkB,CAC9C,SAAQ,cAAc,CAAC,CAAC,CAAC;IACzB;;;OAGG;IACH,KAAK;;+DAYH;CACH;AAED,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"Controller.d.ts","sourceRoot":"","sources":["../../src/controller/Controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,MAAM,EACN,WAAW,EACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAEL,YAAY,EACZ,iBAAiB,EACjB,aAAa,EAEb,mBAAmB,EAKpB,MAAM,wBAAwB,CAAC;AAYhC,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGzD,OAAO,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,MAAM,eAAe,GAAG,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAC5D,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEvE,UAAU,gBAAgB,CAAC,CAAC,SAAS,eAAe,GAAG,kBAAkB;IACvE,QAAQ,CAAC,EAAE,CAAC,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAcD;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU,CAC7B,CAAC,SAAS,eAAe,GAAG,kBAAkB;IAE9C;;;;OAIG;IACH,SAAiB,QAAQ,EAAE,CAAC,CAAC;IAC7B;;;;;;OAMG;IACH,SAAiB,QAAQ,EAAE,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;IAChD,SAAiB,WAAW,EAAE,gBAAgB,CAAC;gBAEnC,EACV,QAA+B,EAC/B,QAAqB,EACrB,WAGC,GACF,GAAE,gBAAgB,CAAC,CAAC,CAAM;IAM3B,oDAAoD;IAEpD;;;OAGG;IACH,KAAK;;0IAmBH;IAEF;;;OAGG;IACH,UAAU,gKAGP,QAAQ,IAAI,CAAC,CAOQ;IAExB;;;OAGG;IACH,aAAa;uBAA8B,MAAM,KAAK,OAAO;wBACe;IAE5E;;;OAGG;IACH,gBAAgB,QAAO,QAAQ,IAAI,CAAC,CAAiC;IAErE;;;OAGG;IACH,WAAW;;kEAOR,QAAQ,IAAI,CAAC,CAOd;IAEF;;OAEG;IACwB,OAAO;;kEAO/B,QAAQ,IAAI,CAAC,CAGd;IAEF;;;OAGG;IACH,QAAQ;;oEAOL,QAAQ,IAAI,CAAC,CAQd;IAEF;;;OAGG;IACwB,YAAY;;oEAOpC,QAAQ,IAAI,CAAC,CAGd;IAEF;;;OAGG;IACH,OAAO;;;;kBASW,KAAK;mBACJ,MAAM;eACV,IAAI;;;kBAID,GAAG;mBACF,MAAM;;UAGtB,QAAQ,IAAI,CAAC,CAEd;IAEF;;;OAGG;IACH,SAAS,8JASN,QAAQ,IAAI,CAAC,CAOQ;IAExB;;;OAGG;IACH,WAAW,8JASR,QAAQ,IAAI,CAAC,CAOQ;IAExB,sCAAsC;IAStC;;;OAGG;IACH,QAAQ,UAAW,MAAM,OAAO,CAAC,cAAc,MAAM,KAAG,iBAAiB,CAEvE;IAEF;;;OAGG;IACH,QAAQ,4NAML,UAAU,GAAG,SAAS,CAavB;IAEF;;;OAGG;IACH,WAAW;;sBAQK,YAAY;mBACf,MAAM;MAkFjB;CACH;AA4CD,YAAY,EAAE,UAAU,EAAE,CAAC"}
@@ -1,8 +1,50 @@
1
- import BaseController from './BaseController.js';
1
+ import { WeakEntityMap, ExpiryStatus, denormalizeCached, isEntity, denormalize } from '@data-client/normalizr';
2
+ import { inferResults, validateInference } from '@data-client/normalizr';
2
3
  import createFetch from './createFetch.js';
3
- export default class Controller extends BaseController {
4
- constructor(..._args) {
5
- super(..._args);
4
+ import createInvalidate from './createInvalidate.js';
5
+ import createInvalidateAll from './createInvalidateAll.js';
6
+ import createReset from './createReset.js';
7
+ import createSet from './createSet.js';
8
+ import { createUnsubscription, createSubscription } from './createSubscription.js';
9
+ import { initialState } from '../state/reducer/createReducer.js';
10
+ import selectMeta from '../state/selectMeta.js';
11
+ const unsetDispatch = action => {
12
+ throw new Error(`Dispatching while constructing your middleware is not allowed. ` + `Other middleware would not be applied to this dispatch.`);
13
+ };
14
+ const unsetState = () => {
15
+ // This is only the value until it is set by the CacheProvider
16
+ /* istanbul ignore next */
17
+ return initialState;
18
+ };
19
+
20
+ /**
21
+ * Imperative control of Rest Hooks store
22
+ * @see https://resthooks.io/docs/api/Controller
23
+ */
24
+ export default class Controller {
25
+ /**
26
+ * Dispatches an action to Rest Hooks reducer.
27
+ *
28
+ * @see https://resthooks.io/docs/api/Controller#dispatch
29
+ */
30
+
31
+ /**
32
+ * Gets the latest state snapshot that is fully committed.
33
+ *
34
+ * This can be useful for imperative use-cases like event handlers.
35
+ * This should *not* be used to render; instead useSuspense() or useCache()
36
+ * @see https://resthooks.io/docs/api/Controller#getState
37
+ */
38
+
39
+ constructor({
40
+ dispatch = unsetDispatch,
41
+ getState = unsetState,
42
+ globalCache = {
43
+ entities: {},
44
+ results: {}
45
+ }
46
+ } = {}) {
47
+ /*************** Action Dispatchers ***************/
6
48
  /**
7
49
  * Fetches the endpoint with given args, updating the Rest Hooks cache with the response or error upon completion.
8
50
  * @see https://resthooks.io/docs/api/Controller#fetch
@@ -12,9 +54,237 @@ export default class Controller extends BaseController {
12
54
  args
13
55
  });
14
56
  this.dispatch(action);
57
+ if (endpoint.schema) {
58
+ return action.meta.promise.then(input => denormalize(input, endpoint.schema, {}, args));
59
+ }
15
60
  return action.meta.promise;
16
61
  };
62
+ /**
63
+ * Forces refetching and suspense on useSuspense with the same Endpoint and parameters.
64
+ * @see https://resthooks.io/docs/api/Controller#invalidate
65
+ */
66
+ this.invalidate = (endpoint, ...args) => args[0] !== null ? this.dispatch(createInvalidate(endpoint, {
67
+ args: args
68
+ })) : Promise.resolve();
69
+ /**
70
+ * Forces refetching and suspense on useSuspense on all matching endpoint result keys.
71
+ * @see https://resthooks.io/docs/api/Controller#invalidateAll
72
+ */
73
+ this.invalidateAll = options => this.dispatch(createInvalidateAll(key => options.testKey(key)));
74
+ /**
75
+ * Resets the entire Rest Hooks cache. All inflight requests will not resolve.
76
+ * @see https://resthooks.io/docs/api/Controller#resetEntireStore
77
+ */
78
+ this.resetEntireStore = () => this.dispatch(createReset());
79
+ /**
80
+ * Stores response in cache for given Endpoint and args.
81
+ * @see https://resthooks.io/docs/api/Controller#set
82
+ */
83
+ this.setResponse = (endpoint, ...rest) => {
84
+ const response = rest[rest.length - 1];
85
+ const action = createSet(endpoint, {
86
+ args: rest.slice(0, rest.length - 1),
87
+ response
88
+ });
89
+ return this.dispatch(action);
90
+ };
91
+ /**
92
+ * @deprecated use https://resthooks.io/docs/api/Controller#setResponse instead
93
+ */
94
+ /* istanbul ignore next */
95
+ this.receive = (endpoint, ...rest) => {
96
+ /* istanbul ignore next */
97
+ return this.setResponse(endpoint, ...rest);
98
+ };
99
+ /**
100
+ * Stores the result of Endpoint and args as the error provided.
101
+ * @see https://resthooks.io/docs/api/Controller#setError
102
+ */
103
+ this.setError = (endpoint, ...rest) => {
104
+ const response = rest[rest.length - 1];
105
+ const action = createSet(endpoint, {
106
+ args: rest.slice(0, rest.length - 1),
107
+ response,
108
+ error: true
109
+ });
110
+ return this.dispatch(action);
111
+ };
112
+ /**
113
+ * Another name for setError
114
+ * @deprecated use https://resthooks.io/docs/api/Controller#setError instead
115
+ */
116
+ /* istanbul ignore next */
117
+ this.receiveError = (endpoint, ...rest) => {
118
+ /* istanbul ignore next */
119
+ return this.setError(endpoint, ...rest);
120
+ };
121
+ /**
122
+ * Resolves an inflight fetch. `fetchedAt` should `fetch`'s `createdAt`
123
+ * @see https://resthooks.io/docs/api/Controller#resolve
124
+ */
125
+ this.resolve = (endpoint, meta) => {
126
+ return this.dispatch(createSet(endpoint, meta));
127
+ };
128
+ /**
129
+ * Marks a new subscription to a given Endpoint.
130
+ * @see https://resthooks.io/docs/api/Controller#subscribe
131
+ */
132
+ this.subscribe = (endpoint, ...args) => args[0] !== null ? this.dispatch(createSubscription(endpoint, {
133
+ args: args
134
+ })) : Promise.resolve();
135
+ /**
136
+ * Marks completion of subscription to a given Endpoint.
137
+ * @see https://resthooks.io/docs/api/Controller#unsubscribe
138
+ */
139
+ this.unsubscribe = (endpoint, ...args) => args[0] !== null ? this.dispatch(createUnsubscription(endpoint, {
140
+ args: args
141
+ })) : Promise.resolve();
142
+ /*************** More ***************/
143
+ /* TODO:
144
+ abort = <E extends EndpointInterface>(
145
+ endpoint: E,
146
+ ...args: readonly [...Parameters<E>]
147
+ ): Promise<void>
148
+ */
149
+ /**
150
+ * Gets a snapshot (https://resthooks.io/docs/api/Snapshot)
151
+ * @see https://resthooks.io/docs/api/Controller#snapshot
152
+ */
153
+ this.snapshot = (state, fetchedAt) => {
154
+ return new Snapshot(this, state, fetchedAt);
155
+ };
156
+ /**
157
+ * Gets the error, if any, for a given endpoint. Returns undefined for no errors.
158
+ * @see https://resthooks.io/docs/api/Controller#getError
159
+ */
160
+ this.getError = (endpoint, ...rest) => {
161
+ if (rest[0] === null) return;
162
+ const state = rest[rest.length - 1];
163
+ // this is typescript generics breaking
164
+ const args = rest.slice(0, rest.length - 1);
165
+ const key = endpoint.key(...args);
166
+ const meta = selectMeta(state, key);
167
+ const results = state.results[key];
168
+ if (results !== undefined && (meta == null ? void 0 : meta.errorPolicy) === 'soft') return;
169
+ return meta == null ? void 0 : meta.error;
170
+ };
171
+ /**
172
+ * Gets the (globally referentially stable) response for a given endpoint/args pair from state given.
173
+ * @see https://resthooks.io/docs/api/Controller#getResponse
174
+ */
175
+ this.getResponse = (endpoint, ...rest) => {
176
+ const state = rest[rest.length - 1];
177
+ // this is typescript generics breaking
178
+ const args = rest.slice(0, rest.length - 1);
179
+ const isActive = args.length !== 1 || args[0] !== null;
180
+ const key = isActive ? endpoint.key(...args) : '';
181
+ const cacheResults = isActive ? state.results[key] : undefined;
182
+ const schema = endpoint.schema;
183
+ const meta = selectMeta(state, key);
184
+ let expiresAt = meta == null ? void 0 : meta.expiresAt;
185
+ let invalidResults = false;
186
+ let results;
187
+ if (cacheResults === undefined && endpoint.schema !== undefined) {
188
+ results = inferResults(endpoint.schema, args, state.indexes, state.entities);
189
+ invalidResults = !validateInference(results);
190
+ if (!expiresAt && invalidResults) expiresAt = 1;
191
+ } else {
192
+ results = cacheResults;
193
+ }
194
+ if (!isActive) {
195
+ return {
196
+ data: results,
197
+ expiryStatus: ExpiryStatus.Valid,
198
+ expiresAt: Infinity
199
+ };
200
+ }
201
+ if (!endpoint.schema || !schemaHasEntity(endpoint.schema)) {
202
+ return {
203
+ data: results,
204
+ expiryStatus: meta != null && meta.invalidated ? ExpiryStatus.Invalid : cacheResults && !endpoint.invalidIfStale ? ExpiryStatus.Valid : ExpiryStatus.InvalidIfStale,
205
+ expiresAt: expiresAt || 0
206
+ };
207
+ }
208
+ if (!this.globalCache.results[key]) this.globalCache.results[key] = new WeakEntityMap();
209
+
210
+ // second argument is false if any entities are missing
211
+ // eslint-disable-next-line prefer-const
212
+ const {
213
+ data,
214
+ paths
215
+ } = denormalizeCached(results, schema, state.entities, this.globalCache.entities, this.globalCache.results[key], args);
216
+ const invalidDenormalize = typeof data === 'symbol';
217
+
218
+ // fallback to entity expiry time
219
+ if (!expiresAt) {
220
+ expiresAt = entityExpiresAt(paths, state.entityMeta);
221
+ }
222
+
223
+ // https://resthooks.io/docs/concepts/expiry-policy#expiry-status
224
+ // we don't track the difference between stale or fresh because that is tied to triggering
225
+ // conditions
226
+ const expiryStatus = meta != null && meta.invalidated || invalidDenormalize && !(meta != null && meta.error) ? ExpiryStatus.Invalid : invalidDenormalize || endpoint.invalidIfStale || invalidResults ? ExpiryStatus.InvalidIfStale : ExpiryStatus.Valid;
227
+ return {
228
+ data,
229
+ expiryStatus,
230
+ expiresAt
231
+ };
232
+ };
233
+ this.dispatch = dispatch;
234
+ this.getState = getState;
235
+ this.globalCache = globalCache;
236
+ }
237
+ }
238
+
239
+ // benchmark: https://www.measurethat.net/Benchmarks/Show/24691/0/min-reducer-vs-imperative-with-paths
240
+ // earliest expiry dictates age
241
+ function entityExpiresAt(paths, entityMeta) {
242
+ let expiresAt = Infinity;
243
+ for (const {
244
+ pk,
245
+ key
246
+ } of paths) {
247
+ var _entityMeta$key, _entityMeta$key$pk;
248
+ const entityExpiry = (_entityMeta$key = entityMeta[key]) == null ? void 0 : (_entityMeta$key$pk = _entityMeta$key[pk]) == null ? void 0 : _entityMeta$key$pk.expiresAt;
249
+ // expiresAt will always resolve to false with any comparison
250
+ if (entityExpiry < expiresAt) expiresAt = entityExpiry;
251
+ }
252
+ return expiresAt;
253
+ }
254
+
255
+ /** Determine whether the schema has any entities.
256
+ *
257
+ * Without entities, denormalization is not needed, and results should not be inferred.
258
+ */
259
+ function schemaHasEntity(schema) {
260
+ if (isEntity(schema)) return true;
261
+ if (Array.isArray(schema)) return schema.length !== 0 && schemaHasEntity(schema[0]);
262
+ if (schema && (typeof schema === 'object' || typeof schema === 'function')) {
263
+ const nestedSchema = 'schema' in schema ? schema.schema : schema;
264
+ if (typeof nestedSchema === 'function') {
265
+ return schemaHasEntity(nestedSchema);
266
+ }
267
+ return Object.values(nestedSchema).some(x => schemaHasEntity(x));
268
+ }
269
+ return false;
270
+ }
271
+ class Snapshot {
272
+ constructor(controller, state, fetchedAt = 0) {
273
+ this.state = void 0;
274
+ this.controller = void 0;
275
+ this.fetchedAt = void 0;
276
+ /*************** Data Access ***************/
277
+ /** @see https://resthooks.io/docs/api/Snapshot#getResponse */
278
+ this.getResponse = (endpoint, ...args) => {
279
+ return this.controller.getResponse(endpoint, ...args, this.state);
280
+ };
281
+ /** @see https://resthooks.io/docs/api/Snapshot#getError */
282
+ this.getError = (endpoint, ...args) => {
283
+ return this.controller.getError(endpoint, ...args, this.state);
284
+ };
285
+ this.state = state;
286
+ this.controller = controller;
287
+ this.fetchedAt = fetchedAt;
17
288
  }
18
289
  }
19
- export * from './BaseController.js';
20
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29udHJvbGxlciIsImNyZWF0ZUZldGNoIiwiQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiX2FyZ3MiLCJmZXRjaCIsImVuZHBvaW50IiwiYXJncyIsImFjdGlvbiIsImRpc3BhdGNoIiwibWV0YSIsInByb21pc2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9Db250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5kcG9pbnRJbnRlcmZhY2UgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IEJhc2VDb250cm9sbGVyLCB7XG4gIENvbXBhdGlibGVEaXNwYXRjaCxcbiAgR2VuZXJpY0Rpc3BhdGNoLFxufSBmcm9tICcuL0Jhc2VDb250cm9sbGVyLmpzJztcbmltcG9ydCBjcmVhdGVGZXRjaCBmcm9tICcuL2NyZWF0ZUZldGNoLmpzJztcbmltcG9ydCB0eXBlIHsgRW5kcG9pbnRVcGRhdGVGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250cm9sbGVyPFxuICBEIGV4dGVuZHMgR2VuZXJpY0Rpc3BhdGNoID0gQ29tcGF0aWJsZURpc3BhdGNoLFxuPiBleHRlbmRzIEJhc2VDb250cm9sbGVyPEQ+IHtcbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGVuZHBvaW50IHdpdGggZ2l2ZW4gYXJncywgdXBkYXRpbmcgdGhlIFJlc3QgSG9va3MgY2FjaGUgd2l0aCB0aGUgcmVzcG9uc2Ugb3IgZXJyb3IgdXBvbiBjb21wbGV0aW9uLlxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZmV0Y2hcbiAgICovXG4gIGZldGNoID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHsgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPiB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiBSZXR1cm5UeXBlPEU+ID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSBjcmVhdGVGZXRjaChlbmRwb2ludCwge1xuICAgICAgYXJncyxcbiAgICB9KTtcbiAgICB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG5cbiAgICByZXR1cm4gYWN0aW9uLm1ldGEucHJvbWlzZSBhcyBSZXR1cm5UeXBlPEU+O1xuICB9O1xufVxuXG5leHBvcnQgKiBmcm9tICcuL0Jhc2VDb250cm9sbGVyLmpzJztcbiJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBT0EsY0FBYyxNQUdkLHFCQUFxQjtBQUM1QixPQUFPQyxXQUFXLE1BQU0sa0JBQWtCO0FBRzFDLGVBQWUsTUFBTUMsVUFBVSxTQUVyQkYsY0FBYyxDQUFJO0VBQUFHLFlBQUEsR0FBQUMsS0FBQTtJQUFBLFNBQUFBLEtBQUE7SUFDMUI7QUFDRjtBQUNBO0FBQ0E7SUFIRSxLQUlBQyxLQUFLLEdBQUcsQ0FHTkMsUUFBVyxFQUNYLEdBQUdDLElBQWlDLEtBQ2xCO01BQ2xCLE1BQU1DLE1BQU0sR0FBR1AsV0FBVyxDQUFDSyxRQUFRLEVBQUU7UUFDbkNDO01BQ0YsQ0FBQyxDQUFDO01BQ0YsSUFBSSxDQUFDRSxRQUFRLENBQUNELE1BQU0sQ0FBQztNQUVyQixPQUFPQSxNQUFNLENBQUNFLElBQUksQ0FBQ0MsT0FBTztJQUM1QixDQUFDO0VBQUE7QUFDSDtBQUVBLGNBQWMscUJBQXFCIn0=
290
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJXZWFrRW50aXR5TWFwIiwiRXhwaXJ5U3RhdHVzIiwiZGVub3JtYWxpemVDYWNoZWQiLCJpc0VudGl0eSIsImRlbm9ybWFsaXplIiwiaW5mZXJSZXN1bHRzIiwidmFsaWRhdGVJbmZlcmVuY2UiLCJjcmVhdGVGZXRjaCIsImNyZWF0ZUludmFsaWRhdGUiLCJjcmVhdGVJbnZhbGlkYXRlQWxsIiwiY3JlYXRlUmVzZXQiLCJjcmVhdGVTZXQiLCJjcmVhdGVVbnN1YnNjcmlwdGlvbiIsImNyZWF0ZVN1YnNjcmlwdGlvbiIsImluaXRpYWxTdGF0ZSIsInNlbGVjdE1ldGEiLCJ1bnNldERpc3BhdGNoIiwiYWN0aW9uIiwiRXJyb3IiLCJ1bnNldFN0YXRlIiwiQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiZGlzcGF0Y2giLCJnZXRTdGF0ZSIsImdsb2JhbENhY2hlIiwiZW50aXRpZXMiLCJyZXN1bHRzIiwiZmV0Y2giLCJlbmRwb2ludCIsImFyZ3MiLCJzY2hlbWEiLCJtZXRhIiwicHJvbWlzZSIsInRoZW4iLCJpbnB1dCIsImludmFsaWRhdGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsImludmFsaWRhdGVBbGwiLCJvcHRpb25zIiwia2V5IiwidGVzdEtleSIsInJlc2V0RW50aXJlU3RvcmUiLCJzZXRSZXNwb25zZSIsInJlc3QiLCJyZXNwb25zZSIsImxlbmd0aCIsInNsaWNlIiwicmVjZWl2ZSIsInNldEVycm9yIiwiZXJyb3IiLCJyZWNlaXZlRXJyb3IiLCJzdWJzY3JpYmUiLCJ1bnN1YnNjcmliZSIsInNuYXBzaG90Iiwic3RhdGUiLCJmZXRjaGVkQXQiLCJTbmFwc2hvdCIsImdldEVycm9yIiwidW5kZWZpbmVkIiwiZXJyb3JQb2xpY3kiLCJnZXRSZXNwb25zZSIsImlzQWN0aXZlIiwiY2FjaGVSZXN1bHRzIiwiZXhwaXJlc0F0IiwiaW52YWxpZFJlc3VsdHMiLCJpbmRleGVzIiwiZGF0YSIsImV4cGlyeVN0YXR1cyIsIlZhbGlkIiwiSW5maW5pdHkiLCJzY2hlbWFIYXNFbnRpdHkiLCJpbnZhbGlkYXRlZCIsIkludmFsaWQiLCJpbnZhbGlkSWZTdGFsZSIsIkludmFsaWRJZlN0YWxlIiwicGF0aHMiLCJpbnZhbGlkRGVub3JtYWxpemUiLCJlbnRpdHlFeHBpcmVzQXQiLCJlbnRpdHlNZXRhIiwicGsiLCJfZW50aXR5TWV0YSRrZXkiLCJfZW50aXR5TWV0YSRrZXkkcGsiLCJlbnRpdHlFeHBpcnkiLCJBcnJheSIsImlzQXJyYXkiLCJuZXN0ZWRTY2hlbWEiLCJPYmplY3QiLCJ2YWx1ZXMiLCJzb21lIiwieCIsImNvbnRyb2xsZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9Db250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRXJyb3JUeXBlcyxcbiAgU25hcHNob3RJbnRlcmZhY2UsXG4gIERlbm9ybWFsaXplQ2FjaGUsXG4gIFNjaGVtYSxcbiAgRGVub3JtYWxpemUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHtcbiAgV2Vha0VudGl0eU1hcCxcbiAgRXhwaXJ5U3RhdHVzLFxuICBFbmRwb2ludEludGVyZmFjZSxcbiAgRmV0Y2hGdW5jdGlvbixcbiAgUmVzb2x2ZVR5cGUsXG4gIERlbm9ybWFsaXplTnVsbGFibGUsXG4gIFBhdGgsXG4gIGRlbm9ybWFsaXplQ2FjaGVkLFxuICBpc0VudGl0eSxcbiAgZGVub3JtYWxpemUsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHsgaW5mZXJSZXN1bHRzLCB2YWxpZGF0ZUluZmVyZW5jZSB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuXG5pbXBvcnQgY3JlYXRlRmV0Y2ggZnJvbSAnLi9jcmVhdGVGZXRjaC5qcyc7XG5pbXBvcnQgY3JlYXRlSW52YWxpZGF0ZSBmcm9tICcuL2NyZWF0ZUludmFsaWRhdGUuanMnO1xuaW1wb3J0IGNyZWF0ZUludmFsaWRhdGVBbGwgZnJvbSAnLi9jcmVhdGVJbnZhbGlkYXRlQWxsLmpzJztcbmltcG9ydCBjcmVhdGVSZXNldCBmcm9tICcuL2NyZWF0ZVJlc2V0LmpzJztcbmltcG9ydCBjcmVhdGVTZXQgZnJvbSAnLi9jcmVhdGVTZXQuanMnO1xuaW1wb3J0IHtcbiAgY3JlYXRlVW5zdWJzY3JpcHRpb24sXG4gIGNyZWF0ZVN1YnNjcmlwdGlvbixcbn0gZnJvbSAnLi9jcmVhdGVTdWJzY3JpcHRpb24uanMnO1xuaW1wb3J0IHR5cGUgeyBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBpbml0aWFsU3RhdGUgfSBmcm9tICcuLi9zdGF0ZS9yZWR1Y2VyL2NyZWF0ZVJlZHVjZXIuanMnO1xuaW1wb3J0IHNlbGVjdE1ldGEgZnJvbSAnLi4vc3RhdGUvc2VsZWN0TWV0YS5qcyc7XG5pbXBvcnQgdHlwZSB7IEFjdGlvblR5cGVzLCBTdGF0ZSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IHR5cGUgR2VuZXJpY0Rpc3BhdGNoID0gKHZhbHVlOiBhbnkpID0+IFByb21pc2U8dm9pZD47XG5leHBvcnQgdHlwZSBEYXRhQ2xpZW50RGlzcGF0Y2ggPSAodmFsdWU6IEFjdGlvblR5cGVzKSA9PiBQcm9taXNlPHZvaWQ+O1xuXG5pbnRlcmZhY2UgQ29uc3RydWN0b3JQcm9wczxEIGV4dGVuZHMgR2VuZXJpY0Rpc3BhdGNoID0gRGF0YUNsaWVudERpc3BhdGNoPiB7XG4gIGRpc3BhdGNoPzogRDtcbiAgZ2V0U3RhdGU/OiAoKSA9PiBTdGF0ZTx1bmtub3duPjtcbiAgZ2xvYmFsQ2FjaGU/OiBEZW5vcm1hbGl6ZUNhY2hlO1xufVxuXG5jb25zdCB1bnNldERpc3BhdGNoID0gKGFjdGlvbjogdW5rbm93bik6IFByb21pc2U8dm9pZD4gPT4ge1xuICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgYERpc3BhdGNoaW5nIHdoaWxlIGNvbnN0cnVjdGluZyB5b3VyIG1pZGRsZXdhcmUgaXMgbm90IGFsbG93ZWQuIGAgK1xuICAgICAgYE90aGVyIG1pZGRsZXdhcmUgd291bGQgbm90IGJlIGFwcGxpZWQgdG8gdGhpcyBkaXNwYXRjaC5gLFxuICApO1xufTtcbmNvbnN0IHVuc2V0U3RhdGUgPSAoKTogU3RhdGU8dW5rbm93bj4gPT4ge1xuICAvLyBUaGlzIGlzIG9ubHkgdGhlIHZhbHVlIHVudGlsIGl0IGlzIHNldCBieSB0aGUgQ2FjaGVQcm92aWRlclxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICByZXR1cm4gaW5pdGlhbFN0YXRlO1xufTtcblxuLyoqXG4gKiBJbXBlcmF0aXZlIGNvbnRyb2wgb2YgUmVzdCBIb29rcyBzdG9yZVxuICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRyb2xsZXI8XG4gIEQgZXh0ZW5kcyBHZW5lcmljRGlzcGF0Y2ggPSBEYXRhQ2xpZW50RGlzcGF0Y2gsXG4+IHtcbiAgLyoqXG4gICAqIERpc3BhdGNoZXMgYW4gYWN0aW9uIHRvIFJlc3QgSG9va3MgcmVkdWNlci5cbiAgICpcbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2Rpc3BhdGNoXG4gICAqL1xuICBkZWNsYXJlIHJlYWRvbmx5IGRpc3BhdGNoOiBEO1xuICAvKipcbiAgICogR2V0cyB0aGUgbGF0ZXN0IHN0YXRlIHNuYXBzaG90IHRoYXQgaXMgZnVsbHkgY29tbWl0dGVkLlxuICAgKlxuICAgKiBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIGltcGVyYXRpdmUgdXNlLWNhc2VzIGxpa2UgZXZlbnQgaGFuZGxlcnMuXG4gICAqIFRoaXMgc2hvdWxkICpub3QqIGJlIHVzZWQgdG8gcmVuZGVyOyBpbnN0ZWFkIHVzZVN1c3BlbnNlKCkgb3IgdXNlQ2FjaGUoKVxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0U3RhdGVcbiAgICovXG4gIGRlY2xhcmUgcmVhZG9ubHkgZ2V0U3RhdGU6ICgpID0+IFN0YXRlPHVua25vd24+O1xuICBkZWNsYXJlIHJlYWRvbmx5IGdsb2JhbENhY2hlOiBEZW5vcm1hbGl6ZUNhY2hlO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBkaXNwYXRjaCA9IHVuc2V0RGlzcGF0Y2ggYXMgYW55LFxuICAgIGdldFN0YXRlID0gdW5zZXRTdGF0ZSxcbiAgICBnbG9iYWxDYWNoZSA9IHtcbiAgICAgIGVudGl0aWVzOiB7fSxcbiAgICAgIHJlc3VsdHM6IHt9LFxuICAgIH0sXG4gIH06IENvbnN0cnVjdG9yUHJvcHM8RD4gPSB7fSkge1xuICAgIHRoaXMuZGlzcGF0Y2ggPSBkaXNwYXRjaDtcbiAgICB0aGlzLmdldFN0YXRlID0gZ2V0U3RhdGU7XG4gICAgdGhpcy5nbG9iYWxDYWNoZSA9IGdsb2JhbENhY2hlO1xuICB9XG5cbiAgLyoqKioqKioqKioqKioqKiBBY3Rpb24gRGlzcGF0Y2hlcnMgKioqKioqKioqKioqKioqL1xuXG4gIC8qKlxuICAgKiBGZXRjaGVzIHRoZSBlbmRwb2ludCB3aXRoIGdpdmVuIGFyZ3MsIHVwZGF0aW5nIHRoZSBSZXN0IEhvb2tzIGNhY2hlIHdpdGggdGhlIHJlc3BvbnNlIG9yIGVycm9yIHVwb24gY29tcGxldGlvbi5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2ZldGNoXG4gICAqL1xuICBmZXRjaCA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7IHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT4gfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKTogRVsnc2NoZW1hJ10gZXh0ZW5kcyB1bmRlZmluZWQgfCBudWxsXG4gICAgPyBSZXR1cm5UeXBlPEU+XG4gICAgOiBQcm9taXNlPERlbm9ybWFsaXplPEVbJ3NjaGVtYSddPj4gPT4ge1xuICAgIGNvbnN0IGFjdGlvbiA9IGNyZWF0ZUZldGNoKGVuZHBvaW50LCB7XG4gICAgICBhcmdzLFxuICAgIH0pO1xuICAgIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcblxuICAgIGlmIChlbmRwb2ludC5zY2hlbWEpIHtcbiAgICAgIHJldHVybiBhY3Rpb24ubWV0YS5wcm9taXNlLnRoZW4oaW5wdXQgPT5cbiAgICAgICAgZGVub3JtYWxpemUoaW5wdXQsIGVuZHBvaW50LnNjaGVtYSwge30sIGFyZ3MpLFxuICAgICAgKSBhcyBhbnk7XG4gICAgfVxuICAgIHJldHVybiBhY3Rpb24ubWV0YS5wcm9taXNlIGFzIGFueTtcbiAgfTtcblxuICAvKipcbiAgICogRm9yY2VzIHJlZmV0Y2hpbmcgYW5kIHN1c3BlbnNlIG9uIHVzZVN1c3BlbnNlIHdpdGggdGhlIHNhbWUgRW5kcG9pbnQgYW5kIHBhcmFtZXRlcnMuXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNpbnZhbGlkYXRlXG4gICAqL1xuICBpbnZhbGlkYXRlID0gPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBhcmdzWzBdICE9PSBudWxsXG4gICAgICA/IHRoaXMuZGlzcGF0Y2goXG4gICAgICAgICAgY3JlYXRlSW52YWxpZGF0ZShlbmRwb2ludCwge1xuICAgICAgICAgICAgYXJnczogYXJncyBhcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIDogUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgLyoqXG4gICAqIEZvcmNlcyByZWZldGNoaW5nIGFuZCBzdXNwZW5zZSBvbiB1c2VTdXNwZW5zZSBvbiBhbGwgbWF0Y2hpbmcgZW5kcG9pbnQgcmVzdWx0IGtleXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNpbnZhbGlkYXRlQWxsXG4gICAqL1xuICBpbnZhbGlkYXRlQWxsID0gKG9wdGlvbnM6IHsgdGVzdEtleTogKGtleTogc3RyaW5nKSA9PiBib29sZWFuIH0pID0+XG4gICAgdGhpcy5kaXNwYXRjaChjcmVhdGVJbnZhbGlkYXRlQWxsKChrZXk6IHN0cmluZykgPT4gb3B0aW9ucy50ZXN0S2V5KGtleSkpKTtcblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBlbnRpcmUgUmVzdCBIb29rcyBjYWNoZS4gQWxsIGluZmxpZ2h0IHJlcXVlc3RzIHdpbGwgbm90IHJlc29sdmUuXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNldEVudGlyZVN0b3JlXG4gICAqL1xuICByZXNldEVudGlyZVN0b3JlID0gKCk6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5kaXNwYXRjaChjcmVhdGVSZXNldCgpKTtcblxuICAvKipcbiAgICogU3RvcmVzIHJlc3BvbnNlIGluIGNhY2hlIGZvciBnaXZlbiBFbmRwb2ludCBhbmQgYXJncy5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldFxuICAgKi9cbiAgc2V0UmVzcG9uc2UgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgICB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBhbnldXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBSZXNvbHZlVHlwZTxFPiA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBhY3Rpb24gPSBjcmVhdGVTZXQoZW5kcG9pbnQsIHtcbiAgICAgIGFyZ3M6IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBQYXJhbWV0ZXJzPEU+LFxuICAgICAgcmVzcG9uc2UsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc2V0UmVzcG9uc2UgaW5zdGVhZFxuICAgKi9cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gcmVjZWl2ZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIGFueV1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy5zZXRSZXNwb25zZShlbmRwb2ludCwgLi4ucmVzdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgcmVzdWx0IG9mIEVuZHBvaW50IGFuZCBhcmdzIGFzIHRoZSBlcnJvciBwcm92aWRlZC5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldEVycm9yXG4gICAqL1xuICBzZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIEVycm9yXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXNwb25zZTogRXJyb3IgPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlU2V0KGVuZHBvaW50LCB7XG4gICAgICBhcmdzOiByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgIHJlc3BvbnNlLFxuICAgICAgZXJyb3I6IHRydWUsXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goYWN0aW9uKTtcbiAgfTtcblxuICAvKipcbiAgICogQW5vdGhlciBuYW1lIGZvciBzZXRFcnJvclxuICAgKiBAZGVwcmVjYXRlZCB1c2UgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRFcnJvciBpbnN0ZWFkXG4gICAqL1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqLyByZWNlaXZlRXJyb3IgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgICB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBFcnJvcl1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy5zZXRFcnJvcihlbmRwb2ludCwgLi4ucmVzdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFJlc29sdmVzIGFuIGluZmxpZ2h0IGZldGNoLiBgZmV0Y2hlZEF0YCBzaG91bGQgYGZldGNoYCdzIGBjcmVhdGVkQXRgXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNvbHZlXG4gICAqL1xuICByZXNvbHZlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gICAgfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICBtZXRhOlxuICAgICAgfCB7XG4gICAgICAgICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgICAgICAgIHJlc3BvbnNlOiBFcnJvcjtcbiAgICAgICAgICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgICAgICAgICBlcnJvcjogdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfCB7XG4gICAgICAgICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgICAgICAgIHJlc3BvbnNlOiBhbnk7XG4gICAgICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgICAgZXJyb3I/OiBmYWxzZTtcbiAgICAgICAgfSxcbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzcGF0Y2goY3JlYXRlU2V0KGVuZHBvaW50LCBtZXRhIGFzIGFueSkpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBNYXJrcyBhIG5ldyBzdWJzY3JpcHRpb24gdG8gYSBnaXZlbiBFbmRwb2ludC5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3N1YnNjcmliZVxuICAgKi9cbiAgc3Vic2NyaWJlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZTxcbiAgICAgIEZldGNoRnVuY3Rpb24sXG4gICAgICBTY2hlbWEgfCB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQgfCBmYWxzZVxuICAgID4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBhcmdzWzBdICE9PSBudWxsXG4gICAgICA/IHRoaXMuZGlzcGF0Y2goXG4gICAgICAgICAgY3JlYXRlU3Vic2NyaXB0aW9uKGVuZHBvaW50LCB7XG4gICAgICAgICAgICBhcmdzOiBhcmdzIGFzIHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKipcbiAgICogTWFya3MgY29tcGxldGlvbiBvZiBzdWJzY3JpcHRpb24gdG8gYSBnaXZlbiBFbmRwb2ludC5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3Vuc3Vic2NyaWJlXG4gICAqL1xuICB1bnN1YnNjcmliZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2U8XG4gICAgICBGZXRjaEZ1bmN0aW9uLFxuICAgICAgU2NoZW1hIHwgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkIHwgZmFsc2VcbiAgICA+LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB8IHJlYWRvbmx5IFtudWxsXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+XG4gICAgYXJnc1swXSAhPT0gbnVsbFxuICAgICAgPyB0aGlzLmRpc3BhdGNoKFxuICAgICAgICAgIGNyZWF0ZVVuc3Vic2NyaXB0aW9uKGVuZHBvaW50LCB7XG4gICAgICAgICAgICBhcmdzOiBhcmdzIGFzIHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgKVxuICAgICAgOiBQcm9taXNlLnJlc29sdmUoKTtcblxuICAvKioqKioqKioqKioqKioqIE1vcmUgKioqKioqKioqKioqKioqL1xuXG4gIC8qIFRPRE86XG4gIGFib3J0ID0gPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dXG4gICk6IFByb21pc2U8dm9pZD5cbiAgKi9cblxuICAvKipcbiAgICogR2V0cyBhIHNuYXBzaG90IChodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9TbmFwc2hvdClcbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NuYXBzaG90XG4gICAqL1xuICBzbmFwc2hvdCA9IChzdGF0ZTogU3RhdGU8dW5rbm93bj4sIGZldGNoZWRBdD86IG51bWJlcik6IFNuYXBzaG90SW50ZXJmYWNlID0+IHtcbiAgICByZXR1cm4gbmV3IFNuYXBzaG90KHRoaXMsIHN0YXRlLCBmZXRjaGVkQXQpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBlcnJvciwgaWYgYW55LCBmb3IgYSBnaXZlbiBlbmRwb2ludC4gUmV0dXJucyB1bmRlZmluZWQgZm9yIG5vIGVycm9ycy5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldEVycm9yXG4gICAqL1xuICBnZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IFsuLi5BcmdzLCBTdGF0ZTx1bmtub3duPl1cbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgaWYgKHJlc3RbMF0gPT09IG51bGwpIHJldHVybjtcbiAgICBjb25zdCBzdGF0ZSA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXSBhcyBTdGF0ZTx1bmtub3duPjtcbiAgICAvLyB0aGlzIGlzIHR5cGVzY3JpcHQgZ2VuZXJpY3MgYnJlYWtpbmdcbiAgICBjb25zdCBhcmdzOiBhbnkgPSByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFWydrZXknXT47XG4gICAgY29uc3Qga2V5ID0gZW5kcG9pbnQua2V5KC4uLmFyZ3MpO1xuXG4gICAgY29uc3QgbWV0YSA9IHNlbGVjdE1ldGEoc3RhdGUsIGtleSk7XG4gICAgY29uc3QgcmVzdWx0cyA9IHN0YXRlLnJlc3VsdHNba2V5XTtcblxuICAgIGlmIChyZXN1bHRzICE9PSB1bmRlZmluZWQgJiYgbWV0YT8uZXJyb3JQb2xpY3kgPT09ICdzb2Z0JykgcmV0dXJuO1xuXG4gICAgcmV0dXJuIG1ldGE/LmVycm9yIGFzIGFueTtcbiAgfTtcblxuICAvKipcbiAgICogR2V0cyB0aGUgKGdsb2JhbGx5IHJlZmVyZW50aWFsbHkgc3RhYmxlKSByZXNwb25zZSBmb3IgYSBnaXZlbiBlbmRwb2ludC9hcmdzIHBhaXIgZnJvbSBzdGF0ZSBnaXZlbi5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldFJlc3BvbnNlXG4gICAqL1xuICBnZXRSZXNwb25zZSA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dIHwgcmVhZG9ubHkgW251bGxdLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IFsuLi5BcmdzLCBTdGF0ZTx1bmtub3duPl1cbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9ID0+IHtcbiAgICBjb25zdCBzdGF0ZSA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXSBhcyBTdGF0ZTx1bmtub3duPjtcbiAgICAvLyB0aGlzIGlzIHR5cGVzY3JpcHQgZ2VuZXJpY3MgYnJlYWtpbmdcbiAgICBjb25zdCBhcmdzOiBhbnkgPSByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFWydrZXknXT47XG4gICAgY29uc3QgaXNBY3RpdmUgPSBhcmdzLmxlbmd0aCAhPT0gMSB8fCBhcmdzWzBdICE9PSBudWxsO1xuICAgIGNvbnN0IGtleSA9IGlzQWN0aXZlID8gZW5kcG9pbnQua2V5KC4uLmFyZ3MpIDogJyc7XG4gICAgY29uc3QgY2FjaGVSZXN1bHRzID0gaXNBY3RpdmUgPyBzdGF0ZS5yZXN1bHRzW2tleV0gOiB1bmRlZmluZWQ7XG4gICAgY29uc3Qgc2NoZW1hID0gZW5kcG9pbnQuc2NoZW1hO1xuICAgIGNvbnN0IG1ldGEgPSBzZWxlY3RNZXRhKHN0YXRlLCBrZXkpO1xuICAgIGxldCBleHBpcmVzQXQgPSBtZXRhPy5leHBpcmVzQXQ7XG5cbiAgICBsZXQgaW52YWxpZFJlc3VsdHMgPSBmYWxzZTtcbiAgICBsZXQgcmVzdWx0cztcbiAgICBpZiAoY2FjaGVSZXN1bHRzID09PSB1bmRlZmluZWQgJiYgZW5kcG9pbnQuc2NoZW1hICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJlc3VsdHMgPSBpbmZlclJlc3VsdHMoXG4gICAgICAgIGVuZHBvaW50LnNjaGVtYSxcbiAgICAgICAgYXJncyxcbiAgICAgICAgc3RhdGUuaW5kZXhlcyxcbiAgICAgICAgc3RhdGUuZW50aXRpZXMsXG4gICAgICApO1xuICAgICAgaW52YWxpZFJlc3VsdHMgPSAhdmFsaWRhdGVJbmZlcmVuY2UocmVzdWx0cyk7XG4gICAgICBpZiAoIWV4cGlyZXNBdCAmJiBpbnZhbGlkUmVzdWx0cykgZXhwaXJlc0F0ID0gMTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzdWx0cyA9IGNhY2hlUmVzdWx0cztcbiAgICB9XG5cbiAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiByZXN1bHRzIGFzIGFueSxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXMuVmFsaWQsXG4gICAgICAgIGV4cGlyZXNBdDogSW5maW5pdHksXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghZW5kcG9pbnQuc2NoZW1hIHx8ICFzY2hlbWFIYXNFbnRpdHkoZW5kcG9pbnQuc2NoZW1hKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZGF0YTogcmVzdWx0cyxcbiAgICAgICAgZXhwaXJ5U3RhdHVzOiBtZXRhPy5pbnZhbGlkYXRlZFxuICAgICAgICAgID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgICAgICA6IGNhY2hlUmVzdWx0cyAmJiAhZW5kcG9pbnQuaW52YWxpZElmU3RhbGVcbiAgICAgICAgICA/IEV4cGlyeVN0YXR1cy5WYWxpZFxuICAgICAgICAgIDogRXhwaXJ5U3RhdHVzLkludmFsaWRJZlN0YWxlLFxuICAgICAgICBleHBpcmVzQXQ6IGV4cGlyZXNBdCB8fCAwLFxuICAgICAgfSBhcyB7XG4gICAgICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgICAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cztcbiAgICAgICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICghdGhpcy5nbG9iYWxDYWNoZS5yZXN1bHRzW2tleV0pXG4gICAgICB0aGlzLmdsb2JhbENhY2hlLnJlc3VsdHNba2V5XSA9IG5ldyBXZWFrRW50aXR5TWFwKCk7XG5cbiAgICAvLyBzZWNvbmQgYXJndW1lbnQgaXMgZmFsc2UgaWYgYW55IGVudGl0aWVzIGFyZSBtaXNzaW5nXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGNvbnN0IHsgZGF0YSwgcGF0aHMgfSA9IGRlbm9ybWFsaXplQ2FjaGVkKFxuICAgICAgcmVzdWx0cyxcbiAgICAgIHNjaGVtYSxcbiAgICAgIHN0YXRlLmVudGl0aWVzLFxuICAgICAgdGhpcy5nbG9iYWxDYWNoZS5lbnRpdGllcyxcbiAgICAgIHRoaXMuZ2xvYmFsQ2FjaGUucmVzdWx0c1trZXldLFxuICAgICAgYXJncyxcbiAgICApIGFzIHsgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47IHBhdGhzOiBQYXRoW10gfTtcbiAgICBjb25zdCBpbnZhbGlkRGVub3JtYWxpemUgPSB0eXBlb2YgZGF0YSA9PT0gJ3N5bWJvbCc7XG5cbiAgICAvLyBmYWxsYmFjayB0byBlbnRpdHkgZXhwaXJ5IHRpbWVcbiAgICBpZiAoIWV4cGlyZXNBdCkge1xuICAgICAgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJlc0F0KHBhdGhzLCBzdGF0ZS5lbnRpdHlNZXRhKTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2NvbmNlcHRzL2V4cGlyeS1wb2xpY3kjZXhwaXJ5LXN0YXR1c1xuICAgIC8vIHdlIGRvbid0IHRyYWNrIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc3RhbGUgb3IgZnJlc2ggYmVjYXVzZSB0aGF0IGlzIHRpZWQgdG8gdHJpZ2dlcmluZ1xuICAgIC8vIGNvbmRpdGlvbnNcbiAgICBjb25zdCBleHBpcnlTdGF0dXMgPVxuICAgICAgbWV0YT8uaW52YWxpZGF0ZWQgfHwgKGludmFsaWREZW5vcm1hbGl6ZSAmJiAhbWV0YT8uZXJyb3IpXG4gICAgICAgID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgICAgOiBpbnZhbGlkRGVub3JtYWxpemUgfHwgZW5kcG9pbnQuaW52YWxpZElmU3RhbGUgfHwgaW52YWxpZFJlc3VsdHNcbiAgICAgICAgPyBFeHBpcnlTdGF0dXMuSW52YWxpZElmU3RhbGVcbiAgICAgICAgOiBFeHBpcnlTdGF0dXMuVmFsaWQ7XG5cbiAgICByZXR1cm4geyBkYXRhLCBleHBpcnlTdGF0dXMsIGV4cGlyZXNBdCB9O1xuICB9O1xufVxuXG4vLyBiZW5jaG1hcms6IGh0dHBzOi8vd3d3Lm1lYXN1cmV0aGF0Lm5ldC9CZW5jaG1hcmtzL1Nob3cvMjQ2OTEvMC9taW4tcmVkdWNlci12cy1pbXBlcmF0aXZlLXdpdGgtcGF0aHNcbi8vIGVhcmxpZXN0IGV4cGlyeSBkaWN0YXRlcyBhZ2VcbmZ1bmN0aW9uIGVudGl0eUV4cGlyZXNBdChcbiAgcGF0aHM6IFBhdGhbXSxcbiAgZW50aXR5TWV0YToge1xuICAgIHJlYWRvbmx5IFtlbnRpdHlLZXk6IHN0cmluZ106IHtcbiAgICAgIHJlYWRvbmx5IFtwazogc3RyaW5nXToge1xuICAgICAgICByZWFkb25seSBkYXRlOiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGV4cGlyZXNBdDogbnVtYmVyO1xuICAgICAgICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjsgLy8gVGhpcyBpcyBvbmx5IHRoZSB2YWx1ZSB1bnRpbCBpdCBpcyBzZXQgYnkgdGhlIENhY2hlUHJvdmlkZXJcbiAgICAgIH07XG4gICAgfTtcbiAgfSxcbikge1xuICBsZXQgZXhwaXJlc0F0ID0gSW5maW5pdHk7XG4gIGZvciAoY29uc3QgeyBwaywga2V5IH0gb2YgcGF0aHMpIHtcbiAgICBjb25zdCBlbnRpdHlFeHBpcnkgPSBlbnRpdHlNZXRhW2tleV0/Lltwa10/LmV4cGlyZXNBdDtcbiAgICAvLyBleHBpcmVzQXQgd2lsbCBhbHdheXMgcmVzb2x2ZSB0byBmYWxzZSB3aXRoIGFueSBjb21wYXJpc29uXG4gICAgaWYgKGVudGl0eUV4cGlyeSA8IGV4cGlyZXNBdCkgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJ5O1xuICB9XG4gIHJldHVybiBleHBpcmVzQXQ7XG59XG5cbi8qKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgc2NoZW1hIGhhcyBhbnkgZW50aXRpZXMuXG4gKlxuICogV2l0aG91dCBlbnRpdGllcywgZGVub3JtYWxpemF0aW9uIGlzIG5vdCBuZWVkZWQsIGFuZCByZXN1bHRzIHNob3VsZCBub3QgYmUgaW5mZXJyZWQuXG4gKi9cbmZ1bmN0aW9uIHNjaGVtYUhhc0VudGl0eShzY2hlbWE6IFNjaGVtYSk6IGJvb2xlYW4ge1xuICBpZiAoaXNFbnRpdHkoc2NoZW1hKSkgcmV0dXJuIHRydWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpXG4gICAgcmV0dXJuIHNjaGVtYS5sZW5ndGggIT09IDAgJiYgc2NoZW1hSGFzRW50aXR5KHNjaGVtYVswXSk7XG4gIGlmIChzY2hlbWEgJiYgKHR5cGVvZiBzY2hlbWEgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBzY2hlbWEgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgY29uc3QgbmVzdGVkU2NoZW1hID1cbiAgICAgICdzY2hlbWEnIGluIHNjaGVtYSA/IChzY2hlbWEuc2NoZW1hIGFzIFJlY29yZDxzdHJpbmcsIFNjaGVtYT4pIDogc2NoZW1hO1xuICAgIGlmICh0eXBlb2YgbmVzdGVkU2NoZW1hID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gc2NoZW1hSGFzRW50aXR5KG5lc3RlZFNjaGVtYSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG5lc3RlZFNjaGVtYSkuc29tZSh4ID0+IHNjaGVtYUhhc0VudGl0eSh4KSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgdHlwZSB7IEVycm9yVHlwZXMgfTtcblxuY2xhc3MgU25hcHNob3Q8VCA9IHVua25vd24+IGltcGxlbWVudHMgU25hcHNob3RJbnRlcmZhY2Uge1xuICBwcml2YXRlIHN0YXRlOiBTdGF0ZTxUPjtcbiAgcHJpdmF0ZSBjb250cm9sbGVyOiBDb250cm9sbGVyO1xuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihjb250cm9sbGVyOiBDb250cm9sbGVyLCBzdGF0ZTogU3RhdGU8VD4sIGZldGNoZWRBdCA9IDApIHtcbiAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjtcbiAgICB0aGlzLmZldGNoZWRBdCA9IGZldGNoZWRBdDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKiogRGF0YSBBY2Nlc3MgKioqKioqKioqKioqKioqL1xuICAvKiogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRSZXNwb25zZSAqL1xuICBnZXRSZXNwb25zZSA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IEFyZ3NcbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9ID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFJlc3BvbnNlKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfTtcblxuICAvKiogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRFcnJvciAqL1xuICBnZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IEFyZ3NcbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRFcnJvcihlbmRwb2ludCwgLi4uYXJncywgdGhpcy5zdGF0ZSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQU9BLFNBQ0VBLGFBQWEsRUFDYkMsWUFBWSxFQU1aQyxpQkFBaUIsRUFDakJDLFFBQVEsRUFDUkMsV0FBVyxRQUNOLHdCQUF3QjtBQUMvQixTQUFTQyxZQUFZLEVBQUVDLGlC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
@@ -1,6 +1,6 @@
1
1
  import type { EndpointInterface } from '@data-client/normalizr';
2
2
  import { EndpointUpdateFunction } from './types.js';
3
- import type { CompatibleFetchAction } from '../compatibleActions.js';
3
+ import type { FetchAction } from '../types.js';
4
4
  /**
5
5
  * Requesting a fetch to begin
6
6
  */
@@ -8,5 +8,5 @@ export default function createFetch<E extends EndpointInterface & {
8
8
  update?: EndpointUpdateFunction<E>;
9
9
  }>(endpoint: E, { args }: {
10
10
  args: readonly [...Parameters<E>];
11
- }): CompatibleFetchAction<E>;
11
+ }): FetchAction<E>;
12
12
  //# sourceMappingURL=createFetch.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createFetch.d.ts","sourceRoot":"","sources":["../../src/controller/createFetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,KAAK,EACV,qBAAqB,EAEtB,MAAM,yBAAyB,CAAC;AAEjC;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,CAAC,SAAS,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAA;CAAE,EAEpE,QAAQ,EAAE,CAAC,EACX,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GAC9C,qBAAqB,CAAC,CAAC,CAAC,CAoC1B"}
1
+ {"version":3,"file":"createFetch.d.ts","sourceRoot":"","sources":["../../src/controller/createFetch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAEpD,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,aAAa,CAAC;AAE1D;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,CAAC,SAAS,iBAAiB,GAAG;IAAE,MAAM,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAA;CAAE,EAEpE,QAAQ,EAAE,CAAC,EACX,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GAC9C,WAAW,CAAC,CAAC,CAAC,CAwBhB"}
@@ -12,26 +12,15 @@ export default function createFetch(endpoint, {
12
12
  [resolve, reject] = [a, b];
13
13
  });
14
14
  const meta = {
15
- schema: endpoint.schema,
16
- type: endpoint.sideEffect ? 'mutate' : 'read',
17
15
  args,
18
16
  key,
19
17
  throttle: !endpoint.sideEffect,
20
- options: endpoint,
21
18
  resolve,
22
19
  reject,
23
20
  promise,
24
- createdAt: Date.now()
21
+ createdAt: Date.now(),
22
+ nm: false
25
23
  };
26
- if (endpoint.update) {
27
- meta.update = endpoint.update;
28
- }
29
-
30
- // TODO: Remove once EOL on this deprecated piece
31
- /* istanbul ignore if */
32
- if (endpoint.optimisticUpdate) {
33
- meta.optimisticResponse = endpoint.optimisticUpdate(...args);
34
- }
35
24
  return {
36
25
  type: FETCH_TYPE,
37
26
  payload: () => endpoint(...args),
@@ -39,4 +28,4 @@ export default function createFetch(endpoint, {
39
28
  endpoint
40
29
  };
41
30
  }
42
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGRVRDSF9UWVBFIiwiY3JlYXRlRmV0Y2giLCJlbmRwb2ludCIsImFyZ3MiLCJrZXkiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZSIsIlByb21pc2UiLCJhIiwiYiIsIm1ldGEiLCJzY2hlbWEiLCJ0eXBlIiwic2lkZUVmZmVjdCIsInRocm90dGxlIiwib3B0aW9ucyIsImNyZWF0ZWRBdCIsIkRhdGUiLCJub3ciLCJ1cGRhdGUiLCJvcHRpbWlzdGljVXBkYXRlIiwib3B0aW1pc3RpY1Jlc3BvbnNlIiwicGF5bG9hZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyL2NyZWF0ZUZldGNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5kcG9pbnRJbnRlcmZhY2UgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IHsgRW5kcG9pbnRVcGRhdGVGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgRkVUQ0hfVFlQRSB9IGZyb20gJy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tcGF0aWJsZUZldGNoQWN0aW9uLFxuICBDb21wYXRpYmxlRmV0Y2hNZXRhLFxufSBmcm9tICcuLi9jb21wYXRpYmxlQWN0aW9ucy5qcyc7XG5cbi8qKlxuICogUmVxdWVzdGluZyBhIGZldGNoIHRvIGJlZ2luXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUZldGNoPFxuICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7IHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT4gfSxcbj4oXG4gIGVuZHBvaW50OiBFLFxuICB7IGFyZ3MgfTogeyBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfSxcbik6IENvbXBhdGlibGVGZXRjaEFjdGlvbjxFPiB7XG4gIGNvbnN0IGtleSA9IGVuZHBvaW50LmtleSguLi5hcmdzKTtcbiAgbGV0IHJlc29sdmU6ICh2YWx1ZT86IGFueSB8IFByb21pc2VMaWtlPGFueT4pID0+IHZvaWQgPSAwIGFzIGFueTtcbiAgbGV0IHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCA9IDAgYXMgYW55O1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8YW55PigoYSwgYikgPT4ge1xuICAgIFtyZXNvbHZlLCByZWplY3RdID0gW2EsIGJdO1xuICB9KTtcbiAgY29uc3QgbWV0YTogQ29tcGF0aWJsZUZldGNoTWV0YSA9IHtcbiAgICBzY2hlbWE6IGVuZHBvaW50LnNjaGVtYSxcbiAgICB0eXBlOiBlbmRwb2ludC5zaWRlRWZmZWN0ID8gKCdtdXRhdGUnIGFzIGNvbnN0KSA6ICgncmVhZCcgYXMgY29uc3QpLFxuICAgIGFyZ3MsXG4gICAga2V5LFxuICAgIHRocm90dGxlOiAhZW5kcG9pbnQuc2lkZUVmZmVjdCxcbiAgICBvcHRpb25zOiBlbmRwb2ludCxcbiAgICByZXNvbHZlLFxuICAgIHJlamVjdCxcbiAgICBwcm9taXNlLFxuICAgIGNyZWF0ZWRBdDogRGF0ZS5ub3coKSxcbiAgfTtcblxuICBpZiAoZW5kcG9pbnQudXBkYXRlKSB7XG4gICAgbWV0YS51cGRhdGUgPSBlbmRwb2ludC51cGRhdGU7XG4gIH1cblxuICAvLyBUT0RPOiBSZW1vdmUgb25jZSBFT0wgb24gdGhpcyBkZXByZWNhdGVkIHBpZWNlXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZW5kcG9pbnQub3B0aW1pc3RpY1VwZGF0ZSkge1xuICAgIG1ldGEub3B0aW1pc3RpY1Jlc3BvbnNlID0gZW5kcG9pbnQub3B0aW1pc3RpY1VwZGF0ZSguLi5hcmdzKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogRkVUQ0hfVFlQRSxcbiAgICBwYXlsb2FkOiAoKSA9PiBlbmRwb2ludCguLi5hcmdzKSBhcyBhbnksXG4gICAgbWV0YSxcbiAgICBlbmRwb2ludCxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBR0EsU0FBU0EsVUFBVSxRQUFRLG1CQUFtQjtBQU05QztBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVNDLFdBQVdBLENBR2pDQyxRQUFXLEVBQ1g7RUFBRUM7QUFBNEMsQ0FBQyxFQUNyQjtFQUMxQixNQUFNQyxHQUFHLEdBQUdGLFFBQVEsQ0FBQ0UsR0FBRyxDQUFDLEdBQUdELElBQUksQ0FBQztFQUNqQyxJQUFJRSxPQUFpRCxHQUFHLENBQVE7RUFDaEUsSUFBSUMsTUFBOEIsR0FBRyxDQUFRO0VBQzdDLE1BQU1DLE9BQU8sR0FBRyxJQUFJQyxPQUFPLENBQU0sQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUs7SUFDekMsQ0FBQ0wsT0FBTyxFQUFFQyxNQUFNLENBQUMsR0FBRyxDQUFDRyxDQUFDLEVBQUVDLENBQUMsQ0FBQztFQUM1QixDQUFDLENBQUM7RUFDRixNQUFNQyxJQUF5QixHQUFHO0lBQ2hDQyxNQUFNLEVBQUVWLFFBQVEsQ0FBQ1UsTUFBTTtJQUN2QkMsSUFBSSxFQUFFWCxRQUFRLENBQUNZLFVBQVUsR0FBSSxRQUFRLEdBQWMsTUFBZ0I7SUFDbkVYLElBQUk7SUFDSkMsR0FBRztJQUNIVyxRQUFRLEVBQUUsQ0FBQ2IsUUFBUSxDQUFDWSxVQUFVO0lBQzlCRSxPQUFPLEVBQUVkLFFBQVE7SUFDakJHLE9BQU87SUFDUEMsTUFBTTtJQUNOQyxPQUFPO0lBQ1BVLFNBQVMsRUFBRUMsSUFBSSxDQUFDQyxHQUFHLENBQUM7RUFDdEIsQ0FBQztFQUVELElBQUlqQixRQUFRLENBQUNrQixNQUFNLEVBQUU7SUFDbkJULElBQUksQ0FBQ1MsTUFBTSxHQUFHbEIsUUFBUSxDQUFDa0IsTUFBTTtFQUMvQjs7RUFFQTtFQUNBO0VBQ0EsSUFBSWxCLFFBQVEsQ0FBQ21CLGdCQUFnQixFQUFFO0lBQzdCVixJQUFJLENBQUNXLGtCQUFrQixHQUFHcEIsUUFBUSxDQUFDbUIsZ0JBQWdCLENBQUMsR0FBR2xCLElBQUksQ0FBQztFQUM5RDtFQUVBLE9BQU87SUFDTFUsSUFBSSxFQUFFYixVQUFVO0lBQ2hCdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1yQixRQUFRLENBQUMsR0FBR0MsSUFBSSxDQUFRO0lBQ3ZDUSxJQUFJO0lBQ0pUO0VBQ0YsQ0FBQztBQUNIIn0=
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGRVRDSF9UWVBFIiwiY3JlYXRlRmV0Y2giLCJlbmRwb2ludCIsImFyZ3MiLCJrZXkiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZSIsIlByb21pc2UiLCJhIiwiYiIsIm1ldGEiLCJ0aHJvdHRsZSIsInNpZGVFZmZlY3QiLCJjcmVhdGVkQXQiLCJEYXRlIiwibm93Iiwibm0iLCJ0eXBlIiwicGF5bG9hZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyL2NyZWF0ZUZldGNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5kcG9pbnRJbnRlcmZhY2UgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IHsgRW5kcG9pbnRVcGRhdGVGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgRkVUQ0hfVFlQRSB9IGZyb20gJy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgRmV0Y2hBY3Rpb24sIEZldGNoTWV0YSB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqXG4gKiBSZXF1ZXN0aW5nIGEgZmV0Y2ggdG8gYmVnaW5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlRmV0Y2g8XG4gIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHsgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPiB9LFxuPihcbiAgZW5kcG9pbnQ6IEUsXG4gIHsgYXJncyB9OiB7IGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB9LFxuKTogRmV0Y2hBY3Rpb248RT4ge1xuICBjb25zdCBrZXkgPSBlbmRwb2ludC5rZXkoLi4uYXJncyk7XG4gIGxldCByZXNvbHZlOiAodmFsdWU/OiBhbnkgfCBQcm9taXNlTGlrZTxhbnk+KSA9PiB2b2lkID0gMCBhcyBhbnk7XG4gIGxldCByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQgPSAwIGFzIGFueTtcbiAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPGFueT4oKGEsIGIpID0+IHtcbiAgICBbcmVzb2x2ZSwgcmVqZWN0XSA9IFthLCBiXTtcbiAgfSk7XG4gIGNvbnN0IG1ldGE6IEZldGNoTWV0YSA9IHtcbiAgICBhcmdzLFxuICAgIGtleSxcbiAgICB0aHJvdHRsZTogIWVuZHBvaW50LnNpZGVFZmZlY3QsXG4gICAgcmVzb2x2ZSxcbiAgICByZWplY3QsXG4gICAgcHJvbWlzZSxcbiAgICBjcmVhdGVkQXQ6IERhdGUubm93KCksXG4gICAgbm06IGZhbHNlLFxuICB9O1xuXG4gIHJldHVybiB7XG4gICAgdHlwZTogRkVUQ0hfVFlQRSxcbiAgICBwYXlsb2FkOiAoKSA9PiBlbmRwb2ludCguLi5hcmdzKSBhcyBhbnksXG4gICAgbWV0YSxcbiAgICBlbmRwb2ludCxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBR0EsU0FBU0EsVUFBVSxRQUFRLG1CQUFtQjtBQUc5QztBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVNDLFdBQVdBLENBR2pDQyxRQUFXLEVBQ1g7RUFBRUM7QUFBNEMsQ0FBQyxFQUMvQjtFQUNoQixNQUFNQyxHQUFHLEdBQUdGLFFBQVEsQ0FBQ0UsR0FBRyxDQUFDLEdBQUdELElBQUksQ0FBQztFQUNqQyxJQUFJRSxPQUFpRCxHQUFHLENBQVE7RUFDaEUsSUFBSUMsTUFBOEIsR0FBRyxDQUFRO0VBQzdDLE1BQU1DLE9BQU8sR0FBRyxJQUFJQyxPQUFPLENBQU0sQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUs7SUFDekMsQ0FBQ0wsT0FBTyxFQUFFQyxNQUFNLENBQUMsR0FBRyxDQUFDRyxDQUFDLEVBQUVDLENBQUMsQ0FBQztFQUM1QixDQUFDLENBQUM7RUFDRixNQUFNQyxJQUFlLEdBQUc7SUFDdEJSLElBQUk7SUFDSkMsR0FBRztJQUNIUSxRQUFRLEVBQUUsQ0FBQ1YsUUFBUSxDQUFDVyxVQUFVO0lBQzlCUixPQUFPO0lBQ1BDLE1BQU07SUFDTkMsT0FBTztJQUNQTyxTQUFTLEVBQUVDLElBQUksQ0FBQ0MsR0FBRyxDQUFDLENBQUM7SUFDckJDLEVBQUUsRUFBRTtFQUNOLENBQUM7RUFFRCxPQUFPO0lBQ0xDLElBQUksRUFBRWxCLFVBQVU7SUFDaEJtQixPQUFPLEVBQUVBLENBQUEsS0FBTWpCLFFBQVEsQ0FBQyxHQUFHQyxJQUFJLENBQVE7SUFDdkNRLElBQUk7SUFDSlQ7RUFDRixDQUFDO0FBQ0gifQ==
@@ -1,5 +1,5 @@
1
1
  import type { EndpointInterface } from '@data-client/normalizr';
2
- import type { InvalidateAction } from '../newActions.js';
2
+ import type { InvalidateAction } from '../types.js';
3
3
  export default function createInvalidate<E extends EndpointInterface>(endpoint: E, { args }: {
4
4
  args: readonly [...Parameters<E>];
5
5
  }): InvalidateAction;
@@ -1 +1 @@
1
- {"version":3,"file":"createInvalidate.d.ts","sourceRoot":"","sources":["../../src/controller/createInvalidate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,EAClE,QAAQ,EAAE,CAAC,EACX,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GAC9C,gBAAgB,CAOlB"}
1
+ {"version":3,"file":"createInvalidate.d.ts","sourceRoot":"","sources":["../../src/controller/createInvalidate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGhE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,MAAM,CAAC,OAAO,UAAU,gBAAgB,CAAC,CAAC,SAAS,iBAAiB,EAClE,QAAQ,EAAE,CAAC,EACX,EAAE,IAAI,EAAE,EAAE;IAAE,IAAI,EAAE,SAAS,CAAC,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAA;CAAE,GAC9C,gBAAgB,CAOlB"}
@@ -9,4 +9,4 @@ export default function createInvalidate(endpoint, {
9
9
  }
10
10
  };
11
11
  }
12
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlZBTElEQVRFX1RZUEUiLCJjcmVhdGVJbnZhbGlkYXRlIiwiZW5kcG9pbnQiLCJhcmdzIiwidHlwZSIsIm1ldGEiLCJrZXkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9jcmVhdGVJbnZhbGlkYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5kcG9pbnRJbnRlcmZhY2UgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IHsgSU5WQUxJREFURV9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBJbnZhbGlkYXRlQWN0aW9uIH0gZnJvbSAnLi4vbmV3QWN0aW9ucy5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUludmFsaWRhdGU8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgZW5kcG9pbnQ6IEUsXG4gIHsgYXJncyB9OiB7IGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB9LFxuKTogSW52YWxpZGF0ZUFjdGlvbiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogSU5WQUxJREFURV9UWVBFLFxuICAgIG1ldGE6IHtcbiAgICAgIGtleTogZW5kcG9pbnQua2V5KC4uLmFyZ3MpLFxuICAgIH0sXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUVBLFNBQVNBLGVBQWUsUUFBUSxtQkFBbUI7QUFHbkQsZUFBZSxTQUFTQyxnQkFBZ0JBLENBQ3RDQyxRQUFXLEVBQ1g7RUFBRUM7QUFBNEMsQ0FBQyxFQUM3QjtFQUNsQixPQUFPO0lBQ0xDLElBQUksRUFBRUosZUFBZTtJQUNyQkssSUFBSSxFQUFFO01BQ0pDLEdBQUcsRUFBRUosUUFBUSxDQUFDSSxHQUFHLENBQUMsR0FBR0gsSUFBSTtJQUMzQjtFQUNGLENBQUM7QUFDSCJ9
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlZBTElEQVRFX1RZUEUiLCJjcmVhdGVJbnZhbGlkYXRlIiwiZW5kcG9pbnQiLCJhcmdzIiwidHlwZSIsIm1ldGEiLCJrZXkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9jcmVhdGVJbnZhbGlkYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5kcG9pbnRJbnRlcmZhY2UgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IHsgSU5WQUxJREFURV9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBJbnZhbGlkYXRlQWN0aW9uIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkYXRlPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gIGVuZHBvaW50OiBFLFxuICB7IGFyZ3MgfTogeyBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfSxcbik6IEludmFsaWRhdGVBY3Rpb24ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IElOVkFMSURBVEVfVFlQRSxcbiAgICBtZXRhOiB7XG4gICAgICBrZXk6IGVuZHBvaW50LmtleSguLi5hcmdzKSxcbiAgICB9LFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFFQSxTQUFTQSxlQUFlLFFBQVEsbUJBQW1CO0FBR25ELGVBQWUsU0FBU0MsZ0JBQWdCQSxDQUN0Q0MsUUFBVyxFQUNYO0VBQUVDO0FBQTRDLENBQUMsRUFDN0I7RUFDbEIsT0FBTztJQUNMQyxJQUFJLEVBQUVKLGVBQWU7SUFDckJLLElBQUksRUFBRTtNQUNKQyxHQUFHLEVBQUVKLFFBQVEsQ0FBQ0ksR0FBRyxDQUFDLEdBQUdILElBQUk7SUFDM0I7RUFDRixDQUFDO0FBQ0gifQ==
@@ -1,3 +1,3 @@
1
- import type { InvalidateAllAction } from '../newActions.js';
1
+ import type { InvalidateAllAction } from '../types.js';
2
2
  export default function createInvalidateAll(testKey: (key: string) => boolean): InvalidateAllAction;
3
3
  //# sourceMappingURL=createInvalidateAll.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createInvalidateAll.d.ts","sourceRoot":"","sources":["../../src/controller/createInvalidateAll.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAE5D,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAChC,mBAAmB,CAKrB"}
1
+ {"version":3,"file":"createInvalidateAll.d.ts","sourceRoot":"","sources":["../../src/controller/createInvalidateAll.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEvD,MAAM,CAAC,OAAO,UAAU,mBAAmB,CACzC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,GAChC,mBAAmB,CAKrB"}
@@ -5,4 +5,4 @@ export default function createInvalidateAll(testKey) {
5
5
  testKey
6
6
  };
7
7
  }
8
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlZBTElEQVRFQUxMX1RZUEUiLCJjcmVhdGVJbnZhbGlkYXRlQWxsIiwidGVzdEtleSIsInR5cGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9jcmVhdGVJbnZhbGlkYXRlQWxsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElOVkFMSURBVEVBTExfVFlQRSB9IGZyb20gJy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgSW52YWxpZGF0ZUFsbEFjdGlvbiB9IGZyb20gJy4uL25ld0FjdGlvbnMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkYXRlQWxsKFxuICB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4sXG4pOiBJbnZhbGlkYXRlQWxsQWN0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBJTlZBTElEQVRFQUxMX1RZUEUsXG4gICAgdGVzdEtleSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esa0JBQWtCLFFBQVEsbUJBQW1CO0FBR3RELGVBQWUsU0FBU0MsbUJBQW1CQSxDQUN6Q0MsT0FBaUMsRUFDWjtFQUNyQixPQUFPO0lBQ0xDLElBQUksRUFBRUgsa0JBQWtCO0lBQ3hCRTtFQUNGLENBQUM7QUFDSCJ9
8
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlZBTElEQVRFQUxMX1RZUEUiLCJjcmVhdGVJbnZhbGlkYXRlQWxsIiwidGVzdEtleSIsInR5cGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9jcmVhdGVJbnZhbGlkYXRlQWxsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElOVkFMSURBVEVBTExfVFlQRSB9IGZyb20gJy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgSW52YWxpZGF0ZUFsbEFjdGlvbiB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlSW52YWxpZGF0ZUFsbChcbiAgdGVzdEtleTogKGtleTogc3RyaW5nKSA9PiBib29sZWFuLFxuKTogSW52YWxpZGF0ZUFsbEFjdGlvbiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogSU5WQUxJREFURUFMTF9UWVBFLFxuICAgIHRlc3RLZXksXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGtCQUFrQixRQUFRLG1CQUFtQjtBQUd0RCxlQUFlLFNBQVNDLG1CQUFtQkEsQ0FDekNDLE9BQWlDLEVBQ1o7RUFDckIsT0FBTztJQUNMQyxJQUFJLEVBQUVILGtCQUFrQjtJQUN4QkU7RUFDRixDQUFDO0FBQ0gifQ==