usingCtx.js 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import _Symbol from "core-js/library/fn/symbol/index.js";
  2. import _Symbol$for from "core-js/library/fn/symbol/for.js";
  3. import _Promise from "core-js/library/fn/promise.js";
  4. function _usingCtx() {
  5. var r = "function" == typeof SuppressedError ? SuppressedError : function (r, e) {
  6. var n = Error();
  7. return n.name = "SuppressedError", n.error = r, n.suppressed = e, n;
  8. },
  9. e = {},
  10. n = [];
  11. function using(r, e) {
  12. if (null != e) {
  13. if (Object(e) !== e) throw new TypeError("using declarations can only be used with objects, functions, null, or undefined.");
  14. if (r) var o = e[_Symbol.asyncDispose || _Symbol$for("Symbol.asyncDispose")];
  15. if (void 0 === o && (o = e[_Symbol.dispose || _Symbol$for("Symbol.dispose")], r)) var t = o;
  16. if ("function" != typeof o) throw new TypeError("Object is not disposable.");
  17. t && (o = function o() {
  18. try {
  19. t.call(e);
  20. } catch (r) {
  21. return _Promise.reject(r);
  22. }
  23. }), n.push({
  24. v: e,
  25. d: o,
  26. a: r
  27. });
  28. } else r && n.push({
  29. d: e,
  30. a: r
  31. });
  32. return e;
  33. }
  34. return {
  35. e: e,
  36. u: using.bind(null, !1),
  37. a: using.bind(null, !0),
  38. d: function d() {
  39. var o,
  40. t = this.e,
  41. s = 0;
  42. function next() {
  43. for (; o = n.pop();) try {
  44. if (!o.a && 1 === s) return s = 0, n.push(o), _Promise.resolve().then(next);
  45. if (o.d) {
  46. var r = o.d.call(o.v);
  47. if (o.a) return s |= 2, _Promise.resolve(r).then(next, err);
  48. } else s |= 1;
  49. } catch (r) {
  50. return err(r);
  51. }
  52. if (1 === s) return t !== e ? _Promise.reject(t) : _Promise.resolve();
  53. if (t !== e) throw t;
  54. }
  55. function err(n) {
  56. return t = t !== e ? new r(n, t) : n, next();
  57. }
  58. return next();
  59. }
  60. };
  61. }
  62. export { _usingCtx as default };