From ed0d7cd254854adeaad0411daab24521eeda8fef Mon Sep 17 00:00:00 2001 From: Rishi Ghan Date: Thu, 9 Sep 2021 13:58:43 -0700 Subject: [PATCH] =?UTF-8?q?=F0=9F=93=94=20Trade=20paperback=20detection=20?= =?UTF-8?q?1st=20draft?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 - src/client/assets/img/cvlogo.svg | 5 + src/client/assets/img/noimage.svg | 18 ++ src/client/assets/scss/App.scss | 5 + src/client/components/AcquisitionPanel.tsx | 9 +- src/client/components/ComicDetail.tsx | 28 ++- src/client/components/RecentlyImported.tsx | 12 +- .../shared/utils/tradepaperback.utils.ts | 54 ++---- yarn.lock | 179 +----------------- 9 files changed, 86 insertions(+), 226 deletions(-) create mode 100644 src/client/assets/img/cvlogo.svg create mode 100644 src/client/assets/img/noimage.svg diff --git a/package.json b/package.json index 10e5f70..2290184 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,6 @@ "array-sort-by": "^1.2.1", "babel-polyfill": "^6.26.0", "better-docs": "^2.3.2", - "brain.js": "^2.0.0-beta.2", "calibre-opds": "^1.0.7", "chokidar": "^3.5.2", "comlink-loader": "^2.0.0", @@ -49,7 +48,6 @@ "fs-extra": "^9.1.0", "http-response-stream": "^1.0.7", "jsdoc": "^3.6.7", - "natural": "^5.1.0", "opds-extra": "^3.0.9", "pretty-bytes": "^5.6.0", "react": "^17.0.1", diff --git a/src/client/assets/img/cvlogo.svg b/src/client/assets/img/cvlogo.svg new file mode 100644 index 0000000..10de919 --- /dev/null +++ b/src/client/assets/img/cvlogo.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/client/assets/img/noimage.svg b/src/client/assets/img/noimage.svg new file mode 100644 index 0000000..c4a1019 --- /dev/null +++ b/src/client/assets/img/noimage.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + NO + COVER + + + + diff --git a/src/client/assets/scss/App.scss b/src/client/assets/scss/App.scss index dab2aef..c746186 100644 --- a/src/client/assets/scss/App.scss +++ b/src/client/assets/scss/App.scss @@ -160,6 +160,11 @@ $border-color: red; margin: 0; } } + .button { + .airdcpp-text { + margin: 0 0 0 0.2rem; + } + } } // Search .search { diff --git a/src/client/components/AcquisitionPanel.tsx b/src/client/components/AcquisitionPanel.tsx index 8d7b0fa..ef6bdcb 100644 --- a/src/client/components/AcquisitionPanel.tsx +++ b/src/client/components/AcquisitionPanel.tsx @@ -72,7 +72,10 @@ export const AcquisitionPanel = ( } onClick={() => getDCPPSearchResults(dcppQuery)} > - Search on AirDC++ + + + + Search on AirDC++ {/* AirDC++ search instance details */} @@ -188,8 +191,8 @@ export const AcquisitionPanel = (
Searching via AirDC++ is still in{" "} alpha. Some searches may take arbitrarily long, - or may not work at all. Searches from ADCS hubs are more - reliable than NMDCS ones. + or may not work at all. Searches from ADCS hubs are + more reliable than NMDCS ones.
diff --git a/src/client/components/ComicDetail.tsx b/src/client/components/ComicDetail.tsx index a5b2bcc..46aecf6 100644 --- a/src/client/components/ComicDetail.tsx +++ b/src/client/components/ComicDetail.tsx @@ -236,14 +236,28 @@ export const ComicDetail = ({}: ComicDetailProps): ReactElement => {
{props.data.number}
-
-
- Type - - {props.data.resource_type} - + {!isEmpty( + detectTradePaperbacks( + comicBookDetailData.sourcedMetadata.comicvine.volumeInformation + .description, + ), + ) ? ( +
+
+ Detected Type + Trade Paperback +
-
+ ) : ( +
+
+ Type + + {props.data.resource_type} + +
+
+ )}
ComicVine Issue ID diff --git a/src/client/components/RecentlyImported.tsx b/src/client/components/RecentlyImported.tsx index 8259ef3..d2f81ea 100644 --- a/src/client/components/RecentlyImported.tsx +++ b/src/client/components/RecentlyImported.tsx @@ -6,7 +6,8 @@ import { removeLeadingPeriod, escapePoundSymbol, } from "../shared/utils/formatting.utils"; -import { isNil, map } from "lodash"; +import { isEmpty, isNil, map } from "lodash"; +import { detectTradePaperbacks } from "../shared/utils/tradepaperback.utils"; type RecentlyImportedProps = { comicBookCovers: any; @@ -51,7 +52,14 @@ export const RecentlyImported = ({ )} - TPB + {!isNil(sourcedMetadata.comicvine) && + !isEmpty( + detectTradePaperbacks( + sourcedMetadata.comicvine.volumeInformation.description, + ), + ) ? ( + TPB + ) : null}
); diff --git a/src/client/shared/utils/tradepaperback.utils.ts b/src/client/shared/utils/tradepaperback.utils.ts index a3ad7a1..7ac3103 100644 --- a/src/client/shared/utils/tradepaperback.utils.ts +++ b/src/client/shared/utils/tradepaperback.utils.ts @@ -1,36 +1,20 @@ -const TrainingSet = require("./trainingData.json"); -const natural = require("natural"); -const BrainJs = require("brain.js"); +import { compact, isNil } from "lodash"; -function buildWordDictionary(trainingData) { - const tokenisedArray = trainingData.map((item) => { - const tokens = item.phrase.split(" "); - return tokens.map((token) => natural.PorterStemmer.stem(token)); - }); - - const flattenedArray = [].concat.apply([], tokenisedArray); - return flattenedArray.filter((item, pos, self) => self.indexOf(item) == pos); -} - -const dictionary = buildWordDictionary(TrainingSet); - -function encode(phrase) { - const phraseTokens = phrase.split(" "); - const encodedPhrase = dictionary.map((word) => - phraseTokens.includes(word) ? 1 : 0, - ); - - return encodedPhrase; -} - -const encodedTrainingSet = TrainingSet.map((dataSet) => { - const encodedValue = encode(dataSet.phrase); - return { input: encodedValue, output: dataSet.result }; -}); - -const network = new BrainJs.NeuralNetwork(); -network.train(encodedTrainingSet); - -const encoded = encode("Im so happy to have cake"); -console.log(network.run(encoded)); -export const detectTradePaperbacks = (deck: string): any => {}; +export const detectTradePaperbacks = (deck): any => { + const paperback = [ + /((trade)?\s?(paperback)|(tpb))/gim, // https://regex101.com/r/FhuowT/1 + /(hard\s?cover)\s?(collect((ion)|(ed)|(ing)))/gim, //https://regex101.com/r/eFJVRM/1 + /(collected\s?editions)/gim, // https://regex101.com/r/40pAm5/1 + ]; + const matches = paperback + .map((regex) => { + return deck.match(regex); + }) + .map((item) => { + if (item !== undefined) { + return item; + } + }); + console.log(compact(matches)); + return compact(matches); +}; diff --git a/yarn.lock b/yarn.lock index 8a2aa77..c77d7be 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2262,11 +2262,6 @@ acorn@^8.0.4, acorn@^8.2.4, acorn@^8.4.1: resolved "https://registry.npmjs.org/acorn/-/acorn-8.4.1.tgz" integrity sha512-asabaBSkEKosYKMITunzX177CXxQ4Q8BSSzMTKD+FefUhipQC70gfW5SiUDhYQ3vk8G+81HqQk7Fv9OXwwn9KA== -afinn-165@^1.0.2: - version "1.0.4" - resolved "https://registry.yarnpkg.com/afinn-165/-/afinn-165-1.0.4.tgz#3abf6b8922dd5db84d84e0abd155924381dd73a4" - integrity sha512-7+Wlx3BImrK0HiG6y3lU4xX7SpBPSSu8T9iguPMlaueRFxjbYwAQrp9lqZUuFikqKbd/en8lVREILvP2J80uJA== - agent-base@6, agent-base@^6.0.2: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" @@ -2440,13 +2435,6 @@ anymatch@^3.0.3, anymatch@~3.1.2: normalize-path "^3.0.0" picomatch "^2.0.4" -apparatus@^0.0.10: - version "0.0.10" - resolved "https://registry.yarnpkg.com/apparatus/-/apparatus-0.0.10.tgz#81ea756772ada77863db54ceee8202c109bdca3e" - integrity sha512-KLy/ugo33KZA7nugtQ7O0E1c8kQ52N3IvD/XgIh4w/Nr28ypfkwDfA67F1ev4N1m5D+BOk1+b2dEJDfpj/VvZg== - dependencies: - sylvester ">= 0.0.8" - aproba@^1.0.3: version "1.2.0" resolved "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz" @@ -3120,11 +3108,6 @@ bindings@^1.5.0: dependencies: file-uri-to-path "1.0.0" -bit-twiddle@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/bit-twiddle/-/bit-twiddle-1.0.2.tgz#0c6c1fabe2b23d17173d9a61b7b7093eb9e1769e" - integrity sha1-DGwfq+KyPRcXPZpht7cJPrnhdp4= - bl@^1.0.0: version "1.2.3" resolved "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz" @@ -3252,14 +3235,6 @@ braces@^3.0.1, braces@~3.0.2: dependencies: fill-range "^7.0.1" -brain.js@^2.0.0-beta.2: - version "2.0.0-beta.2" - resolved "https://registry.yarnpkg.com/brain.js/-/brain.js-2.0.0-beta.2.tgz#eefe0457b8da0e02e568601df19384487cc1603d" - integrity sha512-Cg8iUGrEz1kRqWos8mJddabMJxdiAEF24OX6Z0EWX/+9gu7BIjg5GL+IyST/vl4kbfwdvKHqeBr/N9eWEDzGdQ== - dependencies: - gpu.js "^2.9.5" - thaw.js "^2.1.0" - browser-process-hrtime@^1.0.0: version "1.0.0" resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz" @@ -6195,24 +6170,6 @@ github-from-package@0.0.0: resolved "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz" integrity sha1-l/tdlr/eiXMxPyDoKI75oWf6ZM4= -gl-wiretap@^0.6.2: - version "0.6.2" - resolved "https://registry.yarnpkg.com/gl-wiretap/-/gl-wiretap-0.6.2.tgz#e4aa19622831088fbaa7e5a18d01768f7a3fb07c" - integrity sha512-fxy1XGiPkfzK+T3XKDbY7yaqMBmozCGvAFyTwaZA3imeZH83w7Hr3r3bYlMRWIyzMI/lDUvUMM/92LE2OwqFyQ== - -gl@^4.5.2: - version "4.9.2" - resolved "https://registry.yarnpkg.com/gl/-/gl-4.9.2.tgz#dd31cdaec7d3c4b6761648111e55531f86137821" - integrity sha512-lLYaicQxsRPxOnKWX9pIGmtKRuw0epvI089yl9uBvemYxR9xE01eRuXJgje1U0/06Df7bdOmmcW87IPOsu52Ow== - dependencies: - bindings "^1.5.0" - bit-twiddle "^1.0.2" - glsl-tokenizer "^2.0.2" - nan "^2.15.0" - node-abi "^2.30.1" - node-gyp "^7.1.2" - prebuild-install "^5.3.6" - glob-parent@^3.1.0: version "3.1.0" resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz" @@ -6323,13 +6280,6 @@ globule@^1.0.0: lodash "~4.17.10" minimatch "~3.0.2" -glsl-tokenizer@^2.0.2: - version "2.1.5" - resolved "https://registry.yarnpkg.com/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz#1c2e78c16589933c274ba278d0a63b370c5fee1a" - integrity sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA== - dependencies: - through2 "^0.6.3" - got@^6.7.1: version "6.7.1" resolved "https://registry.npmjs.org/got/-/got-6.7.1.tgz" @@ -6390,21 +6340,6 @@ got@^8.3.1: url-parse-lax "^3.0.0" url-to-options "^1.0.1" -gpu-mock.js@^1.3.0: - version "1.3.1" - resolved "https://registry.yarnpkg.com/gpu-mock.js/-/gpu-mock.js-1.3.1.tgz#f7deaa09da3f672762eda944ecf948fd2c4b1490" - integrity sha512-+lbp8rQ0p1nTa6Gk6HoLiw4yM6JTpql82U+nCF3sZbX4FJWP9PzzF1018dW8K+pbmqRmhLHbn6Bjc6i6tgUpbA== - -gpu.js@^2.9.5: - version "2.11.4" - resolved "https://registry.yarnpkg.com/gpu.js/-/gpu.js-2.11.4.tgz#7c9006292c20319bdb249059c67b17a61e07aa65" - integrity sha512-unsqKVkWy/fBd9WNfH5aWE4hEMrnsttxwGpn0wRWCk0gl2JdI69FolMYLrwg/ixaEAnyb3iYONYLor3BOFweWA== - dependencies: - acorn "^7.1.1" - gl "^4.5.2" - gl-wiretap "^0.6.2" - gpu-mock.js "^1.3.0" - graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2, graceful-fs@^4.2.3, graceful-fs@^4.2.4, graceful-fs@^4.2.6: version "4.2.6" resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz" @@ -6962,7 +6897,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.1, inherits@~2.0.3: +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.0, inherits@~2.0.3: version "2.0.4" resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -8093,13 +8028,6 @@ json-stable-stringify-without-jsonify@^1.0.1: resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz" integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= -json-stable-stringify@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af" - integrity sha1-mnWdOcXy/1A/1TAGRu1EX4jE+a8= - dependencies: - jsonify "~0.0.0" - json-stringify-nice@^1.1.4: version "1.1.4" resolved "https://registry.npmjs.org/json-stringify-nice/-/json-stringify-nice-1.1.4.tgz" @@ -8138,11 +8066,6 @@ jsonfile@^6.0.1: optionalDependencies: graceful-fs "^4.1.6" -jsonify@~0.0.0: - version "0.0.0" - resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73" - integrity sha1-LHS27kHZPKUbe1qu6PUDYx0lKnM= - jsonparse@^1.3.1: version "1.3.1" resolved "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz" @@ -9158,11 +9081,6 @@ nan@^2.12.1, nan@^2.13.2: resolved "https://registry.npmjs.org/nan/-/nan-2.14.2.tgz" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nan@^2.15.0: - version "2.15.0" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.15.0.tgz#3f34a473ff18e15c1b5626b62903b5ad6e665fee" - integrity sha512-8ZtvEnA2c5aYCZYd1cvgdnU6cqwixRoYg70xPLWUws5ORTa/lnw+u4amixRS/Ac5U5mQVgp9pnlSUnbNWFaWZQ== - nanoid@^3.1.23: version "3.1.23" resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.23.tgz" @@ -9195,18 +9113,6 @@ natural-compare@^1.4.0: resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= -natural@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/natural/-/natural-5.1.0.tgz#76d3f59f635c986ed26a83e7bb9de15b3e3bb7aa" - integrity sha512-bQAWSYKQmdiiRVwh1AlTfVspZOwbLVSbUwVko9MkzeQq4AyhFm8oyRDBrxaSKknHbq2zW+hbLNP8K0xLXeBT8Q== - dependencies: - afinn-165 "^1.0.2" - apparatus "^0.0.10" - json-stable-stringify "^1.0.1" - sylvester "^0.0.12" - underscore "^1.9.1" - wordnet-db "^3.1.11" - ndjson@^1.4.0: version "1.5.0" resolved "https://registry.npmjs.org/ndjson/-/ndjson-1.5.0.tgz" @@ -9252,13 +9158,6 @@ node-abi@^2.21.0: dependencies: semver "^5.4.1" -node-abi@^2.30.1, node-abi@^2.7.0: - version "2.30.1" - resolved "https://registry.yarnpkg.com/node-abi/-/node-abi-2.30.1.tgz#c437d4b1fe0e285aaf290d45b45d4d7afedac4cf" - integrity sha512-/2D0wOQPgaUWzVSVgRMx+trKJRC2UG4SUc4oCJoXx9Uxjtp0Vy3/kt7zcbxHF8+Z/pK3UloLWzBISg72brfy1w== - dependencies: - semver "^5.4.1" - node-addon-api@^3.2.0: version "3.2.1" resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz" @@ -9372,11 +9271,6 @@ nodemon@^1.17.3: undefsafe "^2.0.2" update-notifier "^2.5.0" -noop-logger@^0.1.1: - version "0.1.1" - resolved "https://registry.yarnpkg.com/noop-logger/-/noop-logger-0.1.1.tgz#94a2b1633c4f1317553007d8966fd0e841b6a4c2" - integrity sha1-lKKxYzxPExdVMAfYlm/Q6EG2pMI= - nopt@^5.0.0: version "5.0.0" resolved "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz" @@ -10423,27 +10317,6 @@ postcss@^8.2.15: nanoid "^3.1.23" source-map-js "^0.6.2" -prebuild-install@^5.3.6: - version "5.3.6" - resolved "https://registry.yarnpkg.com/prebuild-install/-/prebuild-install-5.3.6.tgz#7c225568d864c71d89d07f8796042733a3f54291" - integrity sha512-s8Aai8++QQGi4sSbs/M1Qku62PFK49Jm1CbgXklGz4nmHveDq0wzJkg7Na5QbnO1uNH8K7iqx2EQ/mV0MZEmOg== - dependencies: - detect-libc "^1.0.3" - expand-template "^2.0.3" - github-from-package "0.0.0" - minimist "^1.2.3" - mkdirp-classic "^0.5.3" - napi-build-utils "^1.0.1" - node-abi "^2.7.0" - noop-logger "^0.1.1" - npmlog "^4.0.1" - pump "^3.0.0" - rc "^1.2.7" - simple-get "^3.0.3" - tar-fs "^2.0.0" - tunnel-agent "^0.6.0" - which-pm-runs "^1.0.0" - prebuild-install@^6.1.2: version "6.1.3" resolved "https://registry.npmjs.org/prebuild-install/-/prebuild-install-6.1.3.tgz" @@ -11236,16 +11109,6 @@ read@1, read@^1.0.7, read@~1.0.1, read@~1.0.7: dependencies: mute-stream "~0.0.4" -"readable-stream@>=1.0.33-1 <1.1.0-0": - version "1.0.34" - resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" - integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= - dependencies: - core-util-is "~1.0.0" - inherits "~2.0.1" - isarray "0.0.1" - string_decoder "~0.10.x" - readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.3.0, readable-stream@^2.3.5, readable-stream@~2.3.6: version "2.3.7" resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz" @@ -12581,11 +12444,6 @@ string_decoder@^1.1.1, string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -string_decoder@~0.10.x: - version "0.10.31" - resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" - integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= - stringify-package@^1.0.1: version "1.0.1" resolved "https://registry.npmjs.org/stringify-package/-/stringify-package-1.0.1.tgz" @@ -12771,16 +12629,6 @@ svgo@^1.3.2: unquote "~1.1.1" util.promisify "~1.0.0" -"sylvester@>= 0.0.8": - version "0.0.21" - resolved "https://registry.yarnpkg.com/sylvester/-/sylvester-0.0.21.tgz#2987b1ce2bd2f38b0dce2a34388884bfa4400ea7" - integrity sha1-KYexzivS84sNzio0OIiEv6RADqc= - -sylvester@^0.0.12: - version "0.0.12" - resolved "https://registry.yarnpkg.com/sylvester/-/sylvester-0.0.12.tgz#5a884415cd2d002c57e7a3aac99462a75ce9fdb4" - integrity sha1-WohEFc0tACxX56OqyZRip1zp/bQ= - symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz" @@ -12943,11 +12791,6 @@ text-table@^0.2.0, text-table@~0.2.0: resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -thaw.js@^2.1.0: - version "2.1.4" - resolved "https://registry.yarnpkg.com/thaw.js/-/thaw.js-2.1.4.tgz#d00fbb20b9b6c6bc2aef541199cc0717deedfde9" - integrity sha512-si9DSzEzOBUpbE41wE4Q6NXzXDYZfrniYocrduNtNDwLWj1Auueq8UzgePMQa5gfcQtVCG2OmlCTaHldtno3Vw== - threetwo-ui-typings@^1.0.3: version "1.0.3" resolved "https://registry.npmjs.org/threetwo-ui-typings/-/threetwo-ui-typings-1.0.3.tgz" @@ -12960,14 +12803,6 @@ throat@^5.0.0: resolved "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== -through2@^0.6.3: - version "0.6.5" - resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" - integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= - dependencies: - readable-stream ">=1.0.33-1 <1.1.0-0" - xtend ">=4.0.0 <4.1.0-0" - through2@^2.0.2, through2@^2.0.3: version "2.0.5" resolved "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz" @@ -13968,11 +13803,6 @@ which-module@^2.0.0: resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which-pm-runs@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" - integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= - which@^1.2.9: version "1.3.1" resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz" @@ -14024,11 +13854,6 @@ word-wrap@^1.2.3, word-wrap@~1.2.3: resolved "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz" integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== -wordnet-db@^3.1.11: - version "3.1.14" - resolved "https://registry.yarnpkg.com/wordnet-db/-/wordnet-db-3.1.14.tgz#7ba1ec2cb5730393f0856efcc738a60085426199" - integrity sha512-zVyFsvE+mq9MCmwXUWHIcpfbrHHClZWZiVOzKSxNJruIcFn2RbY55zkhiAMMxM8zCVSmtNiViq8FsAZSFpMYag== - wordwrap@0.0.2: version "0.0.2" resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz" @@ -14185,7 +14010,7 @@ xregexp@^5.0.2: dependencies: "@babel/runtime-corejs3" "^7.12.1" -"xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@~4.0.1: +xtend@^4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz" integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==