flow.js 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. "use strict";
  2. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  3. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  4. return new (P || (P = Promise))(function (resolve, reject) {
  5. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  6. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  7. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  8. step((generator = generator.apply(thisArg, _arguments || [])).next());
  9. });
  10. };
  11. Object.defineProperty(exports, "__esModule", { value: true });
  12. exports.flow = void 0;
  13. /**
  14. * @todo Combine with the `Container` util
  15. */
  16. function flow(target, source) {
  17. return {
  18. set(key, normalize, callback) {
  19. if (source[key] === undefined)
  20. return this;
  21. const value = normalize ? normalize.call(null, source[key]) : source[key];
  22. if (callback)
  23. callback.call(null, value);
  24. else if (typeof target[key] === 'function')
  25. target[key](value);
  26. else
  27. target[key] = value;
  28. return this;
  29. },
  30. setAsync(key, normalize, callback) {
  31. return __awaiter(this, void 0, void 0, function* () {
  32. if (source[key] === undefined)
  33. return this;
  34. const value = normalize
  35. ? yield normalize.call(null, source[key])
  36. : source[key];
  37. if (callback)
  38. callback.call(null, value);
  39. else if (typeof target[key] === 'function')
  40. target[key](value);
  41. else
  42. target[key] = value;
  43. return this;
  44. });
  45. },
  46. };
  47. }
  48. exports.flow = flow;
  49. //# sourceMappingURL=flow.js.map