python-wasm
Advanced tools
@@ -17,2 +17,25 @@ "use strict"; | ||
| })(); | ||
| var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| var desc = Object.getOwnPropertyDescriptor(m, k); | ||
| if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { | ||
| desc = { enumerable: true, get: function() { return m[k]; } }; | ||
| } | ||
| Object.defineProperty(o, k2, desc); | ||
| }) : (function(o, m, k, k2) { | ||
| if (k2 === undefined) k2 = k; | ||
| o[k2] = m[k]; | ||
| })); | ||
| var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { | ||
| Object.defineProperty(o, "default", { enumerable: true, value: v }); | ||
| }) : function(o, v) { | ||
| o["default"] = v; | ||
| }); | ||
| var __importStar = (this && this.__importStar) || function (mod) { | ||
| if (mod && mod.__esModule) return mod; | ||
| var result = {}; | ||
| if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); | ||
| __setModuleDefault(result, mod); | ||
| return result; | ||
| }; | ||
| var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { | ||
@@ -62,3 +85,3 @@ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } | ||
| var io_using_atomics_1 = __importDefault(require("./io-using-atomics")); | ||
| var io_using_service_worker_1 = __importDefault(require("./io-using-service-worker")); | ||
| var io_using_service_worker_1 = __importStar(require("./io-using-service-worker")); | ||
| var WorkerThread = /** @class */ (function (_super) { | ||
@@ -74,11 +97,3 @@ __extends(WorkerThread, _super); | ||
| if (message.event == "service-worker-broken") { | ||
| // This is triggered by a single issue, and refreshing doesn't make sense. | ||
| // I'm going to log this for a while since it's maybe interesting. | ||
| console.log("There might be an issue with the service worker."); | ||
| /* document.body.innerHTML = | ||
| "<div style='margin:15px'>Refreshing page to activate service worker.</div>"; | ||
| setTimeout(() => { | ||
| location.reload(); | ||
| }, 2000); | ||
| */ | ||
| (0, io_using_service_worker_1.fixServiceWorker)(); | ||
| return; | ||
@@ -85,0 +100,0 @@ } |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"import-browser.js","sourceRoot":"","sources":["../../src/wasm/import-browser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAkE;AAClE,iCAAsC;AACtC,wEAAwD;AACxD,sFAAqE;AAErE;IAA2B,gCAAY;IAIrC,sBAAY,MAAc;QAA1B,YACE,iBAAO,SAmBR;QAlBC,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,KAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,SAAS,GAAG,UAAC,EAAiB;gBAAT,OAAO,UAAA;YACjC,IAAI,OAAO,CAAC,KAAK,IAAI,uBAAuB,EAAE;gBAC5C,0EAA0E;gBAC1E,kEAAkE;gBAClE,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;gBAChE;;;;;kBAKE;gBACF,OAAO;aACR;YACD,KAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC;;IACJ,CAAC;IACH,mBAAC;AAAD,CAAC,AAzBD,CAA2B,qBAAY,GAyBtC;AAED;IAAkC,gCAA6B;IAA/D;;IAMA,CAAC;IALW,iCAAU,GAApB;QACE,gGAAgG;QAChG,IAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACH,mBAAC;AAAD,CAAC,AAND,CAAkC,sCAA6B,GAM9D;AANY,oCAAY;AAQzB,SAA8B,uBAAuB,CACnD,UAAkB,EAClB,OAAqB;IAArB,wBAAA,EAAA,YAAqB;;;;YAEf,UAAU,GAAG,mBAAmB;gBACpC,CAAC,CAAC,0BAAsB;gBACxB,CAAC,CAAC,iCAA4B,CAAC;YACjC,sBAAO,IAAI,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,EAAC;;;CAC1D;AARD,0CAQC"} | ||
| {"version":3,"file":"import-browser.js","sourceRoot":"","sources":["../../src/wasm/import-browser.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mCAAkE;AAClE,iCAAsC;AACtC,wEAAwD;AACxD,mFAEmC;AAEnC;IAA2B,gCAAY;IAIrC,sBAAY,MAAc;QAA1B,YACE,iBAAO,SAWR;QAVC,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC1B,KAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnD,KAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,MAAM,CAAC,SAAS,GAAG,UAAC,EAAiB;gBAAT,OAAO,UAAA;YACjC,IAAI,OAAO,CAAC,KAAK,IAAI,uBAAuB,EAAE;gBAC5C,IAAA,0CAAgB,GAAE,CAAC;gBACnB,OAAO;aACR;YACD,KAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChC,CAAC,CAAC;;IACJ,CAAC;IACH,mBAAC;AAAD,CAAC,AAjBD,CAA2B,qBAAY,GAiBtC;AAED;IAAkC,gCAA6B;IAA/D;;IAMA,CAAC;IALW,iCAAU,GAApB;QACE,gGAAgG;QAChG,IAAM,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,qBAAqB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC3E,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IACH,mBAAC;AAAD,CAAC,AAND,CAAkC,sCAA6B,GAM9D;AANY,oCAAY;AAQzB,SAA8B,uBAAuB,CACnD,UAAkB,EAClB,OAAqB;IAArB,wBAAA,EAAA,YAAqB;;;;YAEf,UAAU,GAAG,mBAAmB;gBACpC,CAAC,CAAC,0BAAsB;gBACxB,CAAC,CAAC,iCAA4B,CAAC;YACjC,sBAAO,IAAI,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,CAAC,EAAC;;;CAC1D;AARD,0CAQC"} |
@@ -6,3 +6,2 @@ /// <reference types="node" /> | ||
| constructor(); | ||
| initServiceWorker(): Promise<void>; | ||
| getExtraOptions(): { | ||
@@ -15,1 +14,2 @@ id: string; | ||
| } | ||
| export declare function fixServiceWorker(): Promise<void>; |
@@ -57,2 +57,3 @@ "use strict"; | ||
| Object.defineProperty(exports, "__esModule", { value: true }); | ||
| exports.fixServiceWorker = void 0; | ||
| var constants_1 = require("./constants"); | ||
@@ -66,45 +67,4 @@ var debug_1 = __importDefault(require("debug")); | ||
| log("IOProviderUsingXMLHttpRequest", "id = ", this.id); | ||
| this.initServiceWorker(); | ||
| registerServiceWorker(); | ||
| } | ||
| IOProviderUsingServiceWorker.prototype.initServiceWorker = function () { | ||
| var _a; | ||
| return __awaiter(this, void 0, void 0, function () { | ||
| var url, reg; | ||
| return __generator(this, function (_b) { | ||
| switch (_b.label) { | ||
| case 0: | ||
| if (!navigator.serviceWorker) { | ||
| console.warn("WARNING: service worker is not available, so nothing is going to work"); | ||
| return [2 /*return*/]; | ||
| } | ||
| url = new URL("./worker/service-worker.js", import.meta.url).href; | ||
| console.log("url = ", url); | ||
| return [4 /*yield*/, navigator.serviceWorker.register(url)]; | ||
| case 1: | ||
| reg = _b.sent(); | ||
| if (((_a = reg.active) === null || _a === void 0 ? void 0 : _a.state) != "activated") { | ||
| // Sometimes this works. But sometimes we have to force reload via a special message | ||
| // in ./import-browser.ts. In any case, we do this. | ||
| console.warn("Reloading page to activate service worker."); | ||
| // no way around this -- it is part of the spec | ||
| if (localStorage["python-wasm-service-worker-broken"]) { | ||
| // use local storage to avoid DOS of server | ||
| setTimeout(function () { | ||
| location.reload(); | ||
| }, 3000); | ||
| } | ||
| else { | ||
| localStorage["python-wasm-service-worker-broken"] = true; | ||
| location.reload(); | ||
| } | ||
| } | ||
| else { | ||
| // It probably worked. | ||
| delete localStorage["python-wasm-service-worker-broken"]; | ||
| } | ||
| return [2 /*return*/]; | ||
| } | ||
| }); | ||
| }); | ||
| }; | ||
| IOProviderUsingServiceWorker.prototype.getExtraOptions = function () { | ||
@@ -148,2 +108,115 @@ return { id: this.id }; | ||
| exports.default = IOProviderUsingServiceWorker; | ||
| function getURL() { | ||
| // @ts-ignore this import.meta.url issue -- actually only consumed by webpack | ||
| var url = new URL("./worker/service-worker.js", import.meta.url).href; | ||
| console.log("service worker url = ", url); | ||
| return url; | ||
| } | ||
| function hasServiceWorker() { | ||
| if (!navigator.serviceWorker) { | ||
| console.warn("WARNING: service worker is not available, so nothing is going to work"); | ||
| return false; | ||
| } | ||
| return true; | ||
| } | ||
| function registerServiceWorker() { | ||
| var _a; | ||
| return __awaiter(this, void 0, void 0, function () { | ||
| var url, reg; | ||
| return __generator(this, function (_b) { | ||
| switch (_b.label) { | ||
| case 0: | ||
| if (!hasServiceWorker()) | ||
| return [2 /*return*/]; | ||
| url = getURL(); | ||
| return [4 /*yield*/, navigator.serviceWorker.register(url)]; | ||
| case 1: | ||
| reg = _b.sent(); | ||
| if (((_a = reg.active) === null || _a === void 0 ? void 0 : _a.state) != "activated") { | ||
| // I think there is no way around this, since it is an unfortunate | ||
| // part of the service worker spec. | ||
| console.warn("Reloading page to activate service worker..."); | ||
| if (localStorage["python-wasm-service-worker-broken"]) { | ||
| // use local storage to avoid DOS of server | ||
| setTimeout(function () { | ||
| location.reload(); | ||
| }, 3000); | ||
| } | ||
| else { | ||
| localStorage["python-wasm-service-worker-broken"] = true; | ||
| location.reload(); | ||
| } | ||
| } | ||
| else { | ||
| // It probably worked. | ||
| delete localStorage["python-wasm-service-worker-broken"]; | ||
| } | ||
| return [2 /*return*/]; | ||
| } | ||
| }); | ||
| }); | ||
| } | ||
| /* | ||
| fixServiceWorker: | ||
| There is exactly one situation where I know this is definitely needed, though | ||
| browsers I think could revoke the service worker at any time, so it is good to | ||
| have an automated way to fix this. Also, this may be useful if we upgrade the | ||
| service worker and add a new URL endpoint, since this will get triggered. | ||
| 1. Open python-wasm using a service worker on an iphone or ipad in safari. | ||
| 2. Maybe open another page so the python-wasm page is in the background. | ||
| (Probably not needed.) | ||
| 3. Suspend your phone and wait 1 minute. | ||
| 4. Turn phone back on. The service worker *might* be completely broken and no | ||
| amount of refreshing fixes it. Without the workaround below, the only option is | ||
| for the user to clear all private data associated with the site, or wait a while | ||
| (maybe an hour) and things maybe start to work again. | ||
| I think this is caused by the page suspending in the middle of a "get stdin" | ||
| call. This code below does seem to effectively work around the problem, at the | ||
| expense of a page refresh when you return to the page. This isn't uncommon on | ||
| safari anyways though, since it often dumps pages to save memory. | ||
| This doesn't seem to happen on any desktop browsers (including safari) as far | ||
| as I can tell, even when suspending/resuming a laptop. | ||
| There may be a better fix involving changing how the service worker behaves, | ||
| but that is for another commit, and another day. | ||
| */ | ||
| function fixServiceWorker() { | ||
| return __awaiter(this, void 0, void 0, function () { | ||
| var url, reg, err_2; | ||
| return __generator(this, function (_a) { | ||
| switch (_a.label) { | ||
| case 0: | ||
| if (!hasServiceWorker()) | ||
| return [2 /*return*/]; | ||
| console.warn("The service work seems to be disabled. Fixing it..."); | ||
| url = getURL(); | ||
| _a.label = 1; | ||
| case 1: | ||
| _a.trys.push([1, 4, , 5]); | ||
| return [4 /*yield*/, navigator.serviceWorker.register(url)]; | ||
| case 2: | ||
| reg = _a.sent(); | ||
| return [4 /*yield*/, reg.unregister()]; | ||
| case 3: | ||
| _a.sent(); | ||
| return [3 /*break*/, 5]; | ||
| case 4: | ||
| err_2 = _a.sent(); | ||
| console.warn(err_2); | ||
| return [3 /*break*/, 5]; | ||
| case 5: | ||
| location.reload(); | ||
| return [2 /*return*/]; | ||
| } | ||
| }); | ||
| }); | ||
| } | ||
| exports.fixServiceWorker = fixServiceWorker; | ||
| //# sourceMappingURL=io-using-service-worker.js.map |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"io-using-service-worker.js","sourceRoot":"","sources":["../../src/wasm/io-using-service-worker.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;EAcE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGF,yCAAqC;AACrC,gDAA0B;AAC1B,6BAAoC;AAEpC,IAAM,GAAG,GAAG,IAAA,eAAK,EAAC,kBAAkB,CAAC,CAAC;AAEtC;IAGE;QAFQ,OAAE,GAAW,IAAA,SAAM,GAAE,CAAC;QAG5B,GAAG,CAAC,+BAA+B,EAAE,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEK,wDAAiB,GAAvB;;;;;;;wBACE,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;4BAC5B,OAAO,CAAC,IAAI,CACV,uEAAuE,CACxE,CAAC;4BACF,sBAAO;yBACR;wBAEK,GAAG,GAAG,IAAI,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACxE,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;wBACf,qBAAM,SAAS,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAA;;wBAAjD,GAAG,GAAG,SAA2C;wBACvD,IAAI,CAAA,MAAA,GAAG,CAAC,MAAM,0CAAE,KAAK,KAAI,WAAW,EAAE;4BACpC,oFAAoF;4BACpF,oDAAoD;4BACpD,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;4BAC3D,gDAAgD;4BAChD,IAAI,YAAY,CAAC,mCAAmC,CAAC,EAAE;gCACrD,2CAA2C;gCAC3C,UAAU,CAAC;oCACT,QAAQ,CAAC,MAAM,EAAE,CAAC;gCACpB,CAAC,EAAE,IAAI,CAAC,CAAC;6BACV;iCAAM;gCACL,YAAY,CAAC,mCAAmC,CAAC,GAAG,IAAI,CAAC;gCACzD,QAAQ,CAAC,MAAM,EAAE,CAAC;6BACnB;yBACF;6BAAM;4BACL,sBAAsB;4BACtB,OAAO,YAAY,CAAC,mCAAmC,CAAC,CAAC;yBAC1D;;;;;KACF;IAED,sDAAe,GAAf;QACE,OAAO,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;IACzB,CAAC;IAEa,2CAAI,GAAlB,UACE,MAAsC,EACtC,IAAY;;;;;;wBAEN,GAAG,GAAG,0BAAmB,MAAM,CAAE,CAAC;;;;wBAEtC,qBAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,EAAA;;wBAAhE,SAAgE,CAAC;;;;wBAEjE,OAAO,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,GAAG,KAAA,EAAE,IAAI,MAAA,EAAE,EAAE,KAAG,CAAC,CAAC;;;;;;KAExE;IAED,6CAAM,GAAN,UAAO,GAAoB;QAApB,oBAAA,EAAA,MAAc,kBAAM;QACzB,GAAG,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,GAAG,KAAA,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,mDAAY,GAAZ,UAAa,IAAY;QACvB,GAAG,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IACnE,CAAC;IACH,mCAAC;AAAD,CAAC,AAhED,IAgEC"} | ||
| {"version":3,"file":"io-using-service-worker.js","sourceRoot":"","sources":["../../src/wasm/io-using-service-worker.ts"],"names":[],"mappings":"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"} |
+1
-1
| { | ||
| "name": "python-wasm", | ||
| "version": "0.19.3", | ||
| "version": "0.19.4", | ||
| "description": "python-wasm -- Web Assembly Python for Node.js and the Browser", | ||
@@ -5,0 +5,0 @@ "main": "./dist/python/node.js", |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 3 instances in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Uses eval
Supply chain riskPackage uses dynamic code execution (e.g., eval()), which is a dangerous practice. This can prevent the code from running in certain environments and increases the risk that the code may contain exploits or malicious behavior.
Found 1 instance in 1 package
Debug access
Supply chain riskUses debug, reflection and dynamic code execution features.
Found 3 instances in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 3 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
7087
1.14%11169842
-0.22%24
4.35%