@data-client/core 0.15.4 → 0.16.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 (48) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/index.js +28 -11
  3. package/dist/index.umd.min.js +1 -1
  4. package/dist/mock.js +24 -11
  5. package/legacy/controller/actions/createOptimistic.js +3 -2
  6. package/legacy/manager/ConnectionListener.js +1 -1
  7. package/legacy/manager/DevtoolsManager.js +18 -4
  8. package/legacy/manager/NetworkManager.js +2 -2
  9. package/legacy/state/GCPolicy.js +4 -1
  10. package/legacy/state/reducer/setReducer.js +1 -1
  11. package/legacy/state/reducer/setResponseReducer.js +1 -1
  12. package/lib/controller/actions/createOptimistic.d.ts.map +1 -1
  13. package/lib/controller/actions/createOptimistic.js +3 -2
  14. package/lib/manager/ConnectionListener.d.ts +12 -0
  15. package/lib/manager/ConnectionListener.d.ts.map +1 -1
  16. package/lib/manager/ConnectionListener.js +1 -1
  17. package/lib/manager/DevtoolsManager.d.ts +1 -0
  18. package/lib/manager/DevtoolsManager.d.ts.map +1 -1
  19. package/lib/manager/DevtoolsManager.js +19 -5
  20. package/lib/manager/NetworkManager.d.ts +1 -1
  21. package/lib/manager/NetworkManager.js +2 -2
  22. package/lib/state/GCPolicy.d.ts.map +1 -1
  23. package/lib/state/GCPolicy.js +4 -1
  24. package/lib/state/reducer/expireReducer.d.ts +2 -2
  25. package/lib/state/reducer/invalidateReducer.d.ts +2 -2
  26. package/lib/state/reducer/setReducer.d.ts +1 -27
  27. package/lib/state/reducer/setReducer.d.ts.map +1 -1
  28. package/lib/state/reducer/setReducer.js +1 -1
  29. package/lib/state/reducer/setResponseReducer.d.ts +1 -30
  30. package/lib/state/reducer/setResponseReducer.d.ts.map +1 -1
  31. package/lib/state/reducer/setResponseReducer.js +1 -1
  32. package/package.json +3 -3
  33. package/src/controller/__tests__/get.ts +8 -8
  34. package/src/controller/actions/createOptimistic.ts +2 -1
  35. package/src/manager/ConnectionListener.ts +12 -0
  36. package/src/manager/DevtoolsManager.ts +21 -6
  37. package/src/manager/NetworkManager.ts +1 -1
  38. package/src/state/GCPolicy.ts +3 -0
  39. package/src/state/__tests__/GCPolicy.test.ts +2 -0
  40. package/src/state/reducer/setReducer.ts +1 -1
  41. package/src/state/reducer/setResponseReducer.ts +1 -1
  42. package/ts3.4/manager/ConnectionListener.d.ts +12 -0
  43. package/ts3.4/manager/DevtoolsManager.d.ts +1 -0
  44. package/ts3.4/manager/NetworkManager.d.ts +1 -1
  45. package/ts3.4/state/reducer/expireReducer.d.ts +2 -2
  46. package/ts3.4/state/reducer/invalidateReducer.d.ts +2 -2
  47. package/ts3.4/state/reducer/setReducer.d.ts +1 -27
  48. package/ts3.4/state/reducer/setResponseReducer.d.ts +1 -30
@@ -220,7 +220,7 @@ export default class NetworkManager {
220
220
  * create a new promise and call fetch.
221
221
  *
222
222
  * Note: The new promise is not actually tied to fetch at all,
223
- * but is resolved when the expected 'recieve' action is processed.
223
+ * but is resolved when the expected 'receive' action is processed.
224
224
  * This ensures promises are resolved only once their data is processed
225
225
  * by the reducer.
226
226
  */
@@ -264,4 +264,4 @@ function newFetchMeta(fetchedAt) {
264
264
  });
265
265
  return fetchMeta;
266
266
  }
267
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfUkVTUE9OU0UiLCJGRVRDSCIsIlJFU0VUIiwiY3JlYXRlU2V0UmVzcG9uc2UiLCJDb250cm9sbGVyIiwiUmVzZXRFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiTmV0d29ya01hbmFnZXIiLCJkYXRhRXhwaXJ5TGVuZ3RoIiwiZXJyb3JFeHBpcnlMZW5ndGgiLCJmZXRjaGluZyIsIk1hcCIsImNvbnRyb2xsZXIiLCJtaWRkbGV3YXJlIiwibmV4dCIsImFjdGlvbiIsInR5cGUiLCJoYW5kbGVGZXRjaCIsImVuZHBvaW50IiwiZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlIiwidW5kZWZpbmVkIiwic2lkZUVmZmVjdCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsImhhcyIsImtleSIsIl9jb250cm9sbGVyJGdldFN0YXRlJCIsImVycm9yIiwiZ2V0U3RhdGUiLCJtZXRhIiwiaGFuZGxlU2V0IiwiYXJncyIsInJlc3BvbnNlIiwiZmV0Y2hlZEF0IiwiZmV0Y2hlcyIsIkFycmF5IiwiZnJvbSIsInZhbHVlcyIsImNsZWFyQWxsIiwicmVqZWN0IiwiaW5pdCIsImNsZWFudXBEYXRlIiwiY2xlYW51cCIsIkRhdGUiLCJub3ciLCJza2lwTG9nZ2luZyIsImFsbFNldHRsZWQiLCJzaXplIiwibWFwIiwicHJvbWlzZSIsImsiLCJrZXlzIiwiY2xlYXIiLCJnZXQiLCJjYXRjaCIsImRlbGV0ZSIsImdldExhc3RSZXNldCIsImxhc3RSZXNldCIsInRocm90dGxlIiwiZGVmZXJlZEZldGNoIiwicmVzb2x2ZVByb21pc2UiLCJkYXRhIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiaXNOYU4iLCJjb25zb2xlIiwiZmV0Y2giLCJmZXRjaE1ldGEiLCJuZXdGZXRjaE1ldGEiLCJzZXQiLCJpZGxlQ2FsbGJhY2siLCJ0aW1lb3V0IiwiY2FsbGJhY2siLCJvcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvTmV0d29ya01hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0VUX1JFU1BPTlNFLCBGRVRDSCwgUkVTRVQgfSBmcm9tICcuLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTZXRSZXNwb25zZSB9IGZyb20gJy4uL2NvbnRyb2xsZXIvYWN0aW9ucy9pbmRleC5qcyc7XG5pbXBvcnQgQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBGZXRjaEFjdGlvbixcbiAgTWFuYWdlcixcbiAgQWN0aW9uVHlwZXMsXG4gIE1pZGRsZXdhcmUsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBSZXNldEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBuYW1lID0gJ1Jlc2V0RXJyb3InO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdBYm9ydGVkIGR1ZSB0byBSRVNFVCcpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hpbmdNZXRhIHtcbiAgcHJvbWlzZTogUHJvbWlzZTxhbnk+O1xuICByZXNvbHZlOiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XG4gIHJlamVjdDogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xuICBmZXRjaGVkQXQ6IG51bWJlcjtcbn1cblxuLyoqIEhhbmRsZXMgYWxsIGFzeW5jIG5ldHdvcmsgZGlzcGF0Y2hlc1xuICpcbiAqIERlZHVwZXMgY29uY3VycmVudCByZXF1ZXN0cyBieSBrZWVwaW5nIHRyYWNrIG9mIGFsbCBmZXRjaGVzIGluIGZsaWdodFxuICogYW5kIHJldHVybmluZyBleGlzdGluZyBwcm9taXNlcyBmb3IgcmVxdWVzdHMgYWxyZWFkeSBpbiBmbGlnaHQuXG4gKlxuICogSW50ZXJmYWNlcyB3aXRoIHN0b3JlIHZpYSBhIHJlZHV4LWNvbXBhdGlibGUgbWlkZGxld2FyZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9OZXR3b3JrTWFuYWdlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXR3b3JrTWFuYWdlciBpbXBsZW1lbnRzIE1hbmFnZXIge1xuICBwcm90ZWN0ZWQgZmV0Y2hpbmc6IE1hcDxzdHJpbmcsIEZldGNoaW5nTWV0YT4gPSBuZXcgTWFwKCk7XG4gIGRlY2xhcmUgcmVhZG9ubHkgZGF0YUV4cGlyeUxlbmd0aDogbnVtYmVyO1xuICBkZWNsYXJlIHJlYWRvbmx5IGVycm9yRXhwaXJ5TGVuZ3RoOiBudW1iZXI7XG4gIHByb3RlY3RlZCBjb250cm9sbGVyOiBDb250cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoKTtcbiAgZGVjbGFyZSBjbGVhbnVwRGF0ZT86IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IGRhdGFFeHBpcnlMZW5ndGggPSA2MDAwMCwgZXJyb3JFeHBpcnlMZW5ndGggPSAxMDAwIH0gPSB7fSkge1xuICAgIHRoaXMuZGF0YUV4cGlyeUxlbmd0aCA9IGRhdGFFeHBpcnlMZW5ndGg7XG4gICAgdGhpcy5lcnJvckV4cGlyeUxlbmd0aCA9IGVycm9yRXhwaXJ5TGVuZ3RoO1xuICB9XG5cbiAgbWlkZGxld2FyZTogTWlkZGxld2FyZSA9IGNvbnRyb2xsZXIgPT4ge1xuICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgcmV0dXJuIG5leHQgPT4gYWN0aW9uID0+IHtcbiAgICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSBGRVRDSDpcbiAgICAgICAgICB0aGlzLmhhbmRsZUZldGNoKGFjdGlvbik7XG4gICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBjYXNlIHRoYXQgY2F1c2VzIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAgICAgICAvLyBJdCdzIGltcG9ydGFudCB0byBpbnRlcmNlcHQgb3RoZXIgZmV0Y2hlcyBhcyB3ZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgcmVkdWNlcnMgZHVyaW5nXG4gICAgICAgICAgLy8gcmVuZGVyIC0gc28gd2UgbmVlZCB0byBzdG9wICdyZWFkb25seScgZmV0Y2hlcyB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIGluIHJlbmRlclxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGFjdGlvbi5lbmRwb2ludC5nZXRPcHRpbWlzdGljUmVzcG9uc2UgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgYWN0aW9uLmVuZHBvaW50LnNpZGVFZmZlY3RcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgY2FzZSBTRVRfUkVTUE9OU0U6XG4gICAgICAgICAgLy8gb25seSBzZXQgYWZ0ZXIgbmV3IHN0YXRlIGlzIGNvbXB1dGVkXG4gICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZldGNoaW5nLmhhcyhhY3Rpb24ua2V5KSkge1xuICAgICAgICAgICAgICAvLyBOb3RlOiBtZXRhICptdXN0KiBiZSBzZXQgYnkgcmVkdWNlciBzbyB0aGlzIHNob3VsZCBiZSBzYWZlXG4gICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gY29udHJvbGxlci5nZXRTdGF0ZSgpLm1ldGFbYWN0aW9uLmtleV0/LmVycm9yO1xuICAgICAgICAgICAgICAvLyBwcm9jZXNzaW5nIGVycm9ycyByZXN1bHQgaW4gc3RhdGUgbWV0YSBoYXZpbmcgZXJyb3IsIHNvIHdlIHNob3VsZCByZWplY3QgdGhlIHByb21pc2VcbiAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZXQoXG4gICAgICAgICAgICAgICAgICBjcmVhdGVTZXRSZXNwb25zZShhY3Rpb24uZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnczogYWN0aW9uLmFyZ3MsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hlZEF0OiBhY3Rpb24ubWV0YS5mZXRjaGVkQXQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNldChhY3Rpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgUkVTRVQ6IHtcbiAgICAgICAgICAvLyB0YWtlIHNuYXBzaG90IG9mIHJlamVjdG9ycyBhdCB0aGlzIHBvaW50IGluIHRpbWVcbiAgICAgICAgICAvLyB3ZSBtdXN0IHVzZSBBcnJheS5mcm9tIHNpbmNlIGl0ZXJhdGlvbiBkb2VzIG5vdCBmcmVlemUgc3RhdGUgYXQgdGhpcyBwb2ludCBpbiB0aW1lXG4gICAgICAgICAgY29uc3QgZmV0Y2hlcyA9IEFycmF5LmZyb20odGhpcy5mZXRjaGluZy52YWx1ZXMoKSk7XG5cbiAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XG4gICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGV4dGVybmFsIGxpc3RlbmVycyB0byB0aGUgcHJvbWlzZVxuICAgICAgICAgICAgLy8gdGhpcyBtdXN0IGhhcHBlbiBhZnRlciBjb21taXQgc28gb3VyIG93biByZWplY3RvciBrbm93cyBub3QgdG8gZGlzcGF0Y2ggYW4gZXJyb3IgYmFzZWQgb24gdGhpc1xuICAgICAgICAgICAgZm9yIChjb25zdCB7IHJlamVjdCB9IG9mIGZldGNoZXMpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBSZXNldEVycm9yKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIC8qKiBPbiBtb3VudCAqL1xuICBpbml0KCkge1xuICAgIGRlbGV0ZSB0aGlzLmNsZWFudXBEYXRlO1xuICB9XG5cbiAgLyoqIEVuc3VyZXMgYWxsIHByb21pc2VzIGFyZSBjb21wbGV0ZWQgYnkgcmVqZWN0aW5nIHJlbWFpbmluZy4gKi9cbiAgY2xlYW51cCgpIHtcbiAgICAvLyBlbnN1cmUgbm8gZGlzcGF0Y2hlcyBhZnRlciB1bm1vdW50XG4gICAgLy8gdGhpcyBtdXN0IGJlIHJldmVyc2libGUgKGRvbmUgaW4gaW5pdCkgc28gdXNlRWZmZWN0KCkgcmVtYWlucyBzeW1tZXRyaWNcbiAgICB0aGlzLmNsZWFudXBEYXRlID0gRGF0ZS5ub3coKTtcbiAgfVxuXG4gIC8qKiBVc2VkIGJ5IERldnRvb2xzTWFuYWdlciB0byBkZXRlcm1pbmUgd2hldGhlciB0byBsb2cgYW4gYWN0aW9uICovXG4gIHNraXBMb2dnaW5nKGFjdGlvbjogQWN0aW9uVHlwZXMpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiBhY3Rpb24udHlwZSA9PT0gRkVUQ0ggJiYgdGhpcy5mZXRjaGluZy5oYXMoYWN0aW9uLmtleSk7XG4gIH1cblxuICBhbGxTZXR0bGVkKCkge1xuICAgIGlmICh0aGlzLmZldGNoaW5nLnNpemUpXG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgICB0aGlzLmZldGNoaW5nLnZhbHVlcygpLm1hcCgoeyBwcm9taXNlIH0pID0+IHByb21pc2UpLFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKiBDbGVhciBhbGwgcHJvbWlzZSBzdGF0ZSAqL1xuICBwcm90ZWN0ZWQgY2xlYXJBbGwoKSB7XG4gICAgZm9yIChjb25zdCBrIG9mIHRoaXMuZmV0Y2hpbmcua2V5cygpKSB7XG4gICAgICB0aGlzLmNsZWFyKGspO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbGVhciBwcm9taXNlIHN0YXRlIGZvciBhIGdpdmVuIGtleSAqL1xuICBwcm90ZWN0ZWQgY2xlYXIoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5mZXRjaGluZy5oYXMoa2V5KSkge1xuICAgICAgKHRoaXMuZmV0Y2hpbmcuZ2V0KGtleSkgYXMgRmV0Y2hpbmdNZXRhKS5wcm9taXNlLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgIHRoaXMuZmV0Y2hpbmcuZGVsZXRlKGtleSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldExhc3RSZXNldCgpIHtcbiAgICBpZiAodGhpcy5jbGVhbnVwRGF0ZSkgcmV0dXJuIHRoaXMuY2xlYW51cERhdGU7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRTdGF0ZSgpLmxhc3RSZXNldDtcbiAgfVxuXG4gIC8qKiBDYWxsZWQgd2hlbiBtaWRkbGV3YXJlIGludGVyY2VwdHMgJ3JkYy9mZXRjaCcgYWN0aW9uLlxuICAgKlxuICAgKiBXaWxsIHRoZW4gc3RhcnQgYSBwcm9taXNlIGZvciBhIGtleSBhbmQgcG90ZW50aWFsbHkgc3RhcnQgdGhlIG5ldHdvcmtcbiAgICogZmV0Y2guXG4gICAqXG4gICAqIFVzZXMgdGhyb3R0bGUgZW5kcG9pbnRzIHdpdGhvdXQgc2lkZUVmZmVjdHMuIFRoaXMgaXMgdmFsdWFibGVcbiAgICogZm9yIGVuc3VyZXMgbXV0YXRpb24gcmVxdWVzdHMgYWx3YXlzIGdvIHRocm91Z2guXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRmV0Y2goYWN0aW9uOiBGZXRjaEFjdGlvbikge1xuICAgIGNvbnN0IHsgcmVzb2x2ZSwgcmVqZWN0LCBmZXRjaGVkQXQgfSA9IGFjdGlvbi5tZXRhO1xuICAgIGNvbnN0IHRocm90dGxlID0gIWFjdGlvbi5lbmRwb2ludC5zaWRlRWZmZWN0O1xuXG4gICAgY29uc3QgZGVmZXJlZEZldGNoID0gKCkgPT4ge1xuICAgICAgbGV0IHByb21pc2UgPSBhY3Rpb24uZW5kcG9pbnQoLi4uYWN0aW9uLmFyZ3MpO1xuICAgICAgY29uc3QgcmVzb2x2ZVByb21pc2UgPSAoXG4gICAgICAgIHByb21pc2U6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgbnVsbD4sXG4gICAgICApID0+XG4gICAgICAgIHByb21pc2VcbiAgICAgICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgfSk7XG4gICAgICAvLyBzY2hlZHVsZSBub24tdGhyb3R0bGVkIHJlc29sdXRpb25zIGluIGEgbWljcm90YXNrIGJlZm9yZSBzZXRcbiAgICAgIC8vIHRoaXMgZW5hYmxlcyB1c2VycyBhd2FpdGluZyB0aGVpciBmZXRjaCB0byB0cmlnZ2VyIGFueSByZWFjdCB1cGRhdGVzIG5lZWRlZCB0byBkZWFsXG4gICAgICAvLyB3aXRoIHVwY29taW5nIGNoYW5nZXMgYmVjYXVzZSBvZiB0aGUgZmV0Y2ggKGZvciBpbnN0YW5jZSBhdm9pZGluZyBzdXNwZW5zZSBpZiBzb21ldGhpbmcgaXMgZGVsZXRlZClcbiAgICAgIGlmICghdGhyb3R0bGUpIHtcbiAgICAgICAgcHJvbWlzZSA9IHJlc29sdmVQcm9taXNlKHByb21pc2UpO1xuICAgICAgfVxuICAgICAgcHJvbWlzZSA9IHByb21pc2VcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGxldCBsYXN0UmVzZXQgPSB0aGlzLmdldExhc3RSZXNldCgpO1xuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpc05hTihsYXN0UmVzZXQpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnc3RhdGUubGFzdFJlc2V0IGlzIE5hTi4gT25seSBwb3NpdGl2ZSB0aW1lc3RhbXBzIGFyZSB2YWxpZC4nLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxhc3RSZXNldCA9IDA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gZG9uJ3QgdXBkYXRlIHN0YXRlIHdpdGggcHJvbWlzZXMgc3RhcnRlZCBiZWZvcmUgbGFzdCBjbGVhclxuICAgICAgICAgIGlmIChmZXRjaGVkQXQgPj0gbGFzdFJlc2V0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXIucmVzb2x2ZShhY3Rpb24uZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgYXJnczogYWN0aW9uLmFyZ3MsXG4gICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICBmZXRjaGVkQXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnN0IGxhc3RSZXNldCA9IHRoaXMuZ2V0TGFzdFJlc2V0KCk7XG4gICAgICAgICAgLy8gZG9uJ3QgdXBkYXRlIHN0YXRlIHdpdGggcHJvbWlzZXMgc3RhcnRlZCBiZWZvcmUgbGFzdCBjbGVhclxuICAgICAgICAgIGlmIChmZXRjaGVkQXQgPj0gbGFzdFJlc2V0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXIucmVzb2x2ZShhY3Rpb24uZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgYXJnczogYWN0aW9uLmFyZ3MsXG4gICAgICAgICAgICAgIHJlc3BvbnNlOiBlcnJvcixcbiAgICAgICAgICAgICAgZmV0Y2hlZEF0LFxuICAgICAgICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9O1xuXG4gICAgaWYgKHRocm90dGxlKSB7XG4gICAgICByZXR1cm4gdGhpcy50aHJvdHRsZShhY3Rpb24ua2V5LCBkZWZlcmVkRmV0Y2gsIGZldGNoZWRBdClcbiAgICAgICAgLnRoZW4oZGF0YSA9PiByZXNvbHZlKGRhdGEpKVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkZWZlcmVkRmV0Y2goKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENhbGxlZCB3aGVuIG1pZGRsZXdhcmUgaW50ZXJjZXB0cyBhIHNldCBhY3Rpb24uXG4gICAqXG4gICAqIFdpbGwgcmVzb2x2ZSB0aGUgcHJvbWlzZSBhc3NvY2lhdGVkIHdpdGggc2V0IGtleS5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVTZXQoYWN0aW9uOiBTZXRSZXNwb25zZUFjdGlvbikge1xuICAgIC8vIHRoaXMgY2FuIHN0aWxsIHR1cm4gb3V0IHRvIGJlIHVudHJ1ZSBzaW5jZSB0aGlzIGlzIGFzeW5jXG4gICAgaWYgKHRoaXMuZmV0Y2hpbmcuaGFzKGFjdGlvbi5rZXkpKSB7XG4gICAgICBjb25zdCB7IHJlamVjdCwgcmVzb2x2ZSB9ID0gdGhpcy5mZXRjaGluZy5nZXQoYWN0aW9uLmtleSkgYXMgRmV0Y2hpbmdNZXRhO1xuICAgICAgaWYgKGFjdGlvbi5lcnJvcikge1xuICAgICAgICByZWplY3QoYWN0aW9uLnJlc3BvbnNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoYWN0aW9uLnJlc3BvbnNlKTtcbiAgICAgIH1cblxuICAgICAgLy8gc2luY2Ugd2UncmUgcmVzb2x2ZWQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHByb21pc2VcbiAgICAgIHRoaXMuY2xlYXIoYWN0aW9uLmtleSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEVuc3VyZXMgb25seSBvbmUgcmVxdWVzdCBmb3IgYSBnaXZlbiBrZXkgaXMgaW4gZmxpZ2h0IGF0IGFueSB0aW1lXG4gICAqXG4gICAqIFVzZXMga2V5IHRvIGVpdGhlciByZXRyaWV2ZSBpbi1mbGlnaHQgcHJvbWlzZSwgb3IgaWYgbm90XG4gICAqIGNyZWF0ZSBhIG5ldyBwcm9taXNlIGFuZCBjYWxsIGZldGNoLlxuICAgKlxuICAgKiBOb3RlOiBUaGUgbmV3IHByb21pc2UgaXMgbm90IGFjdHVhbGx5IHRpZWQgdG8gZmV0Y2ggYXQgYWxsLFxuICAgKiBidXQgaXMgcmVzb2x2ZWQgd2hlbiB0aGUgZXhwZWN0ZWQgJ3JlY2lldmUnIGFjdGlvbiBpcyBwcm9jZXNzZWQuXG4gICAqIFRoaXMgZW5zdXJlcyBwcm9taXNlcyBhcmUgcmVzb2x2ZWQgb25seSBvbmNlIHRoZWlyIGRhdGEgaXMgcHJvY2Vzc2VkXG4gICAqIGJ5IHRoZSByZWR1Y2VyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRocm90dGxlKFxuICAgIGtleTogc3RyaW5nLFxuICAgIGZldGNoOiAoKSA9PiBQcm9taXNlPGFueT4sXG4gICAgZmV0Y2hlZEF0OiBudW1iZXIsXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgbGFzdFJlc2V0ID0gdGhpcy5nZXRMYXN0UmVzZXQoKTtcbiAgICBsZXQgZmV0Y2hNZXRhID0gdGhpcy5mZXRjaGluZy5nZXQoa2V5KTtcblxuICAgIC8vIHdlJ3JlIGFscmVhZHkgZmV0Y2hpbmcgc28gcmV1c2UgdGhlIHByb21pc2VcbiAgICAvLyBmZXRjaGVzIGFmdGVyIHJlc2V0IGRvIG5vdCBjb3VudFxuICAgIGlmIChmZXRjaE1ldGEgJiYgZmV0Y2hNZXRhLmZldGNoZWRBdCA+IGxhc3RSZXNldCkge1xuICAgICAgcmV0dXJuIGZldGNoTWV0YS5wcm9taXNlO1xuICAgIH1cblxuICAgIGZldGNoTWV0YSA9IG5ld0ZldGNoTWV0YShmZXRjaGVkQXQpO1xuICAgIHRoaXMuZmV0Y2hpbmcuc2V0KGtleSwgZmV0Y2hNZXRhKTtcblxuICAgIHRoaXMuaWRsZUNhbGxiYWNrKFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBzaW5jZSBvdXIgcmVhbCBwcm9taXNlIGlzIHJlc29sdmVkIHZpYSB0aGUgd3JhcFJlZHVjZXIoKSxcbiAgICAgICAgLy8gd2Ugc2hvdWxkIGp1c3Qgc3RvcCBhbGwgZXJyb3JzIGhlcmUuXG4gICAgICAgIC8vIFRPRE86IGRlY291cGxlIHRoaXMgZnJvbSB1c2VGZXRjaGVyKCkgKHRoYXQncyB3aGF0J3MgZGlzcGF0Y2hpbmcgdGhlIGVycm9yIHRoZSByZXNvbHZlcyBpbiBoZXJlKVxuICAgICAgICBmZXRjaCgpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgfSxcbiAgICAgIHsgdGltZW91dDogNTAwIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBmZXRjaE1ldGEucHJvbWlzZTtcbiAgfVxuXG4gIC8qKiBDYWxscyB0aGUgY2FsbGJhY2sgd2hlbiBjbGllbnQgaXMgbm90ICdidXN5JyB3aXRoIGhpZ2ggcHJpb3JpdHkgaW50ZXJhY3Rpb24gdGFza3NcbiAgICpcbiAgICogT3ZlcnJpZGUgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGlkbGVDYWxsYmFjayhcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBJZGxlUmVxdWVzdE9wdGlvbnMsXG4gICkge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbmV3RmV0Y2hNZXRhKGZldGNoZWRBdDogbnVtYmVyKTogRmV0Y2hpbmdNZXRhIHtcbiAgY29uc3QgZmV0Y2hNZXRhID0geyBmZXRjaGVkQXQgfSBhcyBGZXRjaGluZ01ldGE7XG4gIGZldGNoTWV0YS5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGZldGNoTWV0YS5yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICBmZXRjaE1ldGEucmVqZWN0ID0gcmVqZWN0O1xuICB9KTtcbiAgcmV0dXJuIGZldGNoTWV0YTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsWUFBWSxFQUFFQyxLQUFLLEVBQUVDLEtBQUssUUFBUSxtQkFBbUI7QUFDOUQsU0FBU0MsaUJBQWlCLFFBQVEsZ0NBQWdDO0FBQ2xFLE9BQU9DLFVBQVUsTUFBTSw2QkFBNkI7QUFTcEQsT0FBTyxNQUFNQyxVQUFVLFNBQVNDLEtBQUssQ0FBQztFQUdwQ0MsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osS0FBSyxDQUFDLHNCQUFzQixDQUFDO0lBQUMsS0FIaENDLElBQUksR0FBRyxZQUFZO0VBSW5CO0FBQ0Y7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLGNBQWMsQ0FBb0I7RUFPckRGLFdBQVdBLENBQUM7SUFBRUcsZ0JBQWdCLEdBQUcsS0FBSztJQUFFQyxpQkFBaUIsR0FBRztFQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtJQUFBLEtBTi9EQyxRQUFRLEdBQThCLElBQUlDLEdBQUcsQ0FBQyxDQUFDO0lBQUEsS0FHL0NDLFVBQVUsR0FBZSxJQUFJVixVQUFVLENBQUMsQ0FBQztJQUFBLEtBUW5EVyxVQUFVLEdBQWVELFVBQVUsSUFBSTtNQUNyQyxJQUFJLENBQUNBLFVBQVUsR0FBR0EsVUFBVTtNQUM1QixPQUFPRSxJQUFJLElBQUlDLE1BQU0sSUFBSTtRQUN2QixRQUFRQSxNQUFNLENBQUNDLElBQUk7VUFDakIsS0FBS2pCLEtBQUs7WUFDUixJQUFJLENBQUNrQixXQUFXLENBQUNGLE1BQU0sQ0FBQztZQUN4QjtZQUNBO1lBQ0E7WUFDQSxJQUNFQSxNQUFNLENBQUNHLFFBQVEsQ0FBQ0MscUJBQXFCLEtBQUtDLFNBQVMsSUFDbkRMLE1BQU0sQ0FBQ0csUUFBUSxDQUFDRyxVQUFVLEVBQzFCO2NBQ0EsT0FBT1AsSUFBSSxDQUFDQyxNQUFNLENBQUM7WUFD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
267
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJTRVRfUkVTUE9OU0UiLCJGRVRDSCIsIlJFU0VUIiwiY3JlYXRlU2V0UmVzcG9uc2UiLCJDb250cm9sbGVyIiwiUmVzZXRFcnJvciIsIkVycm9yIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiTmV0d29ya01hbmFnZXIiLCJkYXRhRXhwaXJ5TGVuZ3RoIiwiZXJyb3JFeHBpcnlMZW5ndGgiLCJmZXRjaGluZyIsIk1hcCIsImNvbnRyb2xsZXIiLCJtaWRkbGV3YXJlIiwibmV4dCIsImFjdGlvbiIsInR5cGUiLCJoYW5kbGVGZXRjaCIsImVuZHBvaW50IiwiZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlIiwidW5kZWZpbmVkIiwic2lkZUVmZmVjdCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsImhhcyIsImtleSIsIl9jb250cm9sbGVyJGdldFN0YXRlJCIsImVycm9yIiwiZ2V0U3RhdGUiLCJtZXRhIiwiaGFuZGxlU2V0IiwiYXJncyIsInJlc3BvbnNlIiwiZmV0Y2hlZEF0IiwiZmV0Y2hlcyIsIkFycmF5IiwiZnJvbSIsInZhbHVlcyIsImNsZWFyQWxsIiwicmVqZWN0IiwiaW5pdCIsImNsZWFudXBEYXRlIiwiY2xlYW51cCIsIkRhdGUiLCJub3ciLCJza2lwTG9nZ2luZyIsImFsbFNldHRsZWQiLCJzaXplIiwibWFwIiwicHJvbWlzZSIsImsiLCJrZXlzIiwiY2xlYXIiLCJnZXQiLCJjYXRjaCIsImRlbGV0ZSIsImdldExhc3RSZXNldCIsImxhc3RSZXNldCIsInRocm90dGxlIiwiZGVmZXJlZEZldGNoIiwicmVzb2x2ZVByb21pc2UiLCJkYXRhIiwicHJvY2VzcyIsImVudiIsIk5PREVfRU5WIiwiaXNOYU4iLCJjb25zb2xlIiwiZmV0Y2giLCJmZXRjaE1ldGEiLCJuZXdGZXRjaE1ldGEiLCJzZXQiLCJpZGxlQ2FsbGJhY2siLCJ0aW1lb3V0IiwiY2FsbGJhY2siLCJvcHRpb25zIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL21hbmFnZXIvTmV0d29ya01hbmFnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU0VUX1JFU1BPTlNFLCBGRVRDSCwgUkVTRVQgfSBmcm9tICcuLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVTZXRSZXNwb25zZSB9IGZyb20gJy4uL2NvbnRyb2xsZXIvYWN0aW9ucy9pbmRleC5qcyc7XG5pbXBvcnQgQ29udHJvbGxlciBmcm9tICcuLi9jb250cm9sbGVyL0NvbnRyb2xsZXIuanMnO1xuaW1wb3J0IHR5cGUge1xuICBGZXRjaEFjdGlvbixcbiAgTWFuYWdlcixcbiAgQWN0aW9uVHlwZXMsXG4gIE1pZGRsZXdhcmUsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBjbGFzcyBSZXNldEVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBuYW1lID0gJ1Jlc2V0RXJyb3InO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCdBYm9ydGVkIGR1ZSB0byBSRVNFVCcpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmV0Y2hpbmdNZXRhIHtcbiAgcHJvbWlzZTogUHJvbWlzZTxhbnk+O1xuICByZXNvbHZlOiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XG4gIHJlamVjdDogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xuICBmZXRjaGVkQXQ6IG51bWJlcjtcbn1cblxuLyoqIEhhbmRsZXMgYWxsIGFzeW5jIG5ldHdvcmsgZGlzcGF0Y2hlc1xuICpcbiAqIERlZHVwZXMgY29uY3VycmVudCByZXF1ZXN0cyBieSBrZWVwaW5nIHRyYWNrIG9mIGFsbCBmZXRjaGVzIGluIGZsaWdodFxuICogYW5kIHJldHVybmluZyBleGlzdGluZyBwcm9taXNlcyBmb3IgcmVxdWVzdHMgYWxyZWFkeSBpbiBmbGlnaHQuXG4gKlxuICogSW50ZXJmYWNlcyB3aXRoIHN0b3JlIHZpYSBhIHJlZHV4LWNvbXBhdGlibGUgbWlkZGxld2FyZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZGF0YWNsaWVudC5pby9kb2NzL2FwaS9OZXR3b3JrTWFuYWdlclxuICovXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBOZXR3b3JrTWFuYWdlciBpbXBsZW1lbnRzIE1hbmFnZXIge1xuICBwcm90ZWN0ZWQgZmV0Y2hpbmc6IE1hcDxzdHJpbmcsIEZldGNoaW5nTWV0YT4gPSBuZXcgTWFwKCk7XG4gIGRlY2xhcmUgcmVhZG9ubHkgZGF0YUV4cGlyeUxlbmd0aDogbnVtYmVyO1xuICBkZWNsYXJlIHJlYWRvbmx5IGVycm9yRXhwaXJ5TGVuZ3RoOiBudW1iZXI7XG4gIHByb3RlY3RlZCBjb250cm9sbGVyOiBDb250cm9sbGVyID0gbmV3IENvbnRyb2xsZXIoKTtcbiAgZGVjbGFyZSBjbGVhbnVwRGF0ZT86IG51bWJlcjtcblxuICBjb25zdHJ1Y3Rvcih7IGRhdGFFeHBpcnlMZW5ndGggPSA2MDAwMCwgZXJyb3JFeHBpcnlMZW5ndGggPSAxMDAwIH0gPSB7fSkge1xuICAgIHRoaXMuZGF0YUV4cGlyeUxlbmd0aCA9IGRhdGFFeHBpcnlMZW5ndGg7XG4gICAgdGhpcy5lcnJvckV4cGlyeUxlbmd0aCA9IGVycm9yRXhwaXJ5TGVuZ3RoO1xuICB9XG5cbiAgbWlkZGxld2FyZTogTWlkZGxld2FyZSA9IGNvbnRyb2xsZXIgPT4ge1xuICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG4gICAgcmV0dXJuIG5leHQgPT4gYWN0aW9uID0+IHtcbiAgICAgIHN3aXRjaCAoYWN0aW9uLnR5cGUpIHtcbiAgICAgICAgY2FzZSBGRVRDSDpcbiAgICAgICAgICB0aGlzLmhhbmRsZUZldGNoKGFjdGlvbik7XG4gICAgICAgICAgLy8gVGhpcyBpcyB0aGUgb25seSBjYXNlIHRoYXQgY2F1c2VzIGFueSBzdGF0ZSBjaGFuZ2VcbiAgICAgICAgICAvLyBJdCdzIGltcG9ydGFudCB0byBpbnRlcmNlcHQgb3RoZXIgZmV0Y2hlcyBhcyB3ZSBkb24ndCB3YW50IHRvIHRyaWdnZXIgcmVkdWNlcnMgZHVyaW5nXG4gICAgICAgICAgLy8gcmVuZGVyIC0gc28gd2UgbmVlZCB0byBzdG9wICdyZWFkb25seScgZmV0Y2hlcyB3aGljaCBjYW4gYmUgdHJpZ2dlcmVkIGluIHJlbmRlclxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIGFjdGlvbi5lbmRwb2ludC5nZXRPcHRpbWlzdGljUmVzcG9uc2UgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAgICAgYWN0aW9uLmVuZHBvaW50LnNpZGVFZmZlY3RcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHJldHVybiBuZXh0KGFjdGlvbik7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoKTtcbiAgICAgICAgY2FzZSBTRVRfUkVTUE9OU0U6XG4gICAgICAgICAgLy8gb25seSBzZXQgYWZ0ZXIgbmV3IHN0YXRlIGlzIGNvbXB1dGVkXG4gICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIGlmICh0aGlzLmZldGNoaW5nLmhhcyhhY3Rpb24ua2V5KSkge1xuICAgICAgICAgICAgICAvLyBOb3RlOiBtZXRhICptdXN0KiBiZSBzZXQgYnkgcmVkdWNlciBzbyB0aGlzIHNob3VsZCBiZSBzYWZlXG4gICAgICAgICAgICAgIGNvbnN0IGVycm9yID0gY29udHJvbGxlci5nZXRTdGF0ZSgpLm1ldGFbYWN0aW9uLmtleV0/LmVycm9yO1xuICAgICAgICAgICAgICAvLyBwcm9jZXNzaW5nIGVycm9ycyByZXN1bHQgaW4gc3RhdGUgbWV0YSBoYXZpbmcgZXJyb3IsIHNvIHdlIHNob3VsZCByZWplY3QgdGhlIHByb21pc2VcbiAgICAgICAgICAgICAgaWYgKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYW5kbGVTZXQoXG4gICAgICAgICAgICAgICAgICBjcmVhdGVTZXRSZXNwb25zZShhY3Rpb24uZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnczogYWN0aW9uLmFyZ3MsXG4gICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlOiBlcnJvcixcbiAgICAgICAgICAgICAgICAgICAgZmV0Y2hlZEF0OiBhY3Rpb24ubWV0YS5mZXRjaGVkQXQsXG4gICAgICAgICAgICAgICAgICAgIGVycm9yOiB0cnVlLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICB0aGlzLmhhbmRsZVNldChhY3Rpb24pO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIGNhc2UgUkVTRVQ6IHtcbiAgICAgICAgICAvLyB0YWtlIHNuYXBzaG90IG9mIHJlamVjdG9ycyBhdCB0aGlzIHBvaW50IGluIHRpbWVcbiAgICAgICAgICAvLyB3ZSBtdXN0IHVzZSBBcnJheS5mcm9tIHNpbmNlIGl0ZXJhdGlvbiBkb2VzIG5vdCBmcmVlemUgc3RhdGUgYXQgdGhpcyBwb2ludCBpbiB0aW1lXG4gICAgICAgICAgY29uc3QgZmV0Y2hlcyA9IEFycmF5LmZyb20odGhpcy5mZXRjaGluZy52YWx1ZXMoKSk7XG5cbiAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7XG4gICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgIC8vIHRoZXJlIGNvdWxkIGJlIGV4dGVybmFsIGxpc3RlbmVycyB0byB0aGUgcHJvbWlzZVxuICAgICAgICAgICAgLy8gdGhpcyBtdXN0IGhhcHBlbiBhZnRlciBjb21taXQgc28gb3VyIG93biByZWplY3RvciBrbm93cyBub3QgdG8gZGlzcGF0Y2ggYW4gZXJyb3IgYmFzZWQgb24gdGhpc1xuICAgICAgICAgICAgZm9yIChjb25zdCB7IHJlamVjdCB9IG9mIGZldGNoZXMpIHtcbiAgICAgICAgICAgICAgcmVqZWN0KG5ldyBSZXNldEVycm9yKCkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIG5leHQoYWN0aW9uKTtcbiAgICAgIH1cbiAgICB9O1xuICB9O1xuXG4gIC8qKiBPbiBtb3VudCAqL1xuICBpbml0KCkge1xuICAgIGRlbGV0ZSB0aGlzLmNsZWFudXBEYXRlO1xuICB9XG5cbiAgLyoqIEVuc3VyZXMgYWxsIHByb21pc2VzIGFyZSBjb21wbGV0ZWQgYnkgcmVqZWN0aW5nIHJlbWFpbmluZy4gKi9cbiAgY2xlYW51cCgpIHtcbiAgICAvLyBlbnN1cmUgbm8gZGlzcGF0Y2hlcyBhZnRlciB1bm1vdW50XG4gICAgLy8gdGhpcyBtdXN0IGJlIHJldmVyc2libGUgKGRvbmUgaW4gaW5pdCkgc28gdXNlRWZmZWN0KCkgcmVtYWlucyBzeW1tZXRyaWNcbiAgICB0aGlzLmNsZWFudXBEYXRlID0gRGF0ZS5ub3coKTtcbiAgfVxuXG4gIC8qKiBVc2VkIGJ5IERldnRvb2xzTWFuYWdlciB0byBkZXRlcm1pbmUgd2hldGhlciB0byBsb2cgYW4gYWN0aW9uICovXG4gIHNraXBMb2dnaW5nKGFjdGlvbjogQWN0aW9uVHlwZXMpIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgIHJldHVybiBhY3Rpb24udHlwZSA9PT0gRkVUQ0ggJiYgdGhpcy5mZXRjaGluZy5oYXMoYWN0aW9uLmtleSk7XG4gIH1cblxuICBhbGxTZXR0bGVkKCkge1xuICAgIGlmICh0aGlzLmZldGNoaW5nLnNpemUpXG4gICAgICByZXR1cm4gUHJvbWlzZS5hbGxTZXR0bGVkKFxuICAgICAgICB0aGlzLmZldGNoaW5nLnZhbHVlcygpLm1hcCgoeyBwcm9taXNlIH0pID0+IHByb21pc2UpLFxuICAgICAgKTtcbiAgfVxuXG4gIC8qKiBDbGVhciBhbGwgcHJvbWlzZSBzdGF0ZSAqL1xuICBwcm90ZWN0ZWQgY2xlYXJBbGwoKSB7XG4gICAgZm9yIChjb25zdCBrIG9mIHRoaXMuZmV0Y2hpbmcua2V5cygpKSB7XG4gICAgICB0aGlzLmNsZWFyKGspO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDbGVhciBwcm9taXNlIHN0YXRlIGZvciBhIGdpdmVuIGtleSAqL1xuICBwcm90ZWN0ZWQgY2xlYXIoa2V5OiBzdHJpbmcpIHtcbiAgICBpZiAodGhpcy5mZXRjaGluZy5oYXMoa2V5KSkge1xuICAgICAgKHRoaXMuZmV0Y2hpbmcuZ2V0KGtleSkgYXMgRmV0Y2hpbmdNZXRhKS5wcm9taXNlLmNhdGNoKCgpID0+IHt9KTtcbiAgICAgIHRoaXMuZmV0Y2hpbmcuZGVsZXRlKGtleSk7XG4gICAgfVxuICB9XG5cbiAgcHJvdGVjdGVkIGdldExhc3RSZXNldCgpIHtcbiAgICBpZiAodGhpcy5jbGVhbnVwRGF0ZSkgcmV0dXJuIHRoaXMuY2xlYW51cERhdGU7XG4gICAgcmV0dXJuIHRoaXMuY29udHJvbGxlci5nZXRTdGF0ZSgpLmxhc3RSZXNldDtcbiAgfVxuXG4gIC8qKiBDYWxsZWQgd2hlbiBtaWRkbGV3YXJlIGludGVyY2VwdHMgJ3JkYy9mZXRjaCcgYWN0aW9uLlxuICAgKlxuICAgKiBXaWxsIHRoZW4gc3RhcnQgYSBwcm9taXNlIGZvciBhIGtleSBhbmQgcG90ZW50aWFsbHkgc3RhcnQgdGhlIG5ldHdvcmtcbiAgICogZmV0Y2guXG4gICAqXG4gICAqIFVzZXMgdGhyb3R0bGUgZW5kcG9pbnRzIHdpdGhvdXQgc2lkZUVmZmVjdHMuIFRoaXMgaXMgdmFsdWFibGVcbiAgICogZm9yIGVuc3VyZXMgbXV0YXRpb24gcmVxdWVzdHMgYWx3YXlzIGdvIHRocm91Z2guXG4gICAqL1xuICBwcm90ZWN0ZWQgaGFuZGxlRmV0Y2goYWN0aW9uOiBGZXRjaEFjdGlvbikge1xuICAgIGNvbnN0IHsgcmVzb2x2ZSwgcmVqZWN0LCBmZXRjaGVkQXQgfSA9IGFjdGlvbi5tZXRhO1xuICAgIGNvbnN0IHRocm90dGxlID0gIWFjdGlvbi5lbmRwb2ludC5zaWRlRWZmZWN0O1xuXG4gICAgY29uc3QgZGVmZXJlZEZldGNoID0gKCkgPT4ge1xuICAgICAgbGV0IHByb21pc2UgPSBhY3Rpb24uZW5kcG9pbnQoLi4uYWN0aW9uLmFyZ3MpO1xuICAgICAgY29uc3QgcmVzb2x2ZVByb21pc2UgPSAoXG4gICAgICAgIHByb21pc2U6IFByb21pc2U8c3RyaW5nIHwgbnVtYmVyIHwgb2JqZWN0IHwgbnVsbD4sXG4gICAgICApID0+XG4gICAgICAgIHByb21pc2VcbiAgICAgICAgICAudGhlbihkYXRhID0+IHtcbiAgICAgICAgICAgIHJlc29sdmUoZGF0YSk7XG4gICAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgICB9KVxuICAgICAgICAgIC5jYXRjaChlcnJvciA9PiB7XG4gICAgICAgICAgICByZWplY3QoZXJyb3IpO1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgICAgfSk7XG4gICAgICAvLyBzY2hlZHVsZSBub24tdGhyb3R0bGVkIHJlc29sdXRpb25zIGluIGEgbWljcm90YXNrIGJlZm9yZSBzZXRcbiAgICAgIC8vIHRoaXMgZW5hYmxlcyB1c2VycyBhd2FpdGluZyB0aGVpciBmZXRjaCB0byB0cmlnZ2VyIGFueSByZWFjdCB1cGRhdGVzIG5lZWRlZCB0byBkZWFsXG4gICAgICAvLyB3aXRoIHVwY29taW5nIGNoYW5nZXMgYmVjYXVzZSBvZiB0aGUgZmV0Y2ggKGZvciBpbnN0YW5jZSBhdm9pZGluZyBzdXNwZW5zZSBpZiBzb21ldGhpbmcgaXMgZGVsZXRlZClcbiAgICAgIGlmICghdGhyb3R0bGUpIHtcbiAgICAgICAgcHJvbWlzZSA9IHJlc29sdmVQcm9taXNlKHByb21pc2UpO1xuICAgICAgfVxuICAgICAgcHJvbWlzZSA9IHByb21pc2VcbiAgICAgICAgLnRoZW4ocmVzcG9uc2UgPT4ge1xuICAgICAgICAgIGxldCBsYXN0UmVzZXQgPSB0aGlzLmdldExhc3RSZXNldCgpO1xuXG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJyAmJiBpc05hTihsYXN0UmVzZXQpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnc3RhdGUubGFzdFJlc2V0IGlzIE5hTi4gT25seSBwb3NpdGl2ZSB0aW1lc3RhbXBzIGFyZSB2YWxpZC4nLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGxhc3RSZXNldCA9IDA7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gZG9uJ3QgdXBkYXRlIHN0YXRlIHdpdGggcHJvbWlzZXMgc3RhcnRlZCBiZWZvcmUgbGFzdCBjbGVhclxuICAgICAgICAgIGlmIChmZXRjaGVkQXQgPj0gbGFzdFJlc2V0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXIucmVzb2x2ZShhY3Rpb24uZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgYXJnczogYWN0aW9uLmFyZ3MsXG4gICAgICAgICAgICAgIHJlc3BvbnNlLFxuICAgICAgICAgICAgICBmZXRjaGVkQXQsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHJlc3BvbnNlO1xuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4ge1xuICAgICAgICAgIGNvbnN0IGxhc3RSZXNldCA9IHRoaXMuZ2V0TGFzdFJlc2V0KCk7XG4gICAgICAgICAgLy8gZG9uJ3QgdXBkYXRlIHN0YXRlIHdpdGggcHJvbWlzZXMgc3RhcnRlZCBiZWZvcmUgbGFzdCBjbGVhclxuICAgICAgICAgIGlmIChmZXRjaGVkQXQgPj0gbGFzdFJlc2V0KSB7XG4gICAgICAgICAgICB0aGlzLmNvbnRyb2xsZXIucmVzb2x2ZShhY3Rpb24uZW5kcG9pbnQsIHtcbiAgICAgICAgICAgICAgYXJnczogYWN0aW9uLmFyZ3MsXG4gICAgICAgICAgICAgIHJlc3BvbnNlOiBlcnJvcixcbiAgICAgICAgICAgICAgZmV0Y2hlZEF0LFxuICAgICAgICAgICAgICBlcnJvcjogdHJ1ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgICAgfSk7XG4gICAgICByZXR1cm4gcHJvbWlzZTtcbiAgICB9O1xuXG4gICAgaWYgKHRocm90dGxlKSB7XG4gICAgICByZXR1cm4gdGhpcy50aHJvdHRsZShhY3Rpb24ua2V5LCBkZWZlcmVkRmV0Y2gsIGZldGNoZWRBdClcbiAgICAgICAgLnRoZW4oZGF0YSA9PiByZXNvbHZlKGRhdGEpKVxuICAgICAgICAuY2F0Y2goZXJyb3IgPT4gcmVqZWN0KGVycm9yKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkZWZlcmVkRmV0Y2goKS5jYXRjaCgoKSA9PiB7fSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENhbGxlZCB3aGVuIG1pZGRsZXdhcmUgaW50ZXJjZXB0cyBhIHNldCBhY3Rpb24uXG4gICAqXG4gICAqIFdpbGwgcmVzb2x2ZSB0aGUgcHJvbWlzZSBhc3NvY2lhdGVkIHdpdGggc2V0IGtleS5cbiAgICovXG4gIHByb3RlY3RlZCBoYW5kbGVTZXQoYWN0aW9uOiBTZXRSZXNwb25zZUFjdGlvbikge1xuICAgIC8vIHRoaXMgY2FuIHN0aWxsIHR1cm4gb3V0IHRvIGJlIHVudHJ1ZSBzaW5jZSB0aGlzIGlzIGFzeW5jXG4gICAgaWYgKHRoaXMuZmV0Y2hpbmcuaGFzKGFjdGlvbi5rZXkpKSB7XG4gICAgICBjb25zdCB7IHJlamVjdCwgcmVzb2x2ZSB9ID0gdGhpcy5mZXRjaGluZy5nZXQoYWN0aW9uLmtleSkgYXMgRmV0Y2hpbmdNZXRhO1xuICAgICAgaWYgKGFjdGlvbi5lcnJvcikge1xuICAgICAgICByZWplY3QoYWN0aW9uLnJlc3BvbnNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc29sdmUoYWN0aW9uLnJlc3BvbnNlKTtcbiAgICAgIH1cblxuICAgICAgLy8gc2luY2Ugd2UncmUgcmVzb2x2ZWQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG8ga2VlcCB0cmFjayBvZiB0aGlzIHByb21pc2VcbiAgICAgIHRoaXMuY2xlYXIoYWN0aW9uLmtleSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIEVuc3VyZXMgb25seSBvbmUgcmVxdWVzdCBmb3IgYSBnaXZlbiBrZXkgaXMgaW4gZmxpZ2h0IGF0IGFueSB0aW1lXG4gICAqXG4gICAqIFVzZXMga2V5IHRvIGVpdGhlciByZXRyaWV2ZSBpbi1mbGlnaHQgcHJvbWlzZSwgb3IgaWYgbm90XG4gICAqIGNyZWF0ZSBhIG5ldyBwcm9taXNlIGFuZCBjYWxsIGZldGNoLlxuICAgKlxuICAgKiBOb3RlOiBUaGUgbmV3IHByb21pc2UgaXMgbm90IGFjdHVhbGx5IHRpZWQgdG8gZmV0Y2ggYXQgYWxsLFxuICAgKiBidXQgaXMgcmVzb2x2ZWQgd2hlbiB0aGUgZXhwZWN0ZWQgJ3JlY2VpdmUnIGFjdGlvbiBpcyBwcm9jZXNzZWQuXG4gICAqIFRoaXMgZW5zdXJlcyBwcm9taXNlcyBhcmUgcmVzb2x2ZWQgb25seSBvbmNlIHRoZWlyIGRhdGEgaXMgcHJvY2Vzc2VkXG4gICAqIGJ5IHRoZSByZWR1Y2VyLlxuICAgKi9cbiAgcHJvdGVjdGVkIHRocm90dGxlKFxuICAgIGtleTogc3RyaW5nLFxuICAgIGZldGNoOiAoKSA9PiBQcm9taXNlPGFueT4sXG4gICAgZmV0Y2hlZEF0OiBudW1iZXIsXG4gICk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgbGFzdFJlc2V0ID0gdGhpcy5nZXRMYXN0UmVzZXQoKTtcbiAgICBsZXQgZmV0Y2hNZXRhID0gdGhpcy5mZXRjaGluZy5nZXQoa2V5KTtcblxuICAgIC8vIHdlJ3JlIGFscmVhZHkgZmV0Y2hpbmcgc28gcmV1c2UgdGhlIHByb21pc2VcbiAgICAvLyBmZXRjaGVzIGFmdGVyIHJlc2V0IGRvIG5vdCBjb3VudFxuICAgIGlmIChmZXRjaE1ldGEgJiYgZmV0Y2hNZXRhLmZldGNoZWRBdCA+IGxhc3RSZXNldCkge1xuICAgICAgcmV0dXJuIGZldGNoTWV0YS5wcm9taXNlO1xuICAgIH1cblxuICAgIGZldGNoTWV0YSA9IG5ld0ZldGNoTWV0YShmZXRjaGVkQXQpO1xuICAgIHRoaXMuZmV0Y2hpbmcuc2V0KGtleSwgZmV0Y2hNZXRhKTtcblxuICAgIHRoaXMuaWRsZUNhbGxiYWNrKFxuICAgICAgKCkgPT4ge1xuICAgICAgICAvLyBzaW5jZSBvdXIgcmVhbCBwcm9taXNlIGlzIHJlc29sdmVkIHZpYSB0aGUgd3JhcFJlZHVjZXIoKSxcbiAgICAgICAgLy8gd2Ugc2hvdWxkIGp1c3Qgc3RvcCBhbGwgZXJyb3JzIGhlcmUuXG4gICAgICAgIC8vIFRPRE86IGRlY291cGxlIHRoaXMgZnJvbSB1c2VGZXRjaGVyKCkgKHRoYXQncyB3aGF0J3MgZGlzcGF0Y2hpbmcgdGhlIGVycm9yIHRoZSByZXNvbHZlcyBpbiBoZXJlKVxuICAgICAgICBmZXRjaCgpLmNhdGNoKCgpID0+IG51bGwpO1xuICAgICAgfSxcbiAgICAgIHsgdGltZW91dDogNTAwIH0sXG4gICAgKTtcblxuICAgIHJldHVybiBmZXRjaE1ldGEucHJvbWlzZTtcbiAgfVxuXG4gIC8qKiBDYWxscyB0aGUgY2FsbGJhY2sgd2hlbiBjbGllbnQgaXMgbm90ICdidXN5JyB3aXRoIGhpZ2ggcHJpb3JpdHkgaW50ZXJhY3Rpb24gdGFza3NcbiAgICpcbiAgICogT3ZlcnJpZGUgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGlkbGVDYWxsYmFjayhcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBJZGxlUmVxdWVzdE9wdGlvbnMsXG4gICkge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gbmV3RmV0Y2hNZXRhKGZldGNoZWRBdDogbnVtYmVyKTogRmV0Y2hpbmdNZXRhIHtcbiAgY29uc3QgZmV0Y2hNZXRhID0geyBmZXRjaGVkQXQgfSBhcyBGZXRjaGluZ01ldGE7XG4gIGZldGNoTWV0YS5wcm9taXNlID0gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGZldGNoTWV0YS5yZXNvbHZlID0gcmVzb2x2ZTtcbiAgICBmZXRjaE1ldGEucmVqZWN0ID0gcmVqZWN0O1xuICB9KTtcbiAgcmV0dXJuIGZldGNoTWV0YTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsWUFBWSxFQUFFQyxLQUFLLEVBQUVDLEtBQUssUUFBUSxtQkFBbUI7QUFDOUQsU0FBU0MsaUJBQWlCLFFBQVEsZ0NBQWdDO0FBQ2xFLE9BQU9DLFVBQVUsTUFBTSw2QkFBNkI7QUFTcEQsT0FBTyxNQUFNQyxVQUFVLFNBQVNDLEtBQUssQ0FBQztFQUdwQ0MsV0FBV0EsQ0FBQSxFQUFHO0lBQ1osS0FBSyxDQUFDLHNCQUFzQixDQUFDO0lBQUMsS0FIaENDLElBQUksR0FBRyxZQUFZO0VBSW5CO0FBQ0Y7QUFTQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLE1BQU1DLGNBQWMsQ0FBb0I7RUFPckRGLFdBQVdBLENBQUM7SUFBRUcsZ0JBQWdCLEdBQUcsS0FBSztJQUFFQyxpQkFBaUIsR0FBRztFQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRTtJQUFBLEtBTi9EQyxRQUFRLEdBQThCLElBQUlDLEdBQUcsQ0FBQyxDQUFDO0lBQUEsS0FHL0NDLFVBQVUsR0FBZSxJQUFJVixVQUFVLENBQUMsQ0FBQztJQUFBLEtBUW5EVyxVQUFVLEdBQWVELFVBQVUsSUFBSTtNQUNyQyxJQUFJLENBQUNBLFVBQVUsR0FBR0EsVUFBVTtNQUM1QixPQUFPRSxJQUFJLElBQUlDLE1BQU0sSUFBSTtRQUN2QixRQUFRQSxNQUFNLENBQUNDLElBQUk7VUFDakIsS0FBS2pCLEtBQUs7WUFDUixJQUFJLENBQUNrQixXQUFXLENBQUNGLE1BQU0sQ0FBQztZQUN4QjtZQUNBO1lBQ0E7WUFDQSxJQUNFQSxNQUFNLENBQUNHLFFBQVEsQ0FBQ0MscUJBQXFCLEtBQUtDLFNBQVMsSUFDbkRMLE1BQU0sQ0FBQ0csUUFBUSxDQUFDRyxVQUFVLEVBQzFCO2NBQ0EsT0FBT1AsSUFBSSxDQUFDQyxNQUFNLENBQUM7WUFD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
@@ -1 +1 @@
1
- {"version":3,"file":"GCPolicy.d.ts","sourceRoot":"","sources":["../../src/state/GCPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,UAAU,MAAM,6BAA6B,CAAC;AAErD,qBAAa,QAAS,YAAW,WAAW;IAC1C,SAAS,CAAC,aAAa,sBAA6B;IACpD,SAAS,CAAC,WAAW,mCAA0C;IAC/D,SAAS,CAAC,UAAU,cAAqB;IACzC,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE,CAAM;IAEvC,UAAkB,UAAU,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IAC7D,UAAkB,UAAU,EAAE,UAAU,CAAC;IACzC,UAAkB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;gBAEtD,EAEV,UAA0B,EAC1B,gBAAoB,EACpB,SAAS,GACV,GAAE,SAAc;IAUjB,IAAI,CAAC,UAAU,EAAE,UAAU;IAQ3B,OAAO;IAIP,cAAc,CAAC,EAAE,GAAG,EAAE,KAAU,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE;IAiD1E,SAAS,CAAC,SAAS,CAAC,EAClB,SAAS,EACT,SAAS,GACV,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,MAAM;IASV,SAAS,CAAC,QAAQ;IAiDlB;;;OAGG;IACH,SAAS,CAAC,YAAY,CACpB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,EAClC,OAAO,CAAC,EAAE,kBAAkB;CAQ/B;AAED,qBAAa,gBAAiB,YAAW,WAAW;IAElD,IAAI;IAEJ,OAAO;IACP,cAAc;CAGf;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,KAAK,MAAM,CAAC;CACd;AACD,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE,GAAG,MAAM,MAAM,IAAI,CAAC;CAC5E;AACD,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,OAAO,IAAI,IAAI,CAAC;CACjB"}
1
+ {"version":3,"file":"GCPolicy.d.ts","sourceRoot":"","sources":["../../src/state/GCPolicy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAGzD,OAAO,UAAU,MAAM,6BAA6B,CAAC;AAErD,qBAAa,QAAS,YAAW,WAAW;IAC1C,SAAS,CAAC,aAAa,sBAA6B;IACpD,SAAS,CAAC,WAAW,mCAA0C;IAC/D,SAAS,CAAC,UAAU,cAAqB;IACzC,SAAS,CAAC,SAAS,EAAE,UAAU,EAAE,CAAM;IAEvC,UAAkB,UAAU,EAAE,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC;IAC7D,UAAkB,UAAU,EAAE,UAAU,CAAC;IACzC,UAAkB,OAAO,EAAE,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;gBAEtD,EAEV,UAA0B,EAC1B,gBAAoB,EACpB,SAAS,GACV,GAAE,SAAc;IAUjB,IAAI,CAAC,UAAU,EAAE,UAAU;IAW3B,OAAO;IAIP,cAAc,CAAC,EAAE,GAAG,EAAE,KAAU,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE;IAiD1E,SAAS,CAAC,SAAS,CAAC,EAClB,SAAS,EACT,SAAS,GACV,EAAE;QACD,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,MAAM;IASV,SAAS,CAAC,QAAQ;IAiDlB;;;OAGG;IACH,SAAS,CAAC,YAAY,CACpB,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,EAClC,OAAO,CAAC,EAAE,kBAAkB;CAQ/B;AAED,qBAAa,gBAAiB,YAAW,WAAW;IAElD,IAAI;IAEJ,OAAO;IACP,cAAc;CAGf;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,MAAM,CAAC;KACnB,KAAK,MAAM,CAAC;CACd;AACD,MAAM,WAAW,cAAc;IAC7B,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,EAAE,CAAA;KAAE,GAAG,MAAM,MAAM,IAAI,CAAC;CAC5E;AACD,MAAM,WAAW,WAAW;IAC1B,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,CAAC,UAAU,EAAE,UAAU,GAAG,IAAI,CAAC;IACnC,OAAO,IAAI,IAAI,CAAC;CACjB"}
@@ -25,6 +25,9 @@ export class GCPolicy {
25
25
  timeout: 1000
26
26
  });
27
27
  }, this.options.intervalMS);
28
+ if (typeof this.intervalId === 'object' && 'unref' in this.intervalId) {
29
+ this.intervalId.unref();
30
+ }
28
31
  }
29
32
  cleanup() {
30
33
  clearInterval(this.intervalId);
@@ -156,4 +159,4 @@ export class ImmortalGCPolicy {
156
159
  return () => () => undefined;
157
160
  }
158
161
  }
159
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJHQyIsIkdDUG9saWN5IiwiY29uc3RydWN0b3IiLCJpbnRlcnZhbE1TIiwiZXhwaXJ5TXVsdGlwbGllciIsImV4cGlyZXNBdCIsImVuZHBvaW50Q291bnQiLCJNYXAiLCJlbnRpdHlDb3VudCIsImVuZHBvaW50c1EiLCJTZXQiLCJlbnRpdGllc1EiLCJiaW5kIiwib3B0aW9ucyIsImluaXQiLCJjb250cm9sbGVyIiwiaW50ZXJ2YWxJZCIsInNldEludGVydmFsIiwiaWRsZUNhbGxiYWNrIiwicnVuU3dlZXAiLCJ0aW1lb3V0IiwiY2xlYW51cCIsImNsZWFySW50ZXJ2YWwiLCJjcmVhdGVDb3VudFJlZiIsImtleSIsInBhdGhzIiwiX3RoaXMkZW5kcG9pbnRDb3VudCRnIiwic2V0IiwiZ2V0IiwiZm9yRWFjaCIsInBhdGgiLCJfaW5zdGFuY2VDb3VudCRnZXQiLCJwayIsImhhcyIsImluc3RhbmNlQ291bnQiLCJjdXJyZW50Q291bnQiLCJ1bmRlZmluZWQiLCJkZWxldGUiLCJhZGQiLCJwdXNoIiwiZmV0Y2hlZEF0IiwiTWF0aCIsIm1heCIsInN0YXRlIiwiZ2V0U3RhdGUiLCJlbnRpdGllcyIsImVuZHBvaW50cyIsIm5vdyIsIkRhdGUiLCJuZXh0RW5kcG9pbnRzUSIsIl9zdGF0ZSRtZXRhJGtleSIsIm1ldGEiLCJkYXRlIiwibmV4dEVudGl0aWVzUSIsIl90aGlzJGVudGl0eUNvdW50JGdldCIsIl9zdGF0ZSRlbnRpdGllc01ldGEkcCIsIl9zdGF0ZSRlbnRpdGllc01ldGEkcDIiLCJlbnRpdGllc01ldGEiLCJsZW5ndGgiLCJkaXNwYXRjaCIsInR5cGUiLCJjYWxsYmFjayIsInJlcXVlc3RJZGxlQ2FsbGJhY2siLCJJbW1vcnRhbEdDUG9saWN5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3N0YXRlL0dDUG9saWN5LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgRW50aXR5UGF0aCB9IGZyb20gJ0BkYXRhLWNsaWVudC9ub3JtYWxpenInO1xuXG5pbXBvcnQgeyBHQyB9IGZyb20gJy4uL2FjdGlvblR5cGVzLmpzJztcbmltcG9ydCBDb250cm9sbGVyIGZyb20gJy4uL2NvbnRyb2xsZXIvQ29udHJvbGxlci5qcyc7XG5cbmV4cG9ydCBjbGFzcyBHQ1BvbGljeSBpbXBsZW1lbnRzIEdDSW50ZXJmYWNlIHtcbiAgcHJvdGVjdGVkIGVuZHBvaW50Q291bnQgPSBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpO1xuICBwcm90ZWN0ZWQgZW50aXR5Q291bnQgPSBuZXcgTWFwPHN0cmluZywgTWFwPHN0cmluZywgbnVtYmVyPj4oKTtcbiAgcHJvdGVjdGVkIGVuZHBvaW50c1EgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgcHJvdGVjdGVkIGVudGl0aWVzUTogRW50aXR5UGF0aFtdID0gW107XG5cbiAgZGVjbGFyZSBwcm90ZWN0ZWQgaW50ZXJ2YWxJZDogUmV0dXJuVHlwZTx0eXBlb2Ygc2V0SW50ZXJ2YWw+O1xuICBkZWNsYXJlIHByb3RlY3RlZCBjb250cm9sbGVyOiBDb250cm9sbGVyO1xuICBkZWNsYXJlIHByb3RlY3RlZCBvcHRpb25zOiBSZXF1aXJlZDxPbWl0PEdDT3B0aW9ucywgJ2V4cGlyZXNBdCc+PjtcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgLy8gZXZlcnkgNSBtaW5cbiAgICBpbnRlcnZhbE1TID0gNjAgKiAxMDAwICogNSxcbiAgICBleHBpcnlNdWx0aXBsaWVyID0gMixcbiAgICBleHBpcmVzQXQsXG4gIH06IEdDT3B0aW9ucyA9IHt9KSB7XG4gICAgaWYgKGV4cGlyZXNBdCkge1xuICAgICAgdGhpcy5leHBpcmVzQXQgPSBleHBpcmVzQXQuYmluZCh0aGlzKTtcbiAgICB9XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgaW50ZXJ2YWxNUyxcbiAgICAgIGV4cGlyeU11bHRpcGxpZXIsXG4gICAgfTtcbiAgfVxuXG4gIGluaXQoY29udHJvbGxlcjogQ29udHJvbGxlcikge1xuICAgIHRoaXMuY29udHJvbGxlciA9IGNvbnRyb2xsZXI7XG5cbiAgICB0aGlzLmludGVydmFsSWQgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLmlkbGVDYWxsYmFjaygoKSA9PiB0aGlzLnJ1blN3ZWVwKCksIHsgdGltZW91dDogMTAwMCB9KTtcbiAgICB9LCB0aGlzLm9wdGlvbnMuaW50ZXJ2YWxNUyk7XG4gIH1cblxuICBjbGVhbnVwKCkge1xuICAgIGNsZWFySW50ZXJ2YWwodGhpcy5pbnRlcnZhbElkKTtcbiAgfVxuXG4gIGNyZWF0ZUNvdW50UmVmKHsga2V5LCBwYXRocyA9IFtdIH06IHsga2V5Pzogc3RyaW5nOyBwYXRocz86IEVudGl0eVBhdGhbXSB9KSB7XG4gICAgLy8gaW5jcmVtZW50XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGlmIChrZXkpXG4gICAgICAgIHRoaXMuZW5kcG9pbnRDb3VudC5zZXQoa2V5LCAodGhpcy5lbmRwb2ludENvdW50LmdldChrZXkpID8/IDApICsgMSk7XG4gICAgICBwYXRocy5mb3JFYWNoKHBhdGggPT4ge1xuICAgICAgICBjb25zdCB7IGtleSwgcGsgfSA9IHBhdGg7XG4gICAgICAgIGlmICghdGhpcy5lbnRpdHlDb3VudC5oYXMoa2V5KSkge1xuICAgICAgICAgIHRoaXMuZW50aXR5Q291bnQuc2V0KGtleSwgbmV3IE1hcDxzdHJpbmcsIG51bWJlcj4oKSk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgaW5zdGFuY2VDb3VudCA9IHRoaXMuZW50aXR5Q291bnQuZ2V0KGtleSkhO1xuICAgICAgICBpbnN0YW5jZUNvdW50LnNldChwaywgKGluc3RhbmNlQ291bnQuZ2V0KHBrKSA/PyAwKSArIDEpO1xuICAgICAgfSk7XG5cbiAgICAgIC8vIGRlY3JlbWVudFxuICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgaWYgKGtleSkge1xuICAgICAgICAgIGNvbnN0IGN1cnJlbnRDb3VudCA9IHRoaXMuZW5kcG9pbnRDb3VudC5nZXQoa2V5KSE7XG4gICAgICAgICAgaWYgKGN1cnJlbnRDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudENvdW50IDw9IDEpIHtcbiAgICAgICAgICAgICAgdGhpcy5lbmRwb2ludENvdW50LmRlbGV0ZShrZXkpO1xuICAgICAgICAgICAgICAvLyBxdWV1ZSBmb3IgY2xlYW51cFxuICAgICAgICAgICAgICB0aGlzLmVuZHBvaW50c1EuYWRkKGtleSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLmVuZHBvaW50Q291bnQuc2V0KGtleSwgY3VycmVudENvdW50IC0gMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBhdGhzLmZvckVhY2gocGF0aCA9PiB7XG4gICAgICAgICAgY29uc3QgeyBrZXksIHBrIH0gPSBwYXRoO1xuICAgICAgICAgIGlmICghdGhpcy5lbnRpdHlDb3VudC5oYXMoa2V5KSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb25zdCBpbnN0YW5jZUNvdW50ID0gdGhpcy5lbnRpdHlDb3VudC5nZXQoa2V5KSE7XG4gICAgICAgICAgY29uc3QgZW50aXR5Q291bnQgPSBpbnN0YW5jZUNvdW50LmdldChwaykhO1xuICAgICAgICAgIGlmIChlbnRpdHlDb3VudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBpZiAoZW50aXR5Q291bnQgPD0gMSkge1xuICAgICAgICAgICAgICBpbnN0YW5jZUNvdW50LmRlbGV0ZShwayk7XG4gICAgICAgICAgICAgIC8vIHF1ZXVlIGZvciBjbGVhbnVwXG4gICAgICAgICAgICAgIHRoaXMuZW50aXRpZXNRLnB1c2gocGF0aCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBpbnN0YW5jZUNvdW50LnNldChwaywgZW50aXR5Q291bnQgLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9O1xuICB9XG5cbiAgcHJvdGVjdGVkIGV4cGlyZXNBdCh7XG4gICAgZmV0Y2hlZEF0LFxuICAgIGV4cGlyZXNBdCxcbiAgfToge1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGRhdGU6IG51bWJlcjtcbiAgICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgfSk6IG51bWJlciB7XG4gICAgcmV0dXJuIChcbiAgICAgIE1hdGgubWF4KFxuICAgICAgICAoZXhwaXJlc0F0IC0gZmV0Y2hlZEF0KSAqIHRoaXMub3B0aW9ucy5leHBpcnlNdWx0aXBsaWVyLFxuICAgICAgICAxMjAwMDAsXG4gICAgICApICsgZmV0Y2hlZEF0XG4gICAgKTtcbiAgfVxuXG4gIHByb3RlY3RlZCBydW5Td2VlcCgpIHtcbiAgICBjb25zdCBzdGF0ZSA9IHRoaXMuY29udHJvbGxlci5nZXRTdGF0ZSgpO1xuICAgIGNvbnN0IGVudGl0aWVzOiBFbnRpdHlQYXRoW10gPSBbXTtcbiAgICBjb25zdCBlbmRwb2ludHM6IHN0cmluZ1tdID0gW107XG4gICAgY29uc3Qgbm93ID0gRGF0ZS5ub3coKTtcblxuICAgIGNvbnN0IG5leHRFbmRwb2ludHNRID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgZm9yIChjb25zdCBrZXkgb2YgdGhpcy5lbmRwb2ludHNRKSB7XG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmVuZHBvaW50Q291bnQuaGFzKGtleSkgJiZcbiAgICAgICAgdGhpcy5leHBpcmVzQXQoXG4gICAgICAgICAgc3RhdGUubWV0YVtrZXldID8/IHtcbiAgICAgICAgICAgIGZldGNoZWRBdDogMCxcbiAgICAgICAgICAgIGRhdGU6IDAsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgKSA8IG5vd1xuICAgICAgKSB7XG4gICAgICAgIGVuZHBvaW50cy5wdXNoKGtleSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0RW5kcG9pbnRzUS5hZGQoa2V5KTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5lbmRwb2ludHNRID0gbmV4dEVuZHBvaW50c1E7XG5cbiAgICBjb25zdCBuZXh0RW50aXRpZXNROiBFbnRpdHlQYXRoW10gPSBbXTtcbiAgICBmb3IgKGNvbnN0IHBhdGggb2YgdGhpcy5lbnRpdGllc1EpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMuZW50aXR5Q291bnQuZ2V0KHBhdGgua2V5KT8uaGFzKHBhdGgucGspICYmXG4gICAgICAgIHRoaXMuZXhwaXJlc0F0KFxuICAgICAgICAgIHN0YXRlLmVudGl0aWVzTWV0YVtwYXRoLmtleV0/LltwYXRoLnBrXSA/PyB7XG4gICAgICAgICAgICBmZXRjaGVkQXQ6IDAsXG4gICAgICAgICAgICBkYXRlOiAwLFxuICAgICAgICAgICAgZXhwaXJlc0F0OiAwLFxuICAgICAgICAgIH0sXG4gICAgICAgICkgPCBub3dcbiAgICAgICkge1xuICAgICAgICBlbnRpdGllcy5wdXNoKHBhdGgpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV4dEVudGl0aWVzUS5wdXNoKHBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmVudGl0aWVzUSA9IG5leHRFbnRpdGllc1E7XG5cbiAgICBpZiAoZW50aXRpZXMubGVuZ3RoIHx8IGVuZHBvaW50cy5sZW5ndGgpIHtcbiAgICAgIHRoaXMuY29udHJvbGxlci5kaXNwYXRjaCh7IHR5cGU6IEdDLCBlbnRpdGllcywgZW5kcG9pbnRzIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKiBDYWxscyB0aGUgY2FsbGJhY2sgd2hlbiBjbGllbnQgaXMgbm90ICdidXN5JyB3aXRoIGhpZ2ggcHJpb3JpdHkgaW50ZXJhY3Rpb24gdGFza3NcbiAgICpcbiAgICogT3ZlcnJpZGUgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGltcGxlbWVudGF0aW9uc1xuICAgKi9cbiAgcHJvdGVjdGVkIGlkbGVDYWxsYmFjayhcbiAgICBjYWxsYmFjazogKC4uLmFyZ3M6IGFueVtdKSA9PiB2b2lkLFxuICAgIG9wdGlvbnM/OiBJZGxlUmVxdWVzdE9wdGlvbnMsXG4gICkge1xuICAgIGlmICh0eXBlb2YgcmVxdWVzdElkbGVDYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgcmVxdWVzdElkbGVDYWxsYmFjayhjYWxsYmFjaywgb3B0aW9ucyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbGxiYWNrKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBJbW1vcnRhbEdDUG9saWN5IGltcGxlbWVudHMgR0NJbnRlcmZhY2Uge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIGluaXQoKSB7fVxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIGNsZWFudXAoKSB7fVxuICBjcmVhdGVDb3VudFJlZigpIHtcbiAgICByZXR1cm4gKCkgPT4gKCkgPT4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR0NPcHRpb25zIHtcbiAgaW50ZXJ2YWxNUz86IG51bWJlcjtcbiAgZXhwaXJ5TXVsdGlwbGllcj86IG51bWJlcjtcbiAgZXhwaXJlc0F0PzogKG1ldGE6IHtcbiAgICBleHBpcmVzQXQ6IG51bWJlcjtcbiAgICBkYXRlOiBudW1iZXI7XG4gICAgZmV0Y2hlZEF0OiBudW1iZXI7XG4gIH0pID0+IG51bWJlcjtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlQ291bnRSZWYge1xuICAoeyBrZXksIHBhdGhzIH06IHsga2V5Pzogc3RyaW5nOyBwYXRocz86IEVudGl0eVBhdGhbXSB9KTogKCkgPT4gKCkgPT4gdm9pZDtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgR0NJbnRlcmZhY2Uge1xuICBjcmVhdGVDb3VudFJlZjogQ3JlYXRlQ291bnRSZWY7XG4gIGluaXQoY29udHJvbGxlcjogQ29udHJvbGxlcik6IHZvaWQ7XG4gIGNs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
162
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJHQyIsIkdDUG9saWN5IiwiY29uc3RydWN0b3IiLCJpbnRlcnZhbE1TIiwiZXhwaXJ5TXVsdGlwbGllciIsImV4cGlyZXNBdCIsImVuZHBvaW50Q291bnQiLCJNYXAiLCJlbnRpdHlDb3VudCIsImVuZHBvaW50c1EiLCJTZXQiLCJlbnRpdGllc1EiLCJiaW5kIiwib3B0aW9ucyIsImluaXQiLCJjb250cm9sbGVyIiwiaW50ZXJ2YWxJZCIsInNldEludGVydmFsIiwiaWRsZUNhbGxiYWNrIiwicnVuU3dlZXAiLCJ0aW1lb3V0IiwidW5yZWYiLCJjbGVhbnVwIiwiY2xlYXJJbnRlcnZhbCIsImNyZWF0ZUNvdW50UmVmIiwia2V5IiwicGF0aHMiLCJfdGhpcyRlbmRwb2ludENvdW50JGciLCJzZXQiLCJnZXQiLCJmb3JFYWNoIiwicGF0aCIsIl9pbnN0YW5jZUNvdW50JGdldCIsInBrIiwiaGFzIiwiaW5zdGFuY2VDb3VudCIsImN1cnJlbnRDb3VudCIsInVuZGVmaW5lZCIsImRlbGV0ZSIsImFkZCIsInB1c2giLCJmZXRjaGVkQXQiLCJNYXRoIiwibWF4Iiwic3RhdGUiLCJnZXRTdGF0ZSIsImVudGl0aWVzIiwiZW5kcG9pbnRzIiwibm93IiwiRGF0ZSIsIm5leHRFbmRwb2ludHNRIiwiX3N0YXRlJG1ldGEka2V5IiwibWV0YSIsImRhdGUiLCJuZXh0RW50aXRpZXNRIiwiX3RoaXMkZW50aXR5Q291bnQkZ2V0IiwiX3N0YXRlJGVudGl0aWVzTWV0YSRwIiwiX3N0YXRlJGVudGl0aWVzTWV0YSRwMiIsImVudGl0aWVzTWV0YSIsImxlbmd0aCIsImRpc3BhdGNoIiwidHlwZSIsImNhbGxiYWNrIiwicmVxdWVzdElkbGVDYWxsYmFjayIsIkltbW9ydGFsR0NQb2xpY3kiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3RhdGUvR0NQb2xpY3kudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBFbnRpdHlQYXRoIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB7IEdDIH0gZnJvbSAnLi4vYWN0aW9uVHlwZXMuanMnO1xuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcblxuZXhwb3J0IGNsYXNzIEdDUG9saWN5IGltcGxlbWVudHMgR0NJbnRlcmZhY2Uge1xuICBwcm90ZWN0ZWQgZW5kcG9pbnRDb3VudCA9IG5ldyBNYXA8c3RyaW5nLCBudW1iZXI+KCk7XG4gIHByb3RlY3RlZCBlbnRpdHlDb3VudCA9IG5ldyBNYXA8c3RyaW5nLCBNYXA8c3RyaW5nLCBudW1iZXI+PigpO1xuICBwcm90ZWN0ZWQgZW5kcG9pbnRzUSA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICBwcm90ZWN0ZWQgZW50aXRpZXNROiBFbnRpdHlQYXRoW10gPSBbXTtcblxuICBkZWNsYXJlIHByb3RlY3RlZCBpbnRlcnZhbElkOiBSZXR1cm5UeXBlPHR5cGVvZiBzZXRJbnRlcnZhbD47XG4gIGRlY2xhcmUgcHJvdGVjdGVkIGNvbnRyb2xsZXI6IENvbnRyb2xsZXI7XG4gIGRlY2xhcmUgcHJvdGVjdGVkIG9wdGlvbnM6IFJlcXVpcmVkPE9taXQ8R0NPcHRpb25zLCAnZXhwaXJlc0F0Jz4+O1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICAvLyBldmVyeSA1IG1pblxuICAgIGludGVydmFsTVMgPSA2MCAqIDEwMDAgKiA1LFxuICAgIGV4cGlyeU11bHRpcGxpZXIgPSAyLFxuICAgIGV4cGlyZXNBdCxcbiAgfTogR0NPcHRpb25zID0ge30pIHtcbiAgICBpZiAoZXhwaXJlc0F0KSB7XG4gICAgICB0aGlzLmV4cGlyZXNBdCA9IGV4cGlyZXNBdC5iaW5kKHRoaXMpO1xuICAgIH1cbiAgICB0aGlzLm9wdGlvbnMgPSB7XG4gICAgICBpbnRlcnZhbE1TLFxuICAgICAgZXhwaXJ5TXVsdGlwbGllcixcbiAgICB9O1xuICB9XG5cbiAgaW5pdChjb250cm9sbGVyOiBDb250cm9sbGVyKSB7XG4gICAgdGhpcy5jb250cm9sbGVyID0gY29udHJvbGxlcjtcblxuICAgIHRoaXMuaW50ZXJ2YWxJZCA9IHNldEludGVydmFsKCgpID0+IHtcbiAgICAgIHRoaXMuaWRsZUNhbGxiYWNrKCgpID0+IHRoaXMucnVuU3dlZXAoKSwgeyB0aW1lb3V0OiAxMDAwIH0pO1xuICAgIH0sIHRoaXMub3B0aW9ucy5pbnRlcnZhbE1TKTtcbiAgICBpZiAodHlwZW9mIHRoaXMuaW50ZXJ2YWxJZCA9PT0gJ29iamVjdCcgJiYgJ3VucmVmJyBpbiB0aGlzLmludGVydmFsSWQpIHtcbiAgICAgIHRoaXMuaW50ZXJ2YWxJZC51bnJlZigpO1xuICAgIH1cbiAgfVxuXG4gIGNsZWFudXAoKSB7XG4gICAgY2xlYXJJbnRlcnZhbCh0aGlzLmludGVydmFsSWQpO1xuICB9XG5cbiAgY3JlYXRlQ291bnRSZWYoeyBrZXksIHBhdGhzID0gW10gfTogeyBrZXk/OiBzdHJpbmc7IHBhdGhzPzogRW50aXR5UGF0aFtdIH0pIHtcbiAgICAvLyBpbmNyZW1lbnRcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKGtleSlcbiAgICAgICAgdGhpcy5lbmRwb2ludENvdW50LnNldChrZXksICh0aGlzLmVuZHBvaW50Q291bnQuZ2V0KGtleSkgPz8gMCkgKyAxKTtcbiAgICAgIHBhdGhzLmZvckVhY2gocGF0aCA9PiB7XG4gICAgICAgIGNvbnN0IHsga2V5LCBwayB9ID0gcGF0aDtcbiAgICAgICAgaWYgKCF0aGlzLmVudGl0eUNvdW50LmhhcyhrZXkpKSB7XG4gICAgICAgICAgdGhpcy5lbnRpdHlDb3VudC5zZXQoa2V5LCBuZXcgTWFwPHN0cmluZywgbnVtYmVyPigpKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBpbnN0YW5jZUNvdW50ID0gdGhpcy5lbnRpdHlDb3VudC5nZXQoa2V5KSE7XG4gICAgICAgIGluc3RhbmNlQ291bnQuc2V0KHBrLCAoaW5zdGFuY2VDb3VudC5nZXQocGspID8/IDApICsgMSk7XG4gICAgICB9KTtcblxuICAgICAgLy8gZGVjcmVtZW50XG4gICAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgICBpZiAoa2V5KSB7XG4gICAgICAgICAgY29uc3QgY3VycmVudENvdW50ID0gdGhpcy5lbmRwb2ludENvdW50LmdldChrZXkpITtcbiAgICAgICAgICBpZiAoY3VycmVudENvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50Q291bnQgPD0gMSkge1xuICAgICAgICAgICAgICB0aGlzLmVuZHBvaW50Q291bnQuZGVsZXRlKGtleSk7XG4gICAgICAgICAgICAgIC8vIHF1ZXVlIGZvciBjbGVhbnVwXG4gICAgICAgICAgICAgIHRoaXMuZW5kcG9pbnRzUS5hZGQoa2V5KTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMuZW5kcG9pbnRDb3VudC5zZXQoa2V5LCBjdXJyZW50Q291bnQgLSAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGF0aHMuZm9yRWFjaChwYXRoID0+IHtcbiAgICAgICAgICBjb25zdCB7IGtleSwgcGsgfSA9IHBhdGg7XG4gICAgICAgICAgaWYgKCF0aGlzLmVudGl0eUNvdW50LmhhcyhrZXkpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICAgIGNvbnN0IGluc3RhbmNlQ291bnQgPSB0aGlzLmVudGl0eUNvdW50LmdldChrZXkpITtcbiAgICAgICAgICBjb25zdCBlbnRpdHlDb3VudCA9IGluc3RhbmNlQ291bnQuZ2V0KHBrKSE7XG4gICAgICAgICAgaWYgKGVudGl0eUNvdW50ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGlmIChlbnRpdHlDb3VudCA8PSAxKSB7XG4gICAgICAgICAgICAgIGluc3RhbmNlQ291bnQuZGVsZXRlKHBrKTtcbiAgICAgICAgICAgICAgLy8gcXVldWUgZm9yIGNsZWFudXBcbiAgICAgICAgICAgICAgdGhpcy5lbnRpdGllc1EucHVzaChwYXRoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIGluc3RhbmNlQ291bnQuc2V0KHBrLCBlbnRpdHlDb3VudCAtIDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgICB9O1xuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgZXhwaXJlc0F0KHtcbiAgICBmZXRjaGVkQXQsXG4gICAgZXhwaXJlc0F0LFxuICB9OiB7XG4gICAgZXhwaXJlc0F0OiBudW1iZXI7XG4gICAgZGF0ZTogbnVtYmVyO1xuICAgIGZldGNoZWRBdDogbnVtYmVyO1xuICB9KTogbnVtYmVyIHtcbiAgICByZXR1cm4gKFxuICAgICAgTWF0aC5tYXgoXG4gICAgICAgIChleHBpcmVzQXQgLSBmZXRjaGVkQXQpICogdGhpcy5vcHRpb25zLmV4cGlyeU11bHRpcGxpZXIsXG4gICAgICAgIDEyMDAwMCxcbiAgICAgICkgKyBmZXRjaGVkQXRcbiAgICApO1xuICB9XG5cbiAgcHJvdGVjdGVkIHJ1blN3ZWVwKCkge1xuICAgIGNvbnN0IHN0YXRlID0gdGhpcy5jb250cm9sbGVyLmdldFN0YXRlKCk7XG4gICAgY29uc3QgZW50aXRpZXM6IEVudGl0eVBhdGhbXSA9IFtdO1xuICAgIGNvbnN0IGVuZHBvaW50czogc3RyaW5nW10gPSBbXTtcbiAgICBjb25zdCBub3cgPSBEYXRlLm5vdygpO1xuXG4gICAgY29uc3QgbmV4dEVuZHBvaW50c1EgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiB0aGlzLmVuZHBvaW50c1EpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMuZW5kcG9pbnRDb3VudC5oYXMoa2V5KSAmJlxuICAgICAgICB0aGlzLmV4cGlyZXNBdChcbiAgICAgICAgICBzdGF0ZS5tZXRhW2tleV0gPz8ge1xuICAgICAgICAgICAgZmV0Y2hlZEF0OiAwLFxuICAgICAgICAgICAgZGF0ZTogMCxcbiAgICAgICAgICAgIGV4cGlyZXNBdDogMCxcbiAgICAgICAgICB9LFxuICAgICAgICApIDwgbm93XG4gICAgICApIHtcbiAgICAgICAgZW5kcG9pbnRzLnB1c2goa2V5KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRFbmRwb2ludHNRLmFkZChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmVuZHBvaW50c1EgPSBuZXh0RW5kcG9pbnRzUTtcblxuICAgIGNvbnN0IG5leHRFbnRpdGllc1E6IEVudGl0eVBhdGhbXSA9IFtdO1xuICAgIGZvciAoY29uc3QgcGF0aCBvZiB0aGlzLmVudGl0aWVzUSkge1xuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5lbnRpdHlDb3VudC5nZXQocGF0aC5rZXkpPy5oYXMocGF0aC5waykgJiZcbiAgICAgICAgdGhpcy5leHBpcmVzQXQoXG4gICAgICAgICAgc3RhdGUuZW50aXRpZXNNZXRhW3BhdGgua2V5XT8uW3BhdGgucGtdID8/IHtcbiAgICAgICAgICAgIGZldGNoZWRBdDogMCxcbiAgICAgICAgICAgIGRhdGU6IDAsXG4gICAgICAgICAgICBleHBpcmVzQXQ6IDAsXG4gICAgICAgICAgfSxcbiAgICAgICAgKSA8IG5vd1xuICAgICAgKSB7XG4gICAgICAgIGVudGl0aWVzLnB1c2gocGF0aCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBuZXh0RW50aXRpZXNRLnB1c2gocGF0aCk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuZW50aXRpZXNRID0gbmV4dEVudGl0aWVzUTtcblxuICAgIGlmIChlbnRpdGllcy5sZW5ndGggfHwgZW5kcG9pbnRzLmxlbmd0aCkge1xuICAgICAgdGhpcy5jb250cm9sbGVyLmRpc3BhdGNoKHsgdHlwZTogR0MsIGVudGl0aWVzLCBlbmRwb2ludHMgfSk7XG4gICAgfVxuICB9XG5cbiAgLyoqIENhbGxzIHRoZSBjYWxsYmFjayB3aGVuIGNsaWVudCBpcyBub3QgJ2J1c3knIHdpdGggaGlnaCBwcmlvcml0eSBpbnRlcmFjdGlvbiB0YXNrc1xuICAgKlxuICAgKiBPdmVycmlkZSBmb3IgcGxhdGZvcm0tc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zXG4gICAqL1xuICBwcm90ZWN0ZWQgaWRsZUNhbGxiYWNrKFxuICAgIGNhbGxiYWNrOiAoLi4uYXJnczogYW55W10pID0+IHZvaWQsXG4gICAgb3B0aW9ucz86IElkbGVSZXF1ZXN0T3B0aW9ucyxcbiAgKSB7XG4gICAgaWYgKHR5cGVvZiByZXF1ZXN0SWRsZUNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXF1ZXN0SWRsZUNhbGxiYWNrKGNhbGxiYWNrLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIEltbW9ydGFsR0NQb2xpY3kgaW1wbGVtZW50cyBHQ0ludGVyZmFjZSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgaW5pdCgpIHt9XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgY2xlYW51cCgpIHt9XG4gIGNyZWF0ZUNvdW50UmVmKCkge1xuICAgIHJldHVybiAoKSA9PiAoKSA9PiB1bmRlZmluZWQ7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBHQ09wdGlvbnMge1xuICBpbnRlcnZhbE1TPzogbnVtYmVyO1xuICBleHBpcnlNdWx0aXBsaWVyPzogbnVtYmVyO1xuICBleHBpcmVzQXQ/OiAobWV0YToge1xuICAgIGV4cGlyZXNBdDogbnVtYmVyO1xuICAgIGRhdGU6IG51bWJlcjtcbiAgICBmZXRjaGVkQXQ6IG51bWJlcjtcbiAgfSkgPT4gbnVtYmVyO1xufVxuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVDb3VudFJlZiB7XG4gICh7IGtleSwgcGF0aHMgfTogeyBrZXk/OiBzdHJpbmc7IHBhdGhzPzogRW50aXR5UGF0aFtdIH0pOiAoKSA9PiAoKSA9PiB2b2lkO1xufVxuZXhwb3J0IGludGVyZmFjZSBHQ0ludGVyZmFjZSB7XG4gIGNyZWF0ZUNvdW50UmVmOiBDcmVhdGVDb3VudFJlZjtcbiAgaW5pdChjb250cm9sbGVyOiBDb250cm9sbGVyKTogdm9pZDtcbiAgY2xlYW51cCgpOiB2b2lkO1xufVxuIl0sIm1hcHBpbmdzIjoiQUFFQSxTQUFTQSxFQUFFLFFBQVEsbUJBQW1CO0FBR3RDLE9BQU8sTUFBTUMsUUFBUSxDQUF3QjtFQVUzQ0MsV0FBV0EsQ0FBQztJQUNWO0lBQ0FDLFVBQVUsR0FBRyxFQUFFLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDMUJDLGdCQUFnQixHQUFHLENBQUM7SUFDcEJDO0VBQ1MsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQUEsS0FkVEMsYUFBYSxHQUFHLElBQUlDLEdBQUcsQ0FBaUIsQ0FBQztJQUFBLEtBQ3pDQyxXQUFXLEdBQUcsSUFBSUQsR0FBRyxDQUE4QixDQUFDO0lBQUEsS0FDcERFLFVBQVUsR0FBRyxJQUFJQyxHQUFHLENBQVMsQ0FBQztJQUFBLEtBQzlCQyxTQUFTLEdBQWlCLEVBQUU7SUFZcEMsSUFBSU4sU0FBUyxFQUFFO01BQ2IsSUFBSSxDQUFDQSxTQUFTLEdBQUdBLFNBQVMsQ0FBQ08sSUFBSSxDQUFDLElBQUksQ0FBQztJQUN2QztJQUNBLElBQUksQ0FBQ0MsT0FBTyxHQUFHO01BQ2JWLFVBQVU7TUFDVkM7SUFDRixDQUFDO0VBQ0g7RUFFQVUsSUFBSUEsQ0FBQ0MsVUFBc0IsRUFBRTtJQUMzQixJQUFJLENBQUNBLFVBQVUsR0FBR0EsVUFBVTtJQUU1QixJQUFJLENBQUNDLFVBQVUsR0FBR0MsV0FBVyxDQUFDLE1BQU07TUFDbEMsSUFBSSxDQUFDQyxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUNDLFFBQVEsQ0FBQyxDQUFDLEVBQUU7UUFBRUMsT0FBTyxFQUFFO01BQUssQ0FBQyxDQUFDO0lBQzdELENBQUMsRUFBRSxJQUFJLENBQUNQLE9BQU8sQ0FBQ1YsVUFBVSxDQUFDO0lBQzNCLElBQUks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
@@ -6,7 +6,7 @@ export declare function expireReducer(state: State<unknown>, action: ExpireAllAc
6
6
  readonly fetchedAt: number;
7
7
  readonly expiresAt: number;
8
8
  readonly prevExpiresAt?: number;
9
- readonly error?: import("packages/normalizr/lib/index.js").ErrorTypes;
9
+ readonly error?: import("@data-client/normalizr").ErrorTypes;
10
10
  readonly invalidated?: boolean;
11
11
  readonly errorPolicy?: "hard" | "soft" | undefined;
12
12
  };
@@ -19,7 +19,7 @@ export declare function expireReducer(state: State<unknown>, action: ExpireAllAc
19
19
  endpoints: {
20
20
  readonly [key: string]: unknown | import("../../types.js").PK[] | import("../../types.js").PK | undefined;
21
21
  };
22
- indexes: import("packages/normalizr/lib/interface.js").NormalizedIndex;
22
+ indexes: import("@data-client/normalizr").NormalizedIndex;
23
23
  entitiesMeta: {
24
24
  readonly [entityKey: string]: {
25
25
  readonly [pk: string]: {
@@ -9,7 +9,7 @@ export declare function invalidateReducer(state: State<unknown>, action: Invalid
9
9
  readonly fetchedAt: number;
10
10
  readonly expiresAt: number;
11
11
  readonly prevExpiresAt?: number;
12
- readonly error?: import("packages/normalizr/lib/index.js").ErrorTypes;
12
+ readonly error?: import("@data-client/normalizr").ErrorTypes;
13
13
  readonly invalidated?: boolean;
14
14
  readonly errorPolicy?: "hard" | "soft" | undefined;
15
15
  };
@@ -19,7 +19,7 @@ export declare function invalidateReducer(state: State<unknown>, action: Invalid
19
19
  readonly [pk: string]: unknown;
20
20
  } | undefined;
21
21
  };
22
- indexes: import("packages/normalizr/lib/interface.js").NormalizedIndex;
22
+ indexes: import("@data-client/normalizr").NormalizedIndex;
23
23
  entitiesMeta: {
24
24
  readonly [entityKey: string]: {
25
25
  readonly [pk: string]: {
@@ -1,30 +1,4 @@
1
1
  import Controller from '../../controller/Controller.js';
2
2
  import type { State, SetAction } from '../../types.js';
3
- export declare function setReducer(state: State<unknown>, action: SetAction, controller: Controller): State<unknown> | {
4
- entities: {
5
- [x: string]: /*elided*/ any;
6
- };
7
- endpoints: {
8
- readonly [key: string]: unknown;
9
- };
10
- indexes: import("@data-client/normalizr").NormalizedIndex;
11
- meta: {
12
- readonly [key: string]: {
13
- readonly date: number;
14
- readonly fetchedAt: number;
15
- readonly expiresAt: number;
16
- readonly prevExpiresAt?: number;
17
- readonly error?: import("@data-client/normalizr").ErrorTypes;
18
- readonly invalidated?: boolean;
19
- readonly errorPolicy?: "hard" | "soft" | undefined;
20
- };
21
- };
22
- entitiesMeta: import("packages/normalizr/lib/types.js").EntitiesToMeta<{
23
- [x: string]: /*elided*/ any;
24
- }>;
25
- optimistic: (import("../../actions.js").OptimisticAction<import("@data-client/normalizr").EndpointInterface<import("@data-client/normalizr").FetchFunction, import("@data-client/normalizr").Schema | undefined, boolean | undefined> & {
26
- update?: import("../../index.js").EndpointUpdateFunction<import("@data-client/normalizr").EndpointInterface>;
27
- }> | import("../../actions.js").SetResponseAction)[];
28
- lastReset: number;
29
- };
3
+ export declare function setReducer(state: State<unknown>, action: SetAction, controller: Controller): State<unknown>;
30
4
  //# sourceMappingURL=setReducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setReducer.d.ts","sourceRoot":"","sources":["../../../src/state/reducer/setReducer.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,gCAAgC,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEvD,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EACrB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;EAoCvB"}
1
+ {"version":3,"file":"setReducer.d.ts","sourceRoot":"","sources":["../../../src/state/reducer/setReducer.ts"],"names":[],"mappings":"AAEA,OAAO,UAAU,MAAM,gCAAgC,CAAC;AACxD,OAAO,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEvD,wBAAgB,UAAU,CACxB,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EACrB,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,UAAU,GACrB,KAAK,CAAC,OAAO,CAAC,CAmChB"}
@@ -33,4 +33,4 @@ export function setReducer(state, action, controller) {
33
33
  return state;
34
34
  }
35
35
  }
36
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJzZXRSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJjb250cm9sbGVyIiwidmFsdWUiLCJwcmV2aW91c1ZhbHVlIiwiZ2V0Iiwic2NoZW1hIiwiYXJncyIsInVuZGVmaW5lZCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0aWVzTWV0YSIsIm1ldGEiLCJlbmRwb2ludHMiLCJvcHRpbWlzdGljIiwibGFzdFJlc2V0IiwiZXJyb3IiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRlL3JlZHVjZXIvc2V0UmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi4vLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhdGUsIFNldEFjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlZHVjZXIoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPixcbiAgYWN0aW9uOiBTZXRBY3Rpb24sXG4gIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsXG4pIHtcbiAgbGV0IHZhbHVlOiBhbnk7XG4gIGlmICh0eXBlb2YgYWN0aW9uLnZhbHVlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY29uc3QgcHJldmlvdXNWYWx1ZSA9IGNvbnRyb2xsZXIuZ2V0KGFjdGlvbi5zY2hlbWEsIC4uLmFjdGlvbi5hcmdzLCBzdGF0ZSk7XG4gICAgaWYgKHByZXZpb3VzVmFsdWUgPT09IHVuZGVmaW5lZCkgcmV0dXJuIHN0YXRlO1xuICAgIHZhbHVlID0gYWN0aW9uLnZhbHVlKHByZXZpb3VzVmFsdWUpO1xuICB9IGVsc2Uge1xuICAgIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgeyBlbnRpdGllcywgaW5kZXhlcywgZW50aXRpZXNNZXRhIH0gPSBub3JtYWxpemUoXG4gICAgICBhY3Rpb24uc2NoZW1hLFxuICAgICAgdmFsdWUsXG4gICAgICBhY3Rpb24uYXJncyxcbiAgICAgIHN0YXRlLFxuICAgICAgYWN0aW9uLm1ldGEsXG4gICAgKTtcbiAgICByZXR1cm4ge1xuICAgICAgZW50aXRpZXMsXG4gICAgICBlbmRwb2ludHM6IHN0YXRlLmVuZHBvaW50cyxcbiAgICAgIGluZGV4ZXMsXG4gICAgICBtZXRhOiBzdGF0ZS5tZXRhLFxuICAgICAgZW50aXRpZXNNZXRhLFxuICAgICAgb3B0aW1pc3RpYzogc3RhdGUub3B0aW1pc3RpYyxcbiAgICAgIGxhc3RSZXNldDogc3RhdGUubGFzdFJlc2V0LFxuICAgIH07XG4gICAgLy8gcmVkdWNlciBtdXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIGluIGNhc2Ugb2YgcHJvY2Vzc2luZyBlcnJvcnMgd2Ugc2ltcGx5IGNvbXB1dGUgdGhlIGVuZHBvaW50cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIC8vIHRoaXMgaXMgbm90IGFsd2F5cyBidWJibGVkIHVwLCBzbyBsZXQncyBkb3VibGUgc3VyZSB0aGlzIGRvZXNuJ3QgZmFpbCBzaWxlbnRseVxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xuICAgIH1cbiAgICByZXR1cm4gc3RhdGU7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLHdCQUF3QjtBQUtsRCxPQUFPLFNBQVNDLFVBQVVBLENBQ3hCQyxLQUFxQixFQUNyQkMsTUFBaUIsRUFDakJDLFVBQXNCLEVBQ3RCO0VBQ0EsSUFBSUMsS0FBVTtFQUNkLElBQUksT0FBT0YsTUFBTSxDQUFDRSxLQUFLLEtBQUssVUFBVSxFQUFFO0lBQ3RDLE1BQU1DLGFBQWEsR0FBR0YsVUFBVSxDQUFDRyxHQUFHLENBQUNKLE1BQU0sQ0FBQ0ssTUFBTSxFQUFFLEdBQUdMLE1BQU0sQ0FBQ00sSUFBSSxFQUFFUCxLQUFLLENBQUM7SUFDMUUsSUFBSUksYUFBYSxLQUFLSSxTQUFTLEVBQUUsT0FBT1IsS0FBSztJQUM3Q0csS0FBSyxHQUFHRixNQUFNLENBQUNFLEtBQUssQ0FBQ0MsYUFBYSxDQUFDO0VBQ3JDLENBQUMsTUFBTTtJQUNMRCxLQUFLLEdBQUdGLE1BQU0sQ0FBQ0UsS0FBSztFQUN0QjtFQUNBLElBQUk7SUFDRixNQUFNO01BQUVNLFFBQVE7TUFBRUMsT0FBTztNQUFFQztJQUFhLENBQUMsR0FBR2IsU0FBUyxDQUNuREcsTUFBTSxDQUFDSyxNQUFNLEVBQ2JILEtBQUssRUFDTEYsTUFBTSxDQUFDTSxJQUFJLEVBQ1hQLEtBQUssRUFDTEMsTUFBTSxDQUFDVyxJQUNULENBQUM7SUFDRCxPQUFPO01BQ0xILFFBQVE7TUFDUkksU0FBUyxFQUFFYixLQUFLLENBQUNhLFNBQVM7TUFDMUJILE9BQU87TUFDUEUsSUFBSSxFQUFFWixLQUFLLENBQUNZLElBQUk7TUFDaEJELFlBQVk7TUFDWkcsVUFBVSxFQUFFZCxLQUFLLENBQUNjLFVBQVU7TUFDNUJDLFNBQVMsRUFBRWYsS0FBSyxDQUFDZTtJQUNuQixDQUFDO0lBQ0Q7RUFDRixDQUFDLENBQUMsT0FBT0MsS0FBVSxFQUFFO0lBQ25CO0lBQ0E7SUFDQSxJQUFJQyxPQUFPLENBQUNDLEdBQUcsQ0FBQ0MsUUFBUSxLQUFLLFlBQVksRUFBRTtNQUN6Q0MsT0FBTyxDQUFDSixLQUFLLENBQUNBLEtBQUssQ0FBQztJQUN0QjtJQUNBLE9BQU9oQixLQUFLO0VBQ2Q7QUFDRiIsImlnbm9yZUxpc3QiOltdfQ==
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJzZXRSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJjb250cm9sbGVyIiwidmFsdWUiLCJwcmV2aW91c1ZhbHVlIiwiZ2V0Iiwic2NoZW1hIiwiYXJncyIsInVuZGVmaW5lZCIsImVudGl0aWVzIiwiaW5kZXhlcyIsImVudGl0aWVzTWV0YSIsIm1ldGEiLCJlbmRwb2ludHMiLCJvcHRpbWlzdGljIiwibGFzdFJlc2V0IiwiZXJyb3IiLCJwcm9jZXNzIiwiZW52IiwiTk9ERV9FTlYiLCJjb25zb2xlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3N0YXRlL3JlZHVjZXIvc2V0UmVkdWNlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tICdAZGF0YS1jbGllbnQvbm9ybWFsaXpyJztcblxuaW1wb3J0IENvbnRyb2xsZXIgZnJvbSAnLi4vLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHsgU3RhdGUsIFNldEFjdGlvbiB9IGZyb20gJy4uLy4uL3R5cGVzLmpzJztcblxuZXhwb3J0IGZ1bmN0aW9uIHNldFJlZHVjZXIoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPixcbiAgYWN0aW9uOiBTZXRBY3Rpb24sXG4gIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsXG4pOiBTdGF0ZTx1bmtub3duPiB7XG4gIGxldCB2YWx1ZTogYW55O1xuICBpZiAodHlwZW9mIGFjdGlvbi52YWx1ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHByZXZpb3VzVmFsdWUgPSBjb250cm9sbGVyLmdldChhY3Rpb24uc2NoZW1hLCAuLi5hY3Rpb24uYXJncywgc3RhdGUpO1xuICAgIGlmIChwcmV2aW91c1ZhbHVlID09PSB1bmRlZmluZWQpIHJldHVybiBzdGF0ZTtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZShwcmV2aW91c1ZhbHVlKTtcbiAgfSBlbHNlIHtcbiAgICB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcbiAgfVxuICB0cnkge1xuICAgIGNvbnN0IHsgZW50aXRpZXMsIGluZGV4ZXMsIGVudGl0aWVzTWV0YSB9ID0gbm9ybWFsaXplKFxuICAgICAgYWN0aW9uLnNjaGVtYSxcbiAgICAgIHZhbHVlLFxuICAgICAgYWN0aW9uLmFyZ3MsXG4gICAgICBzdGF0ZSxcbiAgICAgIGFjdGlvbi5tZXRhLFxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudGl0aWVzLFxuICAgICAgZW5kcG9pbnRzOiBzdGF0ZS5lbmRwb2ludHMsXG4gICAgICBpbmRleGVzLFxuICAgICAgbWV0YTogc3RhdGUubWV0YSxcbiAgICAgIGVudGl0aWVzTWV0YSxcbiAgICAgIG9wdGltaXN0aWM6IHN0YXRlLm9wdGltaXN0aWMsXG4gICAgICBsYXN0UmVzZXQ6IHN0YXRlLmxhc3RSZXNldCxcbiAgICB9O1xuICAgIC8vIHJlZHVjZXIgbXVzdCB1cGRhdGUgdGhlIHN0YXRlLCBzbyBpbiBjYXNlIG9mIHByb2Nlc3NpbmcgZXJyb3JzIHdlIHNpbXBseSBjb21wdXRlIHRoZSBlbmRwb2ludHMgaW5saW5lXG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICAvLyB0aGlzIGlzIG5vdCBhbHdheXMgYnViYmxlZCB1cCwgc28gbGV0J3MgZG91YmxlIHN1cmUgdGhpcyBkb2Vzbid0IGZhaWwgc2lsZW50bHlcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHN0YXRlO1xuICB9XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFNBQVMsUUFBUSx3QkFBd0I7QUFLbEQsT0FBTyxTQUFTQyxVQUFVQSxDQUN4QkMsS0FBcUIsRUFDckJDLE1BQWlCLEVBQ2pCQyxVQUFzQixFQUNOO0VBQ2hCLElBQUlDLEtBQVU7RUFDZCxJQUFJLE9BQU9GLE1BQU0sQ0FBQ0UsS0FBSyxLQUFLLFVBQVUsRUFBRTtJQUN0QyxNQUFNQyxhQUFhLEdBQUdGLFVBQVUsQ0FBQ0csR0FBRyxDQUFDSixNQUFNLENBQUNLLE1BQU0sRUFBRSxHQUFHTCxNQUFNLENBQUNNLElBQUksRUFBRVAsS0FBSyxDQUFDO0lBQzFFLElBQUlJLGFBQWEsS0FBS0ksU0FBUyxFQUFFLE9BQU9SLEtBQUs7SUFDN0NHLEtBQUssR0FBR0YsTUFBTSxDQUFDRSxLQUFLLENBQUNDLGFBQWEsQ0FBQztFQUNyQyxDQUFDLE1BQU07SUFDTEQsS0FBSyxHQUFHRixNQUFNLENBQUNFLEtBQUs7RUFDdEI7RUFDQSxJQUFJO0lBQ0YsTUFBTTtNQUFFTSxRQUFRO01BQUVDLE9BQU87TUFBRUM7SUFBYSxDQUFDLEdBQUdiLFNBQVMsQ0FDbkRHLE1BQU0sQ0FBQ0ssTUFBTSxFQUNiSCxLQUFLLEVBQ0xGLE1BQU0sQ0FBQ00sSUFBSSxFQUNYUCxLQUFLLEVBQ0xDLE1BQU0sQ0FBQ1csSUFDVCxDQUFDO0lBQ0QsT0FBTztNQUNMSCxRQUFRO01BQ1JJLFNBQVMsRUFBRWIsS0FBSyxDQUFDYSxTQUFTO01BQzFCSCxPQUFPO01BQ1BFLElBQUksRUFBRVosS0FBSyxDQUFDWSxJQUFJO01BQ2hCRCxZQUFZO01BQ1pHLFVBQVUsRUFBRWQsS0FBSyxDQUFDYyxVQUFVO01BQzVCQyxTQUFTLEVBQUVmLEtBQUssQ0FBQ2U7SUFDbkIsQ0FBQztJQUNEO0VBQ0YsQ0FBQyxDQUFDLE9BQU9DLEtBQVUsRUFBRTtJQUNuQjtJQUNBO0lBQ0EsSUFBSUMsT0FBTyxDQUFDQyxHQUFHLENBQUNDLFFBQVEsS0FBSyxZQUFZLEVBQUU7TUFDekNDLE9BQU8sQ0FBQ0osS0FBSyxDQUFDQSxLQUFLLENBQUM7SUFDdEI7SUFDQSxPQUFPaEIsS0FBSztFQUNkO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=
@@ -1,33 +1,4 @@
1
1
  import type Controller from '../../controller/Controller.js';
2
2
  import type { State, SetResponseAction, OptimisticAction } from '../../types.js';
3
- export declare function setResponseReducer(state: State<unknown>, action: OptimisticAction | SetResponseAction, controller: Controller): State<unknown> | {
4
- entities: {
5
- [x: string]: /*elided*/ any;
6
- };
7
- endpoints: Record<string, unknown>;
8
- indexes: import("@data-client/normalizr").NormalizedIndex;
9
- meta: {
10
- [x: string]: {
11
- readonly date: number;
12
- readonly fetchedAt: number;
13
- readonly expiresAt: number;
14
- readonly prevExpiresAt?: number;
15
- readonly error?: import("@data-client/normalizr").ErrorTypes;
16
- readonly invalidated?: boolean;
17
- readonly errorPolicy?: "hard" | "soft" | undefined;
18
- } | {
19
- date: number;
20
- fetchedAt: number;
21
- expiresAt: number;
22
- prevExpiresAt: number;
23
- };
24
- };
25
- entitiesMeta: import("packages/normalizr/lib/types.js").EntitiesToMeta<{
26
- [x: string]: /*elided*/ any;
27
- }>;
28
- optimistic: (OptimisticAction<import("@data-client/normalizr").EndpointInterface<import("@data-client/normalizr").FetchFunction, import("@data-client/normalizr").Schema | undefined, boolean | undefined> & {
29
- update?: import("../../index.js").EndpointUpdateFunction<import("@data-client/normalizr").EndpointInterface>;
30
- }> | SetResponseAction)[];
31
- lastReset: number;
32
- };
3
+ export declare function setResponseReducer(state: State<unknown>, action: OptimisticAction | SetResponseAction, controller: Controller): State<unknown>;
33
4
  //# sourceMappingURL=setResponseReducer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setResponseReducer.d.ts","sourceRoot":"","sources":["../../../src/state/reducer/setResponseReducer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EACrB,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,EAC5C,UAAU,EAAE,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2FvB"}
1
+ {"version":3,"file":"setResponseReducer.d.ts","sourceRoot":"","sources":["../../../src/state/reducer/setResponseReducer.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,UAAU,MAAM,gCAAgC,CAAC;AAC7D,OAAO,KAAK,EACV,KAAK,EACL,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC,EACrB,MAAM,EAAE,gBAAgB,GAAG,iBAAiB,EAC5C,UAAU,EAAE,UAAU,GACrB,KAAK,CAAC,OAAO,CAAC,CA0FhB"}
@@ -111,4 +111,4 @@ function reduceError(state, action, error) {
111
111
  function filterOptimistic(state, resolvingAction) {
112
112
  return state.optimistic.filter(optimisticAction => optimisticAction.key !== resolvingAction.key || (optimisticAction.type === OPTIMISTIC ? optimisticAction.meta.fetchedAt !== resolvingAction.meta.fetchedAt : optimisticAction.meta.date > resolvingAction.meta.date));
113
113
  }
114
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJPUFRJTUlTVElDIiwiQWJvcnRPcHRpbWlzdGljIiwic2V0UmVzcG9uc2VSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJjb250cm9sbGVyIiwiZXJyb3IiLCJyZWR1Y2VFcnJvciIsInJlc3BvbnNlIiwiX3N0YXRlJG1ldGEkYWN0aW9uJGtlIiwidHlwZSIsImVuZHBvaW50IiwiZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlIiwiY2FsbCIsInNuYXBzaG90IiwibWV0YSIsImZldGNoZWRBdCIsImFyZ3MiLCJlIiwiY29uc3RydWN0b3IiLCJyZXN1bHQiLCJlbnRpdGllcyIsImluZGV4ZXMiLCJlbnRpdGllc01ldGEiLCJzY2hlbWEiLCJlbmRwb2ludHMiLCJrZXkiLCJ1cGRhdGUiLCJ1cGRhdGVycyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiY29uc29sZSIsImRhdGUiLCJleHBpcmVzQXQiLCJwcmV2RXhwaXJlc0F0Iiwib3B0aW1pc3RpYyIsImZpbHRlck9wdGltaXN0aWMiLCJsYXN0UmVzZXQiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuZGVmaW5lZCIsInN0YXR1cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJlcnJvclBvbGljeSIsInJlc29sdmluZ0FjdGlvbiIsImZpbHRlciIsIm9wdGltaXN0aWNBY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGUvcmVkdWNlci9zZXRSZXNwb25zZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB7IE9QVElNSVNUSUMgfSBmcm9tICcuLi8uLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgQWJvcnRPcHRpbWlzdGljIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQWJvcnRPcHRpbWlzdGljLmpzJztcbmltcG9ydCB0eXBlIENvbnRyb2xsZXIgZnJvbSAnLi4vLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgU3RhdGUsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxuICBPcHRpbWlzdGljQWN0aW9uLFxufSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZXNwb25zZVJlZHVjZXIoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPixcbiAgYWN0aW9uOiBPcHRpbWlzdGljQWN0aW9uIHwgU2V0UmVzcG9uc2VBY3Rpb24sXG4gIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsXG4pIHtcbiAgaWYgKGFjdGlvbi5lcnJvcikge1xuICAgIHJldHVybiByZWR1Y2VFcnJvcihzdGF0ZSwgYWN0aW9uLCBhY3Rpb24ucmVzcG9uc2UpO1xuICB9XG4gIHRyeSB7XG4gICAgbGV0IHJlc3BvbnNlOiBhbnk7XG4gICAgLy8gZm9yIHRydWUgc2V0J3MgcmVzcG9uc2UgaXMgY29udGFpbmVkIGluIGFjdGlvblxuICAgIGlmIChhY3Rpb24udHlwZSA9PT0gT1BUSU1JU1RJQykge1xuICAgICAgLy8gdGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuXG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICAgIGlmICghYWN0aW9uLmVuZHBvaW50LmdldE9wdGltaXN0aWNSZXNwb25zZSkgcmV0dXJuIHN0YXRlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gY29tcHV0ZSBvcHRpbWlzdGljIHJlc3BvbnNlIGJhc2VkIG9uIGN1cnJlbnQgc3RhdGVcbiAgICAgICAgcmVzcG9uc2UgPSBhY3Rpb24uZW5kcG9pbnQuZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlLmNhbGwoXG4gICAgICAgICAgYWN0aW9uLmVuZHBvaW50LFxuICAgICAgICAgIGNvbnRyb2xsZXIuc25hcHNob3Qoc3RhdGUsIGFjdGlvbi5tZXRhLmZldGNoZWRBdCksXG4gICAgICAgICAgLi4uYWN0aW9uLmFyZ3MsXG4gICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgLy8gQWJvcnRPcHRpbWlzdGljIG1lYW5zICdkbyBub3RoaW5nJywgb3RoZXJ3aXNlIHdlIGNvdW50IHRoZSBleGNlcHRpb24gYXMgZW5kcG9pbnQgZmFpbHVyZVxuICAgICAgICBpZiAoZS5jb25zdHJ1Y3RvciA9PT0gQWJvcnRPcHRpbWlzdGljKSB7XG4gICAgICAgICAgcmV0dXJuIHN0YXRlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGU7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlc3BvbnNlID0gYWN0aW9uLnJlc3BvbnNlO1xuICAgIH1cbiAgICBjb25zdCB7IHJlc3VsdCwgZW50aXRpZXMsIGluZGV4ZXMsIGVudGl0aWVzTWV0YSB9ID0gbm9ybWFsaXplKFxuICAgICAgYWN0aW9uLmVuZHBvaW50LnNjaGVtYSxcbiAgICAgIHJlc3BvbnNlLFxuICAgICAgYWN0aW9uLmFyZ3MsXG4gICAgICBzdGF0ZSxcbiAgICAgIGFjdGlvbi5tZXRhLFxuICAgICk7XG4gICAgY29uc3QgZW5kcG9pbnRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHtcbiAgICAgIC4uLnN0YXRlLmVuZHBvaW50cyxcbiAgICAgIFthY3Rpb24ua2V5XTogcmVzdWx0LFxuICAgIH07XG4gICAgdHJ5IHtcbiAgICAgIGlmIChhY3Rpb24uZW5kcG9pbnQudXBkYXRlKSB7XG4gICAgICAgIGNvbnN0IHVwZGF0ZXJzID0gYWN0aW9uLmVuZHBvaW50LnVwZGF0ZShyZXN1bHQsIC4uLmFjdGlvbi5hcmdzKTtcbiAgICAgICAgT2JqZWN0LmtleXModXBkYXRlcnMpLmZvckVhY2goa2V5ID0+IHtcbiAgICAgICAgICBlbmRwb2ludHNba2V5XSA9IHVwZGF0ZXJzW2tleV0oZW5kcG9pbnRzW2tleV0pO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICAgIC8vIG5vIHJlYXNvbiB0byBjb21wbGV0ZWx5IGZhaWwgYmVjYXVzZSBvZiB1c2VyLWNvZGUgZXJyb3JcbiAgICAgIC8vIGludGVncml0eSBvZiB0aGlzIHN0YXRlIHVwZGF0ZSBpcyBzdGlsbCBndWFyYW50ZWVkXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYEVuZHBvaW50LnVwZGF0ZSgpIGVycm9yOiAke2FjdGlvbi5rZXl9YCk7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGVudGl0aWVzLFxuICAgICAgZW5kcG9pbnRzLFxuICAgICAgaW5kZXhlcyxcbiAgICAgIG1ldGE6IHtcbiAgICAgICAgLi4uc3RhdGUubWV0YSxcbiAgICAgICAgW2FjdGlvbi5rZXldOiB7XG4gICAgICAgICAgZGF0ZTogYWN0aW9uLm1ldGEuZGF0ZSxcbiAgICAgICAgICBmZXRjaGVkQXQ6IGFjdGlvbi5tZXRhLmZldGNoZWRBdCxcbiAgICAgICAgICBleHBpcmVzQXQ6IGFjdGlvbi5tZXRhLmV4cGlyZXNBdCxcbiAgICAgICAgICBwcmV2RXhwaXJlc0F0OiBzdGF0ZS5tZXRhW2FjdGlvbi5rZXldPy5leHBpcmVzQXQsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZW50aXRpZXNNZXRhLFxuICAgICAgb3B0aW1pc3RpYzogZmlsdGVyT3B0aW1pc3RpYyhzdGF0ZSwgYWN0aW9uKSxcbiAgICAgIGxhc3RSZXNldDogc3RhdGUubGFzdFJlc2V0LFxuICAgIH07XG4gICAgLy8gcmVkdWNlciBtdXN0IHVwZGF0ZSB0aGUgc3RhdGUsIHNvIGluIGNhc2Ugb2YgcHJvY2Vzc2luZyBlcnJvcnMgd2Ugc2ltcGx5IGNvbXB1dGUgdGhlIGVuZHBvaW50cyBpbmxpbmVcbiAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgIGlmICh0eXBlb2YgZXJyb3IgPT09ICdvYmplY3QnKSB7XG4gICAgICBlcnJvci5tZXNzYWdlID0gYEVycm9yIHByb2Nlc3NpbmcgJHtcbiAgICAgICAgYWN0aW9uLmtleVxuICAgICAgfVxcblxcbkZ1bGwgU2NoZW1hOiAke0pTT04uc3RyaW5naWZ5KFxuICAgICAgICBhY3Rpb24uZW5kcG9pbnQuc2NoZW1hLFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIDIsXG4gICAgICApfVxcblxcbkVycm9yOlxcbiR7ZXJyb3IubWVzc2FnZX1gO1xuICAgICAgaWYgKCdyZXNwb25zZScgaW4gYWN0aW9uKSBlcnJvci5yZXNwb25zZSA9IGFjdGlvbi5yZXNwb25zZTtcbiAgICAgIGVycm9yLnN0YXR1cyA9IDQwMDtcbiAgICB9XG5cbiAgICAvLyB0aGlzIGlzIG5vdCBhbHdheXMgYnViYmxlZCB1cCwgc28gbGV0J3MgZG91YmxlIHN1cmUgdGhpcyBkb2Vzbid0IGZhaWwgc2lsZW50bHlcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlZHVjZUVycm9yKHN0YXRlLCBhY3Rpb24sIGVycm9yKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZWR1Y2VFcnJvcihcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICBhY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbiAgZXJyb3I6IGFueSxcbik6IFN0YXRlPHVua25vd24+IHtcbiAgaWYgKGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgIC8vIEluIGNhc2Ugd2UgYWJvcnQgc2ltcGx5IHVuZG8gdGhlIG9wdGltaXN0aWMgdXBkYXRlIGFuZCBhY3QgbGlrZSBubyBmZXRjaCBldmVuIG9jY3VyZWRcbiAgICAvLyBXZSBzdGlsbCB3YW50IHRob3NlIHdhdGNoaW5nIHByb21pc2VzIGZyb20gZmV0Y2ggZGlyZWN0bHkgdG8gb2JzZXJ2ZWQgdGhlIGFib3J0LCBidXQgd2UgZG9uJ3Qgd2FudCB0b1xuICAgIC8vIFRyaWdnZXIgZXJyb3JzIGluIHRoaXMgY2FzZS4gVGhpcyBtZWFucyB0aGVvcmV0aWNhbGx5IGltcHJvcGVybHkgYnVpbHQgYWJvcnRzIHVzZVN1c3BlbnNlKCkgY291bGQgc3VzcGVuZCBmb3JldmVyLlxuICAgIHJldHVybiB7XG4gICAgICAuLi5zdGF0ZSxcbiAgICAgIG9wdGltaXN0aWM6IGZpbHRlck9wdGltaXN0aWMoc3RhdGUsIGFjdGlvbiksXG4gICAgfTtcbiAgfVxuICByZXR1cm4ge1xuICAgIC4uLnN0YXRlLFxuICAgIG1ldGE6IHtcbiAgICAgIC4uLnN0YXRlLm1ldGEsXG4gICAgICBbYWN0aW9uLmtleV06IHtcbiAgICAgICAgZGF0ZTogYWN0aW9uLm1ldGEuZGF0ZSxcbiAgICAgICAgZmV0Y2hlZEF0OiBhY3Rpb24ubWV0YS5mZXRjaGVkQXQsXG4gICAgICAgIGV4cGlyZXNBdDogYWN0aW9uLm1ldGEuZXhwaXJlc0F0LFxuICAgICAgICBlcnJvcixcbiAgICAgICAgZXJyb3JQb2xpY3k6IGFjdGlvbi5lbmRwb2ludC5lcnJvclBvbGljeT8uKGVycm9yKSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICB9O1xufVxuLyoqIEZpbHRlciBhbGwgcmVxdWVzdHMgd2l0aCBzYW1lIHNlcmlhbGl6YXRpb24gdGhhdCBkaWQgbm90IHN0YXJ0IGFmdGVyIHRoZSByZXNvbHZpbmcgcmVxdWVzdCAqL1xuZnVuY3Rpb24gZmlsdGVyT3B0aW1pc3RpYyhcbiAgc3RhdGU6IFN0YXRlPHVua25vd24+LFxuICByZXNvbHZpbmdBY3Rpb246IFNldFJlc3BvbnNlQWN0aW9uIHwgT3B0aW1pc3RpY0FjdGlvbixcbikge1xuICByZXR1cm4gc3RhdGUub3B0aW1pc3RpYy5maWx0ZXIoXG4gICAgb3B0aW1pc3RpY0FjdGlvbiA9PlxuICAgICAgb3B0aW1pc3RpY0FjdGlvbi5rZXkgIT09IHJlc29sdmluZ0FjdGlvbi5rZXkgfHxcbiAgICAgIChvcHRpbWlzdGljQWN0aW9uLnR5cGUgPT09IE9QVElNSVNUSUMgP1xuICAgICAgICBvcHRpbWlzdGljQWN0aW9uLm1ldGEuZmV0Y2hlZEF0ICE9PSByZXNvbHZpbmdBY3Rpb24ubWV0YS5mZXRjaGVkQXRcbiAgICAgIDogb3B0aW1pc3RpY0FjdGlvbi5tZXRhLmRhdGUgPiByZXNvbHZpbmdBY3Rpb24ubWV0YS5kYXRlKSxcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsU0FBUyxRQUFRLHdCQUF3QjtBQUVsRCxTQUFTQyxVQUFVLFFBQVEsc0JBQXNCO0FBQ2pELE9BQU9DLGVBQWUsTUFBTSxxQ0FBcUM7QUFRakUsT0FBTyxTQUFTQyxrQkFBa0JBLENBQ2hDQyxLQUFxQixFQUNyQkMsTUFBNEMsRUFDNUNDLFVBQXNCLEVBQ3RCO0VBQ0EsSUFBSUQsTUFBTSxDQUFDRSxLQUFLLEVBQUU7SUFDaEIsT0FBT0MsV0FBVyxDQUFDSixLQUFLLEVBQUVDLE1BQU0sRUFBRUEsTUFBTSxDQUFDSSxRQUFRLENBQUM7RUFDcEQ7RUFDQSxJQUFJO0lBQUEsSUFBQUMscUJBQUE7SUFDRixJQUFJRCxRQUFhO0lBQ2pCO0lBQ0EsSUFBSUosTUFBTSxDQUFDTSxJQUFJLEtBQUtWLFVBQVUsRUFBRTtNQUM5QjtNQUNBO01BQ0EsSUFBSSxDQUFDSSxNQUFNLENBQUNPLFFBQVEsQ0FBQ0MscUJBQXFCLEVBQUUsT0FBT1QsS0FBSztNQUN4RCxJQUFJO1FBQ0Y7UUFDQUssUUFBUSxHQUFHSixNQUFNLENBQUNPLFFBQVEsQ0FBQ0MscUJBQXFCLENBQUNDLElBQUksQ0FDbkRULE1BQU0sQ0FBQ08sUUFBUSxFQUNmTixVQUFVLENBQUNTLFFBQVEsQ0FBQ1gsS0FBSyxFQUFFQyxNQUFNLENBQUNXLElBQUksQ0FBQ0MsU0FBUyxDQUFDLEVBQ2pELEdBQUdaLE1BQU0sQ0FBQ2EsSUFDWixDQUFDO01BQ0gsQ0FBQyxDQUFDLE9BQU9DLENBQU0sRUFBRTtRQUNmO1FBQ0EsSUFBSUEsQ0FBQyxDQUFDQyxXQUFXLEtBQUtsQixlQUFlLEVBQUU7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T0FBT0MsV0FBVyxDQUFDSixLQUFLLEVBQUVDLE1BQU0sRUFBRUUsS0FBSyxDQUFDO0VBQzFDO0FBQ0Y7QUFFQSxTQUFTQyxXQUFXQSxDQUNsQkosS0FBcUIsRUFDckJDLE1BQTRDLEVBQzVDRSxLQUFVLEVBQ007RUFDaEIsSUFBSUEsS0FBSyxDQUFDeUMsSUFBSSxLQUFLLFlBQVksRUFBRTtJQUMvQjtJQUNBO0lBQ0E7SUFDQSxPQUFPO01BQ0wsR0FBRzVDLEtBQUs7TUFDUmlDLFVBQVUsRUFBRUMsZ0JBQWdCLENBQUNsQyxLQUFLLEVBQUVDLE1BQU07SUFDNUMsQ0FBQztFQUNIO0VBQ0EsT0FBTztJQUNMLEdBQUdELEtBQUs7SUFDUlksSUFBSSxFQUFFO01BQ0osR0FBR1osS0FBSyxDQUFDWSxJQUFJO01BQ2IsQ0FBQ1gsTUFBTSxDQUFDc0IsR0FBRyxHQUFHO1FBQ1pPLElBQUksRUFBRTdCLE1BQU0sQ0FBQ1csSUFBSSxDQUFDa0IsSUFBSTtRQUN0QmpCLFNBQVMsRUFBRVosTUFBTSxDQUFDVyxJQUFJLENBQUNDLFNBQVM7UUFDaENrQixTQUFTLEVBQUU5QixNQUFNLENBQUNXLElBQUksQ0FBQ21CLFNBQVM7UUFDaEM1QixLQUFLO1FBQ0wwQyxXQUFXLEVBQUU1QyxNQUFNLENBQUNPLFFBQVEsQ0FBQ3FDLFdBQVcsb0JBQTNCNUMsTUFBTSxDQUFDTyxRQUFRLENBQUNxQyxXQUFXLENBQUcxQyxLQUFLO01BQ2xEO0lBQ0YsQ0FBQztJQUNEOEIsVUFBVSxFQUFFQyxnQkFBZ0IsQ0FBQ2xDLEtBQUssRUFBRUMsTUFBTTtFQUM1QyxDQUFDO0FBQ0g7QUFDQTtBQUNBLFNBQVNpQyxnQkFBZ0JBLENBQ3ZCbEMsS0FBcUIsRUFDckI4QyxlQUFxRCxFQUNyRDtFQUNBLE9BQU85QyxLQUFLLENBQUNpQyxVQUFVLENBQUNjLE1BQU0sQ0FDNUJDLGdCQUFnQixJQUNkQSxnQkFBZ0IsQ0FBQ3pCLEdBQUcsS0FBS3VCLGVBQWUsQ0FBQ3ZCLEdBQUcsS0FDM0N5QixnQkFBZ0IsQ0FBQ3pDLElBQUksS0FBS1YsVUFBVSxHQUNuQ21ELGdCQUFnQixDQUFDcEMsSUFBSSxDQUFDQyxTQUFTLEtBQUtpQyxlQUFlLENBQUNsQyxJQUFJLENBQUNDLFNBQVMsR0FDbEVtQyxnQkFBZ0IsQ0FBQ3BDLElBQUksQ0FBQ2tCLElBQUksR0FBR2dCLGVBQWUsQ0FBQ2xDLElBQUksQ0FBQ2tCLElBQUksQ0FDNUQsQ0FBQztBQUNIIiwiaWdub3JlTGlzdCI6W119
114
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJub3JtYWxpemUiLCJPUFRJTUlTVElDIiwiQWJvcnRPcHRpbWlzdGljIiwic2V0UmVzcG9uc2VSZWR1Y2VyIiwic3RhdGUiLCJhY3Rpb24iLCJjb250cm9sbGVyIiwiZXJyb3IiLCJyZWR1Y2VFcnJvciIsInJlc3BvbnNlIiwiX3N0YXRlJG1ldGEkYWN0aW9uJGtlIiwidHlwZSIsImVuZHBvaW50IiwiZ2V0T3B0aW1pc3RpY1Jlc3BvbnNlIiwiY2FsbCIsInNuYXBzaG90IiwibWV0YSIsImZldGNoZWRBdCIsImFyZ3MiLCJlIiwiY29uc3RydWN0b3IiLCJyZXN1bHQiLCJlbnRpdGllcyIsImluZGV4ZXMiLCJlbnRpdGllc01ldGEiLCJzY2hlbWEiLCJlbmRwb2ludHMiLCJrZXkiLCJ1cGRhdGUiLCJ1cGRhdGVycyIsIk9iamVjdCIsImtleXMiLCJmb3JFYWNoIiwiY29uc29sZSIsImRhdGUiLCJleHBpcmVzQXQiLCJwcmV2RXhwaXJlc0F0Iiwib3B0aW1pc3RpYyIsImZpbHRlck9wdGltaXN0aWMiLCJsYXN0UmVzZXQiLCJtZXNzYWdlIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuZGVmaW5lZCIsInN0YXR1cyIsInByb2Nlc3MiLCJlbnYiLCJOT0RFX0VOViIsIm5hbWUiLCJlcnJvclBvbGljeSIsInJlc29sdmluZ0FjdGlvbiIsImZpbHRlciIsIm9wdGltaXN0aWNBY3Rpb24iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc3RhdGUvcmVkdWNlci9zZXRSZXNwb25zZVJlZHVjZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSAnQGRhdGEtY2xpZW50L25vcm1hbGl6cic7XG5cbmltcG9ydCB7IE9QVElNSVNUSUMgfSBmcm9tICcuLi8uLi9hY3Rpb25UeXBlcy5qcyc7XG5pbXBvcnQgQWJvcnRPcHRpbWlzdGljIGZyb20gJy4uLy4uL2NvbnRyb2xsZXIvQWJvcnRPcHRpbWlzdGljLmpzJztcbmltcG9ydCB0eXBlIENvbnRyb2xsZXIgZnJvbSAnLi4vLi4vY29udHJvbGxlci9Db250cm9sbGVyLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgU3RhdGUsXG4gIFNldFJlc3BvbnNlQWN0aW9uLFxuICBPcHRpbWlzdGljQWN0aW9uLFxufSBmcm9tICcuLi8uLi90eXBlcy5qcyc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRSZXNwb25zZVJlZHVjZXIoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPixcbiAgYWN0aW9uOiBPcHRpbWlzdGljQWN0aW9uIHwgU2V0UmVzcG9uc2VBY3Rpb24sXG4gIGNvbnRyb2xsZXI6IENvbnRyb2xsZXIsXG4pOiBTdGF0ZTx1bmtub3duPiB7XG4gIGlmIChhY3Rpb24uZXJyb3IpIHtcbiAgICByZXR1cm4gcmVkdWNlRXJyb3Ioc3RhdGUsIGFjdGlvbiwgYWN0aW9uLnJlc3BvbnNlKTtcbiAgfVxuICB0cnkge1xuICAgIGxldCByZXNwb25zZTogYW55O1xuICAgIC8vIGZvciB0cnVlIHNldCdzIHJlc3BvbnNlIGlzIGNvbnRhaW5lZCBpbiBhY3Rpb25cbiAgICBpZiAoYWN0aW9uLnR5cGUgPT09IE9QVElNSVNUSUMpIHtcbiAgICAgIC8vIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlblxuICAgICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgICBpZiAoIWFjdGlvbi5lbmRwb2ludC5nZXRPcHRpbWlzdGljUmVzcG9uc2UpIHJldHVybiBzdGF0ZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIC8vIGNvbXB1dGUgb3B0aW1pc3RpYyByZXNwb25zZSBiYXNlZCBvbiBjdXJyZW50IHN0YXRlXG4gICAgICAgIHJlc3BvbnNlID0gYWN0aW9uLmVuZHBvaW50LmdldE9wdGltaXN0aWNSZXNwb25zZS5jYWxsKFxuICAgICAgICAgIGFjdGlvbi5lbmRwb2ludCxcbiAgICAgICAgICBjb250cm9sbGVyLnNuYXBzaG90KHN0YXRlLCBhY3Rpb24ubWV0YS5mZXRjaGVkQXQpLFxuICAgICAgICAgIC4uLmFjdGlvbi5hcmdzLFxuICAgICAgICApO1xuICAgICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICAgIC8vIEFib3J0T3B0aW1pc3RpYyBtZWFucyAnZG8gbm90aGluZycsIG90aGVyd2lzZSB3ZSBjb3VudCB0aGUgZXhjZXB0aW9uIGFzIGVuZHBvaW50IGZhaWx1cmVcbiAgICAgICAgaWYgKGUuY29uc3RydWN0b3IgPT09IEFib3J0T3B0aW1pc3RpYykge1xuICAgICAgICAgIHJldHVybiBzdGF0ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZSA9IGFjdGlvbi5yZXNwb25zZTtcbiAgICB9XG4gICAgY29uc3QgeyByZXN1bHQsIGVudGl0aWVzLCBpbmRleGVzLCBlbnRpdGllc01ldGEgfSA9IG5vcm1hbGl6ZShcbiAgICAgIGFjdGlvbi5lbmRwb2ludC5zY2hlbWEsXG4gICAgICByZXNwb25zZSxcbiAgICAgIGFjdGlvbi5hcmdzLFxuICAgICAgc3RhdGUsXG4gICAgICBhY3Rpb24ubWV0YSxcbiAgICApO1xuICAgIGNvbnN0IGVuZHBvaW50czogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7XG4gICAgICAuLi5zdGF0ZS5lbmRwb2ludHMsXG4gICAgICBbYWN0aW9uLmtleV06IHJlc3VsdCxcbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICBpZiAoYWN0aW9uLmVuZHBvaW50LnVwZGF0ZSkge1xuICAgICAgICBjb25zdCB1cGRhdGVycyA9IGFjdGlvbi5lbmRwb2ludC51cGRhdGUocmVzdWx0LCAuLi5hY3Rpb24uYXJncyk7XG4gICAgICAgIE9iamVjdC5rZXlzKHVwZGF0ZXJzKS5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgICAgZW5kcG9pbnRzW2tleV0gPSB1cGRhdGVyc1trZXldKGVuZHBvaW50c1trZXldKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICAvLyBubyByZWFzb24gdG8gY29tcGxldGVseSBmYWlsIGJlY2F1c2Ugb2YgdXNlci1jb2RlIGVycm9yXG4gICAgICAvLyBpbnRlZ3JpdHkgb2YgdGhpcyBzdGF0ZSB1cGRhdGUgaXMgc3RpbGwgZ3VhcmFudGVlZFxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBFbmRwb2ludC51cGRhdGUoKSBlcnJvcjogJHthY3Rpb24ua2V5fWApO1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBlbnRpdGllcyxcbiAgICAgIGVuZHBvaW50cyxcbiAgICAgIGluZGV4ZXMsXG4gICAgICBtZXRhOiB7XG4gICAgICAgIC4uLnN0YXRlLm1ldGEsXG4gICAgICAgIFthY3Rpb24ua2V5XToge1xuICAgICAgICAgIGRhdGU6IGFjdGlvbi5tZXRhLmRhdGUsXG4gICAgICAgICAgZmV0Y2hlZEF0OiBhY3Rpb24ubWV0YS5mZXRjaGVkQXQsXG4gICAgICAgICAgZXhwaXJlc0F0OiBhY3Rpb24ubWV0YS5leHBpcmVzQXQsXG4gICAgICAgICAgcHJldkV4cGlyZXNBdDogc3RhdGUubWV0YVthY3Rpb24ua2V5XT8uZXhwaXJlc0F0LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGVudGl0aWVzTWV0YSxcbiAgICAgIG9wdGltaXN0aWM6IGZpbHRlck9wdGltaXN0aWMoc3RhdGUsIGFjdGlvbiksXG4gICAgICBsYXN0UmVzZXQ6IHN0YXRlLmxhc3RSZXNldCxcbiAgICB9O1xuICAgIC8vIHJlZHVjZXIgbXVzdCB1cGRhdGUgdGhlIHN0YXRlLCBzbyBpbiBjYXNlIG9mIHByb2Nlc3NpbmcgZXJyb3JzIHdlIHNpbXBseSBjb21wdXRlIHRoZSBlbmRwb2ludHMgaW5saW5lXG4gIH0gY2F0Y2ggKGVycm9yOiBhbnkpIHtcbiAgICBpZiAodHlwZW9mIGVycm9yID09PSAnb2JqZWN0Jykge1xuICAgICAgZXJyb3IubWVzc2FnZSA9IGBFcnJvciBwcm9jZXNzaW5nICR7XG4gICAgICAgIGFjdGlvbi5rZXlcbiAgICAgIH1cXG5cXG5GdWxsIFNjaGVtYTogJHtKU09OLnN0cmluZ2lmeShcbiAgICAgICAgYWN0aW9uLmVuZHBvaW50LnNjaGVtYSxcbiAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAyLFxuICAgICAgKX1cXG5cXG5FcnJvcjpcXG4ke2Vycm9yLm1lc3NhZ2V9YDtcbiAgICAgIGlmICgncmVzcG9uc2UnIGluIGFjdGlvbikgZXJyb3IucmVzcG9uc2UgPSBhY3Rpb24ucmVzcG9uc2U7XG4gICAgICBlcnJvci5zdGF0dXMgPSA0MDA7XG4gICAgfVxuXG4gICAgLy8gdGhpcyBpcyBub3QgYWx3YXlzIGJ1YmJsZWQgdXAsIHNvIGxldCdzIGRvdWJsZSBzdXJlIHRoaXMgZG9lc24ndCBmYWlsIHNpbGVudGx5XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgfVxuICAgIHJldHVybiByZWR1Y2VFcnJvcihzdGF0ZSwgYWN0aW9uLCBlcnJvcik7XG4gIH1cbn1cblxuZnVuY3Rpb24gcmVkdWNlRXJyb3IoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPixcbiAgYWN0aW9uOiBTZXRSZXNwb25zZUFjdGlvbiB8IE9wdGltaXN0aWNBY3Rpb24sXG4gIGVycm9yOiBhbnksXG4pOiBTdGF0ZTx1bmtub3duPiB7XG4gIGlmIChlcnJvci5uYW1lID09PSAnQWJvcnRFcnJvcicpIHtcbiAgICAvLyBJbiBjYXNlIHdlIGFib3J0IHNpbXBseSB1bmRvIHRoZSBvcHRpbWlzdGljIHVwZGF0ZSBhbmQgYWN0IGxpa2Ugbm8gZmV0Y2ggZXZlbiBvY2N1cmVkXG4gICAgLy8gV2Ugc3RpbGwgd2FudCB0aG9zZSB3YXRjaGluZyBwcm9taXNlcyBmcm9tIGZldGNoIGRpcmVjdGx5IHRvIG9ic2VydmVkIHRoZSBhYm9ydCwgYnV0IHdlIGRvbid0IHdhbnQgdG9cbiAgICAvLyBUcmlnZ2VyIGVycm9ycyBpbiB0aGlzIGNhc2UuIFRoaXMgbWVhbnMgdGhlb3JldGljYWxseSBpbXByb3Blcmx5IGJ1aWx0IGFib3J0cyB1c2VTdXNwZW5zZSgpIGNvdWxkIHN1c3BlbmQgZm9yZXZlci5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uc3RhdGUsXG4gICAgICBvcHRpbWlzdGljOiBmaWx0ZXJPcHRpbWlzdGljKHN0YXRlLCBhY3Rpb24pLFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICAuLi5zdGF0ZSxcbiAgICBtZXRhOiB7XG4gICAgICAuLi5zdGF0ZS5tZXRhLFxuICAgICAgW2FjdGlvbi5rZXldOiB7XG4gICAgICAgIGRhdGU6IGFjdGlvbi5tZXRhLmRhdGUsXG4gICAgICAgIGZldGNoZWRBdDogYWN0aW9uLm1ldGEuZmV0Y2hlZEF0LFxuICAgICAgICBleHBpcmVzQXQ6IGFjdGlvbi5tZXRhLmV4cGlyZXNBdCxcbiAgICAgICAgZXJyb3IsXG4gICAgICAgIGVycm9yUG9saWN5OiBhY3Rpb24uZW5kcG9pbnQuZXJyb3JQb2xpY3k/LihlcnJvciksXG4gICAgICB9LFxuICAgIH0sXG4gICAgb3B0aW1pc3RpYzogZmlsdGVyT3B0aW1pc3RpYyhzdGF0ZSwgYWN0aW9uKSxcbiAgfTtcbn1cbi8qKiBGaWx0ZXIgYWxsIHJlcXVlc3RzIHdpdGggc2FtZSBzZXJpYWxpemF0aW9uIHRoYXQgZGlkIG5vdCBzdGFydCBhZnRlciB0aGUgcmVzb2x2aW5nIHJlcXVlc3QgKi9cbmZ1bmN0aW9uIGZpbHRlck9wdGltaXN0aWMoXG4gIHN0YXRlOiBTdGF0ZTx1bmtub3duPixcbiAgcmVzb2x2aW5nQWN0aW9uOiBTZXRSZXNwb25zZUFjdGlvbiB8IE9wdGltaXN0aWNBY3Rpb24sXG4pIHtcbiAgcmV0dXJuIHN0YXRlLm9wdGltaXN0aWMuZmlsdGVyKFxuICAgIG9wdGltaXN0aWNBY3Rpb24gPT5cbiAgICAgIG9wdGltaXN0aWNBY3Rpb24ua2V5ICE9PSByZXNvbHZpbmdBY3Rpb24ua2V5IHx8XG4gICAgICAob3B0aW1pc3RpY0FjdGlvbi50eXBlID09PSBPUFRJTUlTVElDID9cbiAgICAgICAgb3B0aW1pc3RpY0FjdGlvbi5tZXRhLmZldGNoZWRBdCAhPT0gcmVzb2x2aW5nQWN0aW9uLm1ldGEuZmV0Y2hlZEF0XG4gICAgICA6IG9wdGltaXN0aWNBY3Rpb24ubWV0YS5kYXRlID4gcmVzb2x2aW5nQWN0aW9uLm1ldGEuZGF0ZSksXG4gICk7XG59XG4iXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLFNBQVMsUUFBUSx3QkFBd0I7QUFFbEQsU0FBU0MsVUFBVSxRQUFRLHNCQUFzQjtBQUNqRCxPQUFPQyxlQUFlLE1BQU0scUNBQXFDO0FBUWpFLE9BQU8sU0FBU0Msa0JBQWtCQSxDQUNoQ0MsS0FBcUIsRUFDckJDLE1BQTRDLEVBQzVDQyxVQUFzQixFQUNOO0VBQ2hCLElBQUlELE1BQU0sQ0FBQ0UsS0FBSyxFQUFFO0lBQ2hCLE9BQU9DLFdBQVcsQ0FBQ0osS0FBSyxFQUFFQyxNQUFNLEVBQUVBLE1BQU0sQ0FBQ0ksUUFBUSxDQUFDO0VBQ3BEO0VBQ0EsSUFBSTtJQUFBLElBQUFDLHFCQUFBO0lBQ0YsSUFBSUQsUUFBYTtJQUNqQjtJQUNBLElBQUlKLE1BQU0sQ0FBQ00sSUFBSSxLQUFLVixVQUFVLEVBQUU7TUFDOUI7TUFDQTtNQUNBLElBQUksQ0FBQ0ksTUFBTSxDQUFDTyxRQUFRLENBQUNDLHFCQUFxQixFQUFFLE9BQU9ULEtBQUs7TUFDeEQsSUFBSTtRQUNGO1FBQ0FLLFFBQVEsR0FBR0osTUFBTSxDQUFDTyxRQUFRLENBQUNDLHFCQUFxQixDQUFDQyxJQUFJLENBQ25EVCxNQUFNLENBQUNPLFFBQVEsRUFDZk4sVUFBVSxDQUFDUyxRQUFRLENBQUNYLEtBQUssRUFBRUMsTUFBTSxDQUFDVyxJQUFJLENBQUNDLFNBQVMsQ0FBQyxFQUNqRCxHQUFHWixNQUFNLENBQUNhLElBQ1osQ0FBQztNQUNILENBQUMsQ0FBQyxPQUFPQyxDQUFNLEVBQUU7UUFDZjtRQUNBLElBQUlBLENBQUMsQ0FBQ0MsV0FBVyxL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Q0FBQztJQUN0QjtJQUNBLE9BQU9DLFdBQVcsQ0FBQ0osS0FBSyxFQUFFQyxNQUFNLEVBQUVFLEtBQUssQ0FBQztFQUMxQztBQUNGO0FBRUEsU0FBU0MsV0FBV0EsQ0FDbEJKLEtBQXFCLEVBQ3JCQyxNQUE0QyxFQUM1Q0UsS0FBVSxFQUNNO0VBQ2hCLElBQUlBLEtBQUssQ0FBQ3lDLElBQUksS0FBSyxZQUFZLEVBQUU7SUFDL0I7SUFDQTtJQUNBO0lBQ0EsT0FBTztNQUNMLEdBQUc1QyxLQUFLO01BQ1JpQyxVQUFVLEVBQUVDLGdCQUFnQixDQUFDbEMsS0FBSyxFQUFFQyxNQUFNO0lBQzVDLENBQUM7RUFDSDtFQUNBLE9BQU87SUFDTCxHQUFHRCxLQUFLO0lBQ1JZLElBQUksRUFBRTtNQUNKLEdBQUdaLEtBQUssQ0FBQ1ksSUFBSTtNQUNiLENBQUNYLE1BQU0sQ0FBQ3NCLEdBQUcsR0FBRztRQUNaTyxJQUFJLEVBQUU3QixNQUFNLENBQUNXLElBQUksQ0FBQ2tCLElBQUk7UUFDdEJqQixTQUFTLEVBQUVaLE1BQU0sQ0FBQ1csSUFBSSxDQUFDQyxTQUFTO1FBQ2hDa0IsU0FBUyxFQUFFOUIsTUFBTSxDQUFDVyxJQUFJLENBQUNtQixTQUFTO1FBQ2hDNUIsS0FBSztRQUNMMEMsV0FBVyxFQUFFNUMsTUFBTSxDQUFDTyxRQUFRLENBQUNxQyxXQUFXLG9CQUEzQjVDLE1BQU0sQ0FBQ08sUUFBUSxDQUFDcUMsV0FBVyxDQUFHMUMsS0FBSztNQUNsRDtJQUNGLENBQUM7SUFDRDhCLFVBQVUsRUFBRUMsZ0JBQWdCLENBQUNsQyxLQUFLLEVBQUVDLE1BQU07RUFDNUMsQ0FBQztBQUNIO0FBQ0E7QUFDQSxTQUFTaUMsZ0JBQWdCQSxDQUN2QmxDLEtBQXFCLEVBQ3JCOEMsZUFBcUQsRUFDckQ7RUFDQSxPQUFPOUMsS0FBSyxDQUFDaUMsVUFBVSxDQUFDYyxNQUFNLENBQzVCQyxnQkFBZ0IsSUFDZEEsZ0JBQWdCLENBQUN6QixHQUFHLEtBQUt1QixlQUFlLENBQUN2QixHQUFHLEtBQzNDeUIsZ0JBQWdCLENBQUN6QyxJQUFJLEtBQUtWLFVBQVUsR0FDbkNtRCxnQkFBZ0IsQ0FBQ3BDLElBQUksQ0FBQ0MsU0FBUyxLQUFLaUMsZUFBZSxDQUFDbEMsSUFBSSxDQUFDQyxTQUFTLEdBQ2xFbUMsZ0JBQWdCLENBQUNwQyxJQUFJLENBQUNrQixJQUFJLEdBQUdnQixlQUFlLENBQUNsQyxJQUFJLENBQUNrQixJQUFJLENBQzVELENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@data-client/core",
3
- "version": "0.15.4",
3
+ "version": "0.16.0",
4
4
  "description": "Async State Management without the Management. REST, GraphQL, SSE, Websockets, Fetch",
5
5
  "sideEffects": false,
6
6
  "main": "dist/index.js",
@@ -134,12 +134,12 @@
134
134
  },
135
135
  "dependencies": {
136
136
  "@babel/runtime": "^7.20.0",
137
- "@data-client/normalizr": "^0.15.4",
137
+ "@data-client/normalizr": "^0.16.0",
138
138
  "flux-standard-action": "^2.1.1"
139
139
  },
140
140
  "devDependencies": {
141
141
  "@anansi/browserslist-config": "^1.4.2",
142
- "@data-client/endpoint": "0.15.4",
142
+ "@data-client/endpoint": "0.16.0",
143
143
  "@types/jest": "30.0.0",
144
144
  "@types/node": "^24.0.0",
145
145
  "rollup-plugins": "1.0.0"
@@ -1,4 +1,4 @@
1
- import { Entity, schema } from '@data-client/endpoint';
1
+ import { Entity, Collection, All, Query, Union } from '@data-client/endpoint';
2
2
 
3
3
  import { initialState } from '../../state/reducer/createReducer';
4
4
  import { State } from '../../types';
@@ -8,7 +8,7 @@ class Tacos extends Entity {
8
8
  type = '';
9
9
  id = '';
10
10
  }
11
- const TacoList = new schema.Collection([Tacos]);
11
+ const TacoList = new Collection([Tacos]);
12
12
  const entities = {
13
13
  Tacos: {
14
14
  1: { id: '1', type: 'foo' },
@@ -188,7 +188,7 @@ describe('Controller.get()', () => {
188
188
  ...initialState,
189
189
  entities,
190
190
  };
191
- const AllTacos = new schema.All(Tacos);
191
+ const AllTacos = new All(Tacos);
192
192
 
193
193
  it('should get all entities', () => {
194
194
  const allTacos = controller.get(AllTacos, state);
@@ -229,8 +229,8 @@ describe('Controller.get()', () => {
229
229
  ...initialState,
230
230
  entities,
231
231
  };
232
- const queryTacos = new schema.Query(
233
- new schema.All(Tacos),
232
+ const queryTacos = new Query(
233
+ new All(Tacos),
234
234
  (tacos, { type }: { type?: string } = {}) => {
235
235
  if (!type) return tacos;
236
236
  return tacos.filter(taco => taco.type === type);
@@ -281,7 +281,7 @@ describe('Controller.get()', () => {
281
281
  ...initialState,
282
282
  entities,
283
283
  };
284
- const tacoCount = new schema.Query(TacoList, tacos => {
284
+ const tacoCount = new Query(TacoList, tacos => {
285
285
  return tacos.length ?? 0;
286
286
  });
287
287
 
@@ -303,7 +303,7 @@ describe('Controller.get()', () => {
303
303
  groupname: string = '';
304
304
  memberCount = 0;
305
305
  }
306
- const queryPerson = new schema.Union(
306
+ const queryPerson = new Union(
307
307
  {
308
308
  users: User,
309
309
  groups: Group,
@@ -363,7 +363,7 @@ describe('Controller.get()', () => {
363
363
  groupname: string = '';
364
364
  memberCount = 0;
365
365
  }
366
- const queryPerson = new schema.Union(
366
+ const queryPerson = new Union(
367
367
  {
368
368
  users: User,
369
369
  groups: Group,
@@ -3,6 +3,7 @@ import type { EndpointInterface } from '@data-client/normalizr';
3
3
  import { createMeta } from './createMeta.js';
4
4
  import { OPTIMISTIC } from '../../actionTypes.js';
5
5
  import type { OptimisticAction } from '../../types.js';
6
+ import ensurePojo from '../ensurePojo.js';
6
7
  import type { EndpointUpdateFunction } from '../types.js';
7
8
 
8
9
  export function createOptimistic<
@@ -25,7 +26,7 @@ export function createOptimistic<
25
26
  return {
26
27
  type: OPTIMISTIC,
27
28
  key: endpoint.key(...args),
28
- args,
29
+ args: args.map(ensurePojo),
29
30
  endpoint,
30
31
  meta: createMeta(endpoint.dataExpiryLength ?? 60000, fetchedAt),
31
32
  };
@@ -1,7 +1,19 @@
1
+ /** Listens to online/offline events for triggering re-fetches on reconnect.
2
+ *
3
+ * Implement this interface to provide custom connectivity detection
4
+ * (e.g., for React Native or Node.js environments).
5
+ *
6
+ * @see https://dataclient.io/docs/api/PollingSubscription
7
+ */
1
8
  export default interface ConnectionListener {
9
+ /** Returns whether the client is currently connected to the network. */
2
10
  isOnline: () => boolean;
11
+ /** Register a handler to be called when the client comes back online. */
3
12
  addOnlineListener: (handler: () => void) => void;
13
+ /** Remove a previously registered online handler. */
4
14
  removeOnlineListener: (handler: () => void) => void;
15
+ /** Register a handler to be called when the client goes offline. */
5
16
  addOfflineListener: (handler: () => void) => void;
17
+ /** Remove a previously registered offline handler. */
6
18
  removeOfflineListener: (handler: () => void) => void;
7
19
  }
@@ -94,6 +94,7 @@ export default class DevToolsManager implements Manager {
94
94
  protected actions: [ActionTypes, State<unknown>][] = [];
95
95
  declare protected controller: Controller;
96
96
  declare skipLogging?: (action: ActionTypes) => boolean;
97
+ declare devtoolsName: string;
97
98
  maxBufferLength = 100;
98
99
 
99
100
  constructor(
@@ -101,13 +102,13 @@ export default class DevToolsManager implements Manager {
101
102
  skipLogging?: (action: ActionTypes) => boolean,
102
103
  ) {
103
104
  /* istanbul ignore next */
105
+ const options = { ...DEFAULT_CONFIG, ...config };
106
+ this.devtoolsName =
107
+ options.name ?? `Data Client: ${globalThis.document?.title}`;
104
108
  this.devTools =
105
109
  typeof window !== 'undefined' &&
106
110
  (window as any).__REDUX_DEVTOOLS_EXTENSION__ &&
107
- (window as any).__REDUX_DEVTOOLS_EXTENSION__.connect({
108
- ...DEFAULT_CONFIG,
109
- ...config,
110
- });
111
+ (window as any).__REDUX_DEVTOOLS_EXTENSION__.connect(options);
111
112
  // we cut it in half so we should double so we don't lose
112
113
  if (config?.maxAge) this.maxBufferLength = config.maxAge * 2;
113
114
  if (skipLogging) this.skipLogging = skipLogging;
@@ -118,8 +119,8 @@ export default class DevToolsManager implements Manager {
118
119
  /* istanbul ignore next */
119
120
  if (process.env.NODE_ENV !== 'production') {
120
121
  this.prototype.middleware = function (controller) {
121
- if (!this.devTools) return next => action => next(action);
122
122
  this.controller = controller;
123
+ if (!this.devTools) return next => action => next(action);
123
124
  const reducer = createReducer(controller as any);
124
125
  let state = controller.getState();
125
126
  return next => action => {
@@ -158,6 +159,12 @@ export default class DevToolsManager implements Manager {
158
159
 
159
160
  /** Called when initial state is ready */
160
161
  init(state: State<any>) {
162
+ if (process.env.NODE_ENV !== 'production') {
163
+ ((globalThis as any).__DC_CONTROLLERS__ ??= new Map()).set(
164
+ this.devtoolsName,
165
+ this.controller,
166
+ );
167
+ }
161
168
  if (process.env.NODE_ENV !== 'production' && this.devTools) {
162
169
  this.devTools.init(state);
163
170
  this.devTools.subscribe((msg: any) => {
@@ -186,5 +193,13 @@ export default class DevToolsManager implements Manager {
186
193
  }
187
194
 
188
195
  /** Ensures all subscriptions are cleaned up. */
189
- cleanup() {}
196
+ cleanup() {
197
+ if (process.env.NODE_ENV !== 'production') {
198
+ const map: Map<string, Controller> | undefined = (globalThis as any)
199
+ .__DC_CONTROLLERS__;
200
+ if (map?.get(this.devtoolsName) === this.controller) {
201
+ map.delete(this.devtoolsName);
202
+ }
203
+ }
204
+ }
190
205
  }
@@ -251,7 +251,7 @@ export default class NetworkManager implements Manager {
251
251
  * create a new promise and call fetch.
252
252
  *
253
253
  * Note: The new promise is not actually tied to fetch at all,
254
- * but is resolved when the expected 'recieve' action is processed.
254
+ * but is resolved when the expected 'receive' action is processed.
255
255
  * This ensures promises are resolved only once their data is processed
256
256
  * by the reducer.
257
257
  */
@@ -34,6 +34,9 @@ export class GCPolicy implements GCInterface {
34
34
  this.intervalId = setInterval(() => {
35
35
  this.idleCallback(() => this.runSweep(), { timeout: 1000 });
36
36
  }, this.options.intervalMS);
37
+ if (typeof this.intervalId === 'object' && 'unref' in this.intervalId) {
38
+ this.intervalId.unref();
39
+ }
37
40
  }
38
41
 
39
42
  cleanup() {