🛣 Levenshtein distance between images WIP

This commit is contained in:
2021-07-31 12:02:47 -07:00
parent fcb922d52b
commit 51d8f94068
5 changed files with 408 additions and 4 deletions

240
package-lock.json generated
View File

@@ -14,6 +14,8 @@
"@types/pino": "^6.3.8",
"7zip-bin": "^5.1.1",
"fs-extra": "^10.0.0",
"imghash": "^0.0.9",
"leven": "^3.1.0",
"lodash": "^4.17.21",
"moleculer": "^0.14.16",
"moleculer-db": "^0.8.13",
@@ -490,6 +492,31 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
"node_modules/@canvas/image": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@canvas/image/-/image-1.0.1.tgz",
"integrity": "sha512-nQ6Qt/marzeQkFikxw32qMep5Rs1U/7DdjqHlCn8ck78IX56CFnXjdfRCXOiM4kx8yvS4SmcPXuJjfpczRjFqA==",
"dependencies": {
"@canvas/image-data": "^1.0.0",
"@cwasm/jpeg-turbo": "^0.1.1",
"@cwasm/lodepng": "^0.1.2",
"@cwasm/nsbmp": "^0.1.0",
"@cwasm/nsgif": "^0.1.0",
"@cwasm/webp": "^0.1.3",
"fast-base64-decode": "^1.0.0",
"fast-base64-encode": "^1.0.0",
"fast-base64-length": "^1.0.0",
"simple-get": "^3.1.0"
},
"engines": {
"node": ">=8.3"
}
},
"node_modules/@canvas/image-data": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz",
"integrity": "sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw=="
},
"node_modules/@cnakazawa/watch": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
@@ -506,6 +533,46 @@
"node": ">=0.1.95"
}
},
"node_modules/@cwasm/jpeg-turbo": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@cwasm/jpeg-turbo/-/jpeg-turbo-0.1.3.tgz",
"integrity": "sha512-FkZxwwC6r4zhzlqM0nYGaMj/MDSrZPxLOdPdM6ySlgsMfOpNAZcLQkpNF4jP+DmsuUvRoeUD0YSMBvg3jYfK6w==",
"dependencies": {
"@canvas/image-data": "^1.0.0"
}
},
"node_modules/@cwasm/lodepng": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/@cwasm/lodepng/-/lodepng-0.1.4.tgz",
"integrity": "sha512-UY5iB3ywNTgonNF4RmcxEc/eeNcAZBnX9MlSeNUogyruG7ZNPgpKotwPyiLWbqOjlXULz4wdArPEko0Zm3+cGQ==",
"dependencies": {
"@canvas/image-data": "^1.0.0"
}
},
"node_modules/@cwasm/nsbmp": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@cwasm/nsbmp/-/nsbmp-0.1.2.tgz",
"integrity": "sha512-ZQGNDOI9ZxokqbNPmvcLKR8gBhfHjeFVuqE2eYysrbGiraQ93KeeIVrtiGKOMLW2JJOq9PbGBU0NX47qkpKWWA==",
"dependencies": {
"@canvas/image-data": "^1.0.0"
}
},
"node_modules/@cwasm/nsgif": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@cwasm/nsgif/-/nsgif-0.1.2.tgz",
"integrity": "sha512-LOD5HlL0O5jpnIAl+dLSZcB3v0RBNBjtoaymdCEPe2kyKzaP20BF+jy/QUyOZogQsgMVjusZES3tgwwoiiJ2rA==",
"dependencies": {
"@canvas/image-data": "^1.0.0"
}
},
"node_modules/@cwasm/webp": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/@cwasm/webp/-/webp-0.1.5.tgz",
"integrity": "sha512-ceIZQkyxK+s7mmItNcWqqHdOBiJAxYxTnrnPNgUNjldB1M9j+Bp/3eVIVwC8rUFyN/zoFwuT0331pyY3ackaNA==",
"dependencies": {
"@canvas/image-data": "^1.0.0"
}
},
"node_modules/@hapi/bourne": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.0.0.tgz",
@@ -2168,6 +2235,11 @@
"safe-buffer": "^5.1.1"
}
},
"node_modules/blockhash-core": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/blockhash-core/-/blockhash-core-0.1.0.tgz",
"integrity": "sha512-Cv7BgBo0jjVPaeuel4cvxf9LqIGsYNIPz9DAGvvrF9LRlEq9Q3HXu+S8bklPCae0sCxAXic4HGMoImf3FeO3Nw=="
},
"node_modules/bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
@@ -4152,6 +4224,21 @@
"resolved": "https://registry.npmjs.org/fakerator/-/fakerator-0.3.2.tgz",
"integrity": "sha512-Yw2ilaImRDctUsXJaIaHIIwsCzqNHIRPzdqkHNeGJl14kswt48QT3s8Df8i8pyL7f3X0MiMfp36v8OaNoOsG3g=="
},
"node_modules/fast-base64-decode": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz",
"integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q=="
},
"node_modules/fast-base64-encode": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-base64-encode/-/fast-base64-encode-1.0.0.tgz",
"integrity": "sha512-z2XCzVK4fde2cuTEHu2QGkLD6BPtJNKJPn0Z7oINvmhq/quUuIIVPYKUdN0gYeZqOyurjJjBH/bUzK5gafyHvw=="
},
"node_modules/fast-base64-length": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-base64-length/-/fast-base64-length-1.0.0.tgz",
"integrity": "sha512-MV+/ioblHx6SMjc/1l4EAnRJyAku6+6DxZ6RW0FoFCF1Aol/Ldb6FqwE3Kn3Ju1aam2m1KCIVoCljhgcG+Umzg=="
},
"node_modules/fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -4224,6 +4311,14 @@
"node": ">=4"
}
},
"node_modules/file-type": {
"version": "10.11.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz",
"integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw==",
"engines": {
"node": ">=6"
}
},
"node_modules/fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -4818,6 +4913,31 @@
"node": ">= 4"
}
},
"node_modules/image-type": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/image-type/-/image-type-4.1.0.tgz",
"integrity": "sha512-CFJMJ8QK8lJvRlTCEgarL4ro6hfDQKif2HjSvYCdQZESaIPV4v9imrf7BQHK+sQeTeNeMpWciR9hyC/g8ybXEg==",
"dependencies": {
"file-type": "^10.10.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/imghash": {
"version": "0.0.9",
"resolved": "https://registry.npmjs.org/imghash/-/imghash-0.0.9.tgz",
"integrity": "sha512-fvxoWZVlx2dSQQMitTFHVFooD/ODf57jzmZWjRiHQ4qYb6kKcydkV2IvcWa8+efuAwYn3n5/cJFMdpZ6D88yew==",
"dependencies": {
"@canvas/image": "^1.0.0",
"blockhash-core": "^0.1.0",
"image-type": "^4.1.0",
"jpeg-js": "^0.4.1"
},
"engines": {
"node": ">=8.x.x"
}
},
"node_modules/immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
@@ -7042,6 +7162,11 @@
"node": ">=6"
}
},
"node_modules/jpeg-js": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz",
"integrity": "sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q=="
},
"node_modules/js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -7221,7 +7346,6 @@
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
"dev": true,
"engines": {
"node": ">=6"
}
@@ -12502,6 +12626,28 @@
"integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
"dev": true
},
"@canvas/image": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/@canvas/image/-/image-1.0.1.tgz",
"integrity": "sha512-nQ6Qt/marzeQkFikxw32qMep5Rs1U/7DdjqHlCn8ck78IX56CFnXjdfRCXOiM4kx8yvS4SmcPXuJjfpczRjFqA==",
"requires": {
"@canvas/image-data": "^1.0.0",
"@cwasm/jpeg-turbo": "^0.1.1",
"@cwasm/lodepng": "^0.1.2",
"@cwasm/nsbmp": "^0.1.0",
"@cwasm/nsgif": "^0.1.0",
"@cwasm/webp": "^0.1.3",
"fast-base64-decode": "^1.0.0",
"fast-base64-encode": "^1.0.0",
"fast-base64-length": "^1.0.0",
"simple-get": "^3.1.0"
}
},
"@canvas/image-data": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@canvas/image-data/-/image-data-1.0.0.tgz",
"integrity": "sha512-BxOqI5LgsIQP1odU5KMwV9yoijleOPzHL18/YvNqF9KFSGF2K/DLlYAbDQsWqd/1nbaFuSkYD/191dpMtNh4vw=="
},
"@cnakazawa/watch": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz",
@@ -12512,6 +12658,46 @@
"minimist": "^1.2.0"
}
},
"@cwasm/jpeg-turbo": {
"version": "0.1.3",
"resolved": "https://registry.npmjs.org/@cwasm/jpeg-turbo/-/jpeg-turbo-0.1.3.tgz",
"integrity": "sha512-FkZxwwC6r4zhzlqM0nYGaMj/MDSrZPxLOdPdM6ySlgsMfOpNAZcLQkpNF4jP+DmsuUvRoeUD0YSMBvg3jYfK6w==",
"requires": {
"@canvas/image-data": "^1.0.0"
}
},
"@cwasm/lodepng": {
"version": "0.1.4",
"resolved": "https://registry.npmjs.org/@cwasm/lodepng/-/lodepng-0.1.4.tgz",
"integrity": "sha512-UY5iB3ywNTgonNF4RmcxEc/eeNcAZBnX9MlSeNUogyruG7ZNPgpKotwPyiLWbqOjlXULz4wdArPEko0Zm3+cGQ==",
"requires": {
"@canvas/image-data": "^1.0.0"
}
},
"@cwasm/nsbmp": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@cwasm/nsbmp/-/nsbmp-0.1.2.tgz",
"integrity": "sha512-ZQGNDOI9ZxokqbNPmvcLKR8gBhfHjeFVuqE2eYysrbGiraQ93KeeIVrtiGKOMLW2JJOq9PbGBU0NX47qkpKWWA==",
"requires": {
"@canvas/image-data": "^1.0.0"
}
},
"@cwasm/nsgif": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/@cwasm/nsgif/-/nsgif-0.1.2.tgz",
"integrity": "sha512-LOD5HlL0O5jpnIAl+dLSZcB3v0RBNBjtoaymdCEPe2kyKzaP20BF+jy/QUyOZogQsgMVjusZES3tgwwoiiJ2rA==",
"requires": {
"@canvas/image-data": "^1.0.0"
}
},
"@cwasm/webp": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/@cwasm/webp/-/webp-0.1.5.tgz",
"integrity": "sha512-ceIZQkyxK+s7mmItNcWqqHdOBiJAxYxTnrnPNgUNjldB1M9j+Bp/3eVIVwC8rUFyN/zoFwuT0331pyY3ackaNA==",
"requires": {
"@canvas/image-data": "^1.0.0"
}
},
"@hapi/bourne": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@hapi/bourne/-/bourne-2.0.0.tgz",
@@ -13834,6 +14020,11 @@
"safe-buffer": "^5.1.1"
}
},
"blockhash-core": {
"version": "0.1.0",
"resolved": "https://registry.npmjs.org/blockhash-core/-/blockhash-core-0.1.0.tgz",
"integrity": "sha512-Cv7BgBo0jjVPaeuel4cvxf9LqIGsYNIPz9DAGvvrF9LRlEq9Q3HXu+S8bklPCae0sCxAXic4HGMoImf3FeO3Nw=="
},
"bluebird": {
"version": "3.7.2",
"resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz",
@@ -15453,6 +15644,21 @@
"resolved": "https://registry.npmjs.org/fakerator/-/fakerator-0.3.2.tgz",
"integrity": "sha512-Yw2ilaImRDctUsXJaIaHIIwsCzqNHIRPzdqkHNeGJl14kswt48QT3s8Df8i8pyL7f3X0MiMfp36v8OaNoOsG3g=="
},
"fast-base64-decode": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-base64-decode/-/fast-base64-decode-1.0.0.tgz",
"integrity": "sha512-qwaScUgUGBYeDNRnbc/KyllVU88Jk1pRHPStuF/lO7B0/RTRLj7U0lkdTAutlBblY08rwZDff6tNU9cjv6j//Q=="
},
"fast-base64-encode": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-base64-encode/-/fast-base64-encode-1.0.0.tgz",
"integrity": "sha512-z2XCzVK4fde2cuTEHu2QGkLD6BPtJNKJPn0Z7oINvmhq/quUuIIVPYKUdN0gYeZqOyurjJjBH/bUzK5gafyHvw=="
},
"fast-base64-length": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/fast-base64-length/-/fast-base64-length-1.0.0.tgz",
"integrity": "sha512-MV+/ioblHx6SMjc/1l4EAnRJyAku6+6DxZ6RW0FoFCF1Aol/Ldb6FqwE3Kn3Ju1aam2m1KCIVoCljhgcG+Umzg=="
},
"fast-deep-equal": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
@@ -15513,6 +15719,11 @@
"flat-cache": "^2.0.1"
}
},
"file-type": {
"version": "10.11.0",
"resolved": "https://registry.npmjs.org/file-type/-/file-type-10.11.0.tgz",
"integrity": "sha512-uzk64HRpUZyTGZtVuvrjP0FYxzQrBf4rojot6J65YMEbwBLB0CWm0CLojVpwpmFmxcE/lkvYICgfcGozbBq6rw=="
},
"fill-range": {
"version": "7.0.1",
"resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
@@ -15960,6 +16171,25 @@
"integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==",
"dev": true
},
"image-type": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/image-type/-/image-type-4.1.0.tgz",
"integrity": "sha512-CFJMJ8QK8lJvRlTCEgarL4ro6hfDQKif2HjSvYCdQZESaIPV4v9imrf7BQHK+sQeTeNeMpWciR9hyC/g8ybXEg==",
"requires": {
"file-type": "^10.10.0"
}
},
"imghash": {
"version": "0.0.9",
"resolved": "https://registry.npmjs.org/imghash/-/imghash-0.0.9.tgz",
"integrity": "sha512-fvxoWZVlx2dSQQMitTFHVFooD/ODf57jzmZWjRiHQ4qYb6kKcydkV2IvcWa8+efuAwYn3n5/cJFMdpZ6D88yew==",
"requires": {
"@canvas/image": "^1.0.0",
"blockhash-core": "^0.1.0",
"image-type": "^4.1.0",
"jpeg-js": "^0.4.1"
}
},
"immediate": {
"version": "3.0.6",
"resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz",
@@ -17643,6 +17873,11 @@
"resolved": "https://registry.npmjs.org/joycon/-/joycon-2.2.5.tgz",
"integrity": "sha512-YqvUxoOcVPnCp0VU1/56f+iKSdvIRJYPznH22BdXV3xMk75SFXhWeJkZ8C9XxUWt1b5x2X1SxuFygW1U0FmkEQ=="
},
"jpeg-js": {
"version": "0.4.3",
"resolved": "https://registry.npmjs.org/jpeg-js/-/jpeg-js-0.4.3.tgz",
"integrity": "sha512-ru1HWKek8octvUHFHvE5ZzQ1yAsJmIvRdGWvSoKV52XKyuyYA437QWDttXT8eZXDSbuMpHlLzPDZUPd6idIz+Q=="
},
"js-tokens": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
@@ -17784,8 +18019,7 @@
"leven": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
"dev": true
"integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A=="
},
"levn": {
"version": "0.3.0",