open-consul/ui/packages/consul-ui/app/utils/dom/event-source/resolver.js
John Cowen c98130cc08
ui: Move to Workspaced Structure (#8994)
* ui: Add the most basic workspace root in /ui

* We already have a LICENSE file in the repository root

* Change directory path in build scripts ui-v2 -> ui

* Make yarn install flags configurable from elsewhere

* Minimal workspace root makefile

* Call the new docker specific target

* Update yarn in the docker build image

* Reconfigure the netlify target and move to the higher makefile

* Move ui-v2 -> ui/packages/consul-ui

* Change repo root to refleect new folder structure

* Temporarily don't hoist consul-api-double

* Fixup CI configuration

* Fixup lint errors

* Fixup Netlify target
2020-10-21 15:23:16 +01:00

30 lines
917 B
JavaScript

export default function(P = Promise) {
return function(source, listeners) {
let current;
if (typeof source.getCurrentEvent === 'function') {
current = source.getCurrentEvent();
}
if (current != null) {
// immediately resolve if we have previous cached data
return P.resolve(current.data).then(function(cached) {
source.open();
return cached;
});
}
// if we have no previously cached data, listen for the first response
return new P(function(resolve, reject) {
// close, cleanup and reject if we get an error
listeners.add(source, 'error', function(e) {
listeners.remove();
e.target.close();
reject(e.error);
});
// ...or cleanup and respond with the first lot of data
listeners.add(source, 'message', function(e) {
listeners.remove();
resolve(e.data);
});
});
};
}