@data-client/core 0.1.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 (308) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +71 -0
  3. package/dist/index.js +1643 -0
  4. package/dist/index.umd.min.js +1 -0
  5. package/dist/next.js +461 -0
  6. package/dist/package.json +1 -0
  7. package/legacy/actionTypes.js +12 -0
  8. package/legacy/compatibleActions.js +2 -0
  9. package/legacy/controller/BaseController.js +289 -0
  10. package/legacy/controller/Controller.js +20 -0
  11. package/legacy/controller/createFetch.js +42 -0
  12. package/legacy/controller/createInvalidate.js +12 -0
  13. package/legacy/controller/createInvalidateAll.js +8 -0
  14. package/legacy/controller/createOptimistic.js +33 -0
  15. package/legacy/controller/createReceive.js +36 -0
  16. package/legacy/controller/createReset.js +8 -0
  17. package/legacy/controller/createSubscription.js +30 -0
  18. package/legacy/controller/types.js +2 -0
  19. package/legacy/endpoint/index.js +2 -0
  20. package/legacy/endpoint/shapes.js +2 -0
  21. package/legacy/endpoint/types.js +2 -0
  22. package/legacy/fsa.js +2 -0
  23. package/legacy/index.js +22 -0
  24. package/legacy/internal.js +4 -0
  25. package/legacy/legacyActions.js +2 -0
  26. package/legacy/manager/ConnectionListener.js +2 -0
  27. package/legacy/manager/DefaultConnectionListener.js +40 -0
  28. package/legacy/manager/DevtoolsManager.js +73 -0
  29. package/legacy/manager/LogoutManager.js +34 -0
  30. package/legacy/manager/NetworkManager.js +291 -0
  31. package/legacy/manager/PollingSubscription.js +159 -0
  32. package/legacy/manager/SubscriptionManager.js +117 -0
  33. package/legacy/manager/applyManager.js +23 -0
  34. package/legacy/manager/devtoolsTypes.js +2 -0
  35. package/legacy/manager/index.js +6 -0
  36. package/legacy/middlewareTypes.js +2 -0
  37. package/legacy/newActions.js +2 -0
  38. package/legacy/next/Controller.js +24 -0
  39. package/legacy/next/index.js +3 -0
  40. package/legacy/previousActions.js +2 -0
  41. package/legacy/state/RIC.js +3 -0
  42. package/legacy/state/applyUpdatersToResults.js +4 -0
  43. package/legacy/state/legacy-actions/createFetch.js +62 -0
  44. package/legacy/state/legacy-actions/createReceive.js +37 -0
  45. package/legacy/state/legacy-actions/createReceiveError.js +28 -0
  46. package/legacy/state/legacy-actions/index.js +4 -0
  47. package/legacy/state/reducer/createReducer.js +54 -0
  48. package/legacy/state/reducer/fetchReducer.js +32 -0
  49. package/legacy/state/reducer/invalidateReducer.js +28 -0
  50. package/legacy/state/reducer/setReducer.js +113 -0
  51. package/legacy/state/reducerInstance.js +9 -0
  52. package/legacy/state/selectMeta.js +4 -0
  53. package/legacy/types.js +8 -0
  54. package/lib/actionTypes.d.ts +11 -0
  55. package/lib/actionTypes.d.ts.map +1 -0
  56. package/lib/actionTypes.js +12 -0
  57. package/lib/compatibleActions.d.ts +47 -0
  58. package/lib/compatibleActions.d.ts.map +1 -0
  59. package/lib/compatibleActions.js +2 -0
  60. package/lib/controller/BaseController.d.ts +128 -0
  61. package/lib/controller/BaseController.d.ts.map +1 -0
  62. package/lib/controller/BaseController.js +289 -0
  63. package/lib/controller/Controller.d.ts +14 -0
  64. package/lib/controller/Controller.d.ts.map +1 -0
  65. package/lib/controller/Controller.js +20 -0
  66. package/lib/controller/createFetch.d.ts +12 -0
  67. package/lib/controller/createFetch.d.ts.map +1 -0
  68. package/lib/controller/createFetch.js +42 -0
  69. package/lib/controller/createInvalidate.d.ts +6 -0
  70. package/lib/controller/createInvalidate.d.ts.map +1 -0
  71. package/lib/controller/createInvalidate.js +12 -0
  72. package/lib/controller/createInvalidateAll.d.ts +3 -0
  73. package/lib/controller/createInvalidateAll.d.ts.map +1 -0
  74. package/lib/controller/createInvalidateAll.js +8 -0
  75. package/lib/controller/createOptimistic.d.ts +10 -0
  76. package/lib/controller/createOptimistic.d.ts.map +1 -0
  77. package/lib/controller/createOptimistic.js +33 -0
  78. package/lib/controller/createReceive.d.ts +20 -0
  79. package/lib/controller/createReceive.d.ts.map +1 -0
  80. package/lib/controller/createReceive.js +36 -0
  81. package/lib/controller/createReset.d.ts +3 -0
  82. package/lib/controller/createReset.d.ts.map +1 -0
  83. package/lib/controller/createReset.js +8 -0
  84. package/lib/controller/createSubscription.d.ts +9 -0
  85. package/lib/controller/createSubscription.d.ts.map +1 -0
  86. package/lib/controller/createSubscription.js +30 -0
  87. package/lib/controller/types.d.ts +6 -0
  88. package/lib/controller/types.d.ts.map +1 -0
  89. package/lib/controller/types.js +2 -0
  90. package/lib/endpoint/index.d.ts +3 -0
  91. package/lib/endpoint/index.d.ts.map +1 -0
  92. package/lib/endpoint/index.js +2 -0
  93. package/lib/endpoint/shapes.d.ts +25 -0
  94. package/lib/endpoint/shapes.d.ts.map +1 -0
  95. package/lib/endpoint/shapes.js +2 -0
  96. package/lib/endpoint/types.d.ts +45 -0
  97. package/lib/endpoint/types.d.ts.map +1 -0
  98. package/lib/endpoint/types.js +2 -0
  99. package/lib/fsa.d.ts +41 -0
  100. package/lib/fsa.d.ts.map +1 -0
  101. package/lib/fsa.js +2 -0
  102. package/lib/index.d.ts +19 -0
  103. package/lib/index.d.ts.map +1 -0
  104. package/lib/index.js +22 -0
  105. package/lib/internal.d.ts +4 -0
  106. package/lib/internal.d.ts.map +1 -0
  107. package/lib/internal.js +4 -0
  108. package/lib/legacyActions.d.ts +92 -0
  109. package/lib/legacyActions.d.ts.map +1 -0
  110. package/lib/legacyActions.js +2 -0
  111. package/lib/manager/ConnectionListener.d.ts +8 -0
  112. package/lib/manager/ConnectionListener.d.ts.map +1 -0
  113. package/lib/manager/ConnectionListener.js +2 -0
  114. package/lib/manager/DefaultConnectionListener.d.ts +20 -0
  115. package/lib/manager/DefaultConnectionListener.d.ts.map +1 -0
  116. package/lib/manager/DefaultConnectionListener.js +40 -0
  117. package/lib/manager/DevtoolsManager.d.ts +24 -0
  118. package/lib/manager/DevtoolsManager.d.ts.map +1 -0
  119. package/lib/manager/DevtoolsManager.js +74 -0
  120. package/lib/manager/LogoutManager.d.ts +25 -0
  121. package/lib/manager/LogoutManager.d.ts.map +1 -0
  122. package/lib/manager/LogoutManager.js +34 -0
  123. package/lib/manager/NetworkManager.d.ts +82 -0
  124. package/lib/manager/NetworkManager.d.ts.map +1 -0
  125. package/lib/manager/NetworkManager.js +295 -0
  126. package/lib/manager/PollingSubscription.d.ts +45 -0
  127. package/lib/manager/PollingSubscription.d.ts.map +1 -0
  128. package/lib/manager/PollingSubscription.js +159 -0
  129. package/lib/manager/SubscriptionManager.d.ts +55 -0
  130. package/lib/manager/SubscriptionManager.d.ts.map +1 -0
  131. package/lib/manager/SubscriptionManager.js +117 -0
  132. package/lib/manager/applyManager.d.ts +10 -0
  133. package/lib/manager/applyManager.d.ts.map +1 -0
  134. package/lib/manager/applyManager.js +23 -0
  135. package/lib/manager/devtoolsTypes.d.ts +205 -0
  136. package/lib/manager/devtoolsTypes.d.ts.map +1 -0
  137. package/lib/manager/devtoolsTypes.js +2 -0
  138. package/lib/manager/index.d.ts +8 -0
  139. package/lib/manager/index.d.ts.map +1 -0
  140. package/lib/manager/index.js +6 -0
  141. package/lib/middlewareTypes.d.ts +18 -0
  142. package/lib/middlewareTypes.d.ts.map +1 -0
  143. package/lib/middlewareTypes.js +2 -0
  144. package/lib/newActions.d.ts +85 -0
  145. package/lib/newActions.d.ts.map +1 -0
  146. package/lib/newActions.js +2 -0
  147. package/lib/next/Controller.d.ts +14 -0
  148. package/lib/next/Controller.d.ts.map +1 -0
  149. package/lib/next/Controller.js +24 -0
  150. package/lib/next/index.d.ts +3 -0
  151. package/lib/next/index.d.ts.map +1 -0
  152. package/lib/next/index.js +3 -0
  153. package/lib/previousActions.d.ts +91 -0
  154. package/lib/previousActions.d.ts.map +1 -0
  155. package/lib/previousActions.js +2 -0
  156. package/lib/state/RIC.d.ts +2 -0
  157. package/lib/state/RIC.js +3 -0
  158. package/lib/state/applyUpdatersToResults.d.ts +13 -0
  159. package/lib/state/applyUpdatersToResults.d.ts.map +1 -0
  160. package/lib/state/applyUpdatersToResults.js +7 -0
  161. package/lib/state/legacy-actions/createFetch.d.ts +19 -0
  162. package/lib/state/legacy-actions/createFetch.d.ts.map +1 -0
  163. package/lib/state/legacy-actions/createFetch.js +62 -0
  164. package/lib/state/legacy-actions/createReceive.d.ts +14 -0
  165. package/lib/state/legacy-actions/createReceive.d.ts.map +1 -0
  166. package/lib/state/legacy-actions/createReceive.js +37 -0
  167. package/lib/state/legacy-actions/createReceiveError.d.ts +9 -0
  168. package/lib/state/legacy-actions/createReceiveError.d.ts.map +1 -0
  169. package/lib/state/legacy-actions/createReceiveError.js +28 -0
  170. package/lib/state/legacy-actions/index.d.ts +4 -0
  171. package/lib/state/legacy-actions/index.d.ts.map +1 -0
  172. package/lib/state/legacy-actions/index.js +4 -0
  173. package/lib/state/reducer/createReducer.d.ts +7 -0
  174. package/lib/state/reducer/createReducer.d.ts.map +1 -0
  175. package/lib/state/reducer/createReducer.js +55 -0
  176. package/lib/state/reducer/fetchReducer.d.ts +4 -0
  177. package/lib/state/reducer/fetchReducer.d.ts.map +1 -0
  178. package/lib/state/reducer/fetchReducer.js +34 -0
  179. package/lib/state/reducer/invalidateReducer.d.ts +37 -0
  180. package/lib/state/reducer/invalidateReducer.d.ts.map +1 -0
  181. package/lib/state/reducer/invalidateReducer.js +34 -0
  182. package/lib/state/reducer/setReducer.d.ts +40 -0
  183. package/lib/state/reducer/setReducer.d.ts.map +1 -0
  184. package/lib/state/reducer/setReducer.js +119 -0
  185. package/lib/state/reducerInstance.d.ts +7 -0
  186. package/lib/state/reducerInstance.d.ts.map +1 -0
  187. package/lib/state/reducerInstance.js +9 -0
  188. package/lib/state/selectMeta.d.ts +3 -0
  189. package/lib/state/selectMeta.d.ts.map +1 -0
  190. package/lib/state/selectMeta.js +4 -0
  191. package/lib/types.d.ts +71 -0
  192. package/lib/types.d.ts.map +1 -0
  193. package/lib/types.js +8 -0
  194. package/node.mjs +1 -0
  195. package/package.json +127 -0
  196. package/src/actionTypes.ts +11 -0
  197. package/src/compatibleActions.ts +96 -0
  198. package/src/controller/BaseController.ts +508 -0
  199. package/src/controller/Controller.ts +32 -0
  200. package/src/controller/__tests__/Controller.ts +29 -0
  201. package/src/controller/__tests__/__snapshots__/getResponse.ts.snap +35 -0
  202. package/src/controller/__tests__/getResponse.ts +182 -0
  203. package/src/controller/createFetch.ts +54 -0
  204. package/src/controller/createInvalidate.ts +16 -0
  205. package/src/controller/createInvalidateAll.ts +11 -0
  206. package/src/controller/createOptimistic.ts +47 -0
  207. package/src/controller/createReceive.ts +85 -0
  208. package/src/controller/createReset.ts +9 -0
  209. package/src/controller/createSubscription.ts +39 -0
  210. package/src/controller/types.ts +22 -0
  211. package/src/endpoint/index.ts +14 -0
  212. package/src/endpoint/shapes.ts +53 -0
  213. package/src/endpoint/types.ts +72 -0
  214. package/src/fsa.ts +99 -0
  215. package/src/index.ts +61 -0
  216. package/src/internal.ts +3 -0
  217. package/src/legacyActions.ts +163 -0
  218. package/src/manager/ConnectionListener.ts +7 -0
  219. package/src/manager/DefaultConnectionListener.ts +54 -0
  220. package/src/manager/DevtoolsManager.ts +99 -0
  221. package/src/manager/LogoutManager.ts +57 -0
  222. package/src/manager/NetworkManager.ts +346 -0
  223. package/src/manager/PollingSubscription.ts +190 -0
  224. package/src/manager/SubscriptionManager.ts +156 -0
  225. package/src/manager/__tests__/__snapshots__/pollingSubscription-endpoint.ts.snap +49 -0
  226. package/src/manager/__tests__/__snapshots__/pollingSubscription.ts.snap +43 -0
  227. package/src/manager/__tests__/logoutManager.ts +112 -0
  228. package/src/manager/__tests__/manager.ts +44 -0
  229. package/src/manager/__tests__/networkManager-legacy.ts +394 -0
  230. package/src/manager/__tests__/networkManager.ts +426 -0
  231. package/src/manager/__tests__/pollingSubscription-endpoint.ts +423 -0
  232. package/src/manager/__tests__/pollingSubscription.ts +313 -0
  233. package/src/manager/__tests__/subscriptionManager.ts +208 -0
  234. package/src/manager/applyManager.ts +33 -0
  235. package/src/manager/devtoolsTypes.ts +210 -0
  236. package/src/manager/index.ts +7 -0
  237. package/src/middlewareTypes.ts +49 -0
  238. package/src/newActions.ts +140 -0
  239. package/src/next/Controller.ts +39 -0
  240. package/src/next/index.ts +2 -0
  241. package/src/package.json +1 -0
  242. package/src/previousActions.ts +159 -0
  243. package/src/state/RIC.d.ts +2 -0
  244. package/src/state/RIC.js +5 -0
  245. package/src/state/__tests__/RIC.web.ts +16 -0
  246. package/src/state/__tests__/__snapshots__/reducer.ts.snap +56 -0
  247. package/src/state/__tests__/applyUpdatersToResults.ts +40 -0
  248. package/src/state/__tests__/reducer.ts +868 -0
  249. package/src/state/applyUpdatersToResults.ts +29 -0
  250. package/src/state/legacy-actions/createFetch.ts +95 -0
  251. package/src/state/legacy-actions/createReceive.ts +68 -0
  252. package/src/state/legacy-actions/createReceiveError.ts +43 -0
  253. package/src/state/legacy-actions/index.ts +3 -0
  254. package/src/state/reducer/createReducer.ts +80 -0
  255. package/src/state/reducer/fetchReducer.ts +48 -0
  256. package/src/state/reducer/invalidateReducer.ts +39 -0
  257. package/src/state/reducer/setReducer.ts +157 -0
  258. package/src/state/reducerInstance.ts +14 -0
  259. package/src/state/selectMeta.ts +8 -0
  260. package/src/types.ts +125 -0
  261. package/ts3.4/actionTypes.d.ts +11 -0
  262. package/ts3.4/compatibleActions.d.ts +47 -0
  263. package/ts3.4/controller/BaseController.d.ts +170 -0
  264. package/ts3.4/controller/Controller.d.ts +14 -0
  265. package/ts3.4/controller/createFetch.d.ts +14 -0
  266. package/ts3.4/controller/createInvalidate.d.ts +8 -0
  267. package/ts3.4/controller/createInvalidateAll.d.ts +3 -0
  268. package/ts3.4/controller/createOptimistic.d.ts +12 -0
  269. package/ts3.4/controller/createReceive.d.ts +24 -0
  270. package/ts3.4/controller/createReset.d.ts +3 -0
  271. package/ts3.4/controller/createSubscription.d.ts +13 -0
  272. package/ts3.4/controller/types.d.ts +6 -0
  273. package/ts3.4/endpoint/index.d.ts +3 -0
  274. package/ts3.4/endpoint/shapes.d.ts +25 -0
  275. package/ts3.4/endpoint/types.d.ts +45 -0
  276. package/ts3.4/fsa.d.ts +41 -0
  277. package/ts3.4/index.d.ts +22 -0
  278. package/ts3.4/internal.d.ts +4 -0
  279. package/ts3.4/legacyActions.d.ts +95 -0
  280. package/ts3.4/manager/ConnectionListener.d.ts +8 -0
  281. package/ts3.4/manager/DefaultConnectionListener.d.ts +20 -0
  282. package/ts3.4/manager/DevtoolsManager.d.ts +24 -0
  283. package/ts3.4/manager/LogoutManager.d.ts +25 -0
  284. package/ts3.4/manager/NetworkManager.d.ts +82 -0
  285. package/ts3.4/manager/PollingSubscription.d.ts +45 -0
  286. package/ts3.4/manager/SubscriptionManager.d.ts +55 -0
  287. package/ts3.4/manager/applyManager.d.ts +10 -0
  288. package/ts3.4/manager/devtoolsTypes.d.ts +205 -0
  289. package/ts3.4/manager/index.d.ts +8 -0
  290. package/ts3.4/middlewareTypes.d.ts +18 -0
  291. package/ts3.4/newActions.d.ts +88 -0
  292. package/ts3.4/next/Controller.d.ts +14 -0
  293. package/ts3.4/next/index.d.ts +3 -0
  294. package/ts3.4/previousActions.d.ts +94 -0
  295. package/ts3.4/state/RIC.d.ts +2 -0
  296. package/ts3.4/state/applyUpdatersToResults.d.ts +13 -0
  297. package/ts3.4/state/legacy-actions/createFetch.d.ts +19 -0
  298. package/ts3.4/state/legacy-actions/createReceive.d.ts +14 -0
  299. package/ts3.4/state/legacy-actions/createReceiveError.d.ts +9 -0
  300. package/ts3.4/state/legacy-actions/index.d.ts +4 -0
  301. package/ts3.4/state/reducer/createReducer.d.ts +7 -0
  302. package/ts3.4/state/reducer/fetchReducer.d.ts +4 -0
  303. package/ts3.4/state/reducer/invalidateReducer.d.ts +37 -0
  304. package/ts3.4/state/reducer/setReducer.d.ts +40 -0
  305. package/ts3.4/state/reducerInstance.d.ts +7 -0
  306. package/ts3.4/state/selectMeta.d.ts +3 -0
  307. package/ts3.4/types.d.ts +73 -0
  308. package/typescript.svg +8 -0
@@ -0,0 +1,289 @@
1
+ import { WeakEntityMap, ExpiryStatus, denormalizeCached, isEntity } from '@data-client/normalizr';
2
+ import { inferResults, validateInference } from '@data-client/normalizr';
3
+ import createInvalidate from './createInvalidate.js';
4
+ import createInvalidateAll from './createInvalidateAll.js';
5
+ import createReceive from './createReceive.js';
6
+ import createReset from './createReset.js';
7
+ import { createUnsubscription, createSubscription } from './createSubscription.js';
8
+ import { initialState } from '../state/reducer/createReducer.js';
9
+ import selectMeta from '../state/selectMeta.js';
10
+ const unsetDispatch = action => {
11
+ throw new Error(`Dispatching while constructing your middleware is not allowed. ` + `Other middleware would not be applied to this dispatch.`);
12
+ };
13
+ const unsetState = () => {
14
+ // This is only the value until it is set by the CacheProvider
15
+ /* istanbul ignore next */
16
+ return initialState;
17
+ };
18
+
19
+ /**
20
+ * Imperative control of Rest Hooks store
21
+ * @see https://resthooks.io/docs/api/Controller
22
+ */
23
+ export default class Controller {
24
+ /**
25
+ * Dispatches an action to Rest Hooks reducer.
26
+ *
27
+ * @see https://resthooks.io/docs/api/Controller#dispatch
28
+ */
29
+
30
+ /**
31
+ * Gets the latest state snapshot that is fully committed.
32
+ *
33
+ * This can be useful for imperative use-cases like event handlers.
34
+ * This should *not* be used to render; instead useSuspense() or useCache()
35
+ * @see https://resthooks.io/docs/api/Controller#getState
36
+ */
37
+
38
+ constructor({
39
+ dispatch = unsetDispatch,
40
+ getState = unsetState,
41
+ globalCache = {
42
+ entities: {},
43
+ results: {}
44
+ }
45
+ } = {}) {
46
+ /*************** Action Dispatchers ***************/
47
+ /**
48
+ * Forces refetching and suspense on useSuspense with the same Endpoint and parameters.
49
+ * @see https://resthooks.io/docs/api/Controller#invalidate
50
+ */
51
+ this.invalidate = (endpoint, ...args) => args[0] !== null ? this.dispatch(createInvalidate(endpoint, {
52
+ args: args
53
+ })) : Promise.resolve();
54
+ /**
55
+ * Forces refetching and suspense on useSuspense on all matching endpoint result keys.
56
+ * @see https://resthooks.io/docs/api/Controller#invalidateAll
57
+ */
58
+ this.invalidateAll = options => this.dispatch(createInvalidateAll(key => options.testKey(key)));
59
+ /**
60
+ * Resets the entire Rest Hooks cache. All inflight requests will not resolve.
61
+ * @see https://resthooks.io/docs/api/Controller#resetEntireStore
62
+ */
63
+ this.resetEntireStore = () => this.dispatch(createReset());
64
+ /**
65
+ * Stores response in cache for given Endpoint and args.
66
+ * @see https://resthooks.io/docs/api/Controller#set
67
+ */
68
+ this.setResponse = (endpoint, ...rest) => {
69
+ const response = rest[rest.length - 1];
70
+ const action = createReceive(endpoint, {
71
+ args: rest.slice(0, rest.length - 1),
72
+ response
73
+ });
74
+ return this.dispatch(action);
75
+ };
76
+ // TODO: deprecate
77
+ /**
78
+ * Another name for setResponse
79
+ * @see https://resthooks.io/docs/api/Controller#setResponse
80
+ */
81
+ /* istanbul ignore next */
82
+ this.receive = (endpoint, ...rest) => {
83
+ /* istanbul ignore next */
84
+ return this.setResponse(endpoint, ...rest);
85
+ };
86
+ /**
87
+ * Stores the result of Endpoint and args as the error provided.
88
+ * @see https://resthooks.io/docs/api/Controller#setError
89
+ */
90
+ this.setError = (endpoint, ...rest) => {
91
+ const response = rest[rest.length - 1];
92
+ const action = createReceive(endpoint, {
93
+ args: rest.slice(0, rest.length - 1),
94
+ response,
95
+ error: true
96
+ });
97
+ return this.dispatch(action);
98
+ };
99
+ // TODO: deprecate
100
+ /**
101
+ * Another name for setError
102
+ * @see https://resthooks.io/docs/api/Controller#setError
103
+ */
104
+ /* istanbul ignore next */
105
+ this.receiveError = (endpoint, ...rest) => {
106
+ /* istanbul ignore next */
107
+ return this.setError(endpoint, ...rest);
108
+ };
109
+ /**
110
+ * Resolves an inflight fetch. `fetchedAt` should `fetch`'s `createdAt`
111
+ * @see https://resthooks.io/docs/api/Controller#resolve
112
+ */
113
+ this.resolve = (endpoint, meta) => {
114
+ return this.dispatch(createReceive(endpoint, meta));
115
+ };
116
+ /**
117
+ * Marks a new subscription to a given Endpoint.
118
+ * @see https://resthooks.io/docs/api/Controller#subscribe
119
+ */
120
+ this.subscribe = (endpoint, ...args) => args[0] !== null ? this.dispatch(createSubscription(endpoint, {
121
+ args: args
122
+ })) : Promise.resolve();
123
+ /**
124
+ * Marks completion of subscription to a given Endpoint.
125
+ * @see https://resthooks.io/docs/api/Controller#unsubscribe
126
+ */
127
+ this.unsubscribe = (endpoint, ...args) => args[0] !== null ? this.dispatch(createUnsubscription(endpoint, {
128
+ args: args
129
+ })) : Promise.resolve();
130
+ /*************** More ***************/
131
+ /* TODO:
132
+ abort = <E extends EndpointInterface>(
133
+ endpoint: E,
134
+ ...args: readonly [...Parameters<E>]
135
+ ): Promise<void>
136
+ */
137
+ /**
138
+ * Gets a snapshot (https://resthooks.io/docs/api/Snapshot)
139
+ * @see https://resthooks.io/docs/api/Controller#snapshot
140
+ */
141
+ this.snapshot = (state, fetchedAt) => {
142
+ return new Snapshot(this, state, fetchedAt);
143
+ };
144
+ /**
145
+ * Gets the error, if any, for a given endpoint. Returns undefined for no errors.
146
+ * @see https://resthooks.io/docs/api/Controller#getError
147
+ */
148
+ this.getError = (endpoint, ...rest) => {
149
+ if (rest[0] === null) return;
150
+ const state = rest[rest.length - 1];
151
+ // this is typescript generics breaking
152
+ const args = rest.slice(0, rest.length - 1);
153
+ const key = endpoint.key(...args);
154
+ const meta = selectMeta(state, key);
155
+ const results = state.results[key];
156
+ if (results !== undefined && (meta == null ? void 0 : meta.errorPolicy) === 'soft') return;
157
+ return meta == null ? void 0 : meta.error;
158
+ };
159
+ /**
160
+ * Gets the (globally referentially stable) response for a given endpoint/args pair from state given.
161
+ * @see https://resthooks.io/docs/api/Controller#getResponse
162
+ */
163
+ this.getResponse = (endpoint, ...rest) => {
164
+ const state = rest[rest.length - 1];
165
+ // this is typescript generics breaking
166
+ const args = rest.slice(0, rest.length - 1);
167
+ const isActive = args.length !== 1 || args[0] !== null;
168
+ const key = isActive ? endpoint.key(...args) : '';
169
+ const cacheResults = isActive ? state.results[key] : undefined;
170
+ const schema = endpoint.schema;
171
+ const meta = selectMeta(state, key);
172
+ let expiresAt = meta == null ? void 0 : meta.expiresAt;
173
+ let invalidResults = false;
174
+ let results;
175
+ if (cacheResults === undefined && endpoint.schema !== undefined) {
176
+ results = inferResults(endpoint.schema, args, state.indexes, state.entities);
177
+ invalidResults = !validateInference(results);
178
+ if (!expiresAt && invalidResults) expiresAt = 1;
179
+ } else {
180
+ results = cacheResults;
181
+ }
182
+ if (!isActive) {
183
+ return {
184
+ data: results,
185
+ expiryStatus: ExpiryStatus.Valid,
186
+ expiresAt: Infinity
187
+ };
188
+ }
189
+ if (!endpoint.schema || !schemaHasEntity(endpoint.schema)) {
190
+ return {
191
+ data: results,
192
+ expiryStatus: meta != null && meta.invalidated ? ExpiryStatus.Invalid : cacheResults && !endpoint.invalidIfStale ? ExpiryStatus.Valid : ExpiryStatus.InvalidIfStale,
193
+ expiresAt: expiresAt || 0
194
+ };
195
+ }
196
+
197
+ // Warn users with bad configurations
198
+ /* istanbul ignore next */
199
+ if (process.env.NODE_ENV !== 'production' && schema && isEntity(schema)) {
200
+ if (Array.isArray(results)) {
201
+ throw new Error(`fetch key ${key} has list results when single result is expected`);
202
+ }
203
+ if (typeof results === 'object') {
204
+ throw new Error(`fetch key ${key} has object results when entity's primary key (string) result is expected`);
205
+ }
206
+ }
207
+ if (!this.globalCache.results[key]) this.globalCache.results[key] = new WeakEntityMap();
208
+
209
+ // second argument is false if any entities are missing
210
+ // eslint-disable-next-line prefer-const
211
+ const {
212
+ data,
213
+ paths
214
+ } = denormalizeCached(results, schema, state.entities, this.globalCache.entities, this.globalCache.results[key], args);
215
+ const invalidDenormalize = typeof data === 'symbol';
216
+
217
+ // fallback to entity expiry time
218
+ if (!expiresAt) {
219
+ expiresAt = entityExpiresAt(paths, state.entityMeta);
220
+ }
221
+
222
+ // https://resthooks.io/docs/concepts/expiry-policy#expiry-status
223
+ // we don't track the difference between stale or fresh because that is tied to triggering
224
+ // conditions
225
+ const expiryStatus = meta != null && meta.invalidated || invalidDenormalize && !(meta != null && meta.error) ? ExpiryStatus.Invalid : invalidDenormalize || endpoint.invalidIfStale || invalidResults ? ExpiryStatus.InvalidIfStale : ExpiryStatus.Valid;
226
+ return {
227
+ data,
228
+ expiryStatus,
229
+ expiresAt
230
+ };
231
+ };
232
+ this.dispatch = dispatch;
233
+ this.getState = getState;
234
+ this.globalCache = globalCache;
235
+ }
236
+ }
237
+
238
+ // benchmark: https://www.measurethat.net/Benchmarks/Show/24691/0/min-reducer-vs-imperative-with-paths
239
+ // earliest expiry dictates age
240
+ function entityExpiresAt(paths, entityMeta) {
241
+ let expiresAt = Infinity;
242
+ for (const {
243
+ pk,
244
+ key
245
+ } of paths) {
246
+ var _entityMeta$key, _entityMeta$key$pk;
247
+ const entityExpiry = (_entityMeta$key = entityMeta[key]) == null ? void 0 : (_entityMeta$key$pk = _entityMeta$key[pk]) == null ? void 0 : _entityMeta$key$pk.expiresAt;
248
+ // expiresAt will always resolve to false with any comparison
249
+ if (entityExpiry < expiresAt) expiresAt = entityExpiry;
250
+ }
251
+ return expiresAt;
252
+ }
253
+
254
+ /** Determine whether the schema has any entities.
255
+ *
256
+ * Without entities, denormalization is not needed, and results should not be inferred.
257
+ */
258
+ function schemaHasEntity(schema) {
259
+ if (isEntity(schema)) return true;
260
+ if (Array.isArray(schema)) return schema.length !== 0 && schemaHasEntity(schema[0]);
261
+ if (schema && (typeof schema === 'object' || typeof schema === 'function')) {
262
+ const nestedSchema = 'schema' in schema ? schema.schema : schema;
263
+ if (typeof nestedSchema === 'function') {
264
+ return schemaHasEntity(nestedSchema);
265
+ }
266
+ return Object.values(nestedSchema).some(x => schemaHasEntity(x));
267
+ }
268
+ return false;
269
+ }
270
+ class Snapshot {
271
+ constructor(controller, state, fetchedAt = 0) {
272
+ this.state = void 0;
273
+ this.controller = void 0;
274
+ this.fetchedAt = void 0;
275
+ /*************** Data Access ***************/
276
+ /** @see https://resthooks.io/docs/api/Snapshot#getResponse */
277
+ this.getResponse = (endpoint, ...args) => {
278
+ return this.controller.getResponse(endpoint, ...args, this.state);
279
+ };
280
+ /** @see https://resthooks.io/docs/api/Snapshot#getError */
281
+ this.getError = (endpoint, ...args) => {
282
+ return this.controller.getError(endpoint, ...args, this.state);
283
+ };
284
+ this.state = state;
285
+ this.controller = controller;
286
+ this.fetchedAt = fetchedAt;
287
+ }
288
+ }
289
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJXZWFrRW50aXR5TWFwIiwiRXhwaXJ5U3RhdHVzIiwiZGVub3JtYWxpemVDYWNoZWQiLCJpc0VudGl0eSIsImluZmVyUmVzdWx0cyIsInZhbGlkYXRlSW5mZXJlbmNlIiwiY3JlYXRlSW52YWxpZGF0ZSIsImNyZWF0ZUludmFsaWRhdGVBbGwiLCJjcmVhdGVSZWNlaXZlIiwiY3JlYXRlUmVzZXQiLCJjcmVhdGVVbnN1YnNjcmlwdGlvbiIsImNyZWF0ZVN1YnNjcmlwdGlvbiIsImluaXRpYWxTdGF0ZSIsInNlbGVjdE1ldGEiLCJ1bnNldERpc3BhdGNoIiwiYWN0aW9uIiwiRXJyb3IiLCJ1bnNldFN0YXRlIiwiQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiZGlzcGF0Y2giLCJnZXRTdGF0ZSIsImdsb2JhbENhY2hlIiwiZW50aXRpZXMiLCJyZXN1bHRzIiwiaW52YWxpZGF0ZSIsImVuZHBvaW50IiwiYXJncyIsIlByb21pc2UiLCJyZXNvbHZlIiwiaW52YWxpZGF0ZUFsbCIsIm9wdGlvbnMiLCJrZXkiLCJ0ZXN0S2V5IiwicmVzZXRFbnRpcmVTdG9yZSIsInNldFJlc3BvbnNlIiwicmVzdCIsInJlc3BvbnNlIiwibGVuZ3RoIiwic2xpY2UiLCJyZWNlaXZlIiwic2V0RXJyb3IiLCJlcnJvciIsInJlY2VpdmVFcnJvciIsIm1ldGEiLCJzdWJzY3JpYmUiLCJ1bnN1YnNjcmliZSIsInNuYXBzaG90Iiwic3RhdGUiLCJmZXRjaGVkQXQiLCJTbmFwc2hvdCIsImdldEVycm9yIiwidW5kZWZpbmVkIiwiZXJyb3JQb2xpY3kiLCJnZXRSZXNwb25zZSIsImlzQWN0aXZlIiwiY2FjaGVSZXN1bHRzIiwic2NoZW1hIiwiZXhwaXJlc0F0IiwiaW52YWxpZFJlc3VsdHMiLCJpbmRleGVzIiwiZGF0YSIsImV4cGlyeVN0YXR1cyIsIlZhbGlkIiwiSW5maW5pdHkiLCJzY2hlbWFIYXNFbnRpdHkiLCJpbnZhbGlkYXRlZCIsIkludmFsaWQiLCJpbnZhbGlkSWZTdGFsZSIsIkludmFsaWRJZlN0YWxlIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiQXJyYXkiLCJpc0FycmF5IiwicGF0aHMiLCJpbnZhbGlkRGVub3JtYWxpemUiLCJlbnRpdHlFeHBpcmVzQXQiLCJlbnRpdHlNZXRhIiwicGsiLCJfZW50aXR5TWV0YSRrZXkiLCJfZW50aXR5TWV0YSRrZXkkcGsiLCJlbnRpdHlFeHBpcnkiLCJuZXN0ZWRTY2hlbWEiLCJPYmplY3QiLCJ2YWx1ZXMiLCJzb21lIiwieCIsImNvbnRyb2xsZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9CYXNlQ29udHJvbGxlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIEVycm9yVHlwZXMsXG4gIFNuYXBzaG90SW50ZXJmYWNlLFxuICBEZW5vcm1hbGl6ZUNhY2hlLFxuICBTY2hlbWEsXG59IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHtcbiAgV2Vha0VudGl0eU1hcCxcbiAgRXhwaXJ5U3RhdHVzLFxuICBFbmRwb2ludEludGVyZmFjZSxcbiAgRmV0Y2hGdW5jdGlvbixcbiAgUmVzb2x2ZVR5cGUsXG4gIERlbm9ybWFsaXplTnVsbGFibGUsXG4gIFBhdGgsXG4gIGRlbm9ybWFsaXplQ2FjaGVkLFxuICBpc0VudGl0eSxcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5pbXBvcnQgeyBpbmZlclJlc3VsdHMsIHZhbGlkYXRlSW5mZXJlbmNlIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCBjcmVhdGVJbnZhbGlkYXRlIGZyb20gJy4vY3JlYXRlSW52YWxpZGF0ZS5qcyc7XG5pbXBvcnQgY3JlYXRlSW52YWxpZGF0ZUFsbCBmcm9tICcuL2NyZWF0ZUludmFsaWRhdGVBbGwuanMnO1xuaW1wb3J0IGNyZWF0ZVJlY2VpdmUgZnJvbSAnLi9jcmVhdGVSZWNlaXZlLmpzJztcbmltcG9ydCBjcmVhdGVSZXNldCBmcm9tICcuL2NyZWF0ZVJlc2V0LmpzJztcbmltcG9ydCB7XG4gIGNyZWF0ZVVuc3Vic2NyaXB0aW9uLFxuICBjcmVhdGVTdWJzY3JpcHRpb24sXG59IGZyb20gJy4vY3JlYXRlU3Vic2NyaXB0aW9uLmpzJztcbmltcG9ydCB0eXBlIHsgRW5kcG9pbnRVcGRhdGVGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgaW5pdGlhbFN0YXRlIH0gZnJvbSAnLi4vc3RhdGUvcmVkdWNlci9jcmVhdGVSZWR1Y2VyLmpzJztcbmltcG9ydCBzZWxlY3RNZXRhIGZyb20gJy4uL3N0YXRlL3NlbGVjdE1ldGEuanMnO1xuaW1wb3J0IHR5cGUge1xuICBBY3Rpb25UeXBlcyBhcyBCcm9hZEFjdGlvblR5cGVzLFxuICBDb21iaW5lZEFjdGlvblR5cGVzLFxuICBTdGF0ZSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5leHBvcnQgdHlwZSBHZW5lcmljRGlzcGF0Y2ggPSAodmFsdWU6IGFueSkgPT4gUHJvbWlzZTx2b2lkPjtcbmV4cG9ydCB0eXBlIENvbXBhdGlibGVEaXNwYXRjaCA9ICh2YWx1ZTogQ29tYmluZWRBY3Rpb25UeXBlcykgPT4gUHJvbWlzZTx2b2lkPjtcbnR5cGUgUHJldmlvdXNEaXNwYXRjaCA9ICh2YWx1ZTogQnJvYWRBY3Rpb25UeXBlcykgPT4gUHJvbWlzZTx2b2lkPjtcblxuaW50ZXJmYWNlIENvbnN0cnVjdG9yUHJvcHM8RCBleHRlbmRzIEdlbmVyaWNEaXNwYXRjaCA9IENvbXBhdGlibGVEaXNwYXRjaD4ge1xuICBkaXNwYXRjaD86IEQ7XG4gIGdldFN0YXRlPzogKCkgPT4gU3RhdGU8dW5rbm93bj47XG4gIGdsb2JhbENhY2hlPzogRGVub3JtYWxpemVDYWNoZTtcbn1cblxuY29uc3QgdW5zZXREaXNwYXRjaCA9IChhY3Rpb246IHVua25vd24pOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgdGhyb3cgbmV3IEVycm9yKFxuICAgIGBEaXNwYXRjaGluZyB3aGlsZSBjb25zdHJ1Y3RpbmcgeW91ciBtaWRkbGV3YXJlIGlzIG5vdCBhbGxvd2VkLiBgICtcbiAgICAgIGBPdGhlciBtaWRkbGV3YXJlIHdvdWxkIG5vdCBiZSBhcHBsaWVkIHRvIHRoaXMgZGlzcGF0Y2guYCxcbiAgKTtcbn07XG5jb25zdCB1bnNldFN0YXRlID0gKCk6IFN0YXRlPHVua25vd24+ID0+IHtcbiAgLy8gVGhpcyBpcyBvbmx5IHRoZSB2YWx1ZSB1bnRpbCBpdCBpcyBzZXQgYnkgdGhlIENhY2hlUHJvdmlkZXJcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbn07XG5cbi8qKlxuICogSW1wZXJhdGl2ZSBjb250cm9sIG9mIFJlc3QgSG9va3Mgc3RvcmVcbiAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250cm9sbGVyPFxuICBEIGV4dGVuZHMgR2VuZXJpY0Rpc3BhdGNoID0gQ29tcGF0aWJsZURpc3BhdGNoLFxuPiB7XG4gIC8qKlxuICAgKiBEaXNwYXRjaGVzIGFuIGFjdGlvbiB0byBSZXN0IEhvb2tzIHJlZHVjZXIuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNkaXNwYXRjaFxuICAgKi9cbiAgZGVjbGFyZSByZWFkb25seSBkaXNwYXRjaDogRDtcbiAgLyoqXG4gICAqIEdldHMgdGhlIGxhdGVzdCBzdGF0ZSBzbmFwc2hvdCB0aGF0IGlzIGZ1bGx5IGNvbW1pdHRlZC5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBpbXBlcmF0aXZlIHVzZS1jYXNlcyBsaWtlIGV2ZW50IGhhbmRsZXJzLlxuICAgKiBUaGlzIHNob3VsZCAqbm90KiBiZSB1c2VkIHRvIHJlbmRlcjsgaW5zdGVhZCB1c2VTdXNwZW5zZSgpIG9yIHVzZUNhY2hlKClcbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI2dldFN0YXRlXG4gICAqL1xuICBkZWNsYXJlIHJlYWRvbmx5IGdldFN0YXRlOiAoKSA9PiBTdGF0ZTx1bmtub3duPjtcbiAgZGVjbGFyZSByZWFkb25seSBnbG9iYWxDYWNoZTogRGVub3JtYWxpemVDYWNoZTtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgZGlzcGF0Y2ggPSB1bnNldERpc3BhdGNoIGFzIGFueSxcbiAgICBnZXRTdGF0ZSA9IHVuc2V0U3RhdGUsXG4gICAgZ2xvYmFsQ2FjaGUgPSB7XG4gICAgICBlbnRpdGllczoge30sXG4gICAgICByZXN1bHRzOiB7fSxcbiAgICB9LFxuICB9OiBDb25zdHJ1Y3RvclByb3BzPEQ+ID0ge30pIHtcbiAgICB0aGlzLmRpc3BhdGNoID0gZGlzcGF0Y2g7XG4gICAgdGhpcy5nZXRTdGF0ZSA9IGdldFN0YXRlO1xuICAgIHRoaXMuZ2xvYmFsQ2FjaGUgPSBnbG9iYWxDYWNoZTtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKiogQWN0aW9uIERpc3BhdGNoZXJzICoqKioqKioqKioqKioqKi9cblxuICAvKipcbiAgICogRm9yY2VzIHJlZmV0Y2hpbmcgYW5kIHN1c3BlbnNlIG9uIHVzZVN1c3BlbnNlIHdpdGggdGhlIHNhbWUgRW5kcG9pbnQgYW5kIHBhcmFtZXRlcnMuXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNpbnZhbGlkYXRlXG4gICAqL1xuICBpbnZhbGlkYXRlID0gPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBhcmdzWzBdICE9PSBudWxsXG4gICAgICA/IHRoaXMuZGlzcGF0Y2goXG4gICAgICAgICAgY3JlYXRlSW52YWxpZGF0ZShlbmRwb2ludCwge1xuICAgICAgICAgICAgYXJnczogYXJncyBhcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIClcbiAgICAgIDogUHJvbWlzZS5yZXNvbHZlKCk7XG5cbiAgLyoqXG4gICAqIEZvcmNlcyByZWZldGNoaW5nIGFuZCBzdXNwZW5zZSBvbiB1c2VTdXNwZW5zZSBvbiBhbGwgbWF0Y2hpbmcgZW5kcG9pbnQgcmVzdWx0IGtleXMuXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNpbnZhbGlkYXRlQWxsXG4gICAqL1xuICBpbnZhbGlkYXRlQWxsID0gKG9wdGlvbnM6IHsgdGVzdEtleTogKGtleTogc3RyaW5nKSA9PiBib29sZWFuIH0pID0+XG4gICAgdGhpcy5kaXNwYXRjaChjcmVhdGVJbnZhbGlkYXRlQWxsKChrZXk6IHN0cmluZykgPT4gb3B0aW9ucy50ZXN0S2V5KGtleSkpKTtcblxuICAvKipcbiAgICogUmVzZXRzIHRoZSBlbnRpcmUgUmVzdCBIb29rcyBjYWNoZS4gQWxsIGluZmxpZ2h0IHJlcXVlc3RzIHdpbGwgbm90IHJlc29sdmUuXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNyZXNldEVudGlyZVN0b3JlXG4gICAqL1xuICByZXNldEVudGlyZVN0b3JlID0gKCk6IFByb21pc2U8dm9pZD4gPT4gdGhpcy5kaXNwYXRjaChjcmVhdGVSZXNldCgpKTtcblxuICAvKipcbiAgICogU3RvcmVzIHJlc3BvbnNlIGluIGNhY2hlIGZvciBnaXZlbiBFbmRwb2ludCBhbmQgYXJncy5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldFxuICAgKi9cbiAgc2V0UmVzcG9uc2UgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgICB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLnJlc3Q6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+LCBhbnldXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIGNvbnN0IHJlc3BvbnNlOiBSZXNvbHZlVHlwZTxFPiA9IHJlc3RbcmVzdC5sZW5ndGggLSAxXTtcbiAgICBjb25zdCBhY3Rpb24gPSBjcmVhdGVSZWNlaXZlKGVuZHBvaW50LCB7XG4gICAgICBhcmdzOiByZXN0LnNsaWNlKDAsIHJlc3QubGVuZ3RoIC0gMSkgYXMgUGFyYW1ldGVyczxFPixcbiAgICAgIHJlc3BvbnNlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG4gIH07XG5cbiAgLy8gVE9ETzogZGVwcmVjYXRlXG4gIC8qKlxuICAgKiBBbm90aGVyIG5hbWUgZm9yIHNldFJlc3BvbnNlXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRSZXNwb25zZVxuICAgKi9cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gcmVjZWl2ZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIGFueV1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PiB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgICByZXR1cm4gdGhpcy5zZXRSZXNwb25zZShlbmRwb2ludCwgLi4ucmVzdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIFN0b3JlcyB0aGUgcmVzdWx0IG9mIEVuZHBvaW50IGFuZCBhcmdzIGFzIHRoZSBlcnJvciBwcm92aWRlZC5cbiAgICogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9Db250cm9sbGVyI3NldEVycm9yXG4gICAqL1xuICBzZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT4sIEVycm9yXVxuICApOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICBjb25zdCByZXNwb25zZTogRXJyb3IgPSByZXN0W3Jlc3QubGVuZ3RoIC0gMV07XG4gICAgY29uc3QgYWN0aW9uID0gY3JlYXRlUmVjZWl2ZShlbmRwb2ludCwge1xuICAgICAgYXJnczogcmVzdC5zbGljZSgwLCByZXN0Lmxlbmd0aCAtIDEpIGFzIFBhcmFtZXRlcnM8RT4sXG4gICAgICByZXNwb25zZSxcbiAgICAgIGVycm9yOiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG4gIH07XG5cbiAgLy8gVE9ETzogZGVwcmVjYXRlXG4gIC8qKlxuICAgKiBBbm90aGVyIG5hbWUgZm9yIHNldEVycm9yXG4gICAqIEBzZWUgaHR0cHM6Ly9yZXN0aG9va3MuaW8vZG9jcy9hcGkvQ29udHJvbGxlciNzZXRFcnJvclxuICAgKi9cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi8gcmVjZWl2ZUVycm9yID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHtcbiAgICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gICAgfSxcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5yZXN0OiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPiwgRXJyb3JdXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgcmV0dXJuIHRoaXMuc2V0RXJyb3IoZW5kcG9pbnQsIC4uLnJlc3QpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBSZXNvbHZlcyBhbiBpbmZsaWdodCBmZXRjaC4gYGZldGNoZWRBdGAgc2hvdWxkIGBmZXRjaGAncyBgY3JlYXRlZEF0YFxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjcmVzb2x2ZVxuICAgKi9cbiAgcmVzb2x2ZSA9IDxcbiAgICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgICB1cGRhdGU/OiBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uPEU+O1xuICAgIH0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgbWV0YTpcbiAgICAgIHwge1xuICAgICAgICAgIGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XTtcbiAgICAgICAgICByZXNwb25zZTogRXJyb3I7XG4gICAgICAgICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gICAgICAgICAgZXJyb3I6IHRydWU7XG4gICAgICAgIH1cbiAgICAgIHwge1xuICAgICAgICAgIGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XTtcbiAgICAgICAgICByZXNwb25zZTogYW55O1xuICAgICAgICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICAgICAgICAgIGVycm9yPzogZmFsc2U7XG4gICAgICAgIH0sXG4gICk6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgIHJldHVybiB0aGlzLmRpc3BhdGNoKGNyZWF0ZVJlY2VpdmUoZW5kcG9pbnQsIG1ldGEgYXMgYW55KSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIE1hcmtzIGEgbmV3IHN1YnNjcmlwdGlvbiB0byBhIGdpdmVuIEVuZHBvaW50LlxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc3Vic2NyaWJlXG4gICAqL1xuICBzdWJzY3JpYmUgPSA8XG4gICAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPFxuICAgICAgRmV0Y2hGdW5jdGlvbixcbiAgICAgIFNjaGVtYSB8IHVuZGVmaW5lZCxcbiAgICAgIHVuZGVmaW5lZCB8IGZhbHNlXG4gICAgPixcbiAgPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfCByZWFkb25seSBbbnVsbF1cbiAgKTogUHJvbWlzZTx2b2lkPiA9PlxuICAgIGFyZ3NbMF0gIT09IG51bGxcbiAgICAgID8gdGhpcy5kaXNwYXRjaChcbiAgICAgICAgICBjcmVhdGVTdWJzY3JpcHRpb24oZW5kcG9pbnQsIHtcbiAgICAgICAgICAgIGFyZ3M6IGFyZ3MgYXMgcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dLFxuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIC8qKlxuICAgKiBNYXJrcyBjb21wbGV0aW9uIG9mIHN1YnNjcmlwdGlvbiB0byBhIGdpdmVuIEVuZHBvaW50LlxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjdW5zdWJzY3JpYmVcbiAgICovXG4gIHVuc3Vic2NyaWJlID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZTxcbiAgICAgIEZldGNoRnVuY3Rpb24sXG4gICAgICBTY2hlbWEgfCB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQgfCBmYWxzZVxuICAgID4sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4uYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dIHwgcmVhZG9ubHkgW251bGxdXG4gICk6IFByb21pc2U8dm9pZD4gPT5cbiAgICBhcmdzWzBdICE9PSBudWxsXG4gICAgICA/IHRoaXMuZGlzcGF0Y2goXG4gICAgICAgICAgY3JlYXRlVW5zdWJzY3JpcHRpb24oZW5kcG9pbnQsIHtcbiAgICAgICAgICAgIGFyZ3M6IGFyZ3MgYXMgcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dLFxuICAgICAgICAgIH0pLFxuICAgICAgICApXG4gICAgICA6IFByb21pc2UucmVzb2x2ZSgpO1xuXG4gIC8qKioqKioqKioqKioqKiogTW9yZSAqKioqKioqKioqKioqKiovXG5cbiAgLyogVE9ETzpcbiAgYWJvcnQgPSA8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgICBlbmRwb2ludDogRSxcbiAgICAuLi5hcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl1cbiAgKTogUHJvbWlzZTx2b2lkPlxuICAqL1xuXG4gIC8qKlxuICAgKiBHZXRzIGEgc25hcHNob3QgKGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL1NuYXBzaG90KVxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjc25hcHNob3RcbiAgICovXG4gIHNuYXBzaG90ID0gKHN0YXRlOiBTdGF0ZTx1bmtub3duPiwgZmV0Y2hlZEF0PzogbnVtYmVyKTogU25hcHNob3RJbnRlcmZhY2UgPT4ge1xuICAgIHJldHVybiBuZXcgU25hcHNob3QodGhpcywgc3RhdGUsIGZldGNoZWRBdCk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEdldHMgdGhlIGVycm9yLCBpZiBhbnksIGZvciBhIGdpdmVuIGVuZHBvaW50LiBSZXR1cm5zIHVuZGVmaW5lZCBmb3Igbm8gZXJyb3JzLlxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0RXJyb3JcbiAgICovXG4gIGdldEVycm9yID0gPFxuICAgIEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5Jz4sXG4gICAgQXJncyBleHRlbmRzIHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogWy4uLkFyZ3MsIFN0YXRlPHVua25vd24+XVxuICApOiBFcnJvclR5cGVzIHwgdW5kZWZpbmVkID0+IHtcbiAgICBpZiAocmVzdFswXSA9PT0gbnVsbCkgcmV0dXJuO1xuICAgIGNvbnN0IHN0YXRlID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdIGFzIFN0YXRlPHVua25vd24+O1xuICAgIC8vIHRoaXMgaXMgdHlwZXNjcmlwdCBnZW5lcmljcyBicmVha2luZ1xuICAgIGNvbnN0IGFyZ3M6IGFueSA9IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBQYXJhbWV0ZXJzPEVbJ2tleSddPjtcbiAgICBjb25zdCBrZXkgPSBlbmRwb2ludC5rZXkoLi4uYXJncyk7XG5cbiAgICBjb25zdCBtZXRhID0gc2VsZWN0TWV0YShzdGF0ZSwga2V5KTtcbiAgICBjb25zdCByZXN1bHRzID0gc3RhdGUucmVzdWx0c1trZXldO1xuXG4gICAgaWYgKHJlc3VsdHMgIT09IHVuZGVmaW5lZCAmJiBtZXRhPy5lcnJvclBvbGljeSA9PT0gJ3NvZnQnKSByZXR1cm47XG5cbiAgICByZXR1cm4gbWV0YT8uZXJyb3IgYXMgYW55O1xuICB9O1xuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSAoZ2xvYmFsbHkgcmVmZXJlbnRpYWxseSBzdGFibGUpIHJlc3BvbnNlIGZvciBhIGdpdmVuIGVuZHBvaW50L2FyZ3MgcGFpciBmcm9tIHN0YXRlIGdpdmVuLlxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZ2V0UmVzcG9uc2VcbiAgICovXG4gIGdldFJlc3BvbnNlID0gPFxuICAgIEUgZXh0ZW5kcyBQaWNrPEVuZHBvaW50SW50ZXJmYWNlLCAna2V5JyB8ICdzY2hlbWEnIHwgJ2ludmFsaWRJZlN0YWxlJz4sXG4gICAgQXJncyBleHRlbmRzIHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEVbJ2tleSddPl0gfCByZWFkb25seSBbbnVsbF0sXG4gID4oXG4gICAgZW5kcG9pbnQ6IEUsXG4gICAgLi4ucmVzdDogWy4uLkFyZ3MsIFN0YXRlPHVua25vd24+XVxuICApOiB7XG4gICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgZXhwaXJ5U3RhdHVzOiBFeHBpcnlTdGF0dXM7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gIH0gPT4ge1xuICAgIGNvbnN0IHN0YXRlID0gcmVzdFtyZXN0Lmxlbmd0aCAtIDFdIGFzIFN0YXRlPHVua25vd24+O1xuICAgIC8vIHRoaXMgaXMgdHlwZXNjcmlwdCBnZW5lcmljcyBicmVha2luZ1xuICAgIGNvbnN0IGFyZ3M6IGFueSA9IHJlc3Quc2xpY2UoMCwgcmVzdC5sZW5ndGggLSAxKSBhcyBQYXJhbWV0ZXJzPEVbJ2tleSddPjtcbiAgICBjb25zdCBpc0FjdGl2ZSA9IGFyZ3MubGVuZ3RoICE9PSAxIHx8IGFyZ3NbMF0gIT09IG51bGw7XG4gICAgY29uc3Qga2V5ID0gaXNBY3RpdmUgPyBlbmRwb2ludC5rZXkoLi4uYXJncykgOiAnJztcbiAgICBjb25zdCBjYWNoZVJlc3VsdHMgPSBpc0FjdGl2ZSA/IHN0YXRlLnJlc3VsdHNba2V5XSA6IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzY2hlbWEgPSBlbmRwb2ludC5zY2hlbWE7XG4gICAgY29uc3QgbWV0YSA9IHNlbGVjdE1ldGEoc3RhdGUsIGtleSk7XG4gICAgbGV0IGV4cGlyZXNBdCA9IG1ldGE/LmV4cGlyZXNBdDtcblxuICAgIGxldCBpbnZhbGlkUmVzdWx0cyA9IGZhbHNlO1xuICAgIGxldCByZXN1bHRzO1xuICAgIGlmIChjYWNoZVJlc3VsdHMgPT09IHVuZGVmaW5lZCAmJiBlbmRwb2ludC5zY2hlbWEgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmVzdWx0cyA9IGluZmVyUmVzdWx0cyhcbiAgICAgICAgZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgICBhcmdzLFxuICAgICAgICBzdGF0ZS5pbmRleGVzLFxuICAgICAgICBzdGF0ZS5lbnRpdGllcyxcbiAgICAgICk7XG4gICAgICBpbnZhbGlkUmVzdWx0cyA9ICF2YWxpZGF0ZUluZmVyZW5jZShyZXN1bHRzKTtcbiAgICAgIGlmICghZXhwaXJlc0F0ICYmIGludmFsaWRSZXN1bHRzKSBleHBpcmVzQXQgPSAxO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXN1bHRzID0gY2FjaGVSZXN1bHRzO1xuICAgIH1cblxuICAgIGlmICghaXNBY3RpdmUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRhdGE6IHJlc3VsdHMgYXMgYW55LFxuICAgICAgICBleHBpcnlTdGF0dXM6IEV4cGlyeVN0YXR1cy5WYWxpZCxcbiAgICAgICAgZXhwaXJlc0F0OiBJbmZpbml0eSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKCFlbmRwb2ludC5zY2hlbWEgfHwgIXNjaGVtYUhhc0VudGl0eShlbmRwb2ludC5zY2hlbWEpKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBkYXRhOiByZXN1bHRzLFxuICAgICAgICBleHBpcnlTdGF0dXM6IG1ldGE/LmludmFsaWRhdGVkXG4gICAgICAgICAgPyBFeHBpcnlTdGF0dXMuSW52YWxpZFxuICAgICAgICAgIDogY2FjaGVSZXN1bHRzICYmICFlbmRwb2ludC5pbnZhbGlkSWZTdGFsZVxuICAgICAgICAgID8gRXhwaXJ5U3RhdHVzLlZhbGlkXG4gICAgICAgICAgOiBFeHBpcnlTdGF0dXMuSW52YWxpZElmU3RhbGUsXG4gICAgICAgIGV4cGlyZXNBdDogZXhwaXJlc0F0IHx8IDAsXG4gICAgICB9IGFzIHtcbiAgICAgICAgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47XG4gICAgICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgICAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8gV2FybiB1c2VycyB3aXRoIGJhZCBjb25maWd1cmF0aW9uc1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicgJiYgc2NoZW1hICYmIGlzRW50aXR5KHNjaGVtYSkpIHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc3VsdHMpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgZmV0Y2gga2V5ICR7a2V5fSBoYXMgbGlzdCByZXN1bHRzIHdoZW4gc2luZ2xlIHJlc3VsdCBpcyBleHBlY3RlZGAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAodHlwZW9mIHJlc3VsdHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgZmV0Y2gga2V5ICR7a2V5fSBoYXMgb2JqZWN0IHJlc3VsdHMgd2hlbiBlbnRpdHkncyBwcmltYXJ5IGtleSAoc3RyaW5nKSByZXN1bHQgaXMgZXhwZWN0ZWRgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghdGhpcy5nbG9iYWxDYWNoZS5yZXN1bHRzW2tleV0pXG4gICAgICB0aGlzLmdsb2JhbENhY2hlLnJlc3VsdHNba2V5XSA9IG5ldyBXZWFrRW50aXR5TWFwKCk7XG5cbiAgICAvLyBzZWNvbmQgYXJndW1lbnQgaXMgZmFsc2UgaWYgYW55IGVudGl0aWVzIGFyZSBtaXNzaW5nXG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICAgIGNvbnN0IHsgZGF0YSwgcGF0aHMgfSA9IGRlbm9ybWFsaXplQ2FjaGVkKFxuICAgICAgcmVzdWx0cyxcbiAgICAgIHNjaGVtYSxcbiAgICAgIHN0YXRlLmVudGl0aWVzLFxuICAgICAgdGhpcy5nbG9iYWxDYWNoZS5lbnRpdGllcyxcbiAgICAgIHRoaXMuZ2xvYmFsQ2FjaGUucmVzdWx0c1trZXldLFxuICAgICAgYXJncyxcbiAgICApIGFzIHsgZGF0YTogRGVub3JtYWxpemVOdWxsYWJsZTxFWydzY2hlbWEnXT47IHBhdGhzOiBQYXRoW10gfTtcbiAgICBjb25zdCBpbnZhbGlkRGVub3JtYWxpemUgPSB0eXBlb2YgZGF0YSA9PT0gJ3N5bWJvbCc7XG5cbiAgICAvLyBmYWxsYmFjayB0byBlbnRpdHkgZXhwaXJ5IHRpbWVcbiAgICBpZiAoIWV4cGlyZXNBdCkge1xuICAgICAgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJlc0F0KHBhdGhzLCBzdGF0ZS5lbnRpdHlNZXRhKTtcbiAgICB9XG5cbiAgICAvLyBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2NvbmNlcHRzL2V4cGlyeS1wb2xpY3kjZXhwaXJ5LXN0YXR1c1xuICAgIC8vIHdlIGRvbid0IHRyYWNrIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gc3RhbGUgb3IgZnJlc2ggYmVjYXVzZSB0aGF0IGlzIHRpZWQgdG8gdHJpZ2dlcmluZ1xuICAgIC8vIGNvbmRpdGlvbnNcbiAgICBjb25zdCBleHBpcnlTdGF0dXMgPVxuICAgICAgbWV0YT8uaW52YWxpZGF0ZWQgfHwgKGludmFsaWREZW5vcm1hbGl6ZSAmJiAhbWV0YT8uZXJyb3IpXG4gICAgICAgID8gRXhwaXJ5U3RhdHVzLkludmFsaWRcbiAgICAgICAgOiBpbnZhbGlkRGVub3JtYWxpemUgfHwgZW5kcG9pbnQuaW52YWxpZElmU3RhbGUgfHwgaW52YWxpZFJlc3VsdHNcbiAgICAgICAgPyBFeHBpcnlTdGF0dXMuSW52YWxpZElmU3RhbGVcbiAgICAgICAgOiBFeHBpcnlTdGF0dXMuVmFsaWQ7XG5cbiAgICByZXR1cm4geyBkYXRhLCBleHBpcnlTdGF0dXMsIGV4cGlyZXNBdCB9O1xuICB9O1xufVxuXG4vLyBiZW5jaG1hcms6IGh0dHBzOi8vd3d3Lm1lYXN1cmV0aGF0Lm5ldC9CZW5jaG1hcmtzL1Nob3cvMjQ2OTEvMC9taW4tcmVkdWNlci12cy1pbXBlcmF0aXZlLXdpdGgtcGF0aHNcbi8vIGVhcmxpZXN0IGV4cGlyeSBkaWN0YXRlcyBhZ2VcbmZ1bmN0aW9uIGVudGl0eUV4cGlyZXNBdChcbiAgcGF0aHM6IFBhdGhbXSxcbiAgZW50aXR5TWV0YToge1xuICAgIHJlYWRvbmx5IFtlbnRpdHlLZXk6IHN0cmluZ106IHtcbiAgICAgIHJlYWRvbmx5IFtwazogc3RyaW5nXToge1xuICAgICAgICByZWFkb25seSBkYXRlOiBudW1iZXI7XG4gICAgICAgIHJlYWRvbmx5IGV4cGlyZXNBdDogbnVtYmVyO1xuICAgICAgICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjsgLy8gVGhpcyBpcyBvbmx5IHRoZSB2YWx1ZSB1bnRpbCBpdCBpcyBzZXQgYnkgdGhlIENhY2hlUHJvdmlkZXJcbiAgICAgIH07XG4gICAgfTtcbiAgfSxcbikge1xuICBsZXQgZXhwaXJlc0F0ID0gSW5maW5pdHk7XG4gIGZvciAoY29uc3QgeyBwaywga2V5IH0gb2YgcGF0aHMpIHtcbiAgICBjb25zdCBlbnRpdHlFeHBpcnkgPSBlbnRpdHlNZXRhW2tleV0/Lltwa10/LmV4cGlyZXNBdDtcbiAgICAvLyBleHBpcmVzQXQgd2lsbCBhbHdheXMgcmVzb2x2ZSB0byBmYWxzZSB3aXRoIGFueSBjb21wYXJpc29uXG4gICAgaWYgKGVudGl0eUV4cGlyeSA8IGV4cGlyZXNBdCkgZXhwaXJlc0F0ID0gZW50aXR5RXhwaXJ5O1xuICB9XG4gIHJldHVybiBleHBpcmVzQXQ7XG59XG5cbi8qKiBEZXRlcm1pbmUgd2hldGhlciB0aGUgc2NoZW1hIGhhcyBhbnkgZW50aXRpZXMuXG4gKlxuICogV2l0aG91dCBlbnRpdGllcywgZGVub3JtYWxpemF0aW9uIGlzIG5vdCBuZWVkZWQsIGFuZCByZXN1bHRzIHNob3VsZCBub3QgYmUgaW5mZXJyZWQuXG4gKi9cbmZ1bmN0aW9uIHNjaGVtYUhhc0VudGl0eShzY2hlbWE6IFNjaGVtYSk6IGJvb2xlYW4ge1xuICBpZiAoaXNFbnRpdHkoc2NoZW1hKSkgcmV0dXJuIHRydWU7XG4gIGlmIChBcnJheS5pc0FycmF5KHNjaGVtYSkpXG4gICAgcmV0dXJuIHNjaGVtYS5sZW5ndGggIT09IDAgJiYgc2NoZW1hSGFzRW50aXR5KHNjaGVtYVswXSk7XG4gIGlmIChzY2hlbWEgJiYgKHR5cGVvZiBzY2hlbWEgPT09ICdvYmplY3QnIHx8IHR5cGVvZiBzY2hlbWEgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgY29uc3QgbmVzdGVkU2NoZW1hID1cbiAgICAgICdzY2hlbWEnIGluIHNjaGVtYSA/IChzY2hlbWEuc2NoZW1hIGFzIFJlY29yZDxzdHJpbmcsIFNjaGVtYT4pIDogc2NoZW1hO1xuICAgIGlmICh0eXBlb2YgbmVzdGVkU2NoZW1hID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gc2NoZW1hSGFzRW50aXR5KG5lc3RlZFNjaGVtYSk7XG4gICAgfVxuICAgIHJldHVybiBPYmplY3QudmFsdWVzKG5lc3RlZFNjaGVtYSkuc29tZSh4ID0+IHNjaGVtYUhhc0VudGl0eSh4KSk7XG4gIH1cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG5leHBvcnQgdHlwZSB7IEVycm9yVHlwZXMgfTtcblxuY2xhc3MgU25hcHNob3Q8VCA9IHVua25vd24+IGltcGxlbWVudHMgU25hcHNob3RJbnRlcmZhY2Uge1xuICBwcml2YXRlIHN0YXRlOiBTdGF0ZTxUPjtcbiAgcHJpdmF0ZSBjb250cm9sbGVyOiBDb250cm9sbGVyO1xuICByZWFkb25seSBmZXRjaGVkQXQ6IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcihjb250cm9sbGVyOiBDb250cm9sbGVyLCBzdGF0ZTogU3RhdGU8VD4sIGZldGNoZWRBdCA9IDApIHtcbiAgICB0aGlzLnN0YXRlID0gc3RhdGU7XG4gICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjtcbiAgICB0aGlzLmZldGNoZWRBdCA9IGZldGNoZWRBdDtcbiAgfVxuXG4gIC8qKioqKioqKioqKioqKiogRGF0YSBBY2Nlc3MgKioqKioqKioqKioqKioqL1xuICAvKiogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRSZXNwb25zZSAqL1xuICBnZXRSZXNwb25zZSA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleScgfCAnc2NoZW1hJyB8ICdpbnZhbGlkSWZTdGFsZSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IEFyZ3NcbiAgKToge1xuICAgIGRhdGE6IERlbm9ybWFsaXplTnVsbGFibGU8RVsnc2NoZW1hJ10+O1xuICAgIGV4cGlyeVN0YXR1czogRXhwaXJ5U3RhdHVzO1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICB9ID0+IHtcbiAgICByZXR1cm4gdGhpcy5jb250cm9sbGVyLmdldFJlc3BvbnNlKGVuZHBvaW50LCAuLi5hcmdzLCB0aGlzLnN0YXRlKTtcbiAgfTtcblxuICAvKiogQHNlZSBodHRwczovL3Jlc3Rob29rcy5pby9kb2NzL2FwaS9TbmFwc2hvdCNnZXRFcnJvciAqL1xuICBnZXRFcnJvciA9IDxcbiAgICBFIGV4dGVuZHMgUGljazxFbmRwb2ludEludGVyZmFjZSwgJ2tleSc+LFxuICAgIEFyZ3MgZXh0ZW5kcyByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFWydrZXknXT5dLFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IEFyZ3NcbiAgKTogRXJyb3JUeXBlcyB8IHVuZGVmaW5lZCA9PiB7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRFcnJvcihlbmRwb2ludCwgLi4uYXJncywgdGhpcy5zdGF0ZSk7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQU1BLFNBQ0VBLGFBQWEsRUFDYkMsWUFBWSxFQU1aQyxpQkFBaUIsRUFDakJDLFFBQVEsUUFDSCx3QkFBd0I7QUFDL0IsU0FBU0MsWUFBWSxFQUFFQyxpQkFBaUIsUUFBUSx3QkFBd0I7QUFFeEUsT0FBT0MsZ0JBQWdCLE1BQU0sdUJBQXVCO0FBQ3BELE9BQU9DLG1CQUFtQixNQUFNLDBCQUEwQjtBQUMxRCxPQUFPQyxhQUFhLE1BQU0sb0JBQW9CO0FBQzlDLE9BQU9DLFdBQVcsTUFBTSxrQkFBa0I7QUFDMUMsU0FDRUMsb0JBQW9CLEVB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
@@ -0,0 +1,20 @@
1
+ import BaseController from './BaseController.js';
2
+ import createFetch from './createFetch.js';
3
+ export default class Controller extends BaseController {
4
+ constructor(..._args) {
5
+ super(..._args);
6
+ /**
7
+ * Fetches the endpoint with given args, updating the Rest Hooks cache with the response or error upon completion.
8
+ * @see https://resthooks.io/docs/api/Controller#fetch
9
+ */
10
+ this.fetch = (endpoint, ...args) => {
11
+ const action = createFetch(endpoint, {
12
+ args
13
+ });
14
+ this.dispatch(action);
15
+ return action.meta.promise;
16
+ };
17
+ }
18
+ }
19
+ export * from './BaseController.js';
20
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJCYXNlQ29udHJvbGxlciIsImNyZWF0ZUZldGNoIiwiQ29udHJvbGxlciIsImNvbnN0cnVjdG9yIiwiX2FyZ3MiLCJmZXRjaCIsImVuZHBvaW50IiwiYXJncyIsImFjdGlvbiIsImRpc3BhdGNoIiwibWV0YSIsInByb21pc2UiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9Db250cm9sbGVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5kcG9pbnRJbnRlcmZhY2UgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IEJhc2VDb250cm9sbGVyLCB7XG4gIENvbXBhdGlibGVEaXNwYXRjaCxcbiAgR2VuZXJpY0Rpc3BhdGNoLFxufSBmcm9tICcuL0Jhc2VDb250cm9sbGVyLmpzJztcbmltcG9ydCBjcmVhdGVGZXRjaCBmcm9tICcuL2NyZWF0ZUZldGNoLmpzJztcbmltcG9ydCB0eXBlIHsgRW5kcG9pbnRVcGRhdGVGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb250cm9sbGVyPFxuICBEIGV4dGVuZHMgR2VuZXJpY0Rpc3BhdGNoID0gQ29tcGF0aWJsZURpc3BhdGNoLFxuPiBleHRlbmRzIEJhc2VDb250cm9sbGVyPEQ+IHtcbiAgLyoqXG4gICAqIEZldGNoZXMgdGhlIGVuZHBvaW50IHdpdGggZ2l2ZW4gYXJncywgdXBkYXRpbmcgdGhlIFJlc3QgSG9va3MgY2FjaGUgd2l0aCB0aGUgcmVzcG9uc2Ugb3IgZXJyb3IgdXBvbiBjb21wbGV0aW9uLlxuICAgKiBAc2VlIGh0dHBzOi8vcmVzdGhvb2tzLmlvL2RvY3MvYXBpL0NvbnRyb2xsZXIjZmV0Y2hcbiAgICovXG4gIGZldGNoID0gPFxuICAgIEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZSAmIHsgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPiB9LFxuICA+KFxuICAgIGVuZHBvaW50OiBFLFxuICAgIC4uLmFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XVxuICApOiBSZXR1cm5UeXBlPEU+ID0+IHtcbiAgICBjb25zdCBhY3Rpb24gPSBjcmVhdGVGZXRjaChlbmRwb2ludCwge1xuICAgICAgYXJncyxcbiAgICB9KTtcbiAgICB0aGlzLmRpc3BhdGNoKGFjdGlvbik7XG5cbiAgICByZXR1cm4gYWN0aW9uLm1ldGEucHJvbWlzZSBhcyBSZXR1cm5UeXBlPEU+O1xuICB9O1xufVxuXG5leHBvcnQgKiBmcm9tICcuL0Jhc2VDb250cm9sbGVyLmpzJztcbiJdLCJtYXBwaW5ncyI6IkFBRUEsT0FBT0EsY0FBYyxNQUdkLHFCQUFxQjtBQUM1QixPQUFPQyxXQUFXLE1BQU0sa0JBQWtCO0FBRzFDLGVBQWUsTUFBTUMsVUFBVSxTQUVyQkYsY0FBYyxDQUFJO0VBQUFHLFlBQUEsR0FBQUMsS0FBQTtJQUFBLFNBQUFBLEtBQUE7SUFDMUI7QUFDRjtBQUNBO0FBQ0E7SUFIRSxLQUlBQyxLQUFLLEdBQUcsQ0FHTkMsUUFBVyxFQUNYLEdBQUdDLElBQWlDLEtBQ2xCO01BQ2xCLE1BQU1DLE1BQU0sR0FBR1AsV0FBVyxDQUFDSyxRQUFRLEVBQUU7UUFDbkNDO01BQ0YsQ0FBQyxDQUFDO01BQ0YsSUFBSSxDQUFDRSxRQUFRLENBQUNELE1BQU0sQ0FBQztNQUVyQixPQUFPQSxNQUFNLENBQUNFLElBQUksQ0FBQ0MsT0FBTztJQUM1QixDQUFDO0VBQUE7QUFDSDtBQUVBLGNBQWMscUJBQXFCIn0=
@@ -0,0 +1,42 @@
1
+ import { FETCH_TYPE } from '../actionTypes.js';
2
+ /**
3
+ * Requesting a fetch to begin
4
+ */
5
+ export default function createFetch(endpoint, {
6
+ args
7
+ }) {
8
+ const key = endpoint.key(...args);
9
+ let resolve = 0;
10
+ let reject = 0;
11
+ const promise = new Promise((a, b) => {
12
+ [resolve, reject] = [a, b];
13
+ });
14
+ const meta = {
15
+ schema: endpoint.schema,
16
+ type: endpoint.sideEffect ? 'mutate' : 'read',
17
+ args,
18
+ key,
19
+ throttle: !endpoint.sideEffect,
20
+ options: endpoint,
21
+ resolve,
22
+ reject,
23
+ promise,
24
+ createdAt: Date.now()
25
+ };
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
+ return {
36
+ type: FETCH_TYPE,
37
+ payload: () => endpoint(...args),
38
+ meta,
39
+ endpoint
40
+ };
41
+ }
42
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJGRVRDSF9UWVBFIiwiY3JlYXRlRmV0Y2giLCJlbmRwb2ludCIsImFyZ3MiLCJrZXkiLCJyZXNvbHZlIiwicmVqZWN0IiwicHJvbWlzZSIsIlByb21pc2UiLCJhIiwiYiIsIm1ldGEiLCJzY2hlbWEiLCJ0eXBlIiwic2lkZUVmZmVjdCIsInRocm90dGxlIiwib3B0aW9ucyIsImNyZWF0ZWRBdCIsIkRhdGUiLCJub3ciLCJ1cGRhdGUiLCJvcHRpbWlzdGljVXBkYXRlIiwib3B0aW1pc3RpY1Jlc3BvbnNlIiwicGF5bG9hZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb250cm9sbGVyL2NyZWF0ZUZldGNoLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5kcG9pbnRJbnRlcmZhY2UgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IHsgRW5kcG9pbnRVcGRhdGVGdW5jdGlvbiB9IGZyb20gJy4vdHlwZXMuanMnO1xuaW1wb3J0IHsgRkVUQ0hfVFlQRSB9IGZyb20gJy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tcGF0aWJsZUZldGNoQWN0aW9uLFxuICBDb21wYXRpYmxlRmV0Y2hNZXRhLFxufSBmcm9tICcuLi9jb21wYXRpYmxlQWN0aW9ucy5qcyc7XG5cbi8qKlxuICogUmVxdWVzdGluZyBhIGZldGNoIHRvIGJlZ2luXG4gKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUZldGNoPFxuICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7IHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT4gfSxcbj4oXG4gIGVuZHBvaW50OiBFLFxuICB7IGFyZ3MgfTogeyBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfSxcbik6IENvbXBhdGlibGVGZXRjaEFjdGlvbjxFPiB7XG4gIGNvbnN0IGtleSA9IGVuZHBvaW50LmtleSguLi5hcmdzKTtcbiAgbGV0IHJlc29sdmU6ICh2YWx1ZT86IGFueSB8IFByb21pc2VMaWtlPGFueT4pID0+IHZvaWQgPSAwIGFzIGFueTtcbiAgbGV0IHJlamVjdDogKHJlYXNvbj86IGFueSkgPT4gdm9pZCA9IDAgYXMgYW55O1xuICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8YW55PigoYSwgYikgPT4ge1xuICAgIFtyZXNvbHZlLCByZWplY3RdID0gW2EsIGJdO1xuICB9KTtcbiAgY29uc3QgbWV0YTogQ29tcGF0aWJsZUZldGNoTWV0YSA9IHtcbiAgICBzY2hlbWE6IGVuZHBvaW50LnNjaGVtYSxcbiAgICB0eXBlOiBlbmRwb2ludC5zaWRlRWZmZWN0ID8gKCdtdXRhdGUnIGFzIGNvbnN0KSA6ICgncmVhZCcgYXMgY29uc3QpLFxuICAgIGFyZ3MsXG4gICAga2V5LFxuICAgIHRocm90dGxlOiAhZW5kcG9pbnQuc2lkZUVmZmVjdCxcbiAgICBvcHRpb25zOiBlbmRwb2ludCxcbiAgICByZXNvbHZlLFxuICAgIHJlamVjdCxcbiAgICBwcm9taXNlLFxuICAgIGNyZWF0ZWRBdDogRGF0ZS5ub3coKSxcbiAgfTtcblxuICBpZiAoZW5kcG9pbnQudXBkYXRlKSB7XG4gICAgbWV0YS51cGRhdGUgPSBlbmRwb2ludC51cGRhdGU7XG4gIH1cblxuICAvLyBUT0RPOiBSZW1vdmUgb25jZSBFT0wgb24gdGhpcyBkZXByZWNhdGVkIHBpZWNlXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuICBpZiAoZW5kcG9pbnQub3B0aW1pc3RpY1VwZGF0ZSkge1xuICAgIG1ldGEub3B0aW1pc3RpY1Jlc3BvbnNlID0gZW5kcG9pbnQub3B0aW1pc3RpY1VwZGF0ZSguLi5hcmdzKTtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgdHlwZTogRkVUQ0hfVFlQRSxcbiAgICBwYXlsb2FkOiAoKSA9PiBlbmRwb2ludCguLi5hcmdzKSBhcyBhbnksXG4gICAgbWV0YSxcbiAgICBlbmRwb2ludCxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBR0EsU0FBU0EsVUFBVSxRQUFRLG1CQUFtQjtBQU05QztBQUNBO0FBQ0E7QUFDQSxlQUFlLFNBQVNDLFdBQVdBLENBR2pDQyxRQUFXLEVBQ1g7RUFBRUM7QUFBNEMsQ0FBQyxFQUNyQjtFQUMxQixNQUFNQyxHQUFHLEdBQUdGLFFBQVEsQ0FBQ0UsR0FBRyxDQUFDLEdBQUdELElBQUksQ0FBQztFQUNqQyxJQUFJRSxPQUFpRCxHQUFHLENBQVE7RUFDaEUsSUFBSUMsTUFBOEIsR0FBRyxDQUFRO0VBQzdDLE1BQU1DLE9BQU8sR0FBRyxJQUFJQyxPQUFPLENBQU0sQ0FBQ0MsQ0FBQyxFQUFFQyxDQUFDLEtBQUs7SUFDekMsQ0FBQ0wsT0FBTyxFQUFFQyxNQUFNLENBQUMsR0FBRyxDQUFDRyxDQUFDLEVBQUVDLENBQUMsQ0FBQztFQUM1QixDQUFDLENBQUM7RUFDRixNQUFNQyxJQUF5QixHQUFHO0lBQ2hDQyxNQUFNLEVBQUVWLFFBQVEsQ0FBQ1UsTUFBTTtJQUN2QkMsSUFBSSxFQUFFWCxRQUFRLENBQUNZLFVBQVUsR0FBSSxRQUFRLEdBQWMsTUFBZ0I7SUFDbkVYLElBQUk7SUFDSkMsR0FBRztJQUNIVyxRQUFRLEVBQUUsQ0FBQ2IsUUFBUSxDQUFDWSxVQUFVO0lBQzlCRSxPQUFPLEVBQUVkLFFBQVE7SUFDakJHLE9BQU87SUFDUEMsTUFBTTtJQUNOQyxPQUFPO0lBQ1BVLFNBQVMsRUFBRUMsSUFBSSxDQUFDQyxHQUFHLENBQUM7RUFDdEIsQ0FBQztFQUVELElBQUlqQixRQUFRLENBQUNrQixNQUFNLEVBQUU7SUFDbkJULElBQUksQ0FBQ1MsTUFBTSxHQUFHbEIsUUFBUSxDQUFDa0IsTUFBTTtFQUMvQjs7RUFFQTtFQUNBO0VBQ0EsSUFBSWxCLFFBQVEsQ0FBQ21CLGdCQUFnQixFQUFFO0lBQzdCVixJQUFJLENBQUNXLGtCQUFrQixHQUFHcEIsUUFBUSxDQUFDbUIsZ0JBQWdCLENBQUMsR0FBR2xCLElBQUksQ0FBQztFQUM5RDtFQUVBLE9BQU87SUFDTFUsSUFBSSxFQUFFYixVQUFVO0lBQ2hCdUIsT0FBTyxFQUFFQSxDQUFBLEtBQU1yQixRQUFRLENBQUMsR0FBR0MsSUFBSSxDQUFRO0lBQ3ZDUSxJQUFJO0lBQ0pUO0VBQ0YsQ0FBQztBQUNIIn0=
@@ -0,0 +1,12 @@
1
+ import { INVALIDATE_TYPE } from '../actionTypes.js';
2
+ export default function createInvalidate(endpoint, {
3
+ args
4
+ }) {
5
+ return {
6
+ type: INVALIDATE_TYPE,
7
+ meta: {
8
+ key: endpoint.key(...args)
9
+ }
10
+ };
11
+ }
12
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlZBTElEQVRFX1RZUEUiLCJjcmVhdGVJbnZhbGlkYXRlIiwiZW5kcG9pbnQiLCJhcmdzIiwidHlwZSIsIm1ldGEiLCJrZXkiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9jcmVhdGVJbnZhbGlkYXRlLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5kcG9pbnRJbnRlcmZhY2UgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IHsgSU5WQUxJREFURV9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBJbnZhbGlkYXRlQWN0aW9uIH0gZnJvbSAnLi4vbmV3QWN0aW9ucy5qcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNyZWF0ZUludmFsaWRhdGU8RSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlPihcbiAgZW5kcG9pbnQ6IEUsXG4gIHsgYXJncyB9OiB7IGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XSB9LFxuKTogSW52YWxpZGF0ZUFjdGlvbiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogSU5WQUxJREFURV9UWVBFLFxuICAgIG1ldGE6IHtcbiAgICAgIGtleTogZW5kcG9pbnQua2V5KC4uLmFyZ3MpLFxuICAgIH0sXG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiJBQUVBLFNBQVNBLGVBQWUsUUFBUSxtQkFBbUI7QUFHbkQsZUFBZSxTQUFTQyxnQkFBZ0JBLENBQ3RDQyxRQUFXLEVBQ1g7RUFBRUM7QUFBNEMsQ0FBQyxFQUM3QjtFQUNsQixPQUFPO0lBQ0xDLElBQUksRUFBRUosZUFBZTtJQUNyQkssSUFBSSxFQUFFO01BQ0pDLEdBQUcsRUFBRUosUUFBUSxDQUFDSSxHQUFHLENBQUMsR0FBR0gsSUFBSTtJQUMzQjtFQUNGLENBQUM7QUFDSCJ9
@@ -0,0 +1,8 @@
1
+ import { INVALIDATEALL_TYPE } from '../actionTypes.js';
2
+ export default function createInvalidateAll(testKey) {
3
+ return {
4
+ type: INVALIDATEALL_TYPE,
5
+ testKey
6
+ };
7
+ }
8
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJJTlZBTElEQVRFQUxMX1RZUEUiLCJjcmVhdGVJbnZhbGlkYXRlQWxsIiwidGVzdEtleSIsInR5cGUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9jcmVhdGVJbnZhbGlkYXRlQWxsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElOVkFMSURBVEVBTExfVFlQRSB9IGZyb20gJy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHsgSW52YWxpZGF0ZUFsbEFjdGlvbiB9IGZyb20gJy4uL25ld0FjdGlvbnMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVJbnZhbGlkYXRlQWxsKFxuICB0ZXN0S2V5OiAoa2V5OiBzdHJpbmcpID0+IGJvb2xlYW4sXG4pOiBJbnZhbGlkYXRlQWxsQWN0aW9uIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiBJTlZBTElEQVRFQUxMX1RZUEUsXG4gICAgdGVzdEtleSxcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0Esa0JBQWtCLFFBQVEsbUJBQW1CO0FBR3RELGVBQWUsU0FBU0MsbUJBQW1CQSxDQUN6Q0MsT0FBaUMsRUFDWjtFQUNyQixPQUFPO0lBQ0xDLElBQUksRUFBRUgsa0JBQWtCO0lBQ3hCRTtFQUNGLENBQUM7QUFDSCJ9
@@ -0,0 +1,33 @@
1
+ import { OPTIMISTIC_TYPE } from '../actionTypes.js';
2
+ export default function createOptimistic(endpoint, {
3
+ args,
4
+ fetchedAt
5
+ }) {
6
+ var _endpoint$dataExpiryL;
7
+ const expiryLength = (_endpoint$dataExpiryL = endpoint.dataExpiryLength) != null ? _endpoint$dataExpiryL : 60000;
8
+ /* istanbul ignore next */
9
+ if (process.env.NODE_ENV === 'development' && expiryLength < 0) {
10
+ throw new Error('Negative expiry length are not allowed.');
11
+ }
12
+ const now = Date.now();
13
+ // TODO: Use correct type once we no longer need backcompat
14
+ const meta = {
15
+ args,
16
+ fetchedAt,
17
+ date: now,
18
+ expiresAt: now + expiryLength,
19
+ // For legacy support; TODO: remove
20
+ schema: endpoint.schema,
21
+ key: endpoint.key(...args)
22
+ };
23
+ // For legacy support; TODO: remove
24
+ if (endpoint.update) meta.update = endpoint.update;
25
+ if (endpoint.errorPolicy) meta.errorPolicy = endpoint.errorPolicy;
26
+ const action = {
27
+ type: OPTIMISTIC_TYPE,
28
+ endpoint,
29
+ meta
30
+ };
31
+ return action;
32
+ }
33
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJPUFRJTUlTVElDX1RZUEUiLCJjcmVhdGVPcHRpbWlzdGljIiwiZW5kcG9pbnQiLCJhcmdzIiwiZmV0Y2hlZEF0IiwiX2VuZHBvaW50JGRhdGFFeHBpcnlMIiwiZXhwaXJ5TGVuZ3RoIiwiZGF0YUV4cGlyeUxlbmd0aCIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIkVycm9yIiwibm93IiwiRGF0ZSIsIm1ldGEiLCJkYXRlIiwiZXhwaXJlc0F0Iiwic2NoZW1hIiwia2V5IiwidXBkYXRlIiwiZXJyb3JQb2xpY3kiLCJhY3Rpb24iLCJ0eXBlIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvY3JlYXRlT3B0aW1pc3RpYy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVuZHBvaW50SW50ZXJmYWNlIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB7IEVuZHBvaW50VXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuL3R5cGVzLmpzJztcbmltcG9ydCB7IE9QVElNSVNUSUNfVFlQRSB9IGZyb20gJy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCB7IE9wdGltaXN0aWNBY3Rpb24gfSBmcm9tICcuLi9uZXdBY3Rpb25zLmpzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlT3B0aW1pc3RpYzxcbiAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gIH0sXG4+KFxuICBlbmRwb2ludDogRSxcbiAge1xuICAgIGFyZ3MsXG4gICAgZmV0Y2hlZEF0LFxuICB9OiB7XG4gICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICB9LFxuKTogT3B0aW1pc3RpY0FjdGlvbjxFPiB7XG4gIGNvbnN0IGV4cGlyeUxlbmd0aDogbnVtYmVyID0gZW5kcG9pbnQuZGF0YUV4cGlyeUxlbmd0aCA/PyA2MDAwMDtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnICYmIGV4cGlyeUxlbmd0aCA8IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05lZ2F0aXZlIGV4cGlyeSBsZW5ndGggYXJlIG5vdCBhbGxvd2VkLicpO1xuICB9XG4gIGNvbnN0IG5vdyA9IERhdGUubm93KCk7XG4gIC8vIFRPRE86IFVzZSBjb3JyZWN0IHR5cGUgb25jZSB3ZSBubyBsb25nZXIgbmVlZCBiYWNrY29tcGF0XG4gIGNvbnN0IG1ldGE6IGFueSA9IHtcbiAgICBhcmdzLFxuICAgIGZldGNoZWRBdCxcbiAgICBkYXRlOiBub3csXG4gICAgZXhwaXJlc0F0OiBub3cgKyBleHBpcnlMZW5ndGgsXG4gICAgLy8gRm9yIGxlZ2FjeSBzdXBwb3J0OyBUT0RPOiByZW1vdmVcbiAgICBzY2hlbWE6IGVuZHBvaW50LnNjaGVtYSxcbiAgICBrZXk6IGVuZHBvaW50LmtleSguLi5hcmdzKSxcbiAgfTtcbiAgLy8gRm9yIGxlZ2FjeSBzdXBwb3J0OyBUT0RPOiByZW1vdmVcbiAgaWYgKGVuZHBvaW50LnVwZGF0ZSkgbWV0YS51cGRhdGUgPSBlbmRwb2ludC51cGRhdGU7XG4gIGlmIChlbmRwb2ludC5lcnJvclBvbGljeSkgbWV0YS5lcnJvclBvbGljeSA9IGVuZHBvaW50LmVycm9yUG9saWN5O1xuXG4gIGNvbnN0IGFjdGlvbjogT3B0aW1pc3RpY0FjdGlvbjxFPiA9IHtcbiAgICB0eXBlOiBPUFRJTUlTVElDX1RZUEUsXG4gICAgZW5kcG9pbnQsXG4gICAgbWV0YSxcbiAgfTtcbiAgcmV0dXJuIGFjdGlvbjtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBR0EsU0FBU0EsZUFBZSxRQUFRLG1CQUFtQjtBQUduRCxlQUFlLFNBQVNDLGdCQUFnQkEsQ0FLdENDLFFBQVcsRUFDWDtFQUNFQyxJQUFJO0VBQ0pDO0FBSUYsQ0FBQyxFQUNvQjtFQUFBLElBQUFDLHFCQUFBO0VBQ3JCLE1BQU1DLFlBQW9CLElBQUFELHFCQUFBLEdBQUdILFFBQVEsQ0FBQ0ssZ0JBQWdCLFlBQUFGLHFCQUFBLEdBQUksS0FBSztFQUMvRDtFQUNBLElBQUlHLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDQyxRQUFRLEtBQUssYUFBYSxJQUFJSixZQUFZLEdBQUcsQ0FBQyxFQUFFO0lBQzlELE1BQU0sSUFBSUssS0FBSyxDQUFDLHlDQUF5QyxDQUFDO0VBQzVEO0VBQ0EsTUFBTUMsR0FBRyxHQUFHQyxJQUFJLENBQUNELEdBQUcsQ0FBQyxDQUFDO0VBQ3RCO0VBQ0EsTUFBTUUsSUFBUyxHQUFHO0lBQ2hCWCxJQUFJO0lBQ0pDLFNBQVM7SUFDVFcsSUFBSSxFQUFFSCxHQUFHO0lBQ1RJLFNBQVMsRUFBRUosR0FBRyxHQUFHTixZQUFZO0lBQzdCO0lBQ0FXLE1BQU0sRUFBRWYsUUFBUSxDQUFDZSxNQUFNO0lBQ3ZCQyxHQUFHLEVBQUVoQixRQUFRLENBQUNnQixHQUFHLENBQUMsR0FBR2YsSUFBSTtFQUMzQixDQUFDO0VBQ0Q7RUFDQSxJQUFJRCxRQUFRLENBQUNpQixNQUFNLEVBQUVMLElBQUksQ0FBQ0ssTUFBTSxHQUFHakIsUUFBUSxDQUFDaUIsTUFBTTtFQUNsRCxJQUFJakIsUUFBUSxDQUFDa0IsV0FBVyxFQUFFTixJQUFJLENBQUNNLFdBQVcsR0FBR2xCLFFBQVEsQ0FBQ2tCLFdBQVc7RUFFakUsTUFBTUMsTUFBMkIsR0FBRztJQUNsQ0MsSUFBSSxFQUFFdEIsZUFBZTtJQUNyQkUsUUFBUTtJQUNSWTtFQUNGLENBQUM7RUFDRCxPQUFPTyxNQUFNO0FBQ2YifQ==
@@ -0,0 +1,36 @@
1
+ import { SET_TYPE } from '../actionTypes.js';
2
+ export default function createReceive(endpoint, {
3
+ args,
4
+ fetchedAt,
5
+ response,
6
+ error = false
7
+ }) {
8
+ var _endpoint$errorExpiry, _endpoint$dataExpiryL;
9
+ const expiryLength = error ? (_endpoint$errorExpiry = endpoint.errorExpiryLength) != null ? _endpoint$errorExpiry : 1000 : (_endpoint$dataExpiryL = endpoint.dataExpiryLength) != null ? _endpoint$dataExpiryL : 60000;
10
+ /* istanbul ignore next */
11
+ if (process.env.NODE_ENV === 'development' && expiryLength < 0) {
12
+ throw new Error('Negative expiry length are not allowed.');
13
+ }
14
+ const now = Date.now();
15
+ const meta = {
16
+ args,
17
+ fetchedAt: fetchedAt != null ? fetchedAt : now,
18
+ date: now,
19
+ expiresAt: now + expiryLength,
20
+ // For legacy support; TODO: remove
21
+ schema: endpoint.schema,
22
+ key: endpoint.key(...args)
23
+ };
24
+ // For legacy support; TODO: remove
25
+ if (endpoint.update) meta.update = endpoint.update;
26
+ if (endpoint.errorPolicy) meta.errorPolicy = endpoint.errorPolicy;
27
+ const action = {
28
+ type: SET_TYPE,
29
+ payload: response,
30
+ endpoint: endpoint,
31
+ meta
32
+ };
33
+ if (error) action.error = true;
34
+ return action;
35
+ }
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfVFlQRSIsImNyZWF0ZVJlY2VpdmUiLCJlbmRwb2ludCIsImFyZ3MiLCJmZXRjaGVkQXQiLCJyZXNwb25zZSIsImVycm9yIiwiX2VuZHBvaW50JGVycm9yRXhwaXJ5IiwiX2VuZHBvaW50JGRhdGFFeHBpcnlMIiwiZXhwaXJ5TGVuZ3RoIiwiZXJyb3JFeHBpcnlMZW5ndGgiLCJkYXRhRXhwaXJ5TGVuZ3RoIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiRXJyb3IiLCJub3ciLCJEYXRlIiwibWV0YSIsImRhdGUiLCJleHBpcmVzQXQiLCJzY2hlbWEiLCJrZXkiLCJ1cGRhdGUiLCJlcnJvclBvbGljeSIsImFjdGlvbiIsInR5cGUiLCJwYXlsb2FkIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvY3JlYXRlUmVjZWl2ZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEVuZHBvaW50SW50ZXJmYWNlLCBSZXNvbHZlVHlwZSB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuXG5pbXBvcnQgeyBFbmRwb2ludFVwZGF0ZUZ1bmN0aW9uIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBTRVRfVFlQRSB9IGZyb20gJy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgQ29tcGF0aWJsZVJlY2VpdmVBY3Rpb24sXG4gIENvbXBhdGlibGVSZWNlaXZlTWV0YSxcbn0gZnJvbSAnLi4vY29tcGF0aWJsZUFjdGlvbnMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVSZWNlaXZlPFxuICBFIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UgJiB7XG4gICAgdXBkYXRlPzogRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxFPjtcbiAgfSxcbj4oXG4gIGVuZHBvaW50OiBFLFxuICBvcHRpb25zOiB7XG4gICAgYXJnczogcmVhZG9ubHkgWy4uLlBhcmFtZXRlcnM8RT5dO1xuICAgIHJlc3BvbnNlOiBFcnJvcjtcbiAgICBmZXRjaGVkQXQ/OiBudW1iZXI7XG4gICAgZXJyb3I6IHRydWU7XG4gIH0sXG4pOiBDb21wYXRpYmxlUmVjZWl2ZUFjdGlvbjxFPjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUmVjZWl2ZTxcbiAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gIH0sXG4+KFxuICBlbmRwb2ludDogRSxcbiAgb3B0aW9uczoge1xuICAgIGFyZ3M6IHJlYWRvbmx5IFsuLi5QYXJhbWV0ZXJzPEU+XTtcbiAgICByZXNwb25zZTogUmVzb2x2ZVR5cGU8RT47XG4gICAgZmV0Y2hlZEF0PzogbnVtYmVyO1xuICAgIGVycm9yPzogZmFsc2U7XG4gIH0sXG4pOiBDb21wYXRpYmxlUmVjZWl2ZUFjdGlvbjxFPjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY3JlYXRlUmVjZWl2ZTxcbiAgRSBleHRlbmRzIEVuZHBvaW50SW50ZXJmYWNlICYge1xuICAgIHVwZGF0ZT86IEVuZHBvaW50VXBkYXRlRnVuY3Rpb248RT47XG4gIH0sXG4+KFxuICBlbmRwb2ludDogRSxcbiAge1xuICAgIGFyZ3MsXG4gICAgZmV0Y2hlZEF0LFxuICAgIHJlc3BvbnNlLFxuICAgIGVycm9yID0gZmFsc2UsXG4gIH06IHtcbiAgICBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl07XG4gICAgcmVzcG9uc2U6IGFueTtcbiAgICBmZXRjaGVkQXQ/OiBudW1iZXI7XG4gICAgZXJyb3I/OiBib29sZWFuO1xuICB9LFxuKTogQ29tcGF0aWJsZVJlY2VpdmVBY3Rpb248RT4ge1xuICBjb25zdCBleHBpcnlMZW5ndGg6IG51bWJlciA9IGVycm9yXG4gICAgPyBlbmRwb2ludC5lcnJvckV4cGlyeUxlbmd0aCA/PyAxMDAwXG4gICAgOiBlbmRwb2ludC5kYXRhRXhwaXJ5TGVuZ3RoID8/IDYwMDAwO1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdkZXZlbG9wbWVudCcgJiYgZXhwaXJ5TGVuZ3RoIDwgMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignTmVnYXRpdmUgZXhwaXJ5IGxlbmd0aCBhcmUgbm90IGFsbG93ZWQuJyk7XG4gIH1cbiAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcbiAgY29uc3QgbWV0YTogQ29tcGF0aWJsZVJlY2VpdmVNZXRhID0ge1xuICAgIGFyZ3MsXG4gICAgZmV0Y2hlZEF0OiBmZXRjaGVkQXQgPz8gbm93LFxuICAgIGRhdGU6IG5vdyxcbiAgICBleHBpcmVzQXQ6IG5vdyArIGV4cGlyeUxlbmd0aCxcbiAgICAvLyBGb3IgbGVnYWN5IHN1cHBvcnQ7IFRPRE86IHJlbW92ZVxuICAgIHNjaGVtYTogZW5kcG9pbnQuc2NoZW1hLFxuICAgIGtleTogZW5kcG9pbnQua2V5KC4uLmFyZ3MpLFxuICB9O1xuICAvLyBGb3IgbGVnYWN5IHN1cHBvcnQ7IFRPRE86IHJlbW92ZVxuICBpZiAoZW5kcG9pbnQudXBkYXRlKSBtZXRhLnVwZGF0ZSA9IGVuZHBvaW50LnVwZGF0ZTtcbiAgaWYgKGVuZHBvaW50LmVycm9yUG9saWN5KSBtZXRhLmVycm9yUG9saWN5ID0gZW5kcG9pbnQuZXJyb3JQb2xpY3k7XG5cbiAgY29uc3QgYWN0aW9uOiBDb21wYXRpYmxlUmVjZWl2ZUFjdGlvbjxFPiA9IHtcbiAgICB0eXBlOiBTRVRfVFlQRSxcbiAgICBwYXlsb2FkOiByZXNwb25zZSxcbiAgICBlbmRwb2ludDogZW5kcG9pbnQsXG4gICAgbWV0YSxcbiAgfTtcbiAgaWYgKGVycm9yKSAoYWN0aW9uIGFzIGFueSkuZXJyb3IgPSB0cnVlO1xuICByZXR1cm4gYWN0aW9uO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFHQSxTQUFTQSxRQUFRLFFBQVEsbUJBQW1CO0FBa0M1QyxlQUFlLFNBQVNDLGFBQWFBLENBS25DQyxRQUFXLEVBQ1g7RUFDRUMsSUFBSTtFQUNKQyxTQUFTO0VBQ1RDLFFBQVE7RUFDUkMsS0FBSyxHQUFHO0FBTVYsQ0FBQyxFQUMyQjtFQUFBLElBQUFDLHFCQUFBLEVBQUFDLHFCQUFBO0VBQzVCLE1BQU1DLFlBQW9CLEdBQUdILEtBQUssSUFBQUMscUJBQUEsR0FDOUJMLFFBQVEsQ0FBQ1EsaUJBQWlCLFlBQUFILHFCQUFBLEdBQUksSUFBSSxJQUFBQyxxQkFBQSxHQUNsQ04sUUFBUSxDQUFDUyxnQkFBZ0IsWUFBQUgscUJBQUEsR0FBSSxLQUFLO0VBQ3RDO0VBQ0EsSUFBSUksT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxhQUFhLElBQUlMLFlBQVksR0FBRyxDQUFDLEVBQUU7SUFDOUQsTUFBTSxJQUFJTSxLQUFLLENBQUMseUNBQXlDLENBQUM7RUFDNUQ7RUFDQSxNQUFNQyxHQUFHLEdBQUdDLElBQUksQ0FBQ0QsR0FBRyxDQUFDLENBQUM7RUFDdEIsTUFBTUUsSUFBMkIsR0FBRztJQUNsQ2YsSUFBSTtJQUNKQyxTQUFTLEVBQUVBLFNBQVMsV0FBVEEsU0FBUyxHQUFJWSxHQUFHO0lBQzNCRyxJQUFJLEVBQUVILEdBQUc7SUFDVEksU0FBUyxFQUFFSixHQUFHLEdBQUdQLFlBQVk7SUFDN0I7SUFDQVksTUFBTSxFQUFFbkIsUUFBUSxDQUFDbUIsTUFBTTtJQUN2QkMsR0FBRyxFQUFFcEIsUUFBUSxDQUFDb0IsR0FBRyxDQUFDLEdBQUduQixJQUFJO0VBQzNCLENBQUM7RUFDRDtFQUNBLElBQUlELFFBQVEsQ0FBQ3FCLE1BQU0sRUFBRUwsSUFBSSxDQUFDSyxNQUFNLEdBQUdyQixRQUFRLENBQUNxQixNQUFNO0VBQ2xELElBQUlyQixRQUFRLENBQUNzQixXQUFXLEVBQUVOLElBQUksQ0FBQ00sV0FBVyxHQUFHdEIsUUFBUSxDQUFDc0IsV0FBVztFQUVqRSxNQUFNQyxNQUFrQyxHQUFHO0lBQ3pDQyxJQUFJLEVBQUUxQixRQUFRO0lBQ2QyQixPQUFPLEVBQUV0QixRQUFRO0lBQ2pCSCxRQUFRLEVBQUVBLFFBQVE7SUFDbEJnQjtFQUNGLENBQUM7RUFDRCxJQUFJWixLQUFLLEVBQUdtQixNQUFNLENBQVNuQixLQUFLLEdBQUcsSUFBSTtFQUN2QyxPQUFPbUIsTUFBTTtBQUNmIn0=
@@ -0,0 +1,8 @@
1
+ import { RESET_TYPE } from '../actionTypes.js';
2
+ export default function createReset() {
3
+ return {
4
+ type: RESET_TYPE,
5
+ date: Date.now()
6
+ };
7
+ }
8
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSRVNFVF9UWVBFIiwiY3JlYXRlUmVzZXQiLCJ0eXBlIiwiZGF0ZSIsIkRhdGUiLCJub3ciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJvbGxlci9jcmVhdGVSZXNldC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSRVNFVF9UWVBFIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBSZXNldEFjdGlvbiB9IGZyb20gJy4uL25ld0FjdGlvbnMuanMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBjcmVhdGVSZXNldCgpOiBSZXNldEFjdGlvbiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogUkVTRVRfVFlQRSxcbiAgICBkYXRlOiBEYXRlLm5vdygpLFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQSxTQUFTQSxVQUFVLFFBQVEsbUJBQW1CO0FBRzlDLGVBQWUsU0FBU0MsV0FBV0EsQ0FBQSxFQUFnQjtFQUNqRCxPQUFPO0lBQ0xDLElBQUksRUFBRUYsVUFBVTtJQUNoQkcsSUFBSSxFQUFFQyxJQUFJLENBQUNDLEdBQUcsQ0FBQztFQUNqQixDQUFDO0FBQ0gifQ==
@@ -0,0 +1,30 @@
1
+ import { SUBSCRIBE_TYPE, UNSUBSCRIBE_TYPE } from '../actionTypes.js';
2
+ export function createSubscription(endpoint, {
3
+ args
4
+ }) {
5
+ return {
6
+ type: SUBSCRIBE_TYPE,
7
+ endpoint,
8
+ meta: {
9
+ args,
10
+ key: endpoint.key(...args),
11
+ fetch: () => endpoint(...args),
12
+ schema: endpoint.schema,
13
+ options: endpoint
14
+ }
15
+ };
16
+ }
17
+ export function createUnsubscription(endpoint, {
18
+ args
19
+ }) {
20
+ return {
21
+ type: UNSUBSCRIBE_TYPE,
22
+ endpoint,
23
+ meta: {
24
+ args,
25
+ key: endpoint.key(...args),
26
+ options: endpoint
27
+ }
28
+ };
29
+ }
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTVUJTQ1JJQkVfVFlQRSIsIlVOU1VCU0NSSUJFX1RZUEUiLCJjcmVhdGVTdWJzY3JpcHRpb24iLCJlbmRwb2ludCIsImFyZ3MiLCJ0eXBlIiwibWV0YSIsImtleSIsImZldGNoIiwic2NoZW1hIiwib3B0aW9ucyIsImNyZWF0ZVVuc3Vic2NyaXB0aW9uIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvY3JlYXRlU3Vic2NyaXB0aW9uLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW5kcG9pbnRJbnRlcmZhY2UgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IHsgU1VCU0NSSUJFX1RZUEUsIFVOU1VCU0NSSUJFX1RZUEUgfSBmcm9tICcuLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgdHlwZSB7XG4gIENvbXBhdGlibGVTdWJzY3JpYmVBY3Rpb24sXG4gIENvbXBhdGlibGVVbnN1YnNjcmliZUFjdGlvbixcbn0gZnJvbSAnLi4vY29tcGF0aWJsZUFjdGlvbnMuanMnO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU3Vic2NyaXB0aW9uPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gIGVuZHBvaW50OiBFLFxuICB7IGFyZ3MgfTogeyBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfSxcbik6IENvbXBhdGlibGVTdWJzY3JpYmVBY3Rpb248RT4ge1xuICByZXR1cm4ge1xuICAgIHR5cGU6IFNVQlNDUklCRV9UWVBFLFxuICAgIGVuZHBvaW50LFxuICAgIG1ldGE6IHtcbiAgICAgIGFyZ3MsXG4gICAgICBrZXk6IGVuZHBvaW50LmtleSguLi5hcmdzKSxcbiAgICAgIGZldGNoOiAoKSA9PiBlbmRwb2ludCguLi5hcmdzKSxcbiAgICAgIHNjaGVtYTogZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgb3B0aW9uczogZW5kcG9pbnQsXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVuc3Vic2NyaXB0aW9uPEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4oXG4gIGVuZHBvaW50OiBFLFxuICB7IGFyZ3MgfTogeyBhcmdzOiByZWFkb25seSBbLi4uUGFyYW1ldGVyczxFPl0gfSxcbik6IENvbXBhdGlibGVVbnN1YnNjcmliZUFjdGlvbjxFPiB7XG4gIHJldHVybiB7XG4gICAgdHlwZTogVU5TVUJTQ1JJQkVfVFlQRSxcbiAgICBlbmRwb2ludCxcbiAgICBtZXRhOiB7XG4gICAgICBhcmdzLFxuICAgICAga2V5OiBlbmRwb2ludC5rZXkoLi4uYXJncyksXG4gICAgICBvcHRpb25zOiBlbmRwb2ludCxcbiAgICB9LFxuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiQUFFQSxTQUFTQSxjQUFjLEVBQUVDLGdCQUFnQixRQUFRLG1CQUFtQjtBQU1wRSxPQUFPLFNBQVNDLGtCQUFrQkEsQ0FDaENDLFFBQVcsRUFDWDtFQUFFQztBQUE0QyxDQUFDLEVBQ2pCO0VBQzlCLE9BQU87SUFDTEMsSUFBSSxFQUFFTCxjQUFjO0lBQ3BCRyxRQUFRO0lBQ1JHLElBQUksRUFBRTtNQUNKRixJQUFJO01BQ0pHLEdBQUcsRUFBRUosUUFBUSxDQUFDSSxHQUFHLENBQUMsR0FBR0gsSUFBSSxDQUFDO01BQzFCSSxLQUFLLEVBQUVBLENBQUEsS0FBTUwsUUFBUSxDQUFDLEdBQUdDLElBQUksQ0FBQztNQUM5QkssTUFBTSxFQUFFTixRQUFRLENBQUNNLE1BQU07TUFDdkJDLE9BQU8sRUFBRVA7SUFDWDtFQUNGLENBQUM7QUFDSDtBQUVBLE9BQU8sU0FBU1Esb0JBQW9CQSxDQUNsQ1IsUUFBVyxFQUNYO0VBQUVDO0FBQTRDLENBQUMsRUFDZjtFQUNoQyxPQUFPO0lBQ0xDLElBQUksRUFBRUosZ0JBQWdCO0lBQ3RCRSxRQUFRO0lBQ1JHLElBQUksRUFBRTtNQUNKRixJQUFJO01BQ0pHLEdBQUcsRUFBRUosUUFBUSxDQUFDSSxHQUFHLENBQUMsR0FBR0gsSUFBSSxDQUFDO01BQzFCTSxPQUFPLEVBQUVQO0lBQ1g7RUFDRixDQUFDO0FBQ0gifQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbnRyb2xsZXIvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUge1xuICBOb3JtYWxpemUsXG4gIEVuZHBvaW50SW50ZXJmYWNlLFxuICBSZXNvbHZlVHlwZSxcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmV4cG9ydCB0eXBlIFJlc3VsdEVudHJ5PEUgZXh0ZW5kcyBFbmRwb2ludEludGVyZmFjZT4gPSBFWydzY2hlbWEnXSBleHRlbmRzXG4gIHwgdW5kZWZpbmVkXG4gIHwgbnVsbFxuICA/IFJlc29sdmVUeXBlPEU+XG4gIDogTm9ybWFsaXplPEVbJ3NjaGVtYSddPjtcblxuZXhwb3J0IHR5cGUgRW5kcG9pbnRVcGRhdGVGdW5jdGlvbjxcbiAgU291cmNlIGV4dGVuZHMgRW5kcG9pbnRJbnRlcmZhY2UsXG4gIFVwZGF0ZXJzIGV4dGVuZHMgUmVjb3JkPHN0cmluZywgYW55PiA9IFJlY29yZDxzdHJpbmcsIGFueT4sXG4+ID0gKFxuICBzb3VyY2U6IFJlc3VsdEVudHJ5PFNvdXJjZT4sXG4gIC8vIHRoaXMgaXMgaG9wZWxlc3MgYmVjYXVzZSB0eXBlc2NyaXB0IGRvZXNuJ3QgdGhpbmsgaXQgc2hvdWxkIGJlIGNvbnRyYXZhcmlhbnRcbiAgLi4uYXJnczogYW55XG4pID0+IHtcbiAgW0sgaW4ga2V5b2YgVXBkYXRlcnNdOiAocmVzdWx0OiBVcGRhdGVyc1tLXSkgPT4gVXBkYXRlcnNbS107XG59O1xuIl0sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VuZHBvaW50L2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIHtcbiAgRmV0Y2hTaGFwZSxcbiAgUmVhZFNoYXBlLFxuICBNdXRhdGVTaGFwZSxcbiAgRGVsZXRlU2hhcGUsXG59IGZyb20gJy4vc2hhcGVzLmpzJztcbmV4cG9ydCB0eXBlIHtcbiAgU2V0U2hhcGVQYXJhbXMsXG4gIFBhcmFtc0Zyb21TaGFwZSxcbiAgT3B0aW1pc3RpY1VwZGF0ZVBhcmFtcyxcbiAgU2NoZW1hRnJvbVNoYXBlLFxuICBCb2R5RnJvbVNoYXBlLFxuICBSZXR1cm5Gcm9tU2hhcGUsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuIl0sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VuZHBvaW50L3NoYXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTY2hlbWEsXG4gIEVuZHBvaW50RXh0cmFPcHRpb25zIGFzIEZldGNoT3B0aW9ucyxcbn0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbi8qKiBEZWZpbmVzIHRoZSBzaGFwZSBvZiBhIG5ldHdvcmsgcmVxdWVzdCAqL1xuZXhwb3J0IGludGVyZmFjZSBGZXRjaFNoYXBlPFxuICBTIGV4dGVuZHMgU2NoZW1hIHwgdW5kZWZpbmVkLFxuICBQYXJhbXMgZXh0ZW5kcyBSZWFkb25seTxvYmplY3Q+ID0gUmVhZG9ubHk8b2JqZWN0PixcbiAgQm9keSBleHRlbmRzIFJlYWRvbmx5PG9iamVjdCB8IHN0cmluZz4gfCB2b2lkIHwgdW5rbm93biA9XG4gICAgfCBSZWFkb25seTxvYmplY3QgfCBzdHJpbmc+XG4gICAgfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlID0gYW55LFxuPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdyZWFkJyB8ICdtdXRhdGUnIHwgJ2RlbGV0ZSc7XG4gIGZldGNoKHBhcmFtczogUGFyYW1zLCBib2R5PzogQm9keSk6IFByb21pc2U8UmVzcG9uc2U+O1xuICBnZXRGZXRjaEtleShwYXJhbXM6IFBhcmFtcyk6IHN0cmluZztcbiAgcmVhZG9ubHkgc2NoZW1hOiBTO1xuICByZWFkb25seSBvcHRpb25zPzogRmV0Y2hPcHRpb25zO1xufVxuXG4vKiogVG8gY2hhbmdlIHZhbHVlcyBvbiB0aGUgc2VydmVyICovXG5leHBvcnQgaW50ZXJmYWNlIE11dGF0ZVNoYXBlPFxuICBTIGV4dGVuZHMgU2NoZW1hIHwgdW5kZWZpbmVkLFxuICBQYXJhbXMgZXh0ZW5kcyBSZWFkb25seTxvYmplY3Q+ID0gUmVhZG9ubHk8b2JqZWN0PixcbiAgQm9keSBleHRlbmRzIFJlYWRvbmx5PG9iamVjdCB8IHN0cmluZz4gfCB2b2lkIHwgdW5rbm93biA9XG4gICAgfCBSZWFkb25seTxvYmplY3QgfCBzdHJpbmc+XG4gICAgfCB1bmRlZmluZWQsXG4gIFJlc3BvbnNlIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgPSBhbnksXG4+IGV4dGVuZHMgRmV0Y2hTaGFwZTxTLCBQYXJhbXMsIEJvZHksIFJlc3BvbnNlPiB7XG4gIHJlYWRvbmx5IHR5cGU6ICdtdXRhdGUnO1xuICBmZXRjaChwYXJhbXM6IFBhcmFtcywgYm9keTogQm9keSk6IFByb21pc2U8UmVzcG9uc2U+O1xufVxuXG4vKiogUmVtb3ZlcyBlbnRpdGllcyAqL1xuZXhwb3J0IGludGVyZmFjZSBEZWxldGVTaGFwZTxcbiAgUyBleHRlbmRzIFNjaGVtYSB8IHVuZGVmaW5lZCxcbiAgUGFyYW1zIGV4dGVuZHMgUmVhZG9ubHk8b2JqZWN0PiA9IFJlYWRvbmx5PG9iamVjdD4sXG4gIFJlc3BvbnNlIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nIHwgbnVtYmVyIHwgYm9vbGVhbiB8IG51bGwgPSBhbnksXG4+IGV4dGVuZHMgRmV0Y2hTaGFwZTxTLCBQYXJhbXMsIHVuZGVmaW5lZCwgUmVzcG9uc2U+IHtcbiAgcmVhZG9ubHkgdHlwZTogJ211dGF0ZSc7XG4gIGZldGNoKHBhcmFtczogUGFyYW1zLCAuLi5hcmdzOiBhbnkpOiBQcm9taXNlPFJlc3BvbnNlPjtcbn1cblxuLyoqIEZvciByZXRyaWV2YWwgcmVxdWVzdHMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVhZFNoYXBlPFxuICBTIGV4dGVuZHMgU2NoZW1hIHwgdW5kZWZpbmVkLFxuICBQYXJhbXMgZXh0ZW5kcyBSZWFkb25seTxvYmplY3Q+ID0gUmVhZG9ubHk8b2JqZWN0PixcbiAgUmVzcG9uc2UgZXh0ZW5kcyBvYmplY3QgfCBzdHJpbmcgfCBudW1iZXIgfCBib29sZWFuIHwgbnVsbCA9IGFueSxcbj4gZXh0ZW5kcyBGZXRjaFNoYXBlPFMsIFBhcmFtcywgdW5kZWZpbmVkLCBSZXNwb25zZT4ge1xuICByZWFkb25seSB0eXBlOiAncmVhZCc7XG4gIGZldGNoKHBhcmFtczogUGFyYW1zKTogUHJvbWlzZTxSZXNwb25zZT47XG59XG4iXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2VuZHBvaW50L3R5cGVzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNjaGVtYSB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuaW1wb3J0IHR5cGUgeyBEZW5vcm1hbGl6ZSB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuXG5pbXBvcnQgeyBGZXRjaFNoYXBlIH0gZnJvbSAnLi9zaGFwZXMuanMnO1xuaW1wb3J0IHsgVXBkYXRlRnVuY3Rpb24gfSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCB0eXBlIFJlc3VsdFNoYXBlPFJTPiA9IFJTIGV4dGVuZHMgeyBzY2hlbWE6IGluZmVyIFUgfSA/IFUgOiBuZXZlcjtcbmV4cG9ydCB0eXBlIFNlbGVjdFJldHVybjxSUz4gPSBSUyBleHRlbmRzIHtcbiAgc2VsZWN0OiAoLi4uYXJnczogYW55W10pID0+IGluZmVyIFU7XG59XG4gID8gVVxuICA6IG5ldmVyO1xuZXhwb3J0IHR5cGUgQWx3YXlzU2VsZWN0PFJTPiA9IE5vbk51bGxhYmxlPFNlbGVjdFJldHVybjxSUz4+O1xuZXhwb3J0IHR5cGUgUGFyYW1Bcmc8UlM+ID0gUlMgZXh0ZW5kcyB7XG4gIGdldEZldGNoS2V5OiAocGFyYW1zOiBpbmZlciBVKSA9PiBhbnk7XG59XG4gID8gVVxuICA6IG5ldmVyO1xuZXhwb3J0IHR5cGUgQm9keUFyZzxSUz4gPSBSUyBleHRlbmRzIHtcbiAgZmV0Y2g6ICh1cmw6IGFueSwgYm9keTogaW5mZXIgVSkgPT4gYW55O1xufVxuICA/IFVcbiAgOiBuZXZlcjtcblxuLyoqIFNldHMgYSBGZXRjaFNoYXBlJ3MgUGFyYW0gdHlwZS5cbiAqIFVzZWZ1bCB0byBjb25zdHJhaW4gYWNjZXB0YWJsZSBwYXJhbXMgKHNlY29uZCBhcmcpIGluIGhvb2tzIGxpa2UgdXNlUmVzb3VyY2UoKS5cbiAqXG4gKiBAcGFyYW0gW1NoYXBlXSBGZXRjaFNoYXBlIHRvIGFjdCB1cG9uXG4gKiBAcGFyYW0gW1BhcmFtc10gd2hhdCB0byBzZXQgdGhlIFBhcmFtcyB0b1xuICovXG5leHBvcnQgdHlwZSBTZXRTaGFwZVBhcmFtczxcbiAgU2hhcGUgZXh0ZW5kcyBGZXRjaFNoYXBlPGFueSwgYW55LCBhbnk+LFxuICBQYXJhbXMgZXh0ZW5kcyBSZWFkb25seTxvYmplY3Q+LFxuPiA9IHtcbiAgW0sgaW4ga2V5b2YgU2hhcGVdOiBTaGFwZVtLXTtcbn0gJiAoU2hhcGVbJ2ZldGNoJ10gZXh0ZW5kcyAoZmlyc3Q6IGFueSwgLi4ucmVzdDogaW5mZXIgQXJncykgPT4gaW5mZXIgUmV0dXJuXG4gID8geyBmZXRjaDogKGZpcnN0OiBQYXJhbXMsIC4uLnJlc3Q6IEFyZ3MpID0+IFJldHVybiB9XG4gIDogbmV2ZXIpO1xuXG4vKiogR2V0IHRoZSBQYXJhbXMgdHlwZSBmb3IgYSBnaXZlbiBTaGFwZSAqL1xuZXhwb3J0IHR5cGUgUGFyYW1zRnJvbVNoYXBlPFM+ID0gUyBleHRlbmRzIHtcbiAgZmV0Y2g6IChmaXJzdDogaW5mZXIgQSwgLi4ucmVzdDogYW55KSA9PiBhbnk7XG59XG4gID8gQVxuICA6IFMgZXh0ZW5kcyB7IGdldEZldGNoS2V5OiAoZmlyc3Q6IGluZmVyIEEsIC4uLnJlc3Q6IGFueSkgPT4gYW55IH1cbiAgPyBBXG4gIDogbmV2ZXI7XG5cbi8qKiBHZXQgdGhlIFNjaGVtYSB0eXBlIGZvciBhIGdpdmVuIFNoYXBlICovXG5leHBvcnQgdHlwZSBTY2hlbWFGcm9tU2hhcGU8XG4gIEYgZXh0ZW5kcyBGZXRjaFNoYXBlPFNjaGVtYSB8IHVuZGVmaW5lZCwgYW55LCBhbnk+LFxuPiA9IEZbJ3NjaGVtYSddO1xuXG4vKiogR2V0IHRoZSBCb2R5IHR5cGUgZm9yIGEgZ2l2ZW4gU2hhcGUgKi9cbmV4cG9ydCB0eXBlIEJvZHlGcm9tU2hhcGU8RiBleHRlbmRzIEZldGNoU2hhcGU8YW55LCBhbnksIGFueT4+ID0gUGFyYW1ldGVyczxcbiAgRlsnZmV0Y2gnXVxuPlsxXTtcblxuZXhwb3J0IHR5cGUgT3B0aW1pc3RpY1VwZGF0ZVBhcmFtczxcbiAgU291cmNlU2NoZW1hIGV4dGVuZHMgU2NoZW1hIHwgdW5kZWZpbmVkLFxuICBEZXN0U2hhcGUgZXh0ZW5kcyBGZXRjaFNoYXBlPGFueSwgYW55LCBhbnk+LFxuPiA9IFtcbiAgRGVzdFNoYXBlLFxuICBQYXJhbXNGcm9tU2hhcGU8RGVzdFNoYXBlPixcbiAgVXBkYXRlRnVuY3Rpb248U291cmNlU2NoZW1hLCBTY2hlbWFGcm9tU2hhcGU8RGVzdFNoYXBlPj4sXG5dO1xuXG5leHBvcnQgdHlwZSBSZXR1cm5Gcm9tU2hhcGU8UyBleHRlbmRzIEZldGNoU2hhcGU8YW55LCBhbnksIGFueT4+ID0gUmV0dXJuVHlwZTxcbiAgU1snZmV0Y2gnXVxuPiBleHRlbmRzIHVua25vd25cbiAgPyBQcm9taXNlPERlbm9ybWFsaXplPFNbJ3NjaGVtYSddPj5cbiAgOiBSZXR1cm5UeXBlPFNbJ2ZldGNoJ10+O1xuIl0sIm1hcHBpbmdzIjoiIn0=
package/legacy/fsa.js ADDED
@@ -0,0 +1,2 @@
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