{"_id":"@aboutweb/proxyclass","_rev":"5-c25505f63a84dcd9cc56b55faae25441","name":"@aboutweb/proxyclass","dist-tags":{"latest":"2.0.6"},"versions":{"1.0.0":{"name":"@aboutweb/proxyclass","version":"1.0.0","description":"A seemless way for organizing multi inheritance.","main":"dist/index.js","module":"dist/index.mjs","scripts":{"test":"jasmine","build":"node ./bin/build.js","watch":"node ./bin/build.js -w -v"},"repository":{"type":"git","url":"git+https://github.com/stephan-dum/ProxyClass.git"},"keywords":["inheritance","extend","instanceof","proxy","es6"],"author":"","license":"ISC","bugs":{"url":"https://github.com/stephan-dum/ProxyClass/issues"},"homepage":"https://github.com/stephan-dum/ProxyClass#readme","dependencies":{"@aboutweb/proxyscope":"^2.0.1"},"devDependencies":{"chokidar":"^2.0.4","jasmine":"^3.1.0","rollup":"^0.67.3","rollup-plugin-node-resolve":"^3.4.0"},"gitHead":"4384b38e275302f62dbda25e1ce3509fe1c7d5c2","_id":"@aboutweb/proxyclass@1.0.0","_npmVersion":"6.4.1","_nodeVersion":"9.8.0","_npmUser":{"name":"aboutweb","email":"stephan.dum@gmx.at"},"dist":{"integrity":"sha512-xi5Uh1OU6rUWwws5g7SEMtO/gYFoceH+nfXQ4HP4luRGWquEb4nhp5tMWFTF1FAEuMoWnfuAsxMr/CQMiMzTMw==","shasum":"e383042f866c207374f89585e94b290d8fe6b1bb","tarball":"https://registry.npmjs.org/@aboutweb/proxyclass/-/proxyclass-1.0.0.tgz","fileCount":10,"unpackedSize":58004,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb9FjfCRA9TVsSAnZWagAAauoP/jB+IsTMI7rjiBWRa0Ds\noGxaQxVaSYgnB7eaa5iwub7CnkvRX9aAUROQaJoVnAq+s8ifK5JbdD7AW5uA\nNl6kNp0BTMvOV8NgMeriLejw3k1L+OSMCvXw/FmbDQ71E5T3wek3vFR1S5Hi\nMdjHbUVKfprgsgp3B6Yjb5+ihKNG39Crz0mgoH76IIEmO2gIPlTCZTTpklsd\nopNteTI+LkBuRoPsHtzJBeESGaWq87q58rrk2vhSxAh2LufB0T3zAy29HtO/\nmDLoq9KnncUkQIrGhrOCguNXQ2Uek/T3pUgQK5kRKLTC/c2bV/hBdF/U4OyU\nSgb8Lho31svB5HMwV4S+bcZhZ7sSyYUFRC9p+kyWKliHWgkWp6kFzIonpNQ/\nAwc5DlEapXq/pfmwexGvonXTvVL7i8LZxSnLbob/5JMT4e3R/hWU5vLXktJi\njqICWAJrAeudrolHkfA1m8SPVRbXaRBnxvSSa3XbZUmnT+Ljk4H3+oPYD14f\nLI+J8TqQ7k+Y+Bo8f6iGBsuEKfTQs8Q+4RVo9QCt0j5cEv+JBEv2yeWstsnn\nhLmWZytHzmUkd9eb+q4uGLhq1wNHc5LfVrdEy9hJ6kxeQAF3raAf6EKyjXVv\nG7BQCKfrERjaIYE+5isOqMbLWJJyT4kMEIL+dPGB9ciPApQg7jxwCn02Erkv\nt4ss\r\n=1WtB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIFvvXlxvy69yMHZ4pPUpOpFjYH1BPY1vp2R31efMtJgwAiBS+Xh+7IKG4+n8/99YY3BNaAEjECFTnKCNl08/HCweSw=="}]},"maintainers":[{"name":"aboutweb","email":"stephan.dum@gmx.at"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/proxyclass_1.0.0_1542740191051_0.49821238082771946"},"_hasShrinkwrap":false},"2.0.3":{"name":"@aboutweb/proxyclass","umd":{"name":"proxyClass","globals":{"@aboutweb/proxy-scope":"proxyScope"}},"version":"2.0.3","description":"A seemless way for organizing multi inheritance.","main":"dist/index.js","module":"dist/index.mjs","inputs":"./index.js","scripts":{"test":"jasmine","build":"irrigable-packagejson -t -s","watch":"npm run build -- -w='./spec/*'"},"repository":{"type":"git","url":"git+https://github.com/stephan-dum/proxy-class.git"},"keywords":["inheritance","extend","instanceof","proxy","es6"],"author":"","license":"ISC","bugs":{"url":"https://github.com/stephan-dum/proxy-class/issues"},"homepage":"https://github.com/stephan-dum/proxy-class#readme","dependencies":{"@aboutweb/proxy-scope":"^2.0.3"},"devDependencies":{"irrigable-packagejson":"^0.0.2","jasmine":"^3.1.0"},"gitHead":"261c0ff218160491c5744fd41d56135fccc8cb42","_id":"@aboutweb/proxyclass@2.0.3","_npmVersion":"6.4.1","_nodeVersion":"9.8.0","_npmUser":{"name":"aboutweb","email":"stephan.dum@gmx.at"},"dist":{"integrity":"sha512-owBc2lu/1KFXipXGoptZoe+M58C0zJ1PupugHYQOGw7GrFBWVlFG80tmKHfei8e39LqIBrdOvuDvOWjswxHDBw==","shasum":"0171cd61e87c9a6706f92c533efbcb0bf300fc74","tarball":"https://registry.npmjs.org/@aboutweb/proxyclass/-/proxyclass-2.0.3.tgz","fileCount":9,"unpackedSize":24871,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+7ZdCRA9TVsSAnZWagAAsNAQAIbFXejf4mUsXoM38ouN\nR+ffKmd2lmRA7PX9M4XFSfOkblv/Zo/dM6N8vgXZCawuPUglDaySpNPTeIkQ\niWNSBT20KQRhJe2n8TIoXu7NbDHvrOBTyDCq55wJSw0QHbmLmT9p2CB2Uwx0\ndQhaf5YQTmu2tj5yX9nim2uOVtaWRSU3ndo91VXPnESkD0QcQVXcVZ2AS7jX\nsRsdk717z67Fb5LwQvebCY2Ag6nPD93Smj2+Fw7dOClSC38iyTrzEB/PdGtr\nTX3vqrCe6HUr2DQespYjTiiPaCBjvsdmXdj1FwLTxqGPop+ziC1KZc7Z0Fis\nZ+Mg3cUP9Az3qqF2ZZrEK13EWza+xbfahoDFzu9dXHdFNV/he5Iq0CzIZLxu\nLnD+qAULybGbRYG7FpUbt/JMjZ5gRBTJsVQHj8X7p2uJlurJq9gWxerSTc8J\nIA1sN4zHHAA/GczxTTgp0yYL1shFZzl6K/D9pjMqb9KHPWjftSDoeE1MK142\n8h3KK6qS1AoFylSx+X5Dxh4s1e8XlgXZFSpMIgosaFLKGCsIopa+iB3ZZ+B7\nWjZ71QrzOVON7xY8l7cvTUX1mOhuZEdm2UNexhmmHrdKYBYUjmLhiAN+bl+w\nX8xMFve6xXPqYFG5d65zXYfbkauI8AfHwuDWcpIkJ8TzFrVWfa4i2JOtnreE\nGlko\r\n=waza\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIH+AWuKY9ttvXPfuaKPYaix8DvlK/8rlyRyTu26Q8k7kAiAFofjFIjqAq9fwjwPl/MoTeBa4tPqwDJRap+vUHhJjJQ=="}]},"maintainers":[{"name":"aboutweb","email":"stephan.dum@gmx.at"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/proxyclass_2.0.3_1543222876789_0.24732680728254852"},"_hasShrinkwrap":false},"2.0.4":{"name":"@aboutweb/proxyclass","umd":{"name":"proxyClass","globals":{"@aboutweb/proxyscope":"proxyScope"}},"version":"2.0.4","description":"A seemless way for organizing multi inheritance.","main":"dist/index.js","module":"dist/index.mjs","inputs":"./index.js","scripts":{"test":"jasmine","build":"irrigable-packagejson -t -s","watch":"npm run build -- -w='./spec/*'"},"repository":{"type":"git","url":"git+https://github.com/stephan-dum/proxy-class.git"},"keywords":["inheritance","extend","instanceof","proxy","es6"],"author":"","license":"ISC","bugs":{"url":"https://github.com/stephan-dum/proxy-class/issues"},"homepage":"https://github.com/stephan-dum/proxy-class#readme","dependencies":{"@aboutweb/proxyscope":"^2.0.6"},"devDependencies":{"@aboutweb/irrigable-packagejson":"^0.0.6","jasmine":"^3.1.0"},"gitHead":"3c5c06ebb101e602445e6a46a7f92587746f27cc","_id":"@aboutweb/proxyclass@2.0.4","_npmVersion":"6.4.1","_nodeVersion":"9.8.0","_npmUser":{"name":"aboutweb","email":"stephan.dum@gmx.at"},"dist":{"integrity":"sha512-k/IN4bUK/hJMcndKqSE2PuO11UbAq+DxOOF0hZSUh6uRtjbjwtCRaVIfkmCEPRqK2YTCt0+AjTIAWDPHM+eOnw==","shasum":"85e0ceacab27116ee665a50bc43d51780a4da234","tarball":"https://registry.npmjs.org/@aboutweb/proxyclass/-/proxyclass-2.0.4.tgz","fileCount":9,"unpackedSize":24867,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb+9JHCRA9TVsSAnZWagAAYgAP/1b+ioUmk9OxQJ3q0uB5\necrcCyxhS6/s65/9VQ5JoXwei03X8hGdYQwCtt+13nwQzOzhCEcLILWl0gk5\nw7KiswWvIUN9a+I/qWo3cr/A0xSn/6adml+h1/vrPjD7g4s+ZF90OSQcr8Dr\nGnkMEnr/eoN5bLI6f1tkqDPiE6636PI/aWx0JbGbcMlOrxPqqGTjD/rIXa2E\nVVS82292YP5aft2jOnYVxmMS94ydb5pyWZ6vL1pZ1ENV/Pgj5GMmozN73Blt\nKFfG1xrr9e+yMc2BgTdtbQdO7biHrsQAZcALGdDI2/8quxH+uioWi+vwxSJT\ngm3WblU0wWxuQ8YAueyhybYriiBFOJgJKT8XD7HReJNtMBgiaMxRvRxI81nh\npWsf2zRZrPHqRsWQZW5Fo/Mb9pZ5fAnXrw2lAgvX5Z2hvpRnAvzcSGC04Qr5\nZQbpaUKL9Uf2pVKWJKIt3hgE2QP45bQWeG2Htjmhcio5HtUeoC4ga4XzlHE1\nCGfrx2Iq7ErlGrv3deL736nrT0WF+wdS1lQ3LzBuLzHO7WHZMDloXXhlvCXC\nMyFK0UbDXiLjSPrHGUa3z7JeoSejVvTUQdWK2YBxCwR8qBXyk+Z7dHoOh+Tn\nHhRfpevrD26u1HwqUgaES5w/Uo8zlvH9kGIi8l7hY6jfRF092EGPgWlJq50W\ny2+h\r\n=2Vlo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGMHXHn56ngTZPVmjUb9hteNPQjMJKbg4vbVbwT/WrhyAiAXAPMFRPKScxF7E+Bz53mtnftf1u7s9uoibqw6wtRl3Q=="}]},"maintainers":[{"name":"aboutweb","email":"stephan.dum@gmx.at"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/proxyclass_2.0.4_1543230023058_0.13899117180440412"},"_hasShrinkwrap":false},"2.0.5":{"name":"@aboutweb/proxyclass","umd":{"name":"proxyClass","globals":{"@aboutweb/proxyscope":"proxyScope"}},"version":"2.0.5","description":"A seemless way for organizing multi inheritance.","main":"dist/index.js","module":"dist/index.mjs","inputs":"./index.js","scripts":{"test":"jasmine","build":"irrigable-packagejson -t -s","watch":"npm run build -- -w='./spec/*'"},"repository":{"type":"git","url":"git+https://github.com/stephan-dum/proxy-class.git"},"keywords":["inheritance","extend","instanceof","proxy","es6"],"author":"","license":"ISC","bugs":{"url":"https://github.com/stephan-dum/proxy-class/issues"},"homepage":"https://github.com/stephan-dum/proxy-class#readme","dependencies":{"@aboutweb/proxyscope":"^3.0.1"},"devDependencies":{"@aboutweb/irrigable-packagejson":"0.0.8","jasmine":"^3.1.0"},"gitHead":"7bd6f5048ca5db3c30fd8f66deffb3183d7a98a6","_id":"@aboutweb/proxyclass@2.0.5","_npmVersion":"6.4.1","_nodeVersion":"9.8.0","_npmUser":{"name":"aboutweb","email":"stephan.dum@gmx.at"},"dist":{"integrity":"sha512-YMgRTNk19nvnxu21332TPsUrpLKkTH9YX+rKchBRlmD1qGRZqriS2KAP3tBmnv84rMLfKrXDZ6L85B2sTH7w4Q==","shasum":"5fa948fb225d584601ae2b0b18aaa0218ff0ac9b","tarball":"https://registry.npmjs.org/@aboutweb/proxyclass/-/proxyclass-2.0.5.tgz","fileCount":9,"unpackedSize":25756,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/Gy1CRA9TVsSAnZWagAAUOoP/R5yFQv6/uGOpi4zc5cd\nDjkQmrSFTGliYKIF5Gtu0/QrFO6n1/F17zfRt7n7dRBe8MShIYwHkAvhqdIw\nXp5LjJeQgg/lUoMSvUvPmViEEDxoztZc7rfaaOF4JE8l2qTE4acOsg9KExRA\nRYXPJH0d8znijsZr29GEHpbzL5FrCAIu7fqdA80lQC+Am/qVn8wmfaMRhTc7\nEng3ldH093q0zxJftcgFkseo4F8/nj5z7jIpj+MqOAJC2FXL6A7KThsReH5D\nWnY/WlljizQcEYdaqBo0ot6weZ9kqYFqpcykLIsnfS6CAgAL/vkf/FrPJM3E\n4h33+a2MWi9ZzhMVX2nZ+Hxa5QRx+nw68iIuFy69+7fIAws9D+pQWLULwT0K\nhU+Z3QvZnQN6JnyYNfUWoGzcER3bLV650J9xh/DnTa+TBA1Z0z5dmEt4saV9\n5U5IzhBuBeNxqE1HqZXdQgrcE9im/JBUA1OsXDb9M+YaVSQqJjV4qNTNzVh/\niCnJd5gtRgi5zu+B2SxnspZ7jWP7wZnGsXCBjia6VcIXy5Iiww/M4lIHFKe/\nV7QXh4LJ665rYHXW9B+ZbqQeoKLmi3ugbQWEMqH7W8mUiecSAagzFyK6yVMf\nrG0mT+u6YepJLDlmnd1auPDl3pqlTD3G/W3Gasylb1vh+xCDUQ1ML0FxR0q0\nPb3l\r\n=VcNX\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIG/y4CwIrJWZsipqMBHmb0qdR5sQ7FomwV9mpuLpxaFGAiBREiDxZc4hzuopKL1WvYZW/lITjmpg7PQJ4J35MvI38Q=="}]},"maintainers":[{"name":"aboutweb","email":"stephan.dum@gmx.at"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/proxyclass_2.0.5_1543269556483_0.8929795417261421"},"_hasShrinkwrap":false},"2.0.6":{"name":"@aboutweb/proxyclass","umd":{"name":"proxyClass","globals":{"@aboutweb/proxyscope":"proxyScope"}},"version":"2.0.6","description":"A seemless way for organizing multi inheritance.","main":"dist/index.js","module":"dist/index.mjs","inputs":"./index.js","scripts":{"test":"jasmine","build":"irrigable-packagejson -t -s","watch":"npm run build -- -w='./spec/*'"},"repository":{"type":"git","url":"git+https://github.com/stephan-dum/proxy-class.git"},"keywords":["inheritance","extend","instanceof","proxy","es6"],"author":"","license":"ISC","bugs":{"url":"https://github.com/stephan-dum/proxy-class/issues"},"homepage":"https://github.com/stephan-dum/proxy-class#readme","dependencies":{"@aboutweb/proxyscope":"^3.0.1"},"devDependencies":{"@aboutweb/irrigable-packagejson":"0.0.8","jasmine":"^3.1.0"},"gitHead":"30a78e3e6dc25857d3412328fb5cef19ff55a5e5","_id":"@aboutweb/proxyclass@2.0.6","_npmVersion":"6.4.1","_nodeVersion":"9.8.0","_npmUser":{"name":"aboutweb","email":"stephan.dum@gmx.at"},"dist":{"integrity":"sha512-C+oyOGwPs3sML4ySPiEjV/+2OOmINTIOnEy97c4VHtBNWRLKGbt+67gYzxRlI20ZeeW4tP4hvgWMYB6xsYl47w==","shasum":"8f72623983b095afc3ec470ac8cda261096f48fa","tarball":"https://registry.npmjs.org/@aboutweb/proxyclass/-/proxyclass-2.0.6.tgz","fileCount":9,"unpackedSize":41139,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb/uvMCRA9TVsSAnZWagAAMd8P/iGDOqbPPxOyPqA3nI62\nN3YRYihSE18xhDqNWM3e6HyY8p2yVJywvRc/f+UDyHBypiAFTyMrOnimuIMN\n0r7WfwHQdE3iMmq0Fty/kgt64XGyvAk0ZIWX2U8FJHIY28y9WKwqHcwYEKQ/\nDh/Z7qQ28rTT+lMoFyOiiR31fdYd3oK/pi6YawhXhVRxwkxqTCMyKnCRmjjp\nEUkoWqMNGvbU0DHkBBFSCrcA1p3v4q9SOFB+wkaFthnrLg746MKbvF+lv9N7\naKNfNaqWZmng/w7vr+D/l/Iwd3d8Y7U7bh+f72rQxnXjM3nPaYcJZCyw3/9X\ni8ATdrL/aYqnthGwsjTOx0IIw6BVv8Mz8ls4KmBOREwxVDZzE6I8j5xF4iPE\neZZBPkSop0wV8dzvBJf4jbBaM94ervfTRc6IvViQq3Nlvu5Y0DKN2+nQ5ol7\n1bt/eY1bcCmQOD90ibzmy4ZXDe+q+DAuJ8WCoAfw/0+fe/8GZk1fhtNBmHOe\nluZXFnZoYcgciVlLyuYw2ghY6prQyGlSwJQ3G9IToF/JpHZ3QRYNsAndloa+\nVOTqkdxMqzQUb34S1VvmTOxNJgy0XnH1jxjOJCkMgHHOxlDNrKX+JMxaTkBr\nkQ5P+vX+3X9Fztssa7ba8fAUt1UOnvGFDfgHLuOA0g0usPDpbD6ewwciv9gq\ntJ2g\r\n=5FTv\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBkVgTsW+/Jz1pIhSoucwMMIGSwm0JJDEHYHV3XdOypvAiEA8cCGgWtZ8fffvGR/8BNFZ/VGPx8ilxHpXXP07tOjdrI="}]},"maintainers":[{"name":"aboutweb","email":"stephan.dum@gmx.at"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/proxyclass_2.0.6_1543433162895_0.24199262987264492"},"_hasShrinkwrap":false}},"time":{"created":"2018-11-20T18:56:30.883Z","1.0.0":"2018-11-20T18:56:31.224Z","modified":"2022-04-04T11:00:43.370Z","2.0.3":"2018-11-26T09:01:16.906Z","2.0.4":"2018-11-26T11:00:23.220Z","2.0.5":"2018-11-26T21:59:16.636Z","2.0.6":"2018-11-28T19:26:03.148Z"},"maintainers":[{"name":"aboutweb","email":"stephan.dum@gmx.at"}],"description":"A seemless way for organizing multi inheritance.","homepage":"https://github.com/stephan-dum/proxy-class#readme","keywords":["inheritance","extend","instanceof","proxy","es6"],"repository":{"type":"git","url":"git+https://github.com/stephan-dum/proxy-class.git"},"bugs":{"url":"https://github.com/stephan-dum/proxy-class/issues"},"license":"ISC","readme":"# proxy-class\n\nA seemless way to organize multi inheritance.\n\n> Caution this function uses ES6 [Proxies](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Proxy), [Sets](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set) and [Symbols](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol/hasInstance). Use [Ring.js](http://ringjs.neoname.eu/) or similar libaries, if you want an ES5 approach.\n\n\n\nYou should always prefer other patterns like decorators or annotions if you can, because javascript does not support this for good reasons:\n\n  * must have the same arguments signiture\n  * hard to isolate instances\n  * overhead\n\n## ProxyClass(`...mixins`)\nUses ProxyScope to reflects all changes to `prototype` of all `mixins`.\n\n## ProxyClass.hasInstance(`...mixins`)\nAllows the use of `instanceof` by overwriting all `Subclass[Symbols.hasInstance]`.\n**Caution**: this will make instanceof more expensive.\n\n## Examples\n\n```javascript\nconst EventEmitter = require('events');\nconst listen = [\"on\", \"once\"];\n\nclass ArrayEmitter extends ProxyClass.hasInstance(Array, EventEmitter) {\n\tconstructor(options) {\n\t\tlet { data } = options;\n\n\t\tsuper(...data);\n\n\t\tlisten.forEach((property) => {\n\t\t\tlet type = options[property];\n\n\t\t\tif(type) {\n\t\t\t\tfor(let event in type) {\n\t\t\t\t\tlet listeners = type[event];\n\n\t\t\t\t\tif(!Array.isArray(listeners)) {\n\t\t\t\t\t\tlisteners = [listeners];\n\t\t\t\t\t}\n\n\t\t\t\t\tlisteners.forEach((listener) => {\n\t\t\t\t\t\tthis[property](event, listener)\n\t\t\t\t\t});\n\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.emit(\"push\", data);\n\t}\n\tpush(...args) {\n\t\tsuper.push(...args);\n\t\tthis.emit(\"push\", args);\n\t}\n}\n\nlet input = [\"fubar\", \"haha\"];\n\nlet ae = new ArrayEmitter({\n\tdata : input,\n\ton : {\n\t\tpush(...args) {\n\t\t\tconsole.log(\"every push\", args);\n\t\t}\n\t},\n\tonce : {\n\t\tpush(...args) {\n\t\t\tconsole.log(\"inital push\", args);\n\t\t}\n\t}\n});\n\nae.push(\"last\");\n\n//will be true\nna instanceof ArrayEmitter;\nna instanceof Array;\nna instanceof EventEmitter;\n\n\n```\n\nDeep Classes\n\n```javascript\nclass A {\n  constructor() {\n    this.aProp = true;\n\t\tthis.shared = \"sharedA\";\n  }\n  get isA() {\n  \treturn true;\n  }\n\tget sharedA() {\n\t\treturn this.shared;\n\t}\n\tsharedAFn() {\n\t\treturn this.shared;\n\t}\n}\n\nclass B { get isB() { return true; } }\n\nclass C extends ProxyClass.hasInstance(A, B) {\n  get isC() { return true; }\n}\n\nclass D {\n  get isD() { return true; }\n}\n\nclass E extends ProxyClass.hasInstance(C, D) {\n  constructor() {\n      super();\n\n      this.eProp = true;\n  }\n  get isE() { return true; }\n};\n\n//You can also inline your class\n\nvar F = ProxyClass.hasInstance(class {\n  constructor(someArg) {\n      this.someArg = someArg;\n      this.fProp = true;\n  }\n  get isF() {\n      return true;\n  }\n}, E);\n\n\nvar e = new E();\n\n//all of this will return true\ne instanceof Object;\ne instanceof A;\ne instanceof B;\ne instanceof C;\ne instanceof D;\ne instanceof E;\n\ne.isA;\ne.isB;\ne.isC;\ne.isD;\ne.isE;\ne.aProp;\ne.eProp;\n\nvar f = new F(\"fubar\");\n\n//same as e plus\nf instanceof F;\nf.isF;\nf.fProp;\nf.someArg == \"fubar\";\n\n```\n## Isolation\n\nAll class member function will get called with their own isolated context.\n\n```javascript\n\nexpect(e.shared).toEqual(\"sharedE\");\nexpect(e.sharedA).toEqual(\"sharedA\");\nexpect(e.sharedAFn()).toEqual(\"sharedA\");\n\n```\n\n## Dependancies\n- [ProxyScope](https://github.com/stephan-dum/proxyscope)\n\n\n## Licence\n\nISC\n","readmeFilename":"README.md"}