diff --git a/microscript/ILibDuktape_Polyfills.c b/microscript/ILibDuktape_Polyfills.c index d403614..96ca1a8 100644 --- a/microscript/ILibDuktape_Polyfills.c +++ b/microscript/ILibDuktape_Polyfills.c @@ -2337,7 +2337,7 @@ void ILibDuktape_Polyfills_JS_Init(duk_context *ctx) duk_peval_string_noresult(ctx, "addCompressedModule('zip-reader', Buffer.from('eJzVG/1T20b2d2b4Hza5mVpujDE2oS0+2iMYrkwJZDC5TC9lMrK0wgJZ0kmrAs1wf/u9t7uSVquVZJLeD6XTGPbjvbfv+71db3+7uXEUxY+Jf7NkZDwaj8hpyGhAjqIkjhKb+VG4ubG5ceY7NEypS7LQpQlhS0oOY9uBDzkzIP+iSQqryXg4IhYueCmnXvanmxuPUUZW9iMJI0aylAIEPyWeH1BCHxwaM+KHxIlWceDboUPJvc+WHIuEMdzc+FVCiBbMhsU2LI/hL09dRmyG1BL4WTIW729v39/fD21O6TBKbrYDsS7dPjs9Oj6fH28BtbjjfRjQNCUJ/U/mJ3DMxSOxYyDGsRdAYmDfkygh9k1CYY5FSOx94jM/vBmQNPLYvZ3QzQ3XT1niLzJW4VNOGpxXXQCcskPy8nBOTucvyZvD+el8sLnx4fTq54v3V+TD4eXl4fnV6fGcXFySo4vz2enV6cU5/HVCDs9/Jb+cns8GhAKXAAt9iBOkHkj0kYPUBXbNKa2g9yJBThpTx/d8Bw4V3mT2DSU30e80CeEsJKbJyk9RiikQ525uBP7KZ1wJ0vqJAMm325sbv9sJOb44ml2SA7Izwv/Gr/emYlyMTiZ7kx/Gu9/LwbMTHNz7bjLe/e71eIrsx+E4iQA5hSkpBasnh3p9udPN4oA+qCuAn9Re9frDGZ/iwLwsdJBkAkJ37k6iAOh+Z7Ol5dKU9Tc3PgsF8T1iAQIHODeMA5sBg1bk4ID07v1wMu71xSq5GH9wO+DGj2EKbGZWbxsw30Z+aPV++41TieuexAcNUroODNwpgWzrMPDQLLoDblc3tdBNfiIIkuwTBVwJbWFzFgugw3Tpe8zKV90vwR4tORXQ8AZs8EeyU+cEB/LqgFjrE0JeaThzpEIU1otCpF4K/KAPYCrp/DF0LETW75eLFTrwp7pvdef6SblNwfFUMPZJURH6wBLbYefwacWabgxjGrpgFjkr4GijPvlM4mEaZYlDh04QpRS4ByOfwADxt4SyLAmnqvxCgA0cL8HFUVywnGu10Il4iCQLdQVuPYu1iGP611FrB/xJFNChH3rRjtU7FkIA3sCB4DTcTuUOljzWsBntWsNgM2dp0fppa8JTp0CKt1ZFa6Q8C9jiF1gpHA8XmwR4Q9mcD1oojRwILI0yFmdM9VpcVR1Yy+gHCCNU7sNzDEDBvMC+SYEV94seeaoBGob2Ck1YkXk5VzrRuDYXgSj4qXsDUhiAVWcRahCG5xxYflig2CEvDkhlLudm4og9SFyLtVbhIrt7R5dH5AglSjwb/I/bU/lfk4EiY66Niv2qsAt1UNgnTxH7MbUKruD8UyVq/OHHMXUvFrfUAZgY/0u/wFF8EnOnM+ByD1ZvAVhQxaG6sTdVN3Ao6HXxU85gPLbQ/G8fMJ3IEWk8E/tPZvnmj7cP10PPVZixAOx3VeUXJAxd6vkhfZdEENbZI2fPgPQw50pBAxQkoLn7dY0wSA/JBWkAMR+vp/UpXxuDI1o+P1zJhX51iYZAinsYZ+nSUnZ99K+FZmkYnkyaQiz4NLn+vioUVOaD8tSowBxDTQQ5UJUcXHmNIAo9U0EXnkBFoLgHIxrOQPCH5IDUMFVCJbFe4DqMRGyZRPfE6mFS7UWQoIHtlF5KkdhUHUMQCGGI+TYmjkgeD26Ngtcc9nkE9UGx94XJYrmDupcZm9UpdMymqaqEzjIL78BPBaAJ/fp6AwgDne/sNN2+WiaZiCscZh7NX8HQ4pGBLejU5z+KmsC/k3FOUz7etA+yGSFB1OKLXwzUt5ygQCx35+rALYIT0IRWoCbr4O7Ajz+c8VYbrpJSvhYFngVBy4an5qkyqfgCUqtE8M/nU9Ew3ExYt/xEujezmb2m9NY/iIHap0F9DPy/HahW9UxzWlOduljBT4/K0Xb4doX788UD0oEqHKwryejXcRnDv8rk1P9DD3MtFOnG3kwOL88KgSjaVZRqI/LNN1WJVdxHfWdei/WbfdnXakDhDZt0bw0YJZ9yLSF/Fb9EV1gMuYnth42BpoWIhmGDYmqJkSEkDxeZ59HkbeRiLrpjWKDqhinJE2tyxfJs4I5pRW5ajQtaBIPzIuaODDOxnWlFm1oLVIRVaxNUKrA89aHuVtFCEgXZjOZzkL1+Jh/enF7N98nWzusqTxW8/EgydcOPqTaF/mHuh3dqNlgMWjRJBiIRuYQh+JULab1UbGz1EA5PbgoQZWZDPh5fXorUB7Dg+DUk/gXqYUoDb/iJLz2jHtNVpnEh2Too0bVv4nmdJc40TLH7ao2U4/YNlWjDufFne5vMopCSD2XvlXtf3pXkfZZFEDl39Y2FEyrPoCW8LVh1rkNiObs4PyZ4AOyaXmErOwG1Seq1q0I5JM1vo4QSNK6WUADGY4yCBk9g9k4NJwAKCvTkKuLUd58VNOwSbIamyO8SgFAqjaUDrTxu4kW1DYLyk8LhRYnnYgtEaMx+joL/NSAi0O3riCHy7Y5+2CM/iY/6vClqV5heaO0anK+6gSZj5+rPPQ7Tl4CK2sHPvGdQcwva3Fd5h53c7pCm96chm4zPjq1RH1X/7ORSP6qm4v+kIU3sgLzLkjhKKTkJbNme06Du7AHUvVoGoYFT6kXylrJl5DYD+74L2AkkQufYBTuTCtEEadxJF+89dsOpk6SLSjpJrsMgziK+YHvrQAfKJbGz26/U5QbqFNtjkUw0kUarAXuzSXRt6GsFsR49aybbdn6w4bX9Um7pTQQK0zfvzf3Bn86NBnxgCD7aaSMAfvrI81LINl6RyahZLZsVzVR0NOEzua2aSzJtNXqmKITwLHPVhsBsaueqQZUonry0gTlURFPjTs4C2PZG8MIOgFgLhdRhtmd4JiIORf6hRCNFAh0gyNaPRRcL0lWkERu69bhWT6XXj1+Vc01GkO+UOlQjGAUtBjWRVcRbv56oNDwrnUjZHj8MAjXKlKP8ykHcpJjvAbpvkgxawXuUJWRguBNk8LfV28dbIexclrN4VSGROPeQ+sj7HzE5VYPvuqm+jj5ldsLSDz5b8quor0Bf/qG3u8vOOHY95SWEVZoQKNkAFtyKrq3IOFJuhOm0GLjlA7fTqozxOMppID8UZ1n7frB2YJU32QKfJIQ3mJYr47KlsEV2+lO91hFXPtLWNReiXGGqeLRVsszUS0x+JVJeGPCbiraLX1ZeqRbtDb7po3+t1WqK6ig3Rto9QZc1fSoNR7Ty03EleatPo5BWjZa1EtRW7pcbjwv5u+eHfrqkWtrOAfH7Z/4b/JIFLNWdlmha1+48y2Oba1sVpODyZ4JXEvtEoZ9faFeVtrqP0jurPyyuTKuXJJZprX7Z0wxvKMwOF6y3Hq9BXahhKiHOWbvgnh1eHcrrBCk4nZ9lzwyiAEqVtz47i1tlSx42ALVjM+ujc63j0GqSeiX4PATF1IC04lpTxpzHYJprZhEah49DF591OVmS0JCRvD9jUmj0ARoFRUpRnKlp4x8mg7byaWPMbQiucrM5xspJw0X7/zFo4Pm4ceaM4H9oCyTndDfMeVN3700u8NleFDOms5Ya2DDfXgebb1FNcIayP1duMOaVWF+SS97RwSyxonuIAZmJHupMOm5jeTeu5LB68knI1xTYdWhQZm5Nxmg3avFJ3KJZ01CBdkD94qq9GZbMtVuo6oL0Xj1hO6zxuAPWmZ0y8jZy8Ukkf+hIrvyVGSA/5c7o2QBnNmsD2EWh6FCc+DRwn9unMFQqXTVKVbX7WJKUDomC4cHfa78TgBFuSud2zlJvyKK5SDhrHZUvoBakoVE4BhLhf2/cHXBbVZS3Sef2Kg5yyscl6b0lfejV6H/qDhlGnyTrccXdyhhUWaq6SG3q616UNBPWdKfxbDFpha+x5DUQoLJQYQzPYitvd0Raa0yziwdUL2p5WK2eqLzOQ5j8IWkOwZiAiKdZhnus6sMvbUH5FrWCmP4O+Q4iP8Zfjlc+Y5ijAQ85EZXnS5hh/beaX+VZQvEs9an+uI2LK7bZsnzT9n/KQjjzH2MaYa2DCHl9KopNwytUXrQ3vgHmANpLQfGYkLsb9TmUqdQxPRDTe2Y0rD3YTJnNSmqGabWpJS423dquCGrUYtdA1zJwQcwGoQ8vPl3OLs7Pfl3nta1CIQKVZYiRls+kuI4BN+alMj2e0dRJ/JhFSW9QmKwgsDTTUeG7CkUFsI5bcUX497Oys9wkPqt9Svm0QYa08j1De4/JFPD7aOhHs0vUVqStaJTe4nOwBBzHcZLAsetvtVUi25K7PNBO69uo17oJ3KBhE+Qy7bvGpl3yEXDlZnV3b0B29/A5eBnAlXjbddlwBE4HE9IZ6KcDqvEoU+D9mhnVI6f88k9zZrLbdREDI2/90F9lq6+4ZYKRMtcwPRhtS5zfPyNxXoeS56Sp67Bn7QR6PFoDGveUz85+x18OuSMNXocD+NW0JAQVPWTye1RpM8TJOjKC5HotiJyvk86LSRip3EzYrBnabp2X67k4UD50cvrrBVPHp0z4yEF9umFX/iP6fPhvy/V59ZJnv0kfWyCo9WoLjN02GCKZNO8EPrfs9KCiVeKE8eZSPyt3dA3FYdv2xDFTCAI173rS9EOLVEWrS4sClQiAj3+84tci2DSmP5WgmVqYExq+EaFXN+LdV6QnB3zkWemBeEej9Vv8SuiS1wQHZDyaEp/8nVTShil59cpvzxssgURnXDX72CJ+v6/nFpDC8q86Pru4PMF0lMzxJgpDzfHRLO8voXvwlTdbHiTghIoWKBbjxidFGvStpp91NhMI+Okd+ZvwVII1XbHbCOY8Wy1AHYHupkwixW+98m/+un7qNCOs+1kjwquIAZKwG20zpp16qDSi4rfDJhRG0MKqx/qbik4szXxLl1EWuGSB33AuvF0jZhH56ghNzzi4iZber6mEbzhhpa5voIW/X1DRwG8mdqjfZMp/TPevFZ+TQ608aCi9kWmuxgNZLrV0mUbaOWX9tUVgCo9XIuyXJEBxkRea1SLcT//tx1oVjn6ps9wEXzfhX0HN61j+wrZf+bppdwnaSxaFOvIvoKU8Y9MfYahLyselOmz+AgVhI/8EJORjpYrsG1lfdlg8t1RXnvSU2A7ILr5pF4A/jq75JenD65EyuCMHd98og2M5OJoog5N8cLflW15JVn55UBVlwWwpzVXkZmC79CGOEn6H8lm+z0p4jOMy3hcfoLH/Az9eiek=', 'base64'));"); // zip-writer, refer to modules/zip-writer.js - duk_peval_string_noresult(ctx, "addCompressedModule('zip-writer', Buffer.from('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', 'base64'));"); + duk_peval_string_noresult(ctx, "addCompressedModule('zip-writer', Buffer.from('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', 'base64'));"); // update-helper, refer to modules/update-helper.js duk_peval_string_noresult(ctx, "addCompressedModule('update-helper', Buffer.from('eJytVd9v2zYQfheg/+GaF8mdK2d5jNEHL00xY4UzREmDdhgCWjrJzGSSI6m6XuD/fUdRtiX/QPcwvYgi77777rs7avQ2DG6kWmteLixcXV5dwlRYrOBGaiU1s1yKMAiDTzxDYTCHWuSowS4QJopl9GpPhvAZtSFruEouIXYGF+3RxWAcBmtZw5KtQUgLtUFC4AYKXiHg9wyVBS4gk0tVcSYyhBW3iyZKi5GEwZcWQc4tI2NG5oq+iq4ZMOvYAj0La9X1aLRarRLWME2kLkeVtzOjT9Ob21l6+47YOo9HUaExoPHvmmtKc74GpohMxuZEsWIrkBpYqZHOrHRkV5pbLsohGFnYFdMYBjk3VvN5bXs6balRvl0DUooJuJikME0v4JdJOk2HYfA0ffj17vEBnib395PZw/Q2hbt7uLmbfZg+TO9m9PURJrMv8Nt09mEISCpRFPyutGNPFLlTEHOSK0XshS+kp2MUZrzgGSUlypqVCKX8hlpQLqBQL7lxVTRELg+Dii+5bZrAHGdEQd6OnHjfmAalJbkivN9qGEftVuTKHwZFLTIHBMYybeNa5czi78wuBmHw6kvmcDRawhC42iLGO8eYkhySwcsAXpv+SZ5pp4loxruNl2bjZQwbF9fB8gLiNztW/3D1TiOjXKJBws1XrrpcHDRRaJDjwdita92EtvS18YCtActPJN2Dd4su+vi0f0Kiin2ez95jgRXVIyZAhfnAe7ZCbcVS/7dUW7l80MTNp0kqFCVN45v38PNgb9ah4h7VAMbRo6BuxMx1eCbpJhHWuGkhwGbao24k97SRskoS/+7hZr/EyuDZwFav+xsH555cjsZ2y1QYKk9GNbD4RIOMqaX1slMr+Ami51p4etGQZCwqVppriFbzqC/YAVv3ZMxmC4hx8ENqZ/M/EBZPnW27U/2Ajs8/cW1CIqjxyVPPhM794rSRFHHUcCVJ9t2267KDbPymC7sbqCPlWpcSbVuDbu/9cfnnIFFcYezjn2mQIx02rfAHkxUfj1GvfQ7q0++WWlRc/JWuRXZipE+7uD/UR8rjwOmwt/4r3EkGfbAzAjX92GvHo1TtmT7z2p7V3Rc2yqXYz/ZOfR92Lz92rtcmlG+H3a24v2rDYOP2lzKvK0zoSpHauvvr1f8+rv0LNmT4L6QVhQk=', 'base64'));"); diff --git a/microscript/ILibduktape_EventEmitter.c b/microscript/ILibduktape_EventEmitter.c index f78a317..5ee229a 100644 --- a/microscript/ILibduktape_EventEmitter.c +++ b/microscript/ILibduktape_EventEmitter.c @@ -1011,11 +1011,73 @@ duk_ret_t ILibDuktape_EventEmitter_EventEmitter(duk_context *ctx) return(retVal); } +duk_ret_t ILibDuktape_EventEmitter_moderated_impl(duk_context *ctx) +{ + int nargs = duk_get_top(ctx); + if(nargs == 0) { return(0); } // NOP if evented value is undefined + int ok = 0, i; + + duk_push_current_function(ctx); // [function] + uint32_t mval = (uint32_t)Duktape_GetIntPropertyValue(ctx, -1, "interval", 0); + + if (mval != 0 && duk_has_prop_string(ctx, -1, "time")) + { + if ((uint32_t)Duktape_GetIntPropertyValue(ctx, -1, "time", 0) - ILibGetTimeStamp() < mval) { return(0); } + } + + duk_get_prop_string(ctx, -1, "last"); // [function][array] + if (duk_get_length(ctx, -1) == nargs) + { + for (i = 0; i < nargs; ++i) + { + duk_get_prop_index(ctx, -1, (duk_uarridx_t)i); // [function][array][last] + duk_dup(ctx, (duk_idx_t)i); // [function][array][last][current] + ok = duk_strict_equals(ctx, -2, -1); + duk_pop_2(ctx); // [function][array] + if (ok == 0) { break; } + } + } + + if (ok == 0) + { + // Update the Last Values with new Values + duk_push_current_function(ctx); // [function] + duk_push_uint(ctx, (duk_uint_t)ILibGetTimeStamp()); duk_put_prop_string(ctx, -2, "time"); + duk_push_array(ctx); // [function][array] + for (i = 0; i < nargs; ++i) + { + duk_dup(ctx, i); // [function][array][val] + duk_put_prop_index(ctx, -2, (duk_uarridx_t)i); // [function][array] + } + + // emit the event + duk_put_prop_string(ctx, -2, "last"); // [function] + duk_get_prop_string(ctx, -1, "func"); // [function][func] + duk_push_this(ctx); // [function][func][this] + for (i = 0; i < nargs; ++i) + { + duk_dup(ctx, i); // [function][func][this][...] + } + duk_call_method(ctx, nargs); + } + return(0); +} +duk_ret_t ILibDuktape_EventEmitter_moderated(duk_context *ctx) +{ + if (!duk_is_function(ctx, 0)) { return(ILibDuktape_Error(ctx, "Argument Error")); } + duk_push_c_function(ctx, ILibDuktape_EventEmitter_moderated_impl, DUK_VARARGS); // [func] + duk_push_array(ctx); duk_put_prop_string(ctx, -2, "last"); // [func] + duk_dup(ctx, 0); duk_put_prop_string(ctx, -2, "func"); // [func] + duk_push_int(ctx, duk_is_number(ctx, 1) ? duk_require_int(ctx, 1) : 0); // [func][val] + duk_put_prop_string(ctx, -2, "interval"); // [func] + return(1); +} void ILibDuktape_EventEmitter_PUSH(duk_context *ctx, void *chain) { duk_push_object(ctx); // [emitter] ILibDuktape_CreateInstanceMethod(ctx, "inherits", ILibDuktape_EventEmitter_Inherits, 1); ILibDuktape_CreateInstanceMethod(ctx, "EventEmitter", ILibDuktape_EventEmitter_EventEmitter, DUK_VARARGS); + ILibDuktape_CreateInstanceMethod(ctx, "moderated", ILibDuktape_EventEmitter_moderated, DUK_VARARGS); } void ILibDuktape_EventEmitter_Init(duk_context *ctx) { diff --git a/modules/zip-writer.js b/modules/zip-writer.js index d5ec6b0..0fc5f94 100644 --- a/modules/zip-writer.js +++ b/modules/zip-writer.js @@ -160,6 +160,7 @@ function next(options) this._currentFD = require('fs').openSync(this._currentFile, require('fs').constants.O_RDONLY); this._currentName = this._currentFile.substring(options._baseFolder.length); this._currentFileLength = fstat.size; + this._currentFileReadBytes = 0; this._currentCRC = 0; this._compressedBytes = 0; this._timestamp = convertToMSDOSTime(fstat.mtime); @@ -279,6 +280,7 @@ function write(options) } }); require('events').EventEmitter.call(ret, true) + .createEvent('progress') .createEvent('cancel') .addMethod('cancel', function(callback) { @@ -334,6 +336,12 @@ function write(options) self.write(self._header.slice(14, 26), next); return; } + + self._currentFileReadBytes += bytesRead; + var ratio = self._currentFileReadBytes / self._currentFileLength; + ratio = Math.floor(ratio * 100); + self.emit('progress', self._currentFile, ratio); + buffer = buffer.slice(0, bytesRead); self._currentCRC = crc32(buffer, self._currentCRC); // Update CRC self._compressor.write(buffer, function ()