UNPKG

@tobes31415/dispose

Version:

Dispose objects using the decorator pattern

2 lines (1 loc) 1.48 kB
"use strict";var r=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var D=Object.getOwnPropertyNames;var l=Object.prototype.hasOwnProperty;var x=(e,o)=>{for(var n in o)r(e,n,{get:o[n],enumerable:!0})},y=(e,o,n,i)=>{if(o&&typeof o=="object"||typeof o=="function")for(let t of D(o))!l.call(e,t)&&t!==n&&r(e,t,{get:()=>o[t],enumerable:!(i=b(o,t))||i.enumerable});return e};var T=e=>y(r({},"__esModule",{value:!0}),e);var C={};x(C,{assertNotDisposed:()=>P,dispose:()=>a,isDisposed:()=>d,onDispose:()=>s,onDisposeChain:()=>g,onDisposeDeleteProperties:()=>A,onDisposeDisposeProperties:()=>j,onDisposeUnsubscribe:()=>M});module.exports=T(C);var p=Symbol("gc");function c(e){return e[p]||(e[p]={onDispose:[]}),e[p]}function h(e){delete e.onDispose}function a(e){let o=c(e);o.isDisposed||(o.isDisposed=!0,o.onDispose.forEach(f),h(o))}function d(e){return!!c(e).isDisposed}function P(e,o){if(d(e))throw new Error(o||"Object has been disposed")}function s(e,o){let n=c(e);n.isDisposed?f(o):n.onDispose.push(o)}function g(e,o){s(e,a.bind(null,o))}function j(e){s(e,u.bind(null,e,v))}function A(e){s(e,u.bind(null,e,m))}function f(e){try{e()}catch(o){console.error("error occured inside a dispose handler",o.message||""+o),console.log(o)}}function u(e,o){Object.entries(e).forEach(([n,i])=>o({key:n,value:i,object:e}))}function m({key:e,object:o}){try{o[e]=void 0}catch{}try{delete o[e]}catch{}}function v({value:e}){typeof e=="object"&&a(e)}function M(e,o){s(e,o.unsubscribe.bind(o))}