From 896cfa4c2c378e9992667cf27c52cdd7737e4f9d Mon Sep 17 00:00:00 2001 From: "Github Action (authored by pmalacho-mit)" Date: Sun, 10 Mar 2024 22:49:12 -0700 Subject: [PATCH 1/5] Updated code to always try to load model (and indicate it). Change model URL to point to google storage apis. Add random param to ensure cache info is not used --- extensions/src/teachableMachine/index.ts | 52 ++++++++++++++---------- 1 file changed, 30 insertions(+), 22 deletions(-) diff --git a/extensions/src/teachableMachine/index.ts b/extensions/src/teachableMachine/index.ts index 13d4e35d4..639210e6a 100644 --- a/extensions/src/teachableMachine/index.ts +++ b/extensions/src/teachableMachine/index.ts @@ -25,7 +25,7 @@ export default class teachableMachine extends extension({ iconURL: "teachable-machine-blocks.png", insetIconURL: "teachable-machine-blocks-small.svg", tags: ["Dancing with AI", "Made by PRG"] -}) { +}, "indicators") { lastUpdate: number; maxConfidence: number; modelConfidences: {}; @@ -166,18 +166,24 @@ export default class teachableMachine extends extension({ } async startPredicting(modelDataUrl) { - if (!this.predictionState[modelDataUrl]) { - try { - this.predictionState[modelDataUrl] = {}; - // https://github.com/googlecreativelab/teachablemachine-community/tree/master/libraries/image - const { model, type } = await this.initModel(modelDataUrl); - this.predictionState[modelDataUrl].modelType = type; - this.predictionState[modelDataUrl].model = model; - this.runtime.requestToolboxExtensionsUpdate(); - } catch (e) { - this.predictionState[modelDataUrl] = {}; - console.log("Model initialization failure!", e); - } + const alreadyLoaded = Boolean(this.predictionState[modelDataUrl]); + try { + const indicator = await this.indicate({ + type: "warning", + msg: alreadyLoaded ? "Updating model" : "Loading model" + }); + this.predictionState[modelDataUrl] = {}; + // https://github.com/googlecreativelab/teachablemachine-community/tree/master/libraries/image + const { model, type } = await this.initModel(modelDataUrl); + this.predictionState[modelDataUrl].modelType = type; + this.predictionState[modelDataUrl].model = model; + this.runtime.requestToolboxExtensionsUpdate(); + indicator.close(); + this.indicateFor({ type: "success", msg: "Model loaded" }, 1); + } catch (e) { + this.predictionState[modelDataUrl] = {}; + console.log("Model initialization failure!", e); + this.indicateFor({ type: "error", msg: "Unable to load model." }, 1); } } @@ -195,8 +201,9 @@ export default class teachableMachine extends extension({ } async initModel(modelUrl) { - const modelURL = modelUrl + "model.json"; - const metadataURL = modelUrl + "metadata.json"; + const avoidCache = `?x=${Date.now()}`; + const modelURL = modelUrl + "model.json" + avoidCache; + const metadataURL = modelUrl + "metadata.json" + avoidCache; const customMobileNet = await tmImage.load(modelURL, metadataURL); if ((customMobileNet as any)._metadata.hasOwnProperty('tfjsSpeechCommandsVersion')) { // customMobileNet.dispose(); // too early to dispose @@ -217,6 +224,7 @@ export default class teachableMachine extends extension({ const customPoseNet = await tmPose.load(modelURL, metadataURL); return { model: customPoseNet, type: this.ModelType.POSE }; } else { + console.log(customMobileNet.getMetadata(), customMobileNet.getTotalClasses(), customMobileNet.getClassLabels()); return { model: customMobileNet, type: this.ModelType.IMAGE }; } } @@ -224,17 +232,17 @@ export default class teachableMachine extends extension({ useModel(url) { try { const modelUrl = this.modelArgumentToURL(url); - this.getPredictionStateOrStartPredicting(modelUrl); + this.getPredictionStateOrStartPredicting(modelUrl, true); this.updateStageModel(modelUrl); } catch (e) { this.teachableImageModel = null; } } - modelArgumentToURL(modelArg) { - return modelArg.startsWith('https://teachablemachine.withgoogle.com/models/') ? - modelArg : - `https://teachablemachine.withgoogle.com/models/${modelArg}/`; + modelArgumentToURL(modelArg: string) { + return modelArg.startsWith('https://teachablemachine.withgoogle.com/models/') + ? modelArg.replace("https://teachablemachine.withgoogle.com/models/", "https://storage.googleapis.com/tm-model/") + : `https://storage.googleapis.com/tm-model/${modelArg}/`; } updateStageModel(modelUrl) { @@ -245,9 +253,9 @@ export default class teachableMachine extends extension({ } } - getPredictionStateOrStartPredicting(modelUrl) { + getPredictionStateOrStartPredicting(modelUrl, override = false) { const hasPredictionState = this.predictionState.hasOwnProperty(modelUrl); - if (!hasPredictionState) { + if (!hasPredictionState || override) { this.startPredicting(modelUrl); return null; } From 810cf5b7f7916bffefe392413f08a97c188dfff7 Mon Sep 17 00:00:00 2001 From: "Github Action (authored by pmalacho-mit)" Date: Sun, 10 Mar 2024 23:20:49 -0700 Subject: [PATCH 2/5] adding comment --- extensions/src/teachableMachine/index.ts | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/extensions/src/teachableMachine/index.ts b/extensions/src/teachableMachine/index.ts index 639210e6a..24677794f 100644 --- a/extensions/src/teachableMachine/index.ts +++ b/extensions/src/teachableMachine/index.ts @@ -240,9 +240,13 @@ export default class teachableMachine extends extension({ } modelArgumentToURL(modelArg: string) { - return modelArg.startsWith('https://teachablemachine.withgoogle.com/models/') - ? modelArg.replace("https://teachablemachine.withgoogle.com/models/", "https://storage.googleapis.com/tm-model/") - : `https://storage.googleapis.com/tm-model/${modelArg}/`; + const endpointProvidedFromInterface = "https://teachablemachine.withgoogle.com/models/"; + // NOTE: It's possible Google will change this endpoint in the future, and that will break this extension. + // TODO: https://github.com/mitmedialab/prg-extension-boilerplate/issues/343 + const redirectEndpoint = "https://storage.googleapis.com/tm-model/"; + return modelArg.startsWith(endpointProvidedFromInterface) + ? modelArg.replace(endpointProvidedFromInterface, redirectEndpoint) + : redirectEndpoint + modelArg + "/"; } updateStageModel(modelUrl) { From a4d85bc471e0eb4c4d7a8f7947ffa1a47eb86e90 Mon Sep 17 00:00:00 2001 From: "Github Action (authored by pmalacho-mit)" Date: Thu, 9 May 2024 23:37:11 -0700 Subject: [PATCH 3/5] initial commit of fix --- packages/scratch-gui/src/containers/blocks.jsx | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/packages/scratch-gui/src/containers/blocks.jsx b/packages/scratch-gui/src/containers/blocks.jsx index e5b47b1fd..f6622266c 100644 --- a/packages/scratch-gui/src/containers/blocks.jsx +++ b/packages/scratch-gui/src/containers/blocks.jsx @@ -117,9 +117,6 @@ class Blocks extends React.Component { toolboxWorkspace.registerButtonCallback('MAKE_A_LIST', varListButtonCallback('list')); toolboxWorkspace.registerButtonCallback('MAKE_A_PROCEDURE', procButtonCallback); toolboxWorkspace.registerButtonCallback('CONNECT_MICROBIT_ROBOT', connectMicrobitRobotCallback); - this.props.vm.runtime.on(registerButtonCallbackEvent, (event) => { - toolboxWorkspace.registerButtonCallback(event, () => this.props.vm.runtime.emit(event)); - }); this.props.vm.runtime.on(openUIEvent, (details) => this.props.onOpenProgrammaticModal(details)); @@ -216,7 +213,15 @@ class Blocks extends React.Component { this.props.vm.refreshWorkspace(); this.requestToolboxUpdate(); this.withToolboxUpdates(() => { - this.workspace.getFlyout().setRecyclingEnabled(true); + this.flyout = this.workspace.getFlyout(); + this.flyout.setRecyclingEnabled(true); + + const registerButtonCallback = (event) => + this.workspace.getFlyout() + ? this.workspace.registerButtonCallback(event, () => { this.props.vm.runtime.emit(event) }) + : this.props.vm.runtime.off(registerButtonCallbackEvent, registerButtonCallback) + + this.props.vm.runtime.on(registerButtonCallbackEvent, registerButtonCallback.bind(this)); }); }); } From e02e120591b36a60393f50be255ca23e431e2418 Mon Sep 17 00:00:00 2001 From: "Github Action (authored by pmalacho-mit)" Date: Thu, 9 May 2024 23:42:10 -0700 Subject: [PATCH 4/5] preparing PR --- packages/scratch-gui/src/containers/blocks.jsx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/scratch-gui/src/containers/blocks.jsx b/packages/scratch-gui/src/containers/blocks.jsx index f6622266c..2ac1d59ee 100644 --- a/packages/scratch-gui/src/containers/blocks.jsx +++ b/packages/scratch-gui/src/containers/blocks.jsx @@ -213,9 +213,10 @@ class Blocks extends React.Component { this.props.vm.refreshWorkspace(); this.requestToolboxUpdate(); this.withToolboxUpdates(() => { - this.flyout = this.workspace.getFlyout(); - this.flyout.setRecyclingEnabled(true); + this.workspace.getFlyout().setRecyclingEnabled(true); + // Moved from `componentDidMount` due to strange blockly error after changing locale. + // Worth retesting after updating scratch, as this may have been addressed in later blockly versions. const registerButtonCallback = (event) => this.workspace.getFlyout() ? this.workspace.registerButtonCallback(event, () => { this.props.vm.runtime.emit(event) }) From 46fab7251db0b02e60534f7670dfdc0d1da5fc1a Mon Sep 17 00:00:00 2001 From: "Github Action (authored by pmalacho-mit)" Date: Fri, 24 May 2024 07:51:06 -0700 Subject: [PATCH 5/5] downgrade posent version --- extensions/src/poseBody/package-lock.json | 238 +++++++--------------- extensions/src/poseBody/package.json | 2 +- 2 files changed, 78 insertions(+), 162 deletions(-) diff --git a/extensions/src/poseBody/package-lock.json b/extensions/src/poseBody/package-lock.json index f682e5415..85a08fe5b 100644 --- a/extensions/src/poseBody/package-lock.json +++ b/extensions/src/poseBody/package-lock.json @@ -9,50 +9,63 @@ "version": "1.0.0", "license": "ISC", "dependencies": { - "@tensorflow-models/posenet": "^2.2.1" + "@tensorflow-models/posenet": "2.2.1" } }, "node_modules/@tensorflow-models/posenet": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tensorflow-models/posenet/-/posenet-2.2.2.tgz", - "integrity": "sha512-0SXIksRet/IdX7WVH+JSD6W3upkGHix1hwtd3xykIoIMGR7zQ4SC5+wZcNt9ofASyxNYQoI+tUULUo4LNw0c3w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@tensorflow-models/posenet/-/posenet-2.2.1.tgz", + "integrity": "sha512-n9/g6DfjAyrBTf/zt1haRCyWsgALxUCzg9/Ks3Y2mbYavRZVSCSTRPy/qlE5Hr4tLfyckGfDN14zmGTthNcg/g==", "peerDependencies": { - "@tensorflow/tfjs-converter": "^3.0.0-rc.1", - "@tensorflow/tfjs-core": "^3.0.0-rc.1" + "@tensorflow/tfjs-converter": "^1.3.0", + "@tensorflow/tfjs-core": "^1.3.0" } }, "node_modules/@tensorflow/tfjs-converter": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-3.21.0.tgz", - "integrity": "sha512-12Y4zVDq3yW+wSjSDpSv4HnpL2sDZrNiGSg8XNiDE4HQBdjdA+a+Q3sZF/8NV9y2yoBhL5L7V4mMLDdbZBd9/Q==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-1.7.4.tgz", + "integrity": "sha512-B/Ux9I3osI0CXoESGR0Xe5C6BsEfC04+g2xn5zVaW9KEuVEnGEgnuBQxgijRFzkqTwoyLv4ptAmjyIghVARX0Q==", "peer": true, "peerDependencies": { - "@tensorflow/tfjs-core": "3.21.0" + "@tensorflow/tfjs-core": "1.7.4" } }, "node_modules/@tensorflow/tfjs-core": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-3.21.0.tgz", - "integrity": "sha512-YSfsswOqWfd+M4bXIhT3hwtAb+IV8+ODwIxwdFR/7jTAPZP1wMVnSlpKnXHAN64HFOiP+Tm3HmKusEZ0+09A0w==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-1.7.4.tgz", + "integrity": "sha512-3G4VKJ6nPs7iCt6gs3bjRj8chihKrYWenf63R0pm7D9MhlrVoX/tpN4LYVMGgBL7jHPxMLKdOkoAZJrn/J88HQ==", "peer": true, "dependencies": { - "@types/long": "^4.0.1", "@types/offscreencanvas": "~2019.3.0", - "@types/seedrandom": "^2.4.28", + "@types/seedrandom": "2.4.27", "@types/webgl-ext": "0.0.30", - "@webgpu/types": "0.1.16", - "long": "4.0.0", - "node-fetch": "~2.6.1", - "seedrandom": "^3.0.5" + "@types/webgl2": "0.0.4", + "node-fetch": "~2.1.2", + "seedrandom": "2.4.3" }, "engines": { "yarn": ">= 1.3.2" } }, - "node_modules/@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", + "node_modules/@tensorflow/tfjs-core/node_modules/@types/seedrandom": { + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.27.tgz", + "integrity": "sha512-YvMLqFak/7rt//lPBtEHv3M4sRNA+HGxrhFZ+DQs9K2IkYJbNwVIb8avtJfhDiuaUBX/AW0jnjv48FV8h3u9bQ==", + "peer": true + }, + "node_modules/@tensorflow/tfjs-core/node_modules/node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha512-IHLHYskTc2arMYsHZH82PVX8CSKT5lzb7AXeyO06QnjGDKtkv+pv3mEki6S7reB/x1QPo+YPxQRNEVgR5V/w3Q==", + "peer": true, + "engines": { + "node": "4.x || >=6.0.0" + } + }, + "node_modules/@tensorflow/tfjs-core/node_modules/seedrandom": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", + "integrity": "sha512-2CkZ9Wn2dS4mMUWQaXLsOAfGD+irMlLEeSP3cMxpGbgyOOzJGFa+MWCOMTOCMyZinHRPxyOj/S/C57li/1to6Q==", "peer": true }, "node_modules/@types/offscreencanvas": { @@ -61,181 +74,84 @@ "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==", "peer": true }, - "node_modules/@types/seedrandom": { - "version": "2.4.34", - "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.34.tgz", - "integrity": "sha512-ytDiArvrn/3Xk6/vtylys5tlY6eo7Ane0hvcx++TKo6RxQXuVfW0AF/oeWqAj9dN29SyhtawuXstgmPlwNcv/A==", - "peer": true - }, "node_modules/@types/webgl-ext": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", "integrity": "sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==", "peer": true }, - "node_modules/@webgpu/types": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.16.tgz", - "integrity": "sha512-9E61voMP4+Rze02jlTXud++Htpjyyk8vw5Hyw9FGRrmhHQg2GqbuOfwf5Klrb8vTxc2XWI3EfO7RUHMpxTj26A==", - "peer": true - }, - "node_modules/long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "peer": true - }, - "node_modules/node-fetch": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.13.tgz", - "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==", - "peer": true, - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", - "peer": true - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "peer": true - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "node_modules/@types/webgl2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/webgl2/-/webgl2-0.0.4.tgz", + "integrity": "sha512-PACt1xdErJbMUOUweSrbVM7gSIYm1vTncW2hF6Os/EeWi6TXYAYMPp+8v6rzHmypE5gHrxaxZNXgMkJVIdZpHw==", "peer": true - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "peer": true, - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } } }, "dependencies": { "@tensorflow-models/posenet": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@tensorflow-models/posenet/-/posenet-2.2.2.tgz", - "integrity": "sha512-0SXIksRet/IdX7WVH+JSD6W3upkGHix1hwtd3xykIoIMGR7zQ4SC5+wZcNt9ofASyxNYQoI+tUULUo4LNw0c3w==", + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@tensorflow-models/posenet/-/posenet-2.2.1.tgz", + "integrity": "sha512-n9/g6DfjAyrBTf/zt1haRCyWsgALxUCzg9/Ks3Y2mbYavRZVSCSTRPy/qlE5Hr4tLfyckGfDN14zmGTthNcg/g==", "requires": {} }, "@tensorflow/tfjs-converter": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-3.21.0.tgz", - "integrity": "sha512-12Y4zVDq3yW+wSjSDpSv4HnpL2sDZrNiGSg8XNiDE4HQBdjdA+a+Q3sZF/8NV9y2yoBhL5L7V4mMLDdbZBd9/Q==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-1.7.4.tgz", + "integrity": "sha512-B/Ux9I3osI0CXoESGR0Xe5C6BsEfC04+g2xn5zVaW9KEuVEnGEgnuBQxgijRFzkqTwoyLv4ptAmjyIghVARX0Q==", "peer": true, "requires": {} }, "@tensorflow/tfjs-core": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-3.21.0.tgz", - "integrity": "sha512-YSfsswOqWfd+M4bXIhT3hwtAb+IV8+ODwIxwdFR/7jTAPZP1wMVnSlpKnXHAN64HFOiP+Tm3HmKusEZ0+09A0w==", + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-1.7.4.tgz", + "integrity": "sha512-3G4VKJ6nPs7iCt6gs3bjRj8chihKrYWenf63R0pm7D9MhlrVoX/tpN4LYVMGgBL7jHPxMLKdOkoAZJrn/J88HQ==", "peer": true, "requires": { - "@types/long": "^4.0.1", "@types/offscreencanvas": "~2019.3.0", - "@types/seedrandom": "^2.4.28", + "@types/seedrandom": "2.4.27", "@types/webgl-ext": "0.0.30", - "@webgpu/types": "0.1.16", - "long": "4.0.0", - "node-fetch": "~2.6.1", - "seedrandom": "^3.0.5" + "@types/webgl2": "0.0.4", + "node-fetch": "~2.1.2", + "seedrandom": "2.4.3" + }, + "dependencies": { + "@types/seedrandom": { + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.27.tgz", + "integrity": "sha512-YvMLqFak/7rt//lPBtEHv3M4sRNA+HGxrhFZ+DQs9K2IkYJbNwVIb8avtJfhDiuaUBX/AW0jnjv48FV8h3u9bQ==", + "peer": true + }, + "node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha512-IHLHYskTc2arMYsHZH82PVX8CSKT5lzb7AXeyO06QnjGDKtkv+pv3mEki6S7reB/x1QPo+YPxQRNEVgR5V/w3Q==", + "peer": true + }, + "seedrandom": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", + "integrity": "sha512-2CkZ9Wn2dS4mMUWQaXLsOAfGD+irMlLEeSP3cMxpGbgyOOzJGFa+MWCOMTOCMyZinHRPxyOj/S/C57li/1to6Q==", + "peer": true + } } }, - "@types/long": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/long/-/long-4.0.2.tgz", - "integrity": "sha512-MqTGEo5bj5t157U6fA/BiDynNkn0YknVdh48CMPkTSpFTVmvao5UQmm7uEF6xBEo7qIMAlY/JSleYaE6VOdpaA==", - "peer": true - }, "@types/offscreencanvas": { "version": "2019.3.0", "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==", "peer": true }, - "@types/seedrandom": { - "version": "2.4.34", - "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.34.tgz", - "integrity": "sha512-ytDiArvrn/3Xk6/vtylys5tlY6eo7Ane0hvcx++TKo6RxQXuVfW0AF/oeWqAj9dN29SyhtawuXstgmPlwNcv/A==", - "peer": true - }, "@types/webgl-ext": { "version": "0.0.30", "resolved": "https://registry.npmjs.org/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", "integrity": "sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==", "peer": true }, - "@webgpu/types": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.16.tgz", - "integrity": "sha512-9E61voMP4+Rze02jlTXud++Htpjyyk8vw5Hyw9FGRrmhHQg2GqbuOfwf5Klrb8vTxc2XWI3EfO7RUHMpxTj26A==", + "@types/webgl2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/webgl2/-/webgl2-0.0.4.tgz", + "integrity": "sha512-PACt1xdErJbMUOUweSrbVM7gSIYm1vTncW2hF6Os/EeWi6TXYAYMPp+8v6rzHmypE5gHrxaxZNXgMkJVIdZpHw==", "peer": true - }, - "long": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/long/-/long-4.0.0.tgz", - "integrity": "sha512-XsP+KhQif4bjX1kbuSiySJFNAehNxgLb6hPRGJ9QsUr8ajHkuXGdrHmFUTUUXhDwVX2R5bY4JNZEwbUiMhV+MA==", - "peer": true - }, - "node-fetch": { - "version": "2.6.13", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.13.tgz", - "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==", - "peer": true, - "requires": { - "whatwg-url": "^5.0.0" - } - }, - "seedrandom": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-3.0.5.tgz", - "integrity": "sha512-8OwmbklUNzwezjGInmZ+2clQmExQPvomqjL7LFqOYqtmuxRgQYqOD3mHaU+MvZn5FLUeVxVfQjwLZW/n/JFuqg==", - "peer": true - }, - "tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "peer": true - }, - "webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "peer": true - }, - "whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "peer": true, - "requires": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } } } } diff --git a/extensions/src/poseBody/package.json b/extensions/src/poseBody/package.json index 0730ec52f..5c7e07979 100644 --- a/extensions/src/poseBody/package.json +++ b/extensions/src/poseBody/package.json @@ -11,6 +11,6 @@ "author": "", "license": "ISC", "dependencies": { - "@tensorflow-models/posenet": "^2.2.1" + "@tensorflow-models/posenet": "2.2.1" } } \ No newline at end of file