From 2606c84876980b33bace04ad989b9bf343e7921a Mon Sep 17 00:00:00 2001 From: urielch Date: Wed, 17 Apr 2024 15:26:03 +0200 Subject: [PATCH 01/50] reformat project structure --- bin/install.js | 2 +- bin/install.ts | 2 +- examples/tsconfig.json | 2 +- lib/commons.js | 23 ---- lib/cvloader.js | 116 ------------------ lib/opencv4nodejs.js | 28 ----- lib/promisify.js | 40 ------ package.json | 2 +- src/install/compileLib.d.ts | 2 + src/install/compileLib.d.ts.map | 1 + {install => src/install}/compileLib.js | 0 {install => src/install}/compileLib.ts | 4 +- src/install/parseEnv.d.ts | 3 + src/install/parseEnv.d.ts.map | 1 + {install => src/install}/parseEnv.js | 0 {install => src/install}/parseEnv.ts | 0 {lib => src/lib}/commons.ts | 0 {lib => src/lib}/cvloader.ts | 2 +- .../lib}/haarcascades/haarcascade_eye.xml | 0 .../haarcascade_eye_tree_eyeglasses.xml | 0 .../haarcascade_frontalcatface.xml | 0 .../haarcascade_frontalcatface_extended.xml | 0 .../haarcascade_frontalface_alt.xml | 0 .../haarcascade_frontalface_alt2.xml | 0 .../haarcascade_frontalface_alt_tree.xml | 0 .../haarcascade_frontalface_default.xml | 0 .../haarcascades/haarcascade_fullbody.xml | 0 .../haarcascade_lefteye_2splits.xml | 0 ...haarcascade_licence_plate_rus_16stages.xml | 0 .../haarcascades/haarcascade_lowerbody.xml | 0 .../haarcascades/haarcascade_profileface.xml | 0 .../haarcascade_righteye_2splits.xml | 0 .../haarcascade_russian_plate_number.xml | 0 .../lib}/haarcascades/haarcascade_smile.xml | 0 .../haarcascades/haarcascade_upperbody.xml | 0 .../lbpcascades/lbpcascade_frontalcatface.xml | 0 .../lbpcascades/lbpcascade_frontalface.xml | 0 .../lbpcascade_frontalface_improved.xml | 0 .../lbpcascades/lbpcascade_profileface.xml | 0 .../lbpcascades/lbpcascade_silverware.xml | 0 {lib => src/lib}/opencv4nodejs.ts | 9 +- {lib => src/lib}/promisify.ts | 0 {lib => src/lib}/src/deprecations.ts | 4 +- {lib => src/lib}/src/drawUtils.ts | 4 +- {lib => src/lib}/src/index.ts | 2 +- {lib => src/lib}/src/misc.ts | 4 +- tsconfig-esm.json | 10 ++ tsconfig.json | 5 +- 48 files changed, 40 insertions(+), 226 deletions(-) delete mode 100644 lib/commons.js delete mode 100644 lib/cvloader.js delete mode 100644 lib/opencv4nodejs.js delete mode 100644 lib/promisify.js create mode 100644 src/install/compileLib.d.ts create mode 100644 src/install/compileLib.d.ts.map rename {install => src/install}/compileLib.js (100%) rename {install => src/install}/compileLib.ts (99%) create mode 100644 src/install/parseEnv.d.ts create mode 100644 src/install/parseEnv.d.ts.map rename {install => src/install}/parseEnv.js (100%) rename {install => src/install}/parseEnv.ts (100%) rename {lib => src/lib}/commons.ts (100%) rename {lib => src/lib}/cvloader.ts (99%) rename {lib => src/lib}/haarcascades/haarcascade_eye.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_eye_tree_eyeglasses.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_frontalcatface.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_frontalcatface_extended.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_frontalface_alt.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_frontalface_alt2.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_frontalface_alt_tree.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_frontalface_default.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_fullbody.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_lefteye_2splits.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_licence_plate_rus_16stages.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_lowerbody.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_profileface.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_righteye_2splits.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_russian_plate_number.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_smile.xml (100%) rename {lib => src/lib}/haarcascades/haarcascade_upperbody.xml (100%) rename {lib => src/lib}/lbpcascades/lbpcascade_frontalcatface.xml (100%) rename {lib => src/lib}/lbpcascades/lbpcascade_frontalface.xml (100%) rename {lib => src/lib}/lbpcascades/lbpcascade_frontalface_improved.xml (100%) rename {lib => src/lib}/lbpcascades/lbpcascade_profileface.xml (100%) rename {lib => src/lib}/lbpcascades/lbpcascade_silverware.xml (100%) rename {lib => src/lib}/opencv4nodejs.ts (85%) rename {lib => src/lib}/promisify.ts (100%) rename {lib => src/lib}/src/deprecations.ts (93%) rename {lib => src/lib}/src/drawUtils.ts (98%) rename {lib => src/lib}/src/index.ts (87%) rename {lib => src/lib}/src/misc.ts (97%) create mode 100644 tsconfig-esm.json diff --git a/bin/install.js b/bin/install.js index 62b0ef654..91273fbd9 100755 --- a/bin/install.js +++ b/bin/install.js @@ -1,4 +1,4 @@ #!/usr/bin/env node -const compileLib = require("../install/compileLib.js"); +const compileLib = require("../cjs/install/compileLib.js"); const {argv} = process; compileLib.compileLib(argv); diff --git a/bin/install.ts b/bin/install.ts index 91882e2ea..34137f3a6 100755 --- a/bin/install.ts +++ b/bin/install.ts @@ -1,4 +1,4 @@ #!/usr/bin/env node -import * as compileLib from "../install/compileLib"; +import * as compileLib from "../src/install/compileLib"; const {argv} = process; compileLib.compileLib(argv); diff --git a/examples/tsconfig.json b/examples/tsconfig.json index c42c894b6..7f3f93387 100644 --- a/examples/tsconfig.json +++ b/examples/tsconfig.json @@ -28,7 +28,7 @@ "module": "commonjs", /* Specify what module code is generated. */ // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ diff --git a/lib/commons.js b/lib/commons.js deleted file mode 100644 index 88592b25b..000000000 --- a/lib/commons.js +++ /dev/null @@ -1,23 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.isElectronWebpack = exports.resolvePath = void 0; -const path = require("path"); -function resolvePath(filePath, file) { - if (!filePath) { - return ''; - } - return (file ? path.resolve(filePath, file) : path.resolve(filePath)).replace(/\\/g, '/'); -} -exports.resolvePath = resolvePath; -/** - * detect if electron https://github.com/electron/electron/issues/2288 - */ -function isElectronWebpack() { - // return process.versions.hasOwnProperty('electron'); - // assume module required by webpack if no system path inv envs - return !process.env.path - // eslint-disable-next-line @typescript-eslint/no-explicit-any - && global.window && global.window.process && global.window.process.type - && global.navigator && ((global.navigator.userAgent || '').toLowerCase().indexOf(' electron/') > -1); -} -exports.isElectronWebpack = isElectronWebpack; diff --git a/lib/cvloader.js b/lib/cvloader.js deleted file mode 100644 index edd515a4b..000000000 --- a/lib/cvloader.js +++ /dev/null @@ -1,116 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getOpenCV = void 0; -const opencv_build_1 = require("@u4/opencv-build"); -const fs = require("fs"); -const path = require("path"); -const commons_js_1 = require("./commons.js"); -const pc = require("picocolors"); -const npmlog_1 = require("npmlog"); -const logDebug = process.env.OPENCV4NODES_DEBUG_REQUIRE ? npmlog_1.info : () => { }; -function tryGetOpencvBinDir(builder) { - if (process.env.OPENCV_BIN_DIR) { - logDebug('tryGetOpencvBinDir', `${pc.yellow('OPENCV_BIN_DIR')} environment variable is set`); - return process.env.OPENCV_BIN_DIR; - } - // if the auto build is not disabled via environment do not even attempt - // to read package.json - if (!builder.env.isAutoBuildDisabled) { - logDebug('tryGetOpencvBinDir', 'auto build has not been disabled via environment variable, using opencv bin dir of opencv-build'); - return builder.env.opencvBinDir; - } - logDebug('tryGetOpencvBinDir', 'auto build has not been explicitly disabled via environment variable, attempting to read envs from package.json...'); - // const envs = builder.env.readEnvsFromPackageJson() - if (!builder.env.isAutoBuildDisabled && process.env.OPENCV_BIN_DIR) { - logDebug('tryGetOpencvBinDir', 'auto build has not been disabled via package.json, using opencv bin dir of opencv-build'); - return process.env.OPENCV_BIN_DIR; //.opencvBinDir - } - if (builder.env.opencvBinDir) { - logDebug('tryGetOpencvBinDir', 'found opencv binary environment variable in package.json'); - return builder.env.opencvBinDir; - } - logDebug('tryGetOpencvBinDir', 'failed to find opencv binary environment variable in package.json'); - return null; -} -function getOpenCV(opt) { - if (!opt) - opt = { prebuild: 'latestBuild' }; - const builder = new opencv_build_1.OpenCVBuilder(opt); - let opencvBuild = null; - let requirePath = ''; - if ((0, commons_js_1.isElectronWebpack)()) { - requirePath = '../build/Release/opencv4nodejs.node'; - } - else { - requirePath = path.join(__dirname, '../build/Debug/opencv4nodejs.node'); - if (!fs.existsSync(requirePath)) { - requirePath = path.join(__dirname, '../build/Release/opencv4nodejs.node'); - } - requirePath = requirePath.replace(/\.node$/, ''); - // path.join(__dirname, process.env.BINDINGS_DEBUG ? '../build/Debug/opencv4nodejs' : '../build/Release/opencv4nodejs') - } - try { - logDebug('require', `require path is ${pc.yellow(requirePath)}`); - opencvBuild = require(requirePath); - } - catch (err) { - // err.code === 'ERR_DLOPEN_FAILED' - logDebug('require', `failed to require cv with exception: ${pc.red(err.toString())}`); - logDebug('require', 'attempting to add opencv binaries to path'); - if (!process.env.path) { - logDebug('require', 'there is no path environment variable, skipping...'); - throw err; - } - const opencvBinDir = tryGetOpencvBinDir(builder); - logDebug('require', 'adding opencv binary dir to path: ' + opencvBinDir); - if (!fs.existsSync(opencvBinDir)) { - throw new Error('opencv binary dir does not exist: ' + opencvBinDir); - } - // ensure binaries are added to path on windows - if (!process.env.path.includes(opencvBinDir)) { - process.env.path = `${process.env.path};${opencvBinDir};`; - } - logDebug('require', 'process.env.path: ' + process.env.path); - try { - opencvBuild = require(requirePath); - } - catch (e) { - if (e instanceof Error) { - let msg = ''; - const message = e.message; - if (message.startsWith('Cannot find module')) { - msg = `require("${pc.yellow(requirePath)}"); - Failed with: ${pc.red(message)}, openCV binding not available, reed: - build-opencv --help - And build missing file with: - npx build-opencv --version 4.6.0 rebuild - - PS: a 'npm link' may help - `; - } - else if (message.startsWith('The specified module could not be found.')) { - msg = `require("${pc.yellow(requirePath)}"); - Failed with: ${pc.red(message)}, openCV module looks broken, clean you builds directory and rebuild everything - rm -r - npx build-opencv --version 4.6.0 rebuild - `; - } - else { - msg = `require("${pc.yellow(requirePath)}"); - Failed with: ${pc.red(message)} - `; - } - throw Error(msg); - } - throw e; - } - } - // resolve haarcascade files - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const { haarCascades, lbpCascades } = opencvBuild; - Object.keys(haarCascades).forEach(key => opencvBuild[key] = (0, commons_js_1.resolvePath)(path.join(__dirname, 'haarcascades'), haarCascades[key])); - Object.keys(lbpCascades).forEach(key => opencvBuild[key] = (0, commons_js_1.resolvePath)(path.join(__dirname, 'lbpcascades'), lbpCascades[key])); - return opencvBuild; -} -exports.getOpenCV = getOpenCV; -exports.default = getOpenCV; diff --git a/lib/opencv4nodejs.js b/lib/opencv4nodejs.js deleted file mode 100644 index 3b9109881..000000000 --- a/lib/opencv4nodejs.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -const promisify_js_1 = require("./promisify.js"); -const src_1 = require("./src"); -const cvloader_js_1 = require("./cvloader.js"); -function loadOpenCV(opt) { - const cvBase = (0, cvloader_js_1.getOpenCV)(opt); - if (!cvBase.accumulate) { - throw Error('failed to load opencv basic accumulate not found.'); - } - if (!cvBase.blur) { - throw Error('failed to load opencv basic blur not found.'); - } - // promisify async methods - let cvObj = (0, promisify_js_1.default)(cvBase); - cvObj = (0, src_1.default)(cvObj); - // add xmodules alias if not present (moved to C++ part) - // if (!cvObj.xmodules && cvObj.modules) - // cvObj.xmodules = cvObj.modules - return cvObj; -} -const cv = loadOpenCV({ prebuild: 'latestBuild' }); -const defExport = { cv }; -// duplicate all export for retro-compatibility -for (const key in cv) { - defExport[key] = cv[key]; -} -defExport['cv'] = cv; -module.exports = defExport; diff --git a/lib/promisify.js b/lib/promisify.js deleted file mode 100644 index 15aede4c0..000000000 --- a/lib/promisify.js +++ /dev/null @@ -1,40 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -/* eslint-disable @typescript-eslint/no-explicit-any */ -const isFn = (obj) => typeof obj === 'function'; -const isAsyncFn = (fn) => { - try { - return fn.prototype.constructor.name.endsWith('Async'); - } - catch (e) { - return false; - } -}; -const promisify = (fn) => function (...params) { - if (isFn(params[params.length - 1])) { - return fn.apply(this, params); - } - return new Promise((resolve, reject) => { - const args = Array.prototype.slice.call(params); - args.push(function (err, res) { - if (err) { - return reject(err); - } - return resolve(res); - }); - fn.apply(this, args); - }); -}; -exports.default = (cv) => { - const fns = Object.keys(cv).filter(k => isFn(cv[k])).map(k => cv[k]); - const asyncFuncs = fns.filter(isAsyncFn); - const clazzes = fns.filter(fn => fn.prototype && !!Object.keys(fn.prototype).length); - clazzes.forEach((clazz) => { - const protoFnKeys = Object.keys(clazz.prototype).filter(k => isAsyncFn(clazz.prototype[k])); - protoFnKeys.forEach(k => clazz.prototype[k] = promisify(clazz.prototype[k])); - }); - asyncFuncs.forEach((fn) => { - cv[fn.prototype.constructor.name] = promisify(fn); - }); - return cv; -}; diff --git a/package.json b/package.json index d50d6f88d..06731db00 100644 --- a/package.json +++ b/package.json @@ -36,7 +36,7 @@ "main": "./lib/opencv4nodejs.js", "typings": "./typings/index.d.ts", "scripts": { - "build": "tsc --pretty --project .", + "build": "tsc --pretty --project . && tsc --pretty --project tsconfig-esm.json", "prepack": "npm run build", "install_old": "node bin/install.js auto", "install_Mac": "CXXFLAGS=\"-std=c++17 -Wno-c++11-narrowing -Wno-c++17-extensions -Wno-c++17-attribute-extensions\" node ./bin/install.js --version 4.5.3 build", diff --git a/src/install/compileLib.d.ts b/src/install/compileLib.d.ts new file mode 100644 index 000000000..55caff5ec --- /dev/null +++ b/src/install/compileLib.d.ts @@ -0,0 +1,2 @@ +export declare function compileLib(args: string[]): Promise; +//# sourceMappingURL=compileLib.d.ts.map \ No newline at end of file diff --git a/src/install/compileLib.d.ts.map b/src/install/compileLib.d.ts.map new file mode 100644 index 000000000..9fdaedb10 --- /dev/null +++ b/src/install/compileLib.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"compileLib.d.ts","sourceRoot":"","sources":["compileLib.ts"],"names":[],"mappings":"AAuKA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,iBAuR9C"} \ No newline at end of file diff --git a/install/compileLib.js b/src/install/compileLib.js similarity index 100% rename from install/compileLib.js rename to src/install/compileLib.js diff --git a/install/compileLib.ts b/src/install/compileLib.ts similarity index 99% rename from install/compileLib.ts rename to src/install/compileLib.ts index f4ca95cdb..8635b3321 100644 --- a/install/compileLib.ts +++ b/src/install/compileLib.ts @@ -3,12 +3,12 @@ import * as child_process from 'child_process' import * as fs from 'fs' import * as npmlog from 'npmlog' import { LogLevels } from 'npmlog' -import { resolvePath } from '../lib/commons.js' +import { resolvePath } from '../lib/commons' import * as pc from 'picocolors' import * as path from 'path' import { EOL } from 'os' import { globSync } from "glob"; -import { getOpenCV } from '../lib/cvloader.js' +import { getOpenCV } from '../lib/cvloader' const defaultDir = '/usr/local' const defaultLibDir = `${defaultDir}/lib` diff --git a/src/install/parseEnv.d.ts b/src/install/parseEnv.d.ts new file mode 100644 index 000000000..844f8b7f5 --- /dev/null +++ b/src/install/parseEnv.d.ts @@ -0,0 +1,3 @@ +declare const envName: string; +declare const outputs: string[]; +//# sourceMappingURL=parseEnv.d.ts.map \ No newline at end of file diff --git a/src/install/parseEnv.d.ts.map b/src/install/parseEnv.d.ts.map new file mode 100644 index 000000000..1def473da --- /dev/null +++ b/src/install/parseEnv.d.ts.map @@ -0,0 +1 @@ +{"version":3,"file":"parseEnv.d.ts","sourceRoot":"","sources":["parseEnv.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,OAAO,QAAkB,CAAA;AAK/B,QAAA,MAAM,OAAO,UAA8C,CAAA"} \ No newline at end of file diff --git a/install/parseEnv.js b/src/install/parseEnv.js similarity index 100% rename from install/parseEnv.js rename to src/install/parseEnv.js diff --git a/install/parseEnv.ts b/src/install/parseEnv.ts similarity index 100% rename from install/parseEnv.ts rename to src/install/parseEnv.ts diff --git a/lib/commons.ts b/src/lib/commons.ts similarity index 100% rename from lib/commons.ts rename to src/lib/commons.ts diff --git a/lib/cvloader.ts b/src/lib/cvloader.ts similarity index 99% rename from lib/cvloader.ts rename to src/lib/cvloader.ts index 7644f7cea..9200a518f 100644 --- a/lib/cvloader.ts +++ b/src/lib/cvloader.ts @@ -4,7 +4,7 @@ import * as path from 'path'; import { isElectronWebpack, resolvePath } from './commons.js'; import * as pc from 'picocolors' import { info } from 'npmlog'; -import type * as openCV from '..'; +import type * as openCV from '../..'; declare type OpenCVType = typeof openCV; const logDebug = process.env.OPENCV4NODES_DEBUG_REQUIRE ? info : () => { /* ignore */ } diff --git a/lib/haarcascades/haarcascade_eye.xml b/src/lib/haarcascades/haarcascade_eye.xml similarity index 100% rename from lib/haarcascades/haarcascade_eye.xml rename to src/lib/haarcascades/haarcascade_eye.xml diff --git a/lib/haarcascades/haarcascade_eye_tree_eyeglasses.xml b/src/lib/haarcascades/haarcascade_eye_tree_eyeglasses.xml similarity index 100% rename from lib/haarcascades/haarcascade_eye_tree_eyeglasses.xml rename to src/lib/haarcascades/haarcascade_eye_tree_eyeglasses.xml diff --git a/lib/haarcascades/haarcascade_frontalcatface.xml b/src/lib/haarcascades/haarcascade_frontalcatface.xml similarity index 100% rename from lib/haarcascades/haarcascade_frontalcatface.xml rename to src/lib/haarcascades/haarcascade_frontalcatface.xml diff --git a/lib/haarcascades/haarcascade_frontalcatface_extended.xml b/src/lib/haarcascades/haarcascade_frontalcatface_extended.xml similarity index 100% rename from lib/haarcascades/haarcascade_frontalcatface_extended.xml rename to src/lib/haarcascades/haarcascade_frontalcatface_extended.xml diff --git a/lib/haarcascades/haarcascade_frontalface_alt.xml b/src/lib/haarcascades/haarcascade_frontalface_alt.xml similarity index 100% rename from lib/haarcascades/haarcascade_frontalface_alt.xml rename to src/lib/haarcascades/haarcascade_frontalface_alt.xml diff --git a/lib/haarcascades/haarcascade_frontalface_alt2.xml b/src/lib/haarcascades/haarcascade_frontalface_alt2.xml similarity index 100% rename from lib/haarcascades/haarcascade_frontalface_alt2.xml rename to src/lib/haarcascades/haarcascade_frontalface_alt2.xml diff --git a/lib/haarcascades/haarcascade_frontalface_alt_tree.xml b/src/lib/haarcascades/haarcascade_frontalface_alt_tree.xml similarity index 100% rename from lib/haarcascades/haarcascade_frontalface_alt_tree.xml rename to src/lib/haarcascades/haarcascade_frontalface_alt_tree.xml diff --git a/lib/haarcascades/haarcascade_frontalface_default.xml b/src/lib/haarcascades/haarcascade_frontalface_default.xml similarity index 100% rename from lib/haarcascades/haarcascade_frontalface_default.xml rename to src/lib/haarcascades/haarcascade_frontalface_default.xml diff --git a/lib/haarcascades/haarcascade_fullbody.xml b/src/lib/haarcascades/haarcascade_fullbody.xml similarity index 100% rename from lib/haarcascades/haarcascade_fullbody.xml rename to src/lib/haarcascades/haarcascade_fullbody.xml diff --git a/lib/haarcascades/haarcascade_lefteye_2splits.xml b/src/lib/haarcascades/haarcascade_lefteye_2splits.xml similarity index 100% rename from lib/haarcascades/haarcascade_lefteye_2splits.xml rename to src/lib/haarcascades/haarcascade_lefteye_2splits.xml diff --git a/lib/haarcascades/haarcascade_licence_plate_rus_16stages.xml b/src/lib/haarcascades/haarcascade_licence_plate_rus_16stages.xml similarity index 100% rename from lib/haarcascades/haarcascade_licence_plate_rus_16stages.xml rename to src/lib/haarcascades/haarcascade_licence_plate_rus_16stages.xml diff --git a/lib/haarcascades/haarcascade_lowerbody.xml b/src/lib/haarcascades/haarcascade_lowerbody.xml similarity index 100% rename from lib/haarcascades/haarcascade_lowerbody.xml rename to src/lib/haarcascades/haarcascade_lowerbody.xml diff --git a/lib/haarcascades/haarcascade_profileface.xml b/src/lib/haarcascades/haarcascade_profileface.xml similarity index 100% rename from lib/haarcascades/haarcascade_profileface.xml rename to src/lib/haarcascades/haarcascade_profileface.xml diff --git a/lib/haarcascades/haarcascade_righteye_2splits.xml b/src/lib/haarcascades/haarcascade_righteye_2splits.xml similarity index 100% rename from lib/haarcascades/haarcascade_righteye_2splits.xml rename to src/lib/haarcascades/haarcascade_righteye_2splits.xml diff --git a/lib/haarcascades/haarcascade_russian_plate_number.xml b/src/lib/haarcascades/haarcascade_russian_plate_number.xml similarity index 100% rename from lib/haarcascades/haarcascade_russian_plate_number.xml rename to src/lib/haarcascades/haarcascade_russian_plate_number.xml diff --git a/lib/haarcascades/haarcascade_smile.xml b/src/lib/haarcascades/haarcascade_smile.xml similarity index 100% rename from lib/haarcascades/haarcascade_smile.xml rename to src/lib/haarcascades/haarcascade_smile.xml diff --git a/lib/haarcascades/haarcascade_upperbody.xml b/src/lib/haarcascades/haarcascade_upperbody.xml similarity index 100% rename from lib/haarcascades/haarcascade_upperbody.xml rename to src/lib/haarcascades/haarcascade_upperbody.xml diff --git a/lib/lbpcascades/lbpcascade_frontalcatface.xml b/src/lib/lbpcascades/lbpcascade_frontalcatface.xml similarity index 100% rename from lib/lbpcascades/lbpcascade_frontalcatface.xml rename to src/lib/lbpcascades/lbpcascade_frontalcatface.xml diff --git a/lib/lbpcascades/lbpcascade_frontalface.xml b/src/lib/lbpcascades/lbpcascade_frontalface.xml similarity index 100% rename from lib/lbpcascades/lbpcascade_frontalface.xml rename to src/lib/lbpcascades/lbpcascade_frontalface.xml diff --git a/lib/lbpcascades/lbpcascade_frontalface_improved.xml b/src/lib/lbpcascades/lbpcascade_frontalface_improved.xml similarity index 100% rename from lib/lbpcascades/lbpcascade_frontalface_improved.xml rename to src/lib/lbpcascades/lbpcascade_frontalface_improved.xml diff --git a/lib/lbpcascades/lbpcascade_profileface.xml b/src/lib/lbpcascades/lbpcascade_profileface.xml similarity index 100% rename from lib/lbpcascades/lbpcascade_profileface.xml rename to src/lib/lbpcascades/lbpcascade_profileface.xml diff --git a/lib/lbpcascades/lbpcascade_silverware.xml b/src/lib/lbpcascades/lbpcascade_silverware.xml similarity index 100% rename from lib/lbpcascades/lbpcascade_silverware.xml rename to src/lib/lbpcascades/lbpcascade_silverware.xml diff --git a/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts similarity index 85% rename from lib/opencv4nodejs.ts rename to src/lib/opencv4nodejs.ts index 06a2bdfcf..d9fa15ea9 100644 --- a/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -2,7 +2,7 @@ import { type OpenCVBuildEnvParams } from '@u4/opencv-build'; import promisify from './promisify.js'; import extendWithJsSources from './src'; import { getOpenCV } from './cvloader.js'; -import type * as openCV from '..'; +import type * as openCV from '../..'; declare type OpenCVType = typeof openCV; function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { @@ -23,7 +23,7 @@ function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { return cvObj; } -const cv = loadOpenCV({ prebuild: 'latestBuild' }); +export const cv = loadOpenCV({ prebuild: 'latestBuild' }); const defExport = { cv }; // duplicate all export for retro-compatibility for (const key in cv) { @@ -31,4 +31,7 @@ for (const key in cv) { } defExport['cv'] = cv; -export = defExport; +// export cv; +export default defExport; + +//export = defExport; diff --git a/lib/promisify.ts b/src/lib/promisify.ts similarity index 100% rename from lib/promisify.ts rename to src/lib/promisify.ts diff --git a/lib/src/deprecations.ts b/src/lib/src/deprecations.ts similarity index 93% rename from lib/src/deprecations.ts rename to src/lib/src/deprecations.ts index 1ac55c45d..b58807f33 100644 --- a/lib/src/deprecations.ts +++ b/src/lib/src/deprecations.ts @@ -1,6 +1,6 @@ import * as assert from 'assert'; -import type * as openCV from '../..' -import type { Mat } from '../..'; +import type * as openCV from '../../..' +import type { Mat } from '../../..'; export default function (cv: typeof openCV) { // deprecate wrapper for the old calcHist API diff --git a/lib/src/drawUtils.ts b/src/lib/src/drawUtils.ts similarity index 98% rename from lib/src/drawUtils.ts rename to src/lib/src/drawUtils.ts index dda4100fc..0f82fd963 100644 --- a/lib/src/drawUtils.ts +++ b/src/lib/src/drawUtils.ts @@ -1,5 +1,5 @@ -import type * as openCV from '../..'; -import { Mat, Rect, Vec3 } from '../..'; +import type * as openCV from '../../..'; +import { Mat, Rect, Vec3 } from '../../..'; export interface TextParams { fontType: number; diff --git a/lib/src/index.ts b/src/lib/src/index.ts similarity index 87% rename from lib/src/index.ts rename to src/lib/src/index.ts index 73a264603..892844bab 100644 --- a/lib/src/index.ts +++ b/src/lib/src/index.ts @@ -1,6 +1,6 @@ import makeDrawUtils from './drawUtils'; import deprecations from './deprecations'; -import * as OpenCV from '../..'; +import * as OpenCV from '../../..'; import misc from './misc'; export default function(cv: typeof OpenCV) { diff --git a/lib/src/misc.ts b/src/lib/src/misc.ts similarity index 97% rename from lib/src/misc.ts rename to src/lib/src/misc.ts index 106fbd797..a287a8753 100644 --- a/lib/src/misc.ts +++ b/src/lib/src/misc.ts @@ -1,5 +1,5 @@ -import type * as openCV from '../..'; -import type { Mat, Rect } from '../..'; +import type * as openCV from '../../..'; +import type { Mat, Rect } from '../../..'; export const allTypes = ['CV_8U', 'CV_8S', 'CV_16U', 'CV_16S', 'CV_32S', 'CV_32F', 'CV_64F', 'CV_8UC1', 'CV_8UC2', 'CV_8UC3', 'CV_8UC4', 'CV_8SC1', 'CV_8SC2', 'CV_8SC3', 'CV_8SC4', 'CV_16UC1', 'CV_16UC2', 'CV_16UC3', 'CV_16UC4', 'CV_16SC1', 'CV_16SC2', 'CV_16SC3', 'CV_16SC4', 'CV_32SC1', 'CV_32SC2', 'CV_32SC3', 'CV_32SC4', 'CV_32FC1', 'CV_32FC2', 'CV_32FC3', 'CV_32FC4', 'CV_64FC1', 'CV_64FC2', 'CV_64FC3', 'CV_64FC4'] as const; export type MatTypes = typeof allTypes[number]; diff --git a/tsconfig-esm.json b/tsconfig-esm.json new file mode 100644 index 000000000..a338bdb66 --- /dev/null +++ b/tsconfig-esm.json @@ -0,0 +1,10 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "module": "ES2020", + "declaration": false, + "declarationMap": false, + "outDir": "esm", + }, + } + \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 92593c362..4a2a1ef0c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,7 +1,6 @@ { "compilerOptions": { "target": "ES2019", - "module": "commonjs", "strict": false, "esModuleInterop": false, "noImplicitReturns": true, @@ -9,7 +8,9 @@ "forceConsistentCasingInFileNames": true, "declaration": true, "declarationMap": true, + "outDir": "cjs", + "module": "commonjs", }, //"files": [ "./install/install.ts", "./install/parseEnv.ts" ] - "include": [ "./install/*.ts", "./lib/**/*.ts"] + "include": [ "src/**/*.ts"] } From 146f16b9caec0ead063d3384c9108dd5c686ccd5 Mon Sep 17 00:00:00 2001 From: urielch Date: Wed, 17 Apr 2024 15:31:59 +0200 Subject: [PATCH 02/50] migration esm + CJS --- cjs/package.json | 3 +++ esm/package.json | 3 +++ package.json | 3 ++- src/lib/cvloader.ts | 2 +- src/lib/opencv4nodejs.ts | 4 ++-- 5 files changed, 11 insertions(+), 4 deletions(-) create mode 100644 cjs/package.json create mode 100644 esm/package.json diff --git a/cjs/package.json b/cjs/package.json new file mode 100644 index 000000000..5bbefffba --- /dev/null +++ b/cjs/package.json @@ -0,0 +1,3 @@ +{ + "type": "commonjs" +} diff --git a/esm/package.json b/esm/package.json new file mode 100644 index 000000000..3dbc1ca59 --- /dev/null +++ b/esm/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} diff --git a/package.json b/package.json index 06731db00..051a4b69d 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,8 @@ "build-opencv": "bin/install.js" }, "homepage": "https://github.com/UrielCh/opencv4nodejs#readme", - "main": "./lib/opencv4nodejs.js", + "main": "./cjs/lib/opencv4nodejs.js", + "module": "./esm/lib/opencv4nodejs.js", "typings": "./typings/index.d.ts", "scripts": { "build": "tsc --pretty --project . && tsc --pretty --project tsconfig-esm.json", diff --git a/src/lib/cvloader.ts b/src/lib/cvloader.ts index 9200a518f..f4a80cb3a 100644 --- a/src/lib/cvloader.ts +++ b/src/lib/cvloader.ts @@ -1,7 +1,7 @@ import { OpenCVBuilder, type OpenCVBuildEnvParams } from '@u4/opencv-build'; import * as fs from 'fs'; import * as path from 'path'; -import { isElectronWebpack, resolvePath } from './commons.js'; +import { isElectronWebpack, resolvePath } from './commons'; import * as pc from 'picocolors' import { info } from 'npmlog'; import type * as openCV from '../..'; diff --git a/src/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts index d9fa15ea9..df9ffde88 100644 --- a/src/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -1,7 +1,7 @@ import { type OpenCVBuildEnvParams } from '@u4/opencv-build'; -import promisify from './promisify.js'; +import promisify from './promisify'; import extendWithJsSources from './src'; -import { getOpenCV } from './cvloader.js'; +import { getOpenCV } from './cvloader'; import type * as openCV from '../..'; declare type OpenCVType = typeof openCV; From 0951c283b98053a23783d6cfe0c849ae8d6033c2 Mon Sep 17 00:00:00 2001 From: urielch Date: Wed, 17 Apr 2024 16:50:56 +0200 Subject: [PATCH 03/50] ESM build pass --- README.md | 2 +- bin/install.ts | 4 ++-- package.json | 13 ++++++++++--- src/install/compileLib.ts | 29 +++++++++++++++-------------- src/lib/commons.ts | 2 +- src/lib/cvloader.ts | 16 ++++++++-------- src/lib/opencv4nodejs.ts | 4 ++-- src/lib/src/deprecations.ts | 6 +++--- src/lib/src/drawUtils.ts | 4 ++-- src/lib/src/index.ts | 4 ++-- src/lib/src/misc.ts | 4 ++-- test/tests/io/VideoCapture.test.ts | 2 +- tsconfig-esm.json | 3 ++- tsconfig.json | 3 +-- 14 files changed, 52 insertions(+), 44 deletions(-) diff --git a/README.md b/README.md index 71450c266..41cab4836 100644 --- a/README.md +++ b/README.md @@ -660,7 +660,7 @@ try { ## With TypeScript ``` javascript -import * as cv from '@u4/opencv4nodejs' +import cv from '@u4/opencv4nodejs' ``` Check out the TypeScript [examples](https://github.com/urielch/opencv4nodejs/tree/master/examples). diff --git a/bin/install.ts b/bin/install.ts index 34137f3a6..89639188d 100755 --- a/bin/install.ts +++ b/bin/install.ts @@ -1,4 +1,4 @@ #!/usr/bin/env node -import * as compileLib from "../src/install/compileLib"; +import { compileLib } from "../src/install/compileLib"; const {argv} = process; -compileLib.compileLib(argv); +compileLib(argv); diff --git a/package.json b/package.json index 051a4b69d..9c7c5f5ec 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@u4/opencv4nodejs", - "version": "7.0.0-alpha", + "version": "7.0.0-alpha-2", "description": "Asynchronous OpenCV 3.x / 4.x nodejs bindings with JavaScript and TypeScript API.", "keywords": [ "opencv", @@ -16,6 +16,13 @@ "async", "typescript" ], + "exports": { + ".": { + "require": "./cjs/lib/opencv4nodejs.js", + "import": "./esm/lib/opencv4nodejs.js", + "types": "./typings/index.d.ts" + } + }, "contributors": [ "Uriel Chemouni (https://uriel.ovh/)", "justadudewhohacks (https://github.com/justadudewhohacks)" @@ -50,9 +57,9 @@ "samples": "cd examples && pnpm install && npm run build && node ./src/templateMatch/multiMatchBench.js && node ./src/templateMatch/multiMatchColision.js && node ./src/applyColorMap.js && node ./src/asyncMatchFeatures.js && node ./src/faceDetect/asyncFaceDetection.js", "do-build": "npm run build && node bin/install.js --version 4.6.0 --jobs MAX build", "do-rebuild": "npm run build && node bin/install.js --version 4.6.0 --jobs MAX rebuild", - "lint": "eslint examples/**/*.ts lib/**/*.ts typings/**/*.ts ", + "lint": "eslint examples/**/*.ts src/**/*.ts typings/**/*.ts ", "clean": "node-gyp clean", - "cleanjs": "rimraf {install,lib,examples}/**/*.{d.ts,js,map}", + "cleanjs": "rimraf {examples}/**/*.{d.ts,js,map} {cjs,esm}/{lib,install}", "build-debug": "npm run build && BINDINGS_DEBUG=true node bin/install.js rebuild" }, "dependencies": { diff --git a/src/install/compileLib.ts b/src/install/compileLib.ts index 8635b3321..9c172e4fc 100644 --- a/src/install/compileLib.ts +++ b/src/install/compileLib.ts @@ -1,19 +1,20 @@ -import { type OpencvModule, OpenCVBuilder, OpenCVBuildEnv, type OpenCVBuildEnvParams, args2Option, genHelp } from '@u4/opencv-build' -import * as child_process from 'child_process' -import * as fs from 'fs' -import * as npmlog from 'npmlog' -import { LogLevels } from 'npmlog' -import { resolvePath } from '../lib/commons' -import * as pc from 'picocolors' -import * as path from 'path' -import { EOL } from 'os' +import type { OpencvModule, OpenCVBuildEnvParams } from '@u4/opencv-build'; +import { OpenCVBuilder, OpenCVBuildEnv, args2Option, genHelp } from '@u4/opencv-build'; +import child_process from 'child_process'; +import fs from 'fs'; +import npmlog from 'npmlog'; +import { LogLevels } from 'npmlog'; +import { resolvePath } from '../lib/commons'; +import pc from 'picocolors'; +import path from 'path'; +import { EOL } from 'os'; import { globSync } from "glob"; -import { getOpenCV } from '../lib/cvloader' +import { getOpenCV } from '../lib/cvloader'; -const defaultDir = '/usr/local' -const defaultLibDir = `${defaultDir}/lib` -const defaultIncludeDir = `${defaultDir}/include` -const defaultIncludeDirOpenCV4 = `${defaultIncludeDir}/opencv4` +const defaultDir = '/usr/local'; +const defaultLibDir = `${defaultDir}/lib`; +const defaultIncludeDir = `${defaultDir}/include`; +const defaultIncludeDirOpenCV4 = `${defaultIncludeDir}/opencv4`; let silenceMode = false; diff --git a/src/lib/commons.ts b/src/lib/commons.ts index 970a36c8d..3b4658028 100644 --- a/src/lib/commons.ts +++ b/src/lib/commons.ts @@ -1,4 +1,4 @@ -import * as path from 'path' +import path from 'path' export function resolvePath(filePath?: string, file?: string): string { if (!filePath) { diff --git a/src/lib/cvloader.ts b/src/lib/cvloader.ts index f4a80cb3a..2e3a4e7e3 100644 --- a/src/lib/cvloader.ts +++ b/src/lib/cvloader.ts @@ -1,10 +1,10 @@ import { OpenCVBuilder, type OpenCVBuildEnvParams } from '@u4/opencv-build'; -import * as fs from 'fs'; -import * as path from 'path'; +import fs from 'fs'; +import path from 'path'; import { isElectronWebpack, resolvePath } from './commons'; -import * as pc from 'picocolors' +import pc from 'picocolors' import { info } from 'npmlog'; -import type * as openCV from '../..'; +import type * as openCV from '../../typings/index'; declare type OpenCVType = typeof openCV; const logDebug = process.env.OPENCV4NODES_DEBUG_REQUIRE ? info : () => { /* ignore */ } @@ -45,14 +45,14 @@ export function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { let opencvBuild: OpenCVType = null; let requirePath = ''; if (isElectronWebpack()) { - requirePath = '../build/Release/opencv4nodejs.node'; + requirePath = '../../build/Release/opencv4nodejs.node'; } else { - requirePath = path.join(__dirname, '../build/Debug/opencv4nodejs.node'); + requirePath = path.join(__dirname, '../../build/Debug/opencv4nodejs.node'); if (!fs.existsSync(requirePath)) { - requirePath = path.join(__dirname, '../build/Release/opencv4nodejs.node'); + requirePath = path.join(__dirname, '../../build/Release/opencv4nodejs.node'); } requirePath = requirePath.replace(/\.node$/, ''); - // path.join(__dirname, process.env.BINDINGS_DEBUG ? '../build/Debug/opencv4nodejs' : '../build/Release/opencv4nodejs') + // path.join(__dirname, process.env.BINDINGS_DEBUG ? '../../build/Debug/opencv4nodejs' : '../../build/Release/opencv4nodejs') } try { logDebug('require', `require path is ${pc.yellow(requirePath)}`) diff --git a/src/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts index df9ffde88..886c2699f 100644 --- a/src/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -1,8 +1,8 @@ import { type OpenCVBuildEnvParams } from '@u4/opencv-build'; import promisify from './promisify'; -import extendWithJsSources from './src'; +import extendWithJsSources from './src/index'; import { getOpenCV } from './cvloader'; -import type * as openCV from '../..'; +import type * as openCV from '../../typings/index'; declare type OpenCVType = typeof openCV; function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { diff --git a/src/lib/src/deprecations.ts b/src/lib/src/deprecations.ts index b58807f33..b9a10b94b 100644 --- a/src/lib/src/deprecations.ts +++ b/src/lib/src/deprecations.ts @@ -1,6 +1,6 @@ -import * as assert from 'assert'; -import type * as openCV from '../../..' -import type { Mat } from '../../..'; +import assert from 'assert'; +import type * as openCV from '../../../typings/index' +import type { Mat } from '../../../typings/index'; export default function (cv: typeof openCV) { // deprecate wrapper for the old calcHist API diff --git a/src/lib/src/drawUtils.ts b/src/lib/src/drawUtils.ts index 0f82fd963..c7b42b60f 100644 --- a/src/lib/src/drawUtils.ts +++ b/src/lib/src/drawUtils.ts @@ -1,5 +1,5 @@ -import type * as openCV from '../../..'; -import { Mat, Rect, Vec3 } from '../../..'; +import type * as openCV from '../../../typings/index'; +import { Mat, Rect, Vec3 } from '../../../typings/index'; export interface TextParams { fontType: number; diff --git a/src/lib/src/index.ts b/src/lib/src/index.ts index 892844bab..ab560d970 100644 --- a/src/lib/src/index.ts +++ b/src/lib/src/index.ts @@ -1,9 +1,9 @@ import makeDrawUtils from './drawUtils'; import deprecations from './deprecations'; -import * as OpenCV from '../../..'; +import * as OpenCV from '../../../typings/index'; import misc from './misc'; -export default function(cv: typeof OpenCV) { +export default function extendWithJsSources(cv: typeof OpenCV) { // add functions makeDrawUtils(cv); // add functions diff --git a/src/lib/src/misc.ts b/src/lib/src/misc.ts index a287a8753..9371afe4e 100644 --- a/src/lib/src/misc.ts +++ b/src/lib/src/misc.ts @@ -1,5 +1,5 @@ -import type * as openCV from '../../..'; -import type { Mat, Rect } from '../../..'; +import type * as openCV from '../../../typings/index'; +import type { Mat, Rect } from '../../../typings/index'; export const allTypes = ['CV_8U', 'CV_8S', 'CV_16U', 'CV_16S', 'CV_32S', 'CV_32F', 'CV_64F', 'CV_8UC1', 'CV_8UC2', 'CV_8UC3', 'CV_8UC4', 'CV_8SC1', 'CV_8SC2', 'CV_8SC3', 'CV_8SC4', 'CV_16UC1', 'CV_16UC2', 'CV_16UC3', 'CV_16UC4', 'CV_16SC1', 'CV_16SC2', 'CV_16SC3', 'CV_16SC4', 'CV_32SC1', 'CV_32SC2', 'CV_32SC3', 'CV_32SC4', 'CV_32FC1', 'CV_32FC2', 'CV_32FC3', 'CV_32FC4', 'CV_64FC1', 'CV_64FC2', 'CV_64FC3', 'CV_64FC4'] as const; export type MatTypes = typeof allTypes[number]; diff --git a/test/tests/io/VideoCapture.test.ts b/test/tests/io/VideoCapture.test.ts index 3a23c832f..feea6f7eb 100644 --- a/test/tests/io/VideoCapture.test.ts +++ b/test/tests/io/VideoCapture.test.ts @@ -1,7 +1,7 @@ /* eslint-disable no-bitwise */ import { VideoCapture } from '@u4/opencv4nodejs'; import { expect } from 'chai'; -import * as path from 'path'; +import path from 'path'; import { assertMetaData } from '../../utils/matTestUtils'; import { getTestContext } from '../model'; import toTest from '../toTest'; diff --git a/tsconfig-esm.json b/tsconfig-esm.json index a338bdb66..16895f776 100644 --- a/tsconfig-esm.json +++ b/tsconfig-esm.json @@ -1,10 +1,11 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "module": "ES2020", + "module": "NodeNext", "declaration": false, "declarationMap": false, "outDir": "esm", + "moduleResolution": "nodenext", }, } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 4a2a1ef0c..17cb56825 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,7 +2,7 @@ "compilerOptions": { "target": "ES2019", "strict": false, - "esModuleInterop": false, + "esModuleInterop": true, "noImplicitReturns": true, "skipLibCheck": true, "forceConsistentCasingInFileNames": true, @@ -11,6 +11,5 @@ "outDir": "cjs", "module": "commonjs", }, - //"files": [ "./install/install.ts", "./install/parseEnv.ts" ] "include": [ "src/**/*.ts"] } From df860eca17dc97e23ddffce9be1837727b32deac Mon Sep 17 00:00:00 2001 From: urielch Date: Wed, 17 Apr 2024 16:52:18 +0200 Subject: [PATCH 04/50] update deps --- test/package.json | 2 +- test/pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/test/package.json b/test/package.json index 75d822d58..ab7b6bf3c 100644 --- a/test/package.json +++ b/test/package.json @@ -29,7 +29,7 @@ "devDependencies": { "@types/chai": "^4.3.14", "@types/chai-arrays": "^2.0.3", - "@types/mocha": "^9.1.1", + "@types/mocha": "^10.0.6", "@types/node": "^20.12.7", "chai-arrays": "^2.2.0", "rimraf": "^5.0.5", diff --git a/test/pnpm-lock.yaml b/test/pnpm-lock.yaml index 8caaeb99b..26d770763 100644 --- a/test/pnpm-lock.yaml +++ b/test/pnpm-lock.yaml @@ -26,8 +26,8 @@ devDependencies: specifier: ^2.0.3 version: 2.0.3 '@types/mocha': - specifier: ^9.1.1 - version: 9.1.1 + specifier: ^10.0.6 + version: 10.0.6 '@types/node': specifier: ^20.12.7 version: 20.12.7 @@ -114,8 +114,8 @@ packages: resolution: {integrity: sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==} dev: true - /@types/mocha@9.1.1: - resolution: {integrity: sha512-Z61JK7DKDtdKTWwLeElSEBcWGRLY8g95ic5FoQqI9CMx0ns/Ghep3B4DfcEimiKMvtamNVULVNKEsiwV3aQmXw==} + /@types/mocha@10.0.6: + resolution: {integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==} dev: true /@types/node@20.12.7: From 668c68233437f672a94abbf9b1e2dbe5eb88eb3b Mon Sep 17 00:00:00 2001 From: urielch Date: Wed, 17 Apr 2024 16:56:23 +0200 Subject: [PATCH 05/50] lint --- examples/src/test34d.ts | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/examples/src/test34d.ts b/examples/src/test34d.ts index 8c023805d..9d3710ee3 100644 --- a/examples/src/test34d.ts +++ b/examples/src/test34d.ts @@ -5,7 +5,7 @@ import { cv } from "./utils"; try { console.log(''); console.log('1 Dims'); - const mat1 = new cv.Mat([4, 5, 6] as any, cv.CV_8UC3); + const mat1 = new cv.Mat([4, 5, 6], cv.CV_8UC3); //const mat1 = new cv.Mat([[ // [1, 2, 3.3], // [4, 5, 6], @@ -19,7 +19,7 @@ try { try { console.log(''); console.log('2 Dims'); - const mat2 = new cv.Mat([[4, 5, 6]] as any, cv.CV_32FC3); + const mat2 = new cv.Mat([[4, 5, 6]], cv.CV_32FC3); //const mat1 = new cv.Mat([[ // [1, 2, 3.3], // [4, 5, 6], @@ -34,7 +34,7 @@ try { try { console.log(''); console.log('3 Dims'); - const mat3 = new cv.Mat([[[4, 5, 6]]] as any, cv.CV_32FC3); + const mat3 = new cv.Mat([[[4, 5, 6]]], cv.CV_32FC3); //const mat1 = new cv.Mat([[ // [1, 2, 3.3], // [4, 5, 6], @@ -42,14 +42,13 @@ try { // console.log(mat3.getDataAsArray()); } catch (e) { - + // empty } - try { console.log(''); console.log('4 Dims'); - const mat4 = new cv.Mat([[[[4, 5, 6]]]] as any, cv.CV_32FC3); + const mat4 = new cv.Mat([[[[4, 5, 6]]]], cv.CV_32FC3); //const mat1 = new cv.Mat([[ // [1, 2, 3.3], // [4, 5, 6], @@ -57,5 +56,5 @@ try { // console.log(mat4.getDataAsArray()); } catch (e) { - + // empty } From 57abfeb70b6eb06e86414f8eefcbf57d27764719 Mon Sep 17 00:00:00 2001 From: urielch Date: Wed, 17 Apr 2024 17:04:24 +0200 Subject: [PATCH 06/50] lint code --- .eslintrc | 5 +---- examples/src/utils.ts | 2 +- src/install/compileLib.ts | 2 +- src/lib/promisify.ts | 4 ++-- 4 files changed, 5 insertions(+), 8 deletions(-) diff --git a/.eslintrc b/.eslintrc index e80f35fa6..a7ba1f551 100644 --- a/.eslintrc +++ b/.eslintrc @@ -18,14 +18,11 @@ "linebreak-style": 0, "comma-dangle": ["error", "always-multiline"], "no-plusplus": "off", - "func-names": 0, "import/no-unresolved": 0, "import/extensions": 0, "import/no-extraneous-dependencies": 0, - "no-underscore-dangle": 0, - "no-nested-ternary": 0, "no-async-promise-executor": 0, - "radix": 0 + "radix": 1 // unit tests only // "max-len" : 0, // "no-new" : 0, diff --git a/examples/src/utils.ts b/examples/src/utils.ts index 2885b10c9..e25b5c9bd 100644 --- a/examples/src/utils.ts +++ b/examples/src/utils.ts @@ -40,7 +40,7 @@ export function getCachedFile(localName: string, url: string, opts?: { notice?: complete: '=', incomplete: ' ', renderThrottle: 1, - total: parseInt(totalLength), + total: parseInt(totalLength, 10), }); data.on('data', (chunk: Buffer) => progressBar.tick(chunk.length)); } diff --git a/src/install/compileLib.ts b/src/install/compileLib.ts index 9c172e4fc..e2a33ac45 100644 --- a/src/install/compileLib.ts +++ b/src/install/compileLib.ts @@ -432,7 +432,7 @@ or use OPENCV4NODEJS_* env variable.`) // if (key.startsWith('OPENCV')) // console.log(`export ${key}=${process.env[key]}`); // } - const child = child_process.exec(nodegypCmd, { maxBuffer: Infinity, cwd }, function (error/*, stdout, stderr*/) { + const child = child_process.exec(nodegypCmd, { maxBuffer: Infinity, cwd }, function callNodegypCmd(error/*, stdout, stderr*/) { // fs.unlinkSync(realGyp); const bin = buildOptions.extra.electron ? 'electron-rebuild' : 'node-gyp'; if (error) { diff --git a/src/lib/promisify.ts b/src/lib/promisify.ts index 834d43c72..8dc3aa8b6 100644 --- a/src/lib/promisify.ts +++ b/src/lib/promisify.ts @@ -9,14 +9,14 @@ const isAsyncFn = (fn: (...args: any[]) => any) => { } }; -const promisify = (fn: () => any) => function (...params: any[]) { +const promisify = (fn: () => any) => function toPromise(...params: any[]) { if (isFn(params[params.length - 1])) { return fn.apply(this, params); } return new Promise((resolve, reject) => { const args = Array.prototype.slice.call(params); - args.push(function(err: Error, res: any) { + args.push(function pomisifyed(err: Error, res: any) { if (err) { return reject(err); } From db17b02276bcbeece5632102daff4e1a43810a39 Mon Sep 17 00:00:00 2001 From: urielch Date: Wed, 17 Apr 2024 17:16:15 +0200 Subject: [PATCH 07/50] update export files list --- package.json | 13 ++++--------- src/lib/cvloader.ts | 5 +++-- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/package.json b/package.json index 9c7c5f5ec..1fbca28c3 100644 --- a/package.json +++ b/package.json @@ -90,17 +90,12 @@ }, "files": [ "cc", - "install/*.js", - "install/*.d.ts", - "install/*.map", - "lib/**/*.xml", - "lib/**/*.js", - "lib/**/*.d.ts", - "lib/**/*.map", + "cjs", + "esm", + "src/**/*.xml", "bin/*.js", "typings", "binding.gyp", - "binding_old.gyp", - "tsconfig.json" + "binding_old.gyp" ] } diff --git a/src/lib/cvloader.ts b/src/lib/cvloader.ts index 2e3a4e7e3..2f5bbe8a4 100644 --- a/src/lib/cvloader.ts +++ b/src/lib/cvloader.ts @@ -112,10 +112,11 @@ export function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { // resolve haarcascade files // eslint-disable-next-line @typescript-eslint/no-explicit-any const { haarCascades, lbpCascades } = opencvBuild as any; + const xmlDir = path.join(__dirname, '..', '..', 'src', 'lib'); Object.keys(haarCascades).forEach( - key => opencvBuild[key] = resolvePath(path.join(__dirname, 'haarcascades'), haarCascades[key])); + key => opencvBuild[key] = resolvePath(path.join(xmlDir, 'haarcascades'), haarCascades[key])); Object.keys(lbpCascades).forEach( - key => opencvBuild[key] = resolvePath(path.join(__dirname, 'lbpcascades'), lbpCascades[key])); + key => opencvBuild[key] = resolvePath(path.join(xmlDir, 'lbpcascades'), lbpCascades[key])); return opencvBuild; } From b1f6ef9a1942130c5292c556dec1eda4ceb056e7 Mon Sep 17 00:00:00 2001 From: urielch Date: Thu, 18 Apr 2024 12:37:00 +0200 Subject: [PATCH 08/50] drom nodenext in tsconfig --- tsconfig-esm.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tsconfig-esm.json b/tsconfig-esm.json index 16895f776..de9cb9aa7 100644 --- a/tsconfig-esm.json +++ b/tsconfig-esm.json @@ -1,11 +1,11 @@ { "extends": "./tsconfig.json", "compilerOptions": { - "module": "NodeNext", + "module": "ESNext", "declaration": false, "declarationMap": false, "outDir": "esm", - "moduleResolution": "nodenext", + "moduleResolution": "Node", }, } \ No newline at end of file From e0fb5ca50c9baefd3788a4f27a56048b96f1821f Mon Sep 17 00:00:00 2001 From: urielch Date: Sat, 20 Apr 2024 08:54:28 +0200 Subject: [PATCH 09/50] patch exports --- .gitignore | 1 + package.json | 5 +++-- src/lib/opencv4nodejs.ts | 4 ++-- tsconfig-common.json | 11 +++++++++++ tsconfig-esm.json | 6 +++--- tsconfig.json | 11 +++-------- 6 files changed, 23 insertions(+), 15 deletions(-) create mode 100644 tsconfig-common.json diff --git a/.gitignore b/.gitignore index 3ee4ee8e4..5ebcf71ac 100644 --- a/.gitignore +++ b/.gitignore @@ -59,3 +59,4 @@ cjs/install/ cjs/lib/ esm/install/ esm/lib/ +types/ diff --git a/package.json b/package.json index 1fbca28c3..eb2d79753 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@u4/opencv4nodejs", - "version": "7.0.0-alpha-2", + "version": "7.0.0-alpha-4", "description": "Asynchronous OpenCV 3.x / 4.x nodejs bindings with JavaScript and TypeScript API.", "keywords": [ "opencv", @@ -60,7 +60,8 @@ "lint": "eslint examples/**/*.ts src/**/*.ts typings/**/*.ts ", "clean": "node-gyp clean", "cleanjs": "rimraf {examples}/**/*.{d.ts,js,map} {cjs,esm}/{lib,install}", - "build-debug": "npm run build && BINDINGS_DEBUG=true node bin/install.js rebuild" + "build-debug": "npm run build && BINDINGS_DEBUG=true node bin/install.js rebuild", + "publish-next": "npm publish --dry-run --tag next" }, "dependencies": { "@u4/opencv-build": "^0.9.1", diff --git a/src/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts index 886c2699f..68bed3d92 100644 --- a/src/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -3,6 +3,8 @@ import promisify from './promisify'; import extendWithJsSources from './src/index'; import { getOpenCV } from './cvloader'; import type * as openCV from '../../typings/index'; +export type * as openCV from '../../typings/index'; + declare type OpenCVType = typeof openCV; function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { @@ -31,7 +33,5 @@ for (const key in cv) { } defExport['cv'] = cv; -// export cv; export default defExport; -//export = defExport; diff --git a/tsconfig-common.json b/tsconfig-common.json new file mode 100644 index 000000000..4511ee4e8 --- /dev/null +++ b/tsconfig-common.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "ES2019", + "strict": false, + "esModuleInterop": true, + "noImplicitReturns": true, + "skipLibCheck": true, + "forceConsistentCasingInFileNames": true, + }, + "include": [ "src/**/*.ts"] +} diff --git a/tsconfig-esm.json b/tsconfig-esm.json index de9cb9aa7..12347369c 100644 --- a/tsconfig-esm.json +++ b/tsconfig-esm.json @@ -1,11 +1,11 @@ { - "extends": "./tsconfig.json", + "extends": "./tsconfig-common.json", "compilerOptions": { - "module": "ESNext", + "module": "Node16", "declaration": false, "declarationMap": false, "outDir": "esm", - "moduleResolution": "Node", + "moduleResolution": "Node16", }, } \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json index 17cb56825..a8e4f6b18 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,15 +1,10 @@ { + "extends": "./tsconfig-common.json", "compilerOptions": { - "target": "ES2019", - "strict": false, - "esModuleInterop": true, - "noImplicitReturns": true, - "skipLibCheck": true, - "forceConsistentCasingInFileNames": true, + "module": "commonjs", "declaration": true, "declarationMap": true, + "declarationDir": "types", "outDir": "cjs", - "module": "commonjs", }, - "include": [ "src/**/*.ts"] } From 2ce2c6abe2a305ba00087c1e75a37aa4f9654914 Mon Sep 17 00:00:00 2001 From: urielch Date: Fri, 26 Apr 2024 16:31:22 +0200 Subject: [PATCH 10/50] use next @u4/opencv-build --- .gitignore | 1 + package.json | 5 +- pnpm-lock.yaml | 67 ++--- src/install/compileLib.d.ts | 2 - src/install/compileLib.d.ts.map | 1 - src/install/compileLib.js | 422 -------------------------------- src/install/compileLib.ts | 33 ++- src/install/parseEnv.d.ts | 3 - src/install/parseEnv.d.ts.map | 1 - src/install/parseEnv.js | 6 - src/lib/cvloader.ts | 7 +- src/lib/opencv4nodejs.ts | 5 +- src/lib/promisify.ts | 9 +- tsconfig-esm.json | 5 +- tsconfig.json | 1 + 15 files changed, 52 insertions(+), 516 deletions(-) delete mode 100644 src/install/compileLib.d.ts delete mode 100644 src/install/compileLib.d.ts.map delete mode 100644 src/install/compileLib.js delete mode 100644 src/install/parseEnv.d.ts delete mode 100644 src/install/parseEnv.d.ts.map delete mode 100644 src/install/parseEnv.js diff --git a/.gitignore b/.gitignore index 5ebcf71ac..70cec33ea 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,4 @@ cjs/lib/ esm/install/ esm/lib/ types/ +u4-opencv4nodejs-*.tgz diff --git a/package.json b/package.json index eb2d79753..550398ebc 100644 --- a/package.json +++ b/package.json @@ -61,19 +61,18 @@ "clean": "node-gyp clean", "cleanjs": "rimraf {examples}/**/*.{d.ts,js,map} {cjs,esm}/{lib,install}", "build-debug": "npm run build && BINDINGS_DEBUG=true node bin/install.js rebuild", + "checkExports": "npx @arethetypeswrong/cli $(npm pack)", "publish-next": "npm publish --dry-run --tag next" }, "dependencies": { - "@u4/opencv-build": "^0.9.1", + "@u4/opencv-build": "1.0.0-alpha2", "glob": "^10.3.12", "nan": "^2.19.0", "node-gyp": "^10.1.0", - "npmlog": "^7.0.1", "picocolors": "^1.0.0" }, "devDependencies": { "@types/node": "^20.12.7", - "@types/npmlog": "^7.0.0", "@types/progress": "^2.0.7", "@typescript-eslint/eslint-plugin": "^7.7.0", "@typescript-eslint/parser": "^7.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a41493a5c..7fc5972a0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@u4/opencv-build': - specifier: ^0.9.1 - version: 0.9.1 + specifier: 1.0.0-alpha2 + version: 1.0.0-alpha2 glob: specifier: ^10.3.12 version: 10.3.12 @@ -17,9 +17,6 @@ dependencies: node-gyp: specifier: ^10.1.0 version: 10.1.0 - npmlog: - specifier: ^7.0.1 - version: 7.0.1 picocolors: specifier: ^1.0.0 version: 1.0.0 @@ -28,9 +25,6 @@ devDependencies: '@types/node': specifier: ^20.12.7 version: 20.12.7 - '@types/npmlog': - specifier: ^7.0.0 - version: 7.0.0 '@types/progress': specifier: ^2.0.7 version: 2.0.7 @@ -88,6 +82,17 @@ packages: regenerator-runtime: 0.14.1 dev: true + /@deno/shim-deno-test@0.5.0: + resolution: {integrity: sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==} + dev: false + + /@deno/shim-deno@0.19.1: + resolution: {integrity: sha512-8hYIpmDqpG76sn+UY1853RCi+CI7ZWz9tt37nfyDL8rwr6xbW0+GHUwCLcsGbh1uMIKURuJy6xtrIcnW+a0duA==} + dependencies: + '@deno/shim-deno-test': 0.5.0 + which: 4.0.0 + dev: false + /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -217,12 +222,6 @@ packages: undici-types: 5.26.5 dev: true - /@types/npmlog@7.0.0: - resolution: {integrity: sha512-hJWbrKFvxKyWwSUXjZMYTINsSOY6IclhvGOZ97M8ac2tmR9hMwmTnYaMdpGhvju9ctWLTPhCS+eLfQNluiEjQQ==} - dependencies: - '@types/node': 20.12.7 - dev: true - /@types/progress@2.0.7: resolution: {integrity: sha512-iadjw02vte8qWx7U0YM++EybBha2CQLPGu9iJ97whVgJUT5Zq9MjAPYUnbfRI2Kpehimf1QjFJYxD0t8nqzu5w==} dependencies: @@ -365,14 +364,14 @@ packages: eslint-visitor-keys: 3.4.3 dev: true - /@u4/opencv-build@0.9.1: - resolution: {integrity: sha512-28SOPrP6y47CWexaOe1ALuygByPaqrnz5Lkwhn7yHak7IlXWC9bnG5mwvx6G/xR+WjFUjmegjGIGPJGT1VVgzg==} + /@u4/opencv-build@1.0.0-alpha2: + resolution: {integrity: sha512-GhLSQZvui/xK8AtztUKd/wq6o0P2e0/NoqC6k6yFBbhd/0Pzi6rQaQ3877ioB7/KLd4x6JXrcaOBdYc6b0GzPA==} hasBin: true dependencies: + '@deno/shim-deno': 0.19.1 glob: 10.3.12 npmlog: 7.0.1 - picocolors: 1.0.0 - rimraf: 4.4.1 + rimraf: 5.0.5 dev: false /@ungap/structured-clone@1.2.0: @@ -1353,6 +1352,7 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + dev: true /function-bind@1.1.2: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} @@ -1442,16 +1442,6 @@ packages: path-is-absolute: 1.0.1 dev: true - /glob@9.3.5: - resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - fs.realpath: 1.0.0 - minimatch: 8.0.4 - minipass: 4.2.8 - path-scurry: 1.10.2 - dev: false - /globals@13.24.0: resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} engines: {node: '>=8'} @@ -1969,13 +1959,6 @@ packages: brace-expansion: 1.1.11 dev: true - /minimatch@8.0.4: - resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==} - engines: {node: '>=16 || 14 >=14.17'} - dependencies: - brace-expansion: 2.0.1 - dev: false - /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} engines: {node: '>=16 || 14 >=14.17'} @@ -2032,11 +2015,6 @@ packages: yallist: 4.0.0 dev: false - /minipass@4.2.8: - resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} - engines: {node: '>=8'} - dev: false - /minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} @@ -2392,21 +2370,12 @@ packages: glob: 7.2.3 dev: true - /rimraf@4.4.1: - resolution: {integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==} - engines: {node: '>=14'} - hasBin: true - dependencies: - glob: 9.3.5 - dev: false - /rimraf@5.0.5: resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} engines: {node: '>=14'} hasBin: true dependencies: glob: 10.3.12 - dev: true /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} diff --git a/src/install/compileLib.d.ts b/src/install/compileLib.d.ts deleted file mode 100644 index 55caff5ec..000000000 --- a/src/install/compileLib.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -export declare function compileLib(args: string[]): Promise; -//# sourceMappingURL=compileLib.d.ts.map \ No newline at end of file diff --git a/src/install/compileLib.d.ts.map b/src/install/compileLib.d.ts.map deleted file mode 100644 index 9fdaedb10..000000000 --- a/src/install/compileLib.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"compileLib.d.ts","sourceRoot":"","sources":["compileLib.ts"],"names":[],"mappings":"AAuKA,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,iBAuR9C"} \ No newline at end of file diff --git a/src/install/compileLib.js b/src/install/compileLib.js deleted file mode 100644 index 76ecd9b00..000000000 --- a/src/install/compileLib.js +++ /dev/null @@ -1,422 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.compileLib = void 0; -const opencv_build_1 = require("@u4/opencv-build"); -const child_process = require("child_process"); -const fs = require("fs"); -const npmlog = require("npmlog"); -const commons_js_1 = require("../lib/commons.js"); -const pc = require("picocolors"); -const path = require("path"); -const os_1 = require("os"); -const glob_1 = require("glob"); -const cvloader_js_1 = require("../lib/cvloader.js"); -const defaultDir = '/usr/local'; -const defaultLibDir = `${defaultDir}/lib`; -const defaultIncludeDir = `${defaultDir}/include`; -const defaultIncludeDirOpenCV4 = `${defaultIncludeDir}/opencv4`; -let silenceMode = false; -function log(level, prefix, message, ...args) { - if (!opencv_build_1.OpenCVBuildEnv.silence) - npmlog.log(level, prefix, message, ...args); -} -function toBool(value) { - if (!value) - return false; - if (typeof value === "boolean") - return value; - if (typeof value === "number") - return value !== 0; - if (value === '0' || value === 'false' || value === 'off' || value.startsWith('disa')) - return false; - return true; -} -/** - * @returns global system include paths - */ -function getDefaultIncludeDirs(env) { - log('info', 'install', 'OPENCV_INCLUDE_DIR is not set, looking for default include dir'); - if (env.isWin) { - throw new Error('OPENCV_INCLUDE_DIR has to be defined on windows when auto build is disabled'); - } - return [defaultIncludeDir, defaultIncludeDirOpenCV4]; -} -/** - * @returns return a path like /usr/local/lib - */ -function getDefaultLibDir(env) { - log('info', 'install', 'OPENCV_LIB_DIR is not set, looking for default lib dir'); - if (env.isWin) { - throw new Error('OPENCV_LIB_DIR has to be defined on windows when auto build is disabled'); - } - return defaultLibDir; -} -/** - * @returns a built lib directory - */ -function getLibDir(env) { - if (env.isAutoBuildDisabled) { - return (0, commons_js_1.resolvePath)(process.env.OPENCV_LIB_DIR) || getDefaultLibDir(env); - } - else { - const dir = (0, commons_js_1.resolvePath)(env.opencvLibDir); - if (!dir) { - throw Error('failed to resolve opencvLibDir path'); - } - return dir; - } -} -/** - * convert lib list to existing parameter for the linker - * @param env - * @param libDir - * @param libsFoundInDir - * @returns - */ -function getOPENCV4NODEJS_LIBRARIES(env, libDir, libsFoundInDir) { - const libs = env.isWin - ? libsFoundInDir.map(lib => (0, commons_js_1.resolvePath)(lib.libPath)) - // dynamically link libs if not on windows - : ['-L' + libDir] - .concat(libsFoundInDir.map(lib => '-lopencv_' + lib.opencvModule)) - .concat('-Wl,-rpath,' + libDir); - if (libs.length > 0) { - const dir = path.dirname(libs[0]); - const names = libs.map(lib => path.basename(lib)); - log('info', 'libs', `${os_1.EOL}Setting lib from ${pc.green(dir)} : ${names.map(pc.yellow).join(', ')}`); - } - else { - log('info', 'libs', `${os_1.EOL}no Libs available`); - } - return libs; -} -/** - * generate all C++ Defines and debug them nicely on screen - * @param libsFoundInDir selected modules - * @returns list of defines - */ -function getOPENCV4NODEJS_DEFINES(libsFoundInDir) { - const defines = libsFoundInDir - .map(lib => `OPENCV4NODEJS_FOUND_LIBRARY_${lib.opencvModule.toUpperCase()}`); - log('info', 'defines', `${os_1.EOL}Setting the following defines:`); - const longest = Math.max(...defines.map(a => a.length)); - let next = ''; - for (const define of defines) { - if (next.length > 80) { - log('info', 'defines', pc.yellow(next)); - next = ''; - } - next += define.padEnd(longest + 1, ' '); - } - if (next) - log('info', 'defines', pc.yellow(next)); - return defines; -} -/** - * generate C++ Includes - * @param env context - * @returns list of directory to include for C++ compiler - */ -function getOPENCV4NODEJS_INCLUDES(env) { - const { OPENCV_INCLUDE_DIR } = process.env; - let explicitIncludeDir = ''; - if (OPENCV_INCLUDE_DIR) { - explicitIncludeDir = (0, commons_js_1.resolvePath)(OPENCV_INCLUDE_DIR); - } - let includes = []; - if (env.isAutoBuildDisabled) { - if (explicitIncludeDir) { - if (explicitIncludeDir.endsWith('opencv4')) { - includes = [explicitIncludeDir, path.resolve(explicitIncludeDir, '..')]; - } - else { - includes = [explicitIncludeDir, path.resolve(explicitIncludeDir, 'opencv4')]; - } - } - else { - includes = getDefaultIncludeDirs(env); - } - } - else { - includes = [(0, commons_js_1.resolvePath)(env.opencvInclude), (0, commons_js_1.resolvePath)(env.opencv4Include)]; - } - log('info', 'install', `${os_1.EOL}Setting the following includes:`); - includes.forEach(inc => log('info', 'includes', pc.green(inc))); - return includes; -} -function getExistingNodeModulesBin(dir, name) { - const binPath = path.join(dir, 'node_modules', '.bin', name); - if (fs.existsSync(binPath)) { - return binPath; - } - return ''; -} -function getExistingBin(dir, name) { - const binPath = path.join(dir, name); - if (fs.existsSync(binPath)) { - return binPath; - } - return ''; -} -async function compileLib(args) { - let builder = null; - let dryRun = false; - let JOBS = 'max'; - const validAction = ['build', 'clean', 'configure', 'rebuild', 'install', 'list', 'remove', 'auto', "OPENCV4NODEJS_DEFINES", "OPENCV4NODEJS_INCLUDES", "OPENCV4NODEJS_LIBRARIES"]; - const actionOriginal = args[args.length - 1]; - if (args.includes('--help') || args.includes('-h') || !validAction.includes(actionOriginal)) { - console.log(`Usage: build-opencv build|rebuild|configure|install [--version=] [--vscode] [--jobs=] [--electron] [--node-gyp-options=] [--dry-run] [--flags=] [--cuda] [--cudaArch=] [--nocontrib] [--nobuild] ${validAction.join('|')}`); - console.log((0, opencv_build_1.genHelp)()); - return; - } - const buildOptions = (0, opencv_build_1.args2Option)(args); - if (actionOriginal === 'list') { - const buildDir = opencv_build_1.OpenCVBuildEnv.getBuildDir(buildOptions); - const builds = opencv_build_1.OpenCVBuildEnv.listBuild(buildDir); - if (!builds.length) { - console.log(`${pc.red('NO Build available on your system in')} ${pc.green(buildDir)}`); - } - else { - console.log(`${pc.green(builds.length.toString())} Build avilible on your system in ${pc.green(buildDir)}`); - } - for (const build of builds) { - const { dir, date, buildInfo } = build; - let line = ` - build ${pc.green(dir)} build on ${pc.red(date.toISOString())}`; - if (buildInfo.env.buildWithCuda) { - line += ` [${pc.green('CUDA')}]`; - } - if (buildInfo.env.cudaArch) { - line += ` ${pc.green('cuda_arch:' + buildInfo.env.cudaArch)}`; - } - console.log(line); - } - return; - } - if (actionOriginal.startsWith('OPENCV4NODEJS_')) { - silenceMode = true; - opencv_build_1.OpenCVBuildEnv.silence = true; - } - const env = process.env; - const npmEnv = opencv_build_1.OpenCVBuildEnv.readEnvsFromPackageJson() || {}; - let action = actionOriginal; - if (actionOriginal === 'auto') { - try { - const openCV = (0, cvloader_js_1.getOpenCV)({ prebuild: 'latestBuild' }); - const version = openCV.version; - const txt = `${version.major}.${version.minor}.${version.revision}`; - console.log(`${pc.yellow(txt)} already ready no build needed.`); - return; - } - catch (_e) { - // console.log(_e); - // no build available - } - if (toBool(env.OPENCV4NODEJS_DISABLE_AUTOBUILD)) { - action = 'rebuild'; - } - if (env.OPENCV4NODEJS_AUTOBUILD_OPENCV_VERSION) { - action = 'rebuild'; - } - if (Object.keys(npmEnv).length) { - action = 'rebuild'; - } - } - if (buildOptions.extra.jobs) { - JOBS = buildOptions.extra.jobs; - } - if (buildOptions.disableAutoBuild || toBool(env.OPENCV4NODEJS_DISABLE_AUTOBUILD) || npmEnv.disableAutoBuild) { - const summery = opencv_build_1.OpenCVBuildEnv.autoLocatePrebuild(); - if (!silenceMode) { - log('info', 'envAutodetect', `autodetect ${pc.green('%d')} changes`, summery.changes); - for (const txt of summery.summery) { - log('info', 'envAutodetect', `- ${pc.yellow('%s')}`, txt); - } - } - } - if (buildOptions.extra['dry-run'] || buildOptions.extra['dryrun']) { - dryRun = true; - } - if (!silenceMode) { - for (const K in ['autoBuildFlags']) { - if (buildOptions[K]) - console.log(`using ${K}:`, buildOptions[K]); - } - } - try { - builder = new opencv_build_1.OpenCVBuilder({ ...buildOptions, prebuild: 'latestBuild' }); - } - catch (_e) { - // ignore - } - if (action === 'auto' && builder) - action = 'rebuild'; - if (action === 'auto' && !builder) { - console.log(`Use 'npx build-opencv rebuild' script to start node-gyp, use --help to check all options. -or configure configure a opencv4nodejs section in your package.json -or use OPENCV4NODEJS_* env variable.`); - return; - } - if (!builder) { - builder = new opencv_build_1.OpenCVBuilder(buildOptions); - } - if (!silenceMode) { - log('info', 'install', `Using openCV ${pc.green('%s')}`, builder.env.opencvVersion); - } - /** - * prepare environment variable - */ - const libDir = getLibDir(builder.env); - if (!silenceMode) { - log('info', 'install', `Using lib dir: ${pc.green('%s')}`, libDir); - } - //if (!fs.existsSync(libDir)) - await builder.install(); - if (!fs.existsSync(libDir)) { - throw new Error(`library dir does not exist: ${pc.green(libDir)}'`); - } - // get module list from auto-build.json - const libsInDir = builder.getLibs.getLibs(); - const libsFoundInDir = libsInDir.filter(lib => lib.libPath); - if (!libsFoundInDir.length) { - throw new Error(`no OpenCV libraries found in lib dir: ${pc.green(libDir)}`); - } - log('info', 'install', `${os_1.EOL}Found the following libs:`); - libsFoundInDir.forEach(lib => log('info', 'install', `${pc.yellow('%s')}: ${pc.green('%s')}`, lib.opencvModule, lib.libPath)); - const OPENCV4NODEJS_DEFINES = getOPENCV4NODEJS_DEFINES(libsFoundInDir).join(';'); - const OPENCV4NODEJS_INCLUDES = getOPENCV4NODEJS_INCLUDES(builder.env).join(';'); - const OPENCV4NODEJS_LIBRARIES = getOPENCV4NODEJS_LIBRARIES(builder.env, libDir, libsFoundInDir).join(';'); - process.env['OPENCV4NODEJS_DEFINES'] = OPENCV4NODEJS_DEFINES; - process.env['OPENCV4NODEJS_INCLUDES'] = OPENCV4NODEJS_INCLUDES; - process.env['OPENCV4NODEJS_LIBRARIES'] = OPENCV4NODEJS_LIBRARIES; - if (silenceMode) { - const outputs = process.env[actionOriginal].split(/[\n;]/); - outputs.forEach(o => console.log(o)); - return; - } - // see https://github.com/nodejs/node-gyp#command-options for all flags - let flags = ' -f binding_old.gyp'; - // process.env.JOBS=JOBS; - flags += ` --jobs ${JOBS}`; - // --target not mapped - // --silly, --loglevel=silly Log all progress to console - // --verbose, --loglevel=verbose Log most progress to console - // --silent, --loglevel=silent Don't log anything to console - if (process.env.BINDINGS_DEBUG || buildOptions.extra['debug']) - flags += ' --debug'; - else - flags += ' --release'; - // --thin=yes - const cwd = path.join(__dirname, '..'); - // const arch = 'x86_64' / 'x64' - // flags += --arch=${arch} --target_arch=${arch} - const cmdOptions = buildOptions.extra['node-gyp-options'] || ''; - flags += ` ${cmdOptions}`; - const nodegyp = buildOptions.extra.electron ? 'electron-rebuild' : 'node-gyp'; - let nodegypCmd = ''; - for (const dir of process.env.PATH.split(path.delimiter)) { - nodegypCmd = getExistingBin(dir, nodegyp); - if (nodegypCmd) { - // no need to use full path - nodegypCmd = nodegyp; - break; - } - } - if (!nodegypCmd) { - for (const startDir in [__dirname, process.cwd()]) { - let dir = startDir; - while (dir) { - nodegypCmd = getExistingNodeModulesBin(dir, nodegyp); - if (nodegypCmd) - break; - const next = path.resolve(dir, '..'); - if (next === dir) { - break; - } - dir = next; - } - if (nodegypCmd) - break; - } - } - if (!nodegypCmd) { - const msg = `Please install "${nodegyp}" to build openCV bindings${os_1.EOL}npm install --save-dev ${nodegyp}`; - throw Error(msg); - } - // flags starts with ' ' - nodegypCmd += ` ${action}${flags}`; - log('info', 'install', `Spawning in directory:${cwd} node-gyp process: ${nodegypCmd}`); - if (buildOptions.extra.vscode) { - // const nan = require('nan'); - // const nativeNodeUtils = require('native-node-utils'); - // const pblob = promisify(blob) - const openCvModuleInclude = (0, glob_1.globSync)(path.join(builder.env.opencvSrc, 'modules', '*', 'include').replace(/\\/g, '/')); - const openCvContribModuleInclude = (0, glob_1.globSync)(path.join(builder.env.opencvContribSrc, 'modules', '*', 'include').replace(/\\/g, '/')); - const cvVersion = builder.env.opencvVersion.split('.'); - const config = { - "name": "opencv4nodejs", - "includePath": [ - // 'Missing node-gyp/Cache/16.13.1/include/node', - ...OPENCV4NODEJS_INCLUDES, - '${workspaceFolder}/node_modules/nan', - '${workspaceFolder}/node_modules/native-node-utils/src', - '${workspaceFolder}/cc', - '${workspaceFolder}/cc/core', - ...openCvModuleInclude, - ...openCvContribModuleInclude, - ], - "defines": [ - `CV_VERSION_MAJOR=${cvVersion[0]}`, - `CV_VERSION_MINOR=${cvVersion[1]}`, - `CV_VERSION_REVISION=${cvVersion[2]}`, - ...OPENCV4NODEJS_DEFINES - ], - "cStandard": "c17", - "cppStandard": "c++17", - // "compilerArgs": [ "-std=c++11" ] - }; - if (process.platform === 'win32') { - config.defines.push('WIN'); - config.defines.push('_HAS_EXCEPTIONS=1'); - } - console.log(JSON.stringify(config, null, ' ')); - } - else if (dryRun) { - let setEnv = 'export '; - if (process.platform === 'win32') { - setEnv = '$Env:'; - } - console.log(''); - console.log(`${setEnv}OPENCV4NODEJS_DEFINES="${OPENCV4NODEJS_DEFINES}"`); - console.log(`${setEnv}OPENCV4NODEJS_INCLUDES="${OPENCV4NODEJS_INCLUDES}"`); - console.log(`${setEnv}OPENCV4NODEJS_LIBRARIES="${OPENCV4NODEJS_LIBRARIES}"`); - console.log(''); - if (cwd.includes(' ')) - console.log(`cd "${cwd}"`); - else - console.log(`cd ${cwd}`); - console.log(nodegypCmd); - console.log(''); - } - else { - // for (const key in process.env) { - // if (key.startsWith('OPENCV')) - // console.log(`export ${key}=${process.env[key]}`); - // } - const child = child_process.exec(nodegypCmd, { maxBuffer: Infinity, cwd }, function (error /*, stdout, stderr*/) { - // fs.unlinkSync(realGyp); - const bin = buildOptions.extra.electron ? 'electron-rebuild' : 'node-gyp'; - if (error) { - console.log(`error: `, error); - log('error', 'install', `${bin} failed and return ${error.name} ${error.message} return code: ${error.code}`); - } - else { - log('info', 'install', `${bin} complete successfully`); - } - }); - if (child.stdout) - child.stdout.pipe(process.stdout); - if (child.stderr) - child.stderr.pipe(process.stderr); - } -} -exports.compileLib = compileLib; diff --git a/src/install/compileLib.ts b/src/install/compileLib.ts index e2a33ac45..23c61ace6 100644 --- a/src/install/compileLib.ts +++ b/src/install/compileLib.ts @@ -1,9 +1,8 @@ -import type { OpencvModule, OpenCVBuildEnvParams } from '@u4/opencv-build'; +import { Log, Platfrm, StaticTools } from '@u4/opencv-build'; +import type { OpencvModule, OpenCVBuildEnvParams, LogLevels } from '@u4/opencv-build'; import { OpenCVBuilder, OpenCVBuildEnv, args2Option, genHelp } from '@u4/opencv-build'; import child_process from 'child_process'; import fs from 'fs'; -import npmlog from 'npmlog'; -import { LogLevels } from 'npmlog'; import { resolvePath } from '../lib/commons'; import pc from 'picocolors'; import path from 'path'; @@ -19,8 +18,8 @@ const defaultIncludeDirOpenCV4 = `${defaultIncludeDir}/opencv4`; let silenceMode = false; function log(level: LogLevels | string, prefix: string, message: string, ...args: unknown[]): void { - if (!OpenCVBuildEnv.silence) - npmlog.log(level, prefix, message, ...args); + if (!Log.silence) + Log.log(level, prefix, message, ...args); } function toBool(value?: string | boolean | number | null) { @@ -38,9 +37,9 @@ function toBool(value?: string | boolean | number | null) { /** * @returns global system include paths */ -function getDefaultIncludeDirs(env: OpenCVBuildEnv) { +function getDefaultIncludeDirs(/*env: OpenCVBuildEnv*/) { log('info', 'install', 'OPENCV_INCLUDE_DIR is not set, looking for default include dir') - if (env.isWin) { + if (Platfrm.isWindows) { throw new Error('OPENCV_INCLUDE_DIR has to be defined on windows when auto build is disabled') } return [defaultIncludeDir, defaultIncludeDirOpenCV4] @@ -49,9 +48,9 @@ function getDefaultIncludeDirs(env: OpenCVBuildEnv) { /** * @returns return a path like /usr/local/lib */ -function getDefaultLibDir(env: OpenCVBuildEnv) { +function getDefaultLibDir(/*env: OpenCVBuildEnv*/) { log('info', 'install', 'OPENCV_LIB_DIR is not set, looking for default lib dir') - if (env.isWin) { + if (Platfrm.isWindows) { throw new Error('OPENCV_LIB_DIR has to be defined on windows when auto build is disabled') } return defaultLibDir @@ -62,7 +61,7 @@ function getDefaultLibDir(env: OpenCVBuildEnv) { */ function getLibDir(env: OpenCVBuildEnv): string { if (env.isAutoBuildDisabled) { - return resolvePath(process.env.OPENCV_LIB_DIR) || getDefaultLibDir(env); + return resolvePath(process.env.OPENCV_LIB_DIR) || getDefaultLibDir(); } else { const dir = resolvePath(env.opencvLibDir); if (!dir) { @@ -80,7 +79,7 @@ function getLibDir(env: OpenCVBuildEnv): string { * @returns */ function getOPENCV4NODEJS_LIBRARIES(env: OpenCVBuildEnv, libDir: string, libsFoundInDir: OpencvModule[]): string[] { - const libs = env.isWin + const libs = Platfrm.isWindows ? libsFoundInDir.map(lib => resolvePath(lib.libPath)) // dynamically link libs if not on windows : ['-L' + libDir] @@ -140,7 +139,7 @@ function getOPENCV4NODEJS_INCLUDES(env: OpenCVBuildEnv): string[] { includes = [explicitIncludeDir, path.resolve(explicitIncludeDir, 'opencv4')]; } } else { - includes = getDefaultIncludeDirs(env); + includes = getDefaultIncludeDirs(); } } else { includes = [resolvePath(env.opencvInclude), resolvePath(env.opencv4Include)]; @@ -180,8 +179,8 @@ export async function compileLib(args: string[]) { const buildOptions: OpenCVBuildEnvParams = args2Option(args) if (actionOriginal === 'list') { - const buildDir = OpenCVBuildEnv.getBuildDir(buildOptions); - const builds = OpenCVBuildEnv.listBuild(buildDir); + const buildDir = StaticTools.getBuildDir(buildOptions); + const builds = StaticTools.listBuild(buildDir); if (!builds.length) { console.log(`${pc.red('NO Build available on your system in')} ${pc.green(buildDir)}`); } else { @@ -203,11 +202,11 @@ export async function compileLib(args: string[]) { if (actionOriginal.startsWith('OPENCV4NODEJS_')) { silenceMode = true; - OpenCVBuildEnv.silence = true; + Log.silence = true; } const env = process.env; - const npmEnv = OpenCVBuildEnv.readEnvsFromPackageJson() || {}; + const npmEnv = StaticTools.readEnvsFromPackageJson() || {}; let action = actionOriginal; if (actionOriginal === 'auto') { try { @@ -237,7 +236,7 @@ export async function compileLib(args: string[]) { } if (buildOptions.disableAutoBuild || toBool(env.OPENCV4NODEJS_DISABLE_AUTOBUILD) || npmEnv.disableAutoBuild) { - const summery = OpenCVBuildEnv.autoLocatePrebuild(); + const summery = StaticTools.autoLocatePrebuild(); if (!silenceMode) { log('info', 'envAutodetect', `autodetect ${pc.green('%d')} changes`, summery.changes) for (const txt of summery.summery) { diff --git a/src/install/parseEnv.d.ts b/src/install/parseEnv.d.ts deleted file mode 100644 index 844f8b7f5..000000000 --- a/src/install/parseEnv.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare const envName: string; -declare const outputs: string[]; -//# sourceMappingURL=parseEnv.d.ts.map \ No newline at end of file diff --git a/src/install/parseEnv.d.ts.map b/src/install/parseEnv.d.ts.map deleted file mode 100644 index 1def473da..000000000 --- a/src/install/parseEnv.d.ts.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"parseEnv.d.ts","sourceRoot":"","sources":["parseEnv.ts"],"names":[],"mappings":"AAAA,QAAA,MAAM,OAAO,QAAkB,CAAA;AAK/B,QAAA,MAAM,OAAO,UAA8C,CAAA"} \ No newline at end of file diff --git a/src/install/parseEnv.js b/src/install/parseEnv.js deleted file mode 100644 index c91e3da9d..000000000 --- a/src/install/parseEnv.js +++ /dev/null @@ -1,6 +0,0 @@ -const envName = process.argv[2]; -if (!envName) { - throw new Error('no env name passed to parseEnv'); -} -const outputs = (process.env[envName] || '').split(/[\n;]/); -outputs.forEach(o => console.log(o)); diff --git a/src/lib/cvloader.ts b/src/lib/cvloader.ts index 2f5bbe8a4..1b03423cd 100644 --- a/src/lib/cvloader.ts +++ b/src/lib/cvloader.ts @@ -1,13 +1,12 @@ -import { OpenCVBuilder, type OpenCVBuildEnvParams } from '@u4/opencv-build'; +import { pc, Log, OpenCVBuilder, type OpenCVBuildEnvParams } from '@u4/opencv-build'; import fs from 'fs'; import path from 'path'; import { isElectronWebpack, resolvePath } from './commons'; -import pc from 'picocolors' -import { info } from 'npmlog'; import type * as openCV from '../../typings/index'; + declare type OpenCVType = typeof openCV; -const logDebug = process.env.OPENCV4NODES_DEBUG_REQUIRE ? info : () => { /* ignore */ } +const logDebug = process.env.OPENCV4NODES_DEBUG_REQUIRE ? (prefix: string, message: string, ...args: unknown[]) => Log.log('info', prefix, message, ...args) : () => { /* ignore */ } function tryGetOpencvBinDir(builder: OpenCVBuilder) { if (process.env.OPENCV_BIN_DIR) { diff --git a/src/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts index 68bed3d92..0137aee97 100644 --- a/src/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/no-explicit-any */ import { type OpenCVBuildEnvParams } from '@u4/opencv-build'; import promisify from './promisify'; import extendWithJsSources from './src/index'; @@ -26,10 +27,10 @@ function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { } export const cv = loadOpenCV({ prebuild: 'latestBuild' }); -const defExport = { cv }; +const defExport: { [key: string]: any } = { cv }; // duplicate all export for retro-compatibility for (const key in cv) { - defExport[key] = cv[key]; + defExport[key] = (cv)[key]; } defExport['cv'] = cv; diff --git a/src/lib/promisify.ts b/src/lib/promisify.ts index 8dc3aa8b6..c5e420712 100644 --- a/src/lib/promisify.ts +++ b/src/lib/promisify.ts @@ -9,9 +9,9 @@ const isAsyncFn = (fn: (...args: any[]) => any) => { } }; -const promisify = (fn: () => any) => function toPromise(...params: any[]) { +const promisify = (fn: (...args: any[]) => any) => function toPromise(this: any, ...params: any[]) { if (isFn(params[params.length - 1])) { - return fn.apply(this, params); + return fn.apply(this, params as Parameters); } return new Promise((resolve, reject) => { @@ -27,7 +27,7 @@ const promisify = (fn: () => any) => function toPromise(...params: any[]) { }); }; -export default (cv: T): T => { +export default (cv: T): T => { const fns = Object.keys(cv).filter(k => isFn(cv[k])).map(k => cv[k]); const asyncFuncs = fns.filter(isAsyncFn); const clazzes = fns.filter(fn => fn.prototype && !!Object.keys(fn.prototype).length); @@ -38,7 +38,8 @@ export default (cv: T): T => { }); asyncFuncs.forEach((fn) => { - cv[fn.prototype.constructor.name] = promisify(fn); + const {name} = fn.prototype.constructor; + (cv as any)[name] = promisify(fn); }); return cv; diff --git a/tsconfig-esm.json b/tsconfig-esm.json index 12347369c..7b60b8341 100644 --- a/tsconfig-esm.json +++ b/tsconfig-esm.json @@ -2,8 +2,9 @@ "extends": "./tsconfig-common.json", "compilerOptions": { "module": "Node16", - "declaration": false, - "declarationMap": false, + // "declaration": false, + // "declarationMap": false, + // "declarationDir": "types", "outDir": "esm", "moduleResolution": "Node16", }, diff --git a/tsconfig.json b/tsconfig.json index a8e4f6b18..f52f8c39c 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,5 +6,6 @@ "declarationMap": true, "declarationDir": "types", "outDir": "cjs", + "moduleResolution": "Node10", }, } From f7ad09e764829283500dcab8212b1f6eb31bf8dd Mon Sep 17 00:00:00 2001 From: urielch Date: Fri, 26 Apr 2024 16:38:38 +0200 Subject: [PATCH 11/50] fix export order --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 550398ebc..719534084 100644 --- a/package.json +++ b/package.json @@ -18,9 +18,9 @@ ], "exports": { ".": { + "types": "./typings/index.d.ts", "require": "./cjs/lib/opencv4nodejs.js", - "import": "./esm/lib/opencv4nodejs.js", - "types": "./typings/index.d.ts" + "import": "./esm/lib/opencv4nodejs.js" } }, "contributors": [ From 420613a11d48e335b7924ed9fe5c9fd94ead8b69 Mon Sep 17 00:00:00 2001 From: urielch Date: Fri, 26 Apr 2024 17:15:35 +0200 Subject: [PATCH 12/50] roolback --- package.json | 4 ++-- tsconfig-esm.json | 4 ++-- tsconfig.json | 6 +++--- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/package.json b/package.json index 719534084..fa8185bd8 100644 --- a/package.json +++ b/package.json @@ -44,7 +44,7 @@ "module": "./esm/lib/opencv4nodejs.js", "typings": "./typings/index.d.ts", "scripts": { - "build": "tsc --pretty --project . && tsc --pretty --project tsconfig-esm.json", + "build": "tsc --pretty --project tsconfig.json && tsc --pretty --project tsconfig-esm.json", "prepack": "npm run build", "install_old": "node bin/install.js auto", "install_Mac": "CXXFLAGS=\"-std=c++17 -Wno-c++11-narrowing -Wno-c++17-extensions -Wno-c++17-attribute-extensions\" node ./bin/install.js --version 4.5.3 build", @@ -59,7 +59,7 @@ "do-rebuild": "npm run build && node bin/install.js --version 4.6.0 --jobs MAX rebuild", "lint": "eslint examples/**/*.ts src/**/*.ts typings/**/*.ts ", "clean": "node-gyp clean", - "cleanjs": "rimraf {examples}/**/*.{d.ts,js,map} {cjs,esm}/{lib,install}", + "cleanjs": "rimraf {examples}/**/*.{d.ts,js,map} {cjs,esm}/{lib,install} types", "build-debug": "npm run build && BINDINGS_DEBUG=true node bin/install.js rebuild", "checkExports": "npx @arethetypeswrong/cli $(npm pack)", "publish-next": "npm publish --dry-run --tag next" diff --git a/tsconfig-esm.json b/tsconfig-esm.json index 7b60b8341..0c31f7f4d 100644 --- a/tsconfig-esm.json +++ b/tsconfig-esm.json @@ -2,9 +2,9 @@ "extends": "./tsconfig-common.json", "compilerOptions": { "module": "Node16", - // "declaration": false, + "declaration": true, // "declarationMap": false, - // "declarationDir": "types", + "declarationDir": "types", "outDir": "esm", "moduleResolution": "Node16", }, diff --git a/tsconfig.json b/tsconfig.json index f52f8c39c..5fd4b4ac3 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -2,9 +2,9 @@ "extends": "./tsconfig-common.json", "compilerOptions": { "module": "commonjs", - "declaration": true, - "declarationMap": true, - "declarationDir": "types", + "declaration": false, + // "declarationMap": false, + // "declarationDir": "types", "outDir": "cjs", "moduleResolution": "Node10", }, From 6dcf526942a12dc855155ad02f2ec063b71a0f0b Mon Sep 17 00:00:00 2001 From: urielch Date: Sat, 27 Apr 2024 08:31:06 +0200 Subject: [PATCH 13/50] clean tsconfig --- tsconfig-esm.json | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/tsconfig-esm.json b/tsconfig-esm.json index 0c31f7f4d..0b8b20f6b 100644 --- a/tsconfig-esm.json +++ b/tsconfig-esm.json @@ -1,12 +1,17 @@ { - "extends": "./tsconfig-common.json", + "extends": [ + "./tsconfig-common.json" + ], "compilerOptions": { - "module": "Node16", + "module": "es2020", + "target": "es2020", + "lib": [ + "es2020" + ], "declaration": true, - // "declarationMap": false, "declarationDir": "types", "outDir": "esm", - "moduleResolution": "Node16", - }, + "moduleResolution": "node" + } } \ No newline at end of file From f83b21e98521e43b1e1eecba4faeb41c2d726351 Mon Sep 17 00:00:00 2001 From: urielch Date: Sat, 27 Apr 2024 11:04:29 +0200 Subject: [PATCH 14/50] prepare 7.0.0-alpha-5 --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index fa8185bd8..3e499e849 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@u4/opencv4nodejs", - "version": "7.0.0-alpha-4", + "version": "7.0.0-alpha-5", "description": "Asynchronous OpenCV 3.x / 4.x nodejs bindings with JavaScript and TypeScript API.", "keywords": [ "opencv", @@ -16,6 +16,7 @@ "async", "typescript" ], + "type": "commonjs", "exports": { ".": { "types": "./typings/index.d.ts", From 33c28b959603548f4cf0ed9487a839f1343acfcf Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 06:21:42 +0200 Subject: [PATCH 15/50] separeted types generation --- .gitignore | 1 - .../object_detection_yolo.ts | 2 +- package.json | 3 +- src/lib/src/drawUtils.ts | 76 ++++--- src/lib/src/misc.ts | 193 ++++++++++-------- tsconfig-esm.json | 2 - tsconfig-types.json | 12 ++ types/install/compileLib.d.ts | 1 + types/install/parseEnv.d.ts | 2 + types/lib/commons.d.ts | 5 + types/lib/cvloader.d.ts | 5 + types/lib/opencv4nodejs.d.ts | 7 + types/lib/promisify.d.ts | 4 + types/lib/src/deprecations.d.ts | 2 + types/lib/src/drawUtils.d.ts | 35 ++++ types/lib/src/index.d.ts | 2 + types/lib/src/misc.d.ts | 40 ++++ typings/cv.d.ts | 62 +----- 18 files changed, 275 insertions(+), 179 deletions(-) create mode 100644 tsconfig-types.json create mode 100644 types/install/compileLib.d.ts create mode 100644 types/install/parseEnv.d.ts create mode 100644 types/lib/commons.d.ts create mode 100644 types/lib/cvloader.d.ts create mode 100644 types/lib/opencv4nodejs.d.ts create mode 100644 types/lib/promisify.d.ts create mode 100644 types/lib/src/deprecations.d.ts create mode 100644 types/lib/src/drawUtils.d.ts create mode 100644 types/lib/src/index.d.ts create mode 100644 types/lib/src/misc.d.ts diff --git a/.gitignore b/.gitignore index 70cec33ea..4c8ef79b8 100644 --- a/.gitignore +++ b/.gitignore @@ -59,5 +59,4 @@ cjs/install/ cjs/lib/ esm/install/ esm/lib/ -types/ u4-opencv4nodejs-*.tgz diff --git a/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts b/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts index 93e45ea65..1d7f883d6 100644 --- a/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts +++ b/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts @@ -24,7 +24,7 @@ const conf = { const inpWidth = 416;// #608 #Width of network's input image const inpHeight = 416;// #608 #Height of network's input image -const args: { image?: string, video?: string, device?: string, help?: boolean } = mri(process.argv.slice(2), { default: { device: 'cpu' }, alias: { h: 'help' } }) as any; +const args: { image?: string, video?: string, device?: string, help?: boolean } = mri(process.argv.slice(2), { default: { device: 'cpu' }, alias: { h: 'help' } }); if (args.help) { console.log('Object Detection using YOLO in OPENCV'); diff --git a/package.json b/package.json index 3e499e849..9f3eab455 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "typings": "./typings/index.d.ts", "scripts": { "build": "tsc --pretty --project tsconfig.json && tsc --pretty --project tsconfig-esm.json", + "build-types": "rimraf types && tsc --pretty --project tsconfig-types.json", "prepack": "npm run build", "install_old": "node bin/install.js auto", "install_Mac": "CXXFLAGS=\"-std=c++17 -Wno-c++11-narrowing -Wno-c++17-extensions -Wno-c++17-attribute-extensions\" node ./bin/install.js --version 4.5.3 build", @@ -60,7 +61,7 @@ "do-rebuild": "npm run build && node bin/install.js --version 4.6.0 --jobs MAX rebuild", "lint": "eslint examples/**/*.ts src/**/*.ts typings/**/*.ts ", "clean": "node-gyp clean", - "cleanjs": "rimraf {examples}/**/*.{d.ts,js,map} {cjs,esm}/{lib,install} types", + "cleanjs": "rimraf {examples}/**/*.{d.ts,js,map} {cjs,esm}/{lib,install}", "build-debug": "npm run build && BINDINGS_DEBUG=true node bin/install.js rebuild", "checkExports": "npx @arethetypeswrong/cli $(npm pack)", "publish-next": "npm publish --dry-run --tag next" diff --git a/src/lib/src/drawUtils.ts b/src/lib/src/drawUtils.ts index c7b42b60f..dfb1799f7 100644 --- a/src/lib/src/drawUtils.ts +++ b/src/lib/src/drawUtils.ts @@ -1,3 +1,4 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ import type * as openCV from '../../../typings/index'; import { Mat, Rect, Vec3 } from '../../../typings/index'; @@ -8,7 +9,12 @@ export interface TextParams { lineType: number; } -export interface TextLines { +export interface FontParams extends DrawParams { + fontType?: number; + fontSize?: number; +} + +export interface TextLines extends FontParams { text: string; } @@ -18,34 +24,34 @@ export interface TextDimention { baseLine: number; } -interface DrawParams { +export interface DrawParams { color?: Vec3; thickness?: number; lineType?: number; shift?: number; } -export default function (cv: typeof openCV): void { - const DefaultTextParams: TextParams = { fontType: cv.FONT_HERSHEY_SIMPLEX, fontSize: 0.8, thickness: 2, lineType: cv.LINE_4 } +let cv: typeof openCV; +let DefaultTextParams: TextParams - function reshapeRectAtBorders(rect: Rect, imgDim: Mat) { - const x = Math.min(Math.max(0, rect.x), imgDim.cols) - const y = Math.min(Math.max(0, rect.y), imgDim.rows) - const width = Math.min(rect.width, imgDim.cols - x) - const height = Math.min(rect.height, imgDim.rows - y) - return new cv.Rect(x, y, width, height) - } +function reshapeRectAtBorders(rect: Rect, imgDim: Mat) { + const x = Math.min(Math.max(0, rect.x), imgDim.cols) + const y = Math.min(Math.max(0, rect.y), imgDim.rows) + const width = Math.min(rect.width, imgDim.cols - x) + const height = Math.min(rect.height, imgDim.rows - y) + return new cv.Rect(x, y, width, height) +} - function insertText(boxImg: Mat, text: string, origin: { x: number, y: number }, opts: Partial) { - const fontType = opts.fontType || DefaultTextParams.fontType; - const fontSize = opts.fontSize || DefaultTextParams.fontSize; - const color = opts.color || new cv.Vec3(255, 255, 255); - const thickness = opts.thickness || DefaultTextParams.thickness; - const lineType = opts.lineType || DefaultTextParams.lineType; - const originPt = new cv.Point2(origin.x, origin.y) - boxImg.putText(text, originPt, fontType, fontSize, color, thickness, lineType, 0) - return boxImg - } +function insertText(boxImg: Mat, text: string, origin: { x: number, y: number }, opts: Partial) { + const fontType = opts.fontType || DefaultTextParams.fontType; + const fontSize = opts.fontSize || DefaultTextParams.fontSize; + const color = opts.color || new cv.Vec3(255, 255, 255); + const thickness = opts.thickness || DefaultTextParams.thickness; + const lineType = opts.lineType || DefaultTextParams.lineType; + const originPt = new cv.Point2(origin.x, origin.y) + boxImg.putText(text, originPt, fontType, fontSize, color, thickness, lineType, 0) + return boxImg +} /** * get text block contour @@ -75,10 +81,6 @@ export default function (cv: typeof openCV): void { }, 0) } - // function getBaseLine(textLine: TextLines, opts?: Partial): number { - // return getTextSize(textLine.text, opts).baseLine - // } - /** * get single text line height in pixel * @param textLine line to write @@ -99,7 +101,7 @@ export default function (cv: typeof openCV): void { return textLines.reduce((height, textLine) => height + getLineHeight(textLine, opts), 0) } - cv.drawTextBox = function drawTextBox(img: Mat, upperLeft: { x: number, y: number }, textLines: TextLines[], alpha: number): Mat { + export function drawTextBox(img: Mat, upperLeft: { x: number, y: number }, textLines: TextLines[], alpha: number): Mat { const padding = 10 const linePadding = 10 @@ -122,7 +124,11 @@ export default function (cv: typeof openCV): void { return img } - cv.drawDetection = function drawDetection(img: Mat, inputRect: Rect, opts = {} as DrawParams & { segmentFraction?: number }): Rect { + export interface DrawDetectionParams extends DrawParams { + segmentFraction?: number; + } + + export function drawDetection(img: Mat, inputRect: Rect, opts = {} as DrawDetectionParams): Rect { const rect = inputRect.toSquare() const { x, y, width, height } = rect @@ -148,4 +154,20 @@ export default function (cv: typeof openCV): void { img.drawLine(bottomRight, bottomRight.add(new cv.Point2(-segmentLength, 0)), drawParams) return rect } + +export default function (newCv: typeof openCV): void { + cv = newCv; + + DefaultTextParams = { + fontType: cv.FONT_HERSHEY_SIMPLEX, + fontSize: 0.8, + thickness: 2, + lineType: cv.LINE_4, + }; + + // @ts-ignore + cv.drawTextBox = drawTextBox; + + // @ts-ignore + cv.drawDetection = drawDetection; } \ No newline at end of file diff --git a/src/lib/src/misc.ts b/src/lib/src/misc.ts index 9371afe4e..818329c9f 100644 --- a/src/lib/src/misc.ts +++ b/src/lib/src/misc.ts @@ -1,109 +1,124 @@ +/* eslint-disable @typescript-eslint/ban-ts-comment */ import type * as openCV from '../../../typings/index'; import type { Mat, Rect } from '../../../typings/index'; export const allTypes = ['CV_8U', 'CV_8S', 'CV_16U', 'CV_16S', 'CV_32S', 'CV_32F', 'CV_64F', 'CV_8UC1', 'CV_8UC2', 'CV_8UC3', 'CV_8UC4', 'CV_8SC1', 'CV_8SC2', 'CV_8SC3', 'CV_8SC4', 'CV_16UC1', 'CV_16UC2', 'CV_16UC3', 'CV_16UC4', 'CV_16SC1', 'CV_16SC2', 'CV_16SC3', 'CV_16SC4', 'CV_32SC1', 'CV_32SC2', 'CV_32SC3', 'CV_32SC4', 'CV_32FC1', 'CV_32FC2', 'CV_32FC3', 'CV_32FC4', 'CV_64FC1', 'CV_64FC2', 'CV_64FC3', 'CV_64FC4'] as const; export type MatTypes = typeof allTypes[number]; + +let cv: typeof openCV; + /** - * register new functions - * @param cv - */ -export default function (cv: typeof openCV): void { - /** - * Check declaration and doc in cv.d.ts - */ - cv.getVersion = function(): [number, number, number] { - return [cv.getVersionMajor(), cv.getVersionMinor(), cv.getVersionRevision()] - } + * Check declaration and doc in cv.d.ts + */ +export function getVersion(): [number, number, number] { + return [cv.getVersionMajor(), cv.getVersionMinor(), cv.getVersionRevision()]; +} +/** + * Check declaration and doc in cv.d.ts + */ +export function getVersionString(): string { + return `${cv.getVersionMajor()}.${cv.getVersionMinor()}.${cv.getVersionRevision()}`; +} - /** - * Check declaration and doc in cv.d.ts - */ - cv.getVersionString = function(): string { - return `${cv.getVersionMajor()}.${cv.getVersionMinor()}.${cv.getVersionRevision()}`; +/** + * Convert a Mat type to string for easy read + * non Natif code + * @param type Mat type as int value + */ +export function toMatTypeName(type: number): MatTypes | undefined { + for (const t of allTypes) { + if (cv[t] === type) return t; } + return undefined; +} - /** - * Convert a Mat type to string for easy read - * non Natif code - * @param type Mat type as int value - */ - cv.toMatTypeName = function toMatTypeName(type: number): MatTypes | undefined { - for (const t of allTypes) { - if (cv[t] === type) return t; - } - return undefined; - }; - /** - * Find values greater than threshold in a 32bit float matrix and return a list of matchs formated as [[x1, y1, score1]. [x2, y2, score2], [x3, y3, score3]] - * add to be used with matchTemplate - * non Natif code - * @param scoreMat Matric containing scores as 32Bit float (CV_32F) - * @param threshold Minimal score to collect - * @param region search region - * @returns a list of matchs - */ - cv.getScoreMax = function getScoreMax(scoreMat: Mat, threshold: number, region?: Rect): Array<[number, number, number]> { - if (scoreMat.type !== cv.CV_32F) - throw Error('this method can only be call on a CV_32F Mat'); - if (scoreMat.dims !== 2) - throw Error('this method can only be call on a 2 dimmention Mat'); +/** + * Find values greater than threshold in a 32bit float matrix and return a list of matchs formated as [[x1, y1, score1]. [x2, y2, score2], [x3, y3, score3]] + * add to be used with matchTemplate + * non Natif code + * @param scoreMat Matric containing scores as 32Bit float (CV_32F) + * @param threshold Minimal score to collect + * @param region search region + * @returns a list of matchs + */ +export function getScoreMax(scoreMat: Mat, threshold: number, region?: Rect): Array<[number, number, number]> { + if (scoreMat.type !== cv.CV_32F) + throw Error('this method can only be call on a CV_32F Mat'); + if (scoreMat.dims !== 2) + throw Error('this method can only be call on a 2 dimmention Mat'); - const out: Array<[number, number, number]> = []; - const { cols, rows } = scoreMat; - const raw = scoreMat.getData(); + const out: Array<[number, number, number]> = []; + const { cols, rows } = scoreMat; + const raw = scoreMat.getData(); - let x1: number, x2: number, y1: number, y2: number; - if (region) { - x1 = region.x; - y1 = region.y; - x2 = x1 + region.width; - y2 = y1 + region.height; - } else { - x1 = y1 = 0; - x2 = cols; - y2 = rows; - } - for (let y = y1; y < y2; y++) { - let offset = (x1 + y * cols) * 4; - for (let x = x1; x < x2; x++) { - const value = raw.readFloatLE(offset); - if (value > threshold) { - out.push([x, y, value]); - } - offset += 4; + let x1: number, x2: number, y1: number, y2: number; + if (region) { + x1 = region.x; + y1 = region.y; + x2 = x1 + region.width; + y2 = y1 + region.height; + } else { + x1 = y1 = 0; + x2 = cols; + y2 = rows; + } + for (let y = y1; y < y2; y++) { + let offset = (x1 + y * cols) * 4; + for (let x = x1; x < x2; x++) { + const value = raw.readFloatLE(offset); + if (value > threshold) { + out.push([x, y, value]); } + offset += 4; } - return out; } + return out; +} - /** - * Drop overlaping zones, keeping best one - * @param template template Matrix used to get dimentions. - * @param matches list of matches as a list in [x,y,score]. (this data will be altered) - * @returns best match without colisions - */ - cv.dropOverlappingZone = function dropOverlappingZone(template: Mat, matches: Array<[number, number, number]>): Array<[number, number, number]> { - const total = matches.length; - const width = template.cols / 2; - const height = template.rows / 2; - for (let i = 0; i < total; i++) { - const cur = matches[i]; - if (!cur[2]) continue; - for (let j = i + 1; j < total; j++) { - const sec = matches[j]; - if (!sec[2]) continue; - if (Math.abs(cur[1] - sec[1]) > height) continue; - if (Math.abs(cur[0] - sec[0]) > width) continue; - if (cur[2] > sec[2]) { - sec[2] = 0; - } else { - cur[2] = 0; - break; - } +/** + * Drop overlaping zones, keeping best one + * @param template template Matrix used to get dimentions. + * @param matches list of matches as a list in [x,y,score]. (this data will be altered) + * @returns best match without colisions + */ +export function dropOverlappingZone(template: Mat, matches: Array<[number, number, number]>): Array<[number, number, number]> { + const total = matches.length; + const width = template.cols / 2; + const height = template.rows / 2; + for (let i = 0; i < total; i++) { + const cur = matches[i]; + if (!cur[2]) continue; + for (let j = i + 1; j < total; j++) { + const sec = matches[j]; + if (!sec[2]) continue; + if (Math.abs(cur[1] - sec[1]) > height) continue; + if (Math.abs(cur[0] - sec[0]) > width) continue; + if (cur[2] > sec[2]) { + sec[2] = 0; + } else { + cur[2] = 0; + break; } } - return matches.filter(m => m[2]); } + return matches.filter(m => m[2]); +} - +/** + * register new functions + * @param cv + */ +export default function (newCv: typeof openCV): void { + // store global cv + cv = newCv; + // @ts-ignore + cv.getVersion = getVersion; + // @ts-ignore + cv.getVersionString = getVersionString; + // @ts-ignore + cv.toMatTypeName = toMatTypeName; + // @ts-ignore + cv.getScoreMax = getScoreMax; + // @ts-ignore + cv.dropOverlappingZone = dropOverlappingZone; } diff --git a/tsconfig-esm.json b/tsconfig-esm.json index 0b8b20f6b..35090bde1 100644 --- a/tsconfig-esm.json +++ b/tsconfig-esm.json @@ -8,8 +8,6 @@ "lib": [ "es2020" ], - "declaration": true, - "declarationDir": "types", "outDir": "esm", "moduleResolution": "node" } diff --git a/tsconfig-types.json b/tsconfig-types.json new file mode 100644 index 000000000..9f7ac991a --- /dev/null +++ b/tsconfig-types.json @@ -0,0 +1,12 @@ +{ + "extends": [ + "./tsconfig-common.json" + ], + "compilerOptions": { + "emitDeclarationOnly": true, + "declaration": true, + "declarationDir": "types", + "moduleResolution": "node" + } + } + \ No newline at end of file diff --git a/types/install/compileLib.d.ts b/types/install/compileLib.d.ts new file mode 100644 index 000000000..3f9f0799f --- /dev/null +++ b/types/install/compileLib.d.ts @@ -0,0 +1 @@ +export declare function compileLib(args: string[]): Promise; diff --git a/types/install/parseEnv.d.ts b/types/install/parseEnv.d.ts new file mode 100644 index 000000000..333b5913e --- /dev/null +++ b/types/install/parseEnv.d.ts @@ -0,0 +1,2 @@ +declare const envName: string; +declare const outputs: string[]; diff --git a/types/lib/commons.d.ts b/types/lib/commons.d.ts new file mode 100644 index 000000000..fc7dfeaa0 --- /dev/null +++ b/types/lib/commons.d.ts @@ -0,0 +1,5 @@ +export declare function resolvePath(filePath?: string, file?: string): string; +/** + * detect if electron https://github.com/electron/electron/issues/2288 + */ +export declare function isElectronWebpack(): boolean; diff --git a/types/lib/cvloader.d.ts b/types/lib/cvloader.d.ts new file mode 100644 index 000000000..51e79d8df --- /dev/null +++ b/types/lib/cvloader.d.ts @@ -0,0 +1,5 @@ +import { type OpenCVBuildEnvParams } from '@u4/opencv-build'; +import type * as openCV from '../../typings/index'; +declare type OpenCVType = typeof openCV; +export declare function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType; +export default getOpenCV; diff --git a/types/lib/opencv4nodejs.d.ts b/types/lib/opencv4nodejs.d.ts new file mode 100644 index 000000000..d30f24cf9 --- /dev/null +++ b/types/lib/opencv4nodejs.d.ts @@ -0,0 +1,7 @@ +import type * as openCV from '../../typings/index'; +export type * as openCV from '../../typings/index'; +export declare const cv: typeof openCV; +declare const defExport: { + [key: string]: any; +}; +export default defExport; diff --git a/types/lib/promisify.d.ts b/types/lib/promisify.d.ts new file mode 100644 index 000000000..f1ecff0d5 --- /dev/null +++ b/types/lib/promisify.d.ts @@ -0,0 +1,4 @@ +declare const _default: (cv: T) => T; +export default _default; diff --git a/types/lib/src/deprecations.d.ts b/types/lib/src/deprecations.d.ts new file mode 100644 index 000000000..ca2ce178e --- /dev/null +++ b/types/lib/src/deprecations.d.ts @@ -0,0 +1,2 @@ +import type * as openCV from '../../../typings/index'; +export default function (cv: typeof openCV): void; diff --git a/types/lib/src/drawUtils.d.ts b/types/lib/src/drawUtils.d.ts new file mode 100644 index 000000000..2125e1e05 --- /dev/null +++ b/types/lib/src/drawUtils.d.ts @@ -0,0 +1,35 @@ +import type * as openCV from '../../../typings/index'; +import { Mat, Rect, Vec3 } from '../../../typings/index'; +export interface TextParams { + fontType: number; + fontSize: number; + thickness: number; + lineType: number; +} +export interface FontParams extends DrawParams { + fontType?: number; + fontSize?: number; +} +export interface TextLines extends FontParams { + text: string; +} +export interface TextDimention { + width: number; + height: number; + baseLine: number; +} +export interface DrawParams { + color?: Vec3; + thickness?: number; + lineType?: number; + shift?: number; +} +export declare function drawTextBox(img: Mat, upperLeft: { + x: number; + y: number; +}, textLines: TextLines[], alpha: number): Mat; +export interface DrawDetectionParams extends DrawParams { + segmentFraction?: number; +} +export declare function drawDetection(img: Mat, inputRect: Rect, opts?: DrawDetectionParams): Rect; +export default function (newCv: typeof openCV): void; diff --git a/types/lib/src/index.d.ts b/types/lib/src/index.d.ts new file mode 100644 index 000000000..68e129c35 --- /dev/null +++ b/types/lib/src/index.d.ts @@ -0,0 +1,2 @@ +import * as OpenCV from '../../../typings/index'; +export default function extendWithJsSources(cv: typeof OpenCV): typeof OpenCV; diff --git a/types/lib/src/misc.d.ts b/types/lib/src/misc.d.ts new file mode 100644 index 000000000..9156b494d --- /dev/null +++ b/types/lib/src/misc.d.ts @@ -0,0 +1,40 @@ +import type * as openCV from '../../../typings/index'; +import type { Mat, Rect } from '../../../typings/index'; +export declare const allTypes: readonly ["CV_8U", "CV_8S", "CV_16U", "CV_16S", "CV_32S", "CV_32F", "CV_64F", "CV_8UC1", "CV_8UC2", "CV_8UC3", "CV_8UC4", "CV_8SC1", "CV_8SC2", "CV_8SC3", "CV_8SC4", "CV_16UC1", "CV_16UC2", "CV_16UC3", "CV_16UC4", "CV_16SC1", "CV_16SC2", "CV_16SC3", "CV_16SC4", "CV_32SC1", "CV_32SC2", "CV_32SC3", "CV_32SC4", "CV_32FC1", "CV_32FC2", "CV_32FC3", "CV_32FC4", "CV_64FC1", "CV_64FC2", "CV_64FC3", "CV_64FC4"]; +export type MatTypes = typeof allTypes[number]; +/** + * Check declaration and doc in cv.d.ts + */ +export declare function getVersion(): [number, number, number]; +/** + * Check declaration and doc in cv.d.ts + */ +export declare function getVersionString(): string; +/** + * Convert a Mat type to string for easy read + * non Natif code + * @param type Mat type as int value + */ +export declare function toMatTypeName(type: number): MatTypes | undefined; +/** + * Find values greater than threshold in a 32bit float matrix and return a list of matchs formated as [[x1, y1, score1]. [x2, y2, score2], [x3, y3, score3]] + * add to be used with matchTemplate + * non Natif code + * @param scoreMat Matric containing scores as 32Bit float (CV_32F) + * @param threshold Minimal score to collect + * @param region search region + * @returns a list of matchs + */ +export declare function getScoreMax(scoreMat: Mat, threshold: number, region?: Rect): Array<[number, number, number]>; +/** + * Drop overlaping zones, keeping best one + * @param template template Matrix used to get dimentions. + * @param matches list of matches as a list in [x,y,score]. (this data will be altered) + * @returns best match without colisions + */ +export declare function dropOverlappingZone(template: Mat, matches: Array<[number, number, number]>): Array<[number, number, number]>; +/** + * register new functions + * @param cv + */ +export default function (newCv: typeof openCV): void; diff --git a/typings/cv.d.ts b/typings/cv.d.ts index 57f344b33..d23efd445 100644 --- a/typings/cv.d.ts +++ b/typings/cv.d.ts @@ -149,70 +149,16 @@ export function dangerousEnableCustomMatAllocator(): boolean; export function dangerousDisableCustomMatAllocator(): boolean; export function getMemMetrics(): { TotalAlloc: number, TotalKnownByJS: number, NumAllocations: number, NumDeAllocations: number }; -export type DrawParams = { - thickness?: number; - lineType?: number; - color?: Vec3; -} - -export interface DrawDetectionParams extends DrawParams { - segmentFraction?: number; -} - -export interface FontParams extends DrawParams { - fontType?: number; - fontSize?: number; -} - -export interface TextLine extends FontParams { - text: string; -} - /** * All non-native functions signatures go here. * Implementation are injected fron lib/src/index.ts */ -/** - * return openCV version as an array containing Major, minor, patch - */ -export function getVersion(): [number, number, number]; - -/** - * return openCV version as a string - */ -export function getVersionString(): string; - -// non Natif -export function drawDetection(img: Mat, inputRect: Rect, opts?: DrawDetectionParams): Rect; -// non Natif -export function drawTextBox(img: Mat, upperLeft: { x: number, y: number }, textLines: TextLine[], alpha: number): Mat; -/** - * Convert a Mat type to string for easy read - * non Natif code - * @param type Mat type as int value - */ -export function toMatTypeName(type: number): string | undefined; -/** - * Find values greater than threshold in a 32bit float matrix and return a list of matchs formated as [[x1, y1, score1]. [x2, y2, score2], [x3, y3, score3]] - * add to be used with matchTemplate - * non Natif code - * @param scoreMat Matric containing scores as 32Bit float (CV_32F) - * @param threshold Minimal score to collect - * @param region search region - * @returns a list of matchs - */ -export function getScoreMax(scoreMat: Mat, threshold: number, region?: Rect): Array<[number, number, number]>; +// drawDetection TextLines type FontParams, type DrawDetectionParams, type DrawParams +export * from '../types/lib/src/drawUtils'; -/** - * Drop overlaping zones, keeping best one - * add to be used with matchTemplate - * non Natif code - * @param template template Matrix used to get dimentions. - * @param matches list of matches as a list in [x,y,score]. (this data will be altered) - * @returns best match without colisions - */ -export function dropOverlappingZone(template: Mat, matches: Array<[number, number, number]>): Array<[number, number, number]>; +// dropOverlappingZone getScoreMax toMatTypeName +export * from '../types/lib/src/misc' // experimental, need improvements / rewrite export function min(src1: Mat, src2: Mat, dst: Mat): Mat; From 495d3dfe443e9f241cd4930c8a6f1d286d71d4a6 Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 06:22:05 +0200 Subject: [PATCH 16/50] add rebuild task --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 9f3eab455..fbcc6ed88 100644 --- a/package.json +++ b/package.json @@ -61,6 +61,7 @@ "do-rebuild": "npm run build && node bin/install.js --version 4.6.0 --jobs MAX rebuild", "lint": "eslint examples/**/*.ts src/**/*.ts typings/**/*.ts ", "clean": "node-gyp clean", + "rebuild": "node-gyp rebuild", "cleanjs": "rimraf {examples}/**/*.{d.ts,js,map} {cjs,esm}/{lib,install}", "build-debug": "npm run build && BINDINGS_DEBUG=true node bin/install.js rebuild", "checkExports": "npx @arethetypeswrong/cli $(npm pack)", From dbd220e167a91c38eafd5ff2dc01bf0204886a16 Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 06:22:31 +0200 Subject: [PATCH 17/50] rename invalid haarcascades filename --- ...us_16stages.xml => haarcascade_license_plate_rus_16stages.xml} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename src/lib/haarcascades/{haarcascade_licence_plate_rus_16stages.xml => haarcascade_license_plate_rus_16stages.xml} (100%) diff --git a/src/lib/haarcascades/haarcascade_licence_plate_rus_16stages.xml b/src/lib/haarcascades/haarcascade_license_plate_rus_16stages.xml similarity index 100% rename from src/lib/haarcascades/haarcascade_licence_plate_rus_16stages.xml rename to src/lib/haarcascades/haarcascade_license_plate_rus_16stages.xml From 2f9cd5e9e07adf8948cb1237bca116b794a954ac Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 06:22:54 +0200 Subject: [PATCH 18/50] remove one any usage --- test/tests/face/facemarkTests.ts | 2 +- typings/FacemarkLBFParams.d.ts | 19 +++++++++---------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/test/tests/face/facemarkTests.ts b/test/tests/face/facemarkTests.ts index 9ad93cda8..5747fcabb 100644 --- a/test/tests/face/facemarkTests.ts +++ b/test/tests/face/facemarkTests.ts @@ -81,7 +81,7 @@ export default (args: TestContext) => (Facemark: typeof FacemarkLBF | typeof Fac } before(() => { - const params = new FacemarkParams() as any; + const params = new FacemarkParams() as FacemarkLBFParams; params.cascadeFace = '../lib/haarcascades/haarcascade_frontalcatface.xml'; params.modelFilename = 'modelFilename.model'; params.nLandmarks = 68; diff --git a/typings/FacemarkLBFParams.d.ts b/typings/FacemarkLBFParams.d.ts index df45f9afc..a24c2fdc6 100644 --- a/typings/FacemarkLBFParams.d.ts +++ b/typings/FacemarkLBFParams.d.ts @@ -3,7 +3,7 @@ import { Rect } from "./Rect.d"; export interface IFacemarkLBFParams { baggingOverlap: number; cascadeFile: string; - // cascadeFace: string; + cascadeFace?: string; detectROI: Rect; featsM: number[]; initShapeN: number; @@ -20,24 +20,23 @@ export interface IFacemarkLBFParams { verbose: boolean; } - export class FacemarkLBFParams { readonly baggingOverlap: number; readonly cascadeFile: string; - // readonly cascadeFace: string; + cascadeFace?: string; readonly detectROI: Rect; readonly featsM: number[]; - readonly initShapeN: number; - readonly modelFilename: string; - readonly nLandmarks: number; + initShapeN: number; + modelFilename: string; + nLandmarks: number; readonly pupils: number[][]; readonly radiusM: number[]; readonly saveModel: boolean; readonly seed: number; readonly shapeOffset: number; - readonly stagesN: number; - readonly treeDepth: number; - readonly treeN: number; + stagesN: number; + treeDepth: number; + treeN: number; readonly verbose: boolean; - constructor(params?: Partial); + constructor(params?: Partial): FacemarkLBFParams; } From b23fa2e2177ab3d9f3f6e3764a2e4bd39856eb16 Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 11:38:43 +0200 Subject: [PATCH 19/50] add extention in import --- examples/src/utils.ts | 12 +++++++++++- src/install/compileLib.ts | 4 ++-- src/lib/opencv4nodejs.ts | 10 +++++----- src/lib/src/deprecations.ts | 4 ++-- src/lib/src/drawUtils.ts | 4 ++-- src/lib/src/index.ts | 8 ++++---- src/lib/src/misc.ts | 4 ++-- 7 files changed, 28 insertions(+), 18 deletions(-) diff --git a/examples/src/utils.ts b/examples/src/utils.ts index e25b5c9bd..3f50ee893 100644 --- a/examples/src/utils.ts +++ b/examples/src/utils.ts @@ -62,11 +62,21 @@ export function getCachedFile(localName: string, url: string, opts?: { notice?: }) } + +let _dirname = '.'; +try { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + _dirname = fileURLToPath(new URL('.', import.meta.url)); +} catch { + _dirname = __dirname; +} + /** * add some helpter for examples TS */ -export const dataPath = path.resolve(__dirname, '..', '..', 'data'); +export const dataPath = path.resolve(_dirname, '..', '..', 'data'); // export const getDataFilePath = (fileName: string): string => { // const fullpath = path.resolve(dataPath, fileName) diff --git a/src/install/compileLib.ts b/src/install/compileLib.ts index 23c61ace6..96f4e90e0 100644 --- a/src/install/compileLib.ts +++ b/src/install/compileLib.ts @@ -3,12 +3,12 @@ import type { OpencvModule, OpenCVBuildEnvParams, LogLevels } from '@u4/opencv-b import { OpenCVBuilder, OpenCVBuildEnv, args2Option, genHelp } from '@u4/opencv-build'; import child_process from 'child_process'; import fs from 'fs'; -import { resolvePath } from '../lib/commons'; import pc from 'picocolors'; import path from 'path'; import { EOL } from 'os'; import { globSync } from "glob"; -import { getOpenCV } from '../lib/cvloader'; +import { resolvePath } from '../lib/commons.js'; +import { getOpenCV } from '../lib/cvloader.js'; const defaultDir = '/usr/local'; const defaultLibDir = `${defaultDir}/lib`; diff --git a/src/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts index 0137aee97..fd38a6c84 100644 --- a/src/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -1,10 +1,10 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { type OpenCVBuildEnvParams } from '@u4/opencv-build'; -import promisify from './promisify'; -import extendWithJsSources from './src/index'; -import { getOpenCV } from './cvloader'; -import type * as openCV from '../../typings/index'; -export type * as openCV from '../../typings/index'; +import promisify from './promisify.js'; +import extendWithJsSources from './src/index.js'; +import { getOpenCV } from './cvloader.js'; +import type * as openCV from '../../typings/index.js'; +export type * as openCV from '../../typings/index.js'; declare type OpenCVType = typeof openCV; diff --git a/src/lib/src/deprecations.ts b/src/lib/src/deprecations.ts index b9a10b94b..8698264b0 100644 --- a/src/lib/src/deprecations.ts +++ b/src/lib/src/deprecations.ts @@ -1,6 +1,6 @@ import assert from 'assert'; -import type * as openCV from '../../../typings/index' -import type { Mat } from '../../../typings/index'; +import type * as openCV from '../../../typings/index.js' +import type { Mat } from '../../../typings/index.js'; export default function (cv: typeof openCV) { // deprecate wrapper for the old calcHist API diff --git a/src/lib/src/drawUtils.ts b/src/lib/src/drawUtils.ts index dfb1799f7..d34c43506 100644 --- a/src/lib/src/drawUtils.ts +++ b/src/lib/src/drawUtils.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ -import type * as openCV from '../../../typings/index'; -import { Mat, Rect, Vec3 } from '../../../typings/index'; +import type * as openCV from '../../../typings/index.js'; +import { Mat, Rect, Vec3 } from '../../../typings/index.js'; export interface TextParams { fontType: number; diff --git a/src/lib/src/index.ts b/src/lib/src/index.ts index ab560d970..54e9afddf 100644 --- a/src/lib/src/index.ts +++ b/src/lib/src/index.ts @@ -1,7 +1,7 @@ -import makeDrawUtils from './drawUtils'; -import deprecations from './deprecations'; -import * as OpenCV from '../../../typings/index'; -import misc from './misc'; +import makeDrawUtils from './drawUtils.js'; +import deprecations from './deprecations.js'; +import * as OpenCV from '../../../typings/index.js'; +import misc from './misc.js'; export default function extendWithJsSources(cv: typeof OpenCV) { // add functions diff --git a/src/lib/src/misc.ts b/src/lib/src/misc.ts index 818329c9f..2bf6bcc8c 100644 --- a/src/lib/src/misc.ts +++ b/src/lib/src/misc.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/ban-ts-comment */ -import type * as openCV from '../../../typings/index'; -import type { Mat, Rect } from '../../../typings/index'; +import type * as openCV from '../../../typings/index.js'; +import type { Mat, Rect } from '../../../typings/index.js'; export const allTypes = ['CV_8U', 'CV_8S', 'CV_16U', 'CV_16S', 'CV_32S', 'CV_32F', 'CV_64F', 'CV_8UC1', 'CV_8UC2', 'CV_8UC3', 'CV_8UC4', 'CV_8SC1', 'CV_8SC2', 'CV_8SC3', 'CV_8SC4', 'CV_16UC1', 'CV_16UC2', 'CV_16UC3', 'CV_16UC4', 'CV_16SC1', 'CV_16SC2', 'CV_16SC3', 'CV_16SC4', 'CV_32SC1', 'CV_32SC2', 'CV_32SC3', 'CV_32SC4', 'CV_32FC1', 'CV_32FC2', 'CV_32FC3', 'CV_32FC4', 'CV_64FC1', 'CV_64FC2', 'CV_64FC3', 'CV_64FC4'] as const; export type MatTypes = typeof allTypes[number]; From a843ff647f8e2839b009dde4eed044ded0278ed5 Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 11:39:14 +0200 Subject: [PATCH 20/50] move ESM / CJS depentend code to an isolated file. --- src/lib/cvloader.ts | 18 +++++++++++------- src/lib/meta.ts | 25 +++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 src/lib/meta.ts diff --git a/src/lib/cvloader.ts b/src/lib/cvloader.ts index 1b03423cd..cdf2cb19d 100644 --- a/src/lib/cvloader.ts +++ b/src/lib/cvloader.ts @@ -1,8 +1,9 @@ import { pc, Log, OpenCVBuilder, type OpenCVBuildEnvParams } from '@u4/opencv-build'; import fs from 'fs'; import path from 'path'; -import { isElectronWebpack, resolvePath } from './commons'; -import type * as openCV from '../../typings/index'; +import { isElectronWebpack, resolvePath } from './commons.js'; +import type * as openCV from '../../typings/index.js'; +import { getDirName, getRequire } from './meta.js'; declare type OpenCVType = typeof openCV; @@ -46,16 +47,18 @@ export function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { if (isElectronWebpack()) { requirePath = '../../build/Release/opencv4nodejs.node'; } else { - requirePath = path.join(__dirname, '../../build/Debug/opencv4nodejs.node'); + const dirname = getDirName(); + requirePath = path.join(dirname, '../../build/Debug/opencv4nodejs.node'); if (!fs.existsSync(requirePath)) { - requirePath = path.join(__dirname, '../../build/Release/opencv4nodejs.node'); + requirePath = path.join(dirname, '../../build/Release/opencv4nodejs.node'); } requirePath = requirePath.replace(/\.node$/, ''); // path.join(__dirname, process.env.BINDINGS_DEBUG ? '../../build/Debug/opencv4nodejs' : '../../build/Release/opencv4nodejs') } try { logDebug('require', `require path is ${pc.yellow(requirePath)}`) - opencvBuild = require(requirePath); + opencvBuild = getRequire()(requirePath); + } catch (err) { // err.code === 'ERR_DLOPEN_FAILED' logDebug('require', `failed to require cv with exception: ${pc.red(err.toString())}`) @@ -77,7 +80,7 @@ export function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { } logDebug('require', 'process.env.path: ' + process.env.path) try { - opencvBuild = require(requirePath); + opencvBuild = getRequire()(requirePath); } catch (e) { if (e instanceof Error) { let msg = ''; @@ -111,7 +114,8 @@ export function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { // resolve haarcascade files // eslint-disable-next-line @typescript-eslint/no-explicit-any const { haarCascades, lbpCascades } = opencvBuild as any; - const xmlDir = path.join(__dirname, '..', '..', 'src', 'lib'); + const dirname = getDirName(); + const xmlDir = path.join(dirname, '..', '..', 'src', 'lib'); Object.keys(haarCascades).forEach( key => opencvBuild[key] = resolvePath(path.join(xmlDir, 'haarcascades'), haarCascades[key])); Object.keys(lbpCascades).forEach( diff --git a/src/lib/meta.ts b/src/lib/meta.ts new file mode 100644 index 000000000..bd0c8a656 --- /dev/null +++ b/src/lib/meta.ts @@ -0,0 +1,25 @@ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable @typescript-eslint/ban-ts-comment */ +import { createRequire } from 'node:module'; +import { fileURLToPath } from 'node:url'; + +export function getDirName(): string { + let _dirname = '.'; + if (typeof __dirname !== 'string') { + _dirname = __dirname; + } else { + // @ts-ignore + // _dirname = fileURLToPath(new URL('.', import.meta.url)); + } + return _dirname; +} + +export function getRequire(): NodeRequire { + if (typeof require === 'function') { + return require; + } else { + // @ts-ignore + // const require2 = createRequire(import.meta.url); + return require; + } +} From 6563893ce3fa9b4630b0d7f94e08d186b3b93fda Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 12:13:13 +0200 Subject: [PATCH 21/50] update meta.ts --- src/lib/meta.ts | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/src/lib/meta.ts b/src/lib/meta.ts index bd0c8a656..1a9500f08 100644 --- a/src/lib/meta.ts +++ b/src/lib/meta.ts @@ -4,22 +4,19 @@ import { createRequire } from 'node:module'; import { fileURLToPath } from 'node:url'; export function getDirName(): string { - let _dirname = '.'; - if (typeof __dirname !== 'string') { - _dirname = __dirname; + if ('__dirname' in globalThis) { + return globalThis.__dirname; } else { // @ts-ignore - // _dirname = fileURLToPath(new URL('.', import.meta.url)); + return fileURLToPath(new URL('.', import.meta.url)); } - return _dirname; } export function getRequire(): NodeRequire { - if (typeof require === 'function') { - return require; + if ('require' in globalThis) { + return globalThis.require; } else { // @ts-ignore - // const require2 = createRequire(import.meta.url); - return require; + return createRequire(import.meta.url); } } From e02d34b900bc4b164a255cb0e0dab004f76a229f Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 12:15:32 +0200 Subject: [PATCH 22/50] drop __dirname usage --- test/tests/io/io.test.ts | 8 ++++---- test/tests/model.ts | 17 ++++++++++++++--- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/test/tests/io/io.test.ts b/test/tests/io/io.test.ts index 34a51796c..a19048f4f 100644 --- a/test/tests/io/io.test.ts +++ b/test/tests/io/io.test.ts @@ -2,8 +2,8 @@ import fs from 'fs'; import path from 'path'; import { expect } from 'chai'; import { Mat } from '@u4/opencv4nodejs'; -import { getTestContext } from '../model'; -import { assertDataDeepEquals, assertMetaData } from '../../utils/matTestUtils'; +import { getDirName, getTestContext } from '../model.js'; +import { assertDataDeepEquals, assertMetaData } from '../../utils/matTestUtils.js'; import { clearTmpData, fileExists, @@ -36,8 +36,8 @@ if (toTest.io) { before(() => { lenna = cv.imread(getLennaPngPath()); got = cv.imread(getGotJpgPath()); - const lennaBase64File = fs.readFileSync(path.join(__dirname, 'data/lennaBase64.json'), { encoding: 'utf8', flag: 'r' }); - const gotBase64File = fs.readFileSync(path.join(__dirname, 'data/gotBase64.json'), { encoding: 'utf8', flag: 'r' }); + const lennaBase64File = fs.readFileSync(path.join(getDirName(), 'data/lennaBase64.json'), { encoding: 'utf8', flag: 'r' }); + const gotBase64File = fs.readFileSync(path.join(getDirName(), 'data/gotBase64.json'), { encoding: 'utf8', flag: 'r' }); lennaBase64Buf = Buffer.from(JSON.parse(lennaBase64File).data, 'base64'); gotBase64Buf = Buffer.from(JSON.parse(gotBase64File).data, 'base64'); // imageData = fs.readFileSync(getTestImagePath(true)); diff --git a/test/tests/model.ts b/test/tests/model.ts index daa48544b..606773ca5 100644 --- a/test/tests/model.ts +++ b/test/tests/model.ts @@ -2,6 +2,7 @@ import { cv as realCV, Mat } from '@u4/opencv4nodejs'; import fs from 'fs'; import path from 'path'; import generateClassMethodTestsFactory from '../utils/generateClassMethodTests'; +import { fileURLToPath } from 'url'; export type OpenCV = typeof realCV @@ -43,6 +44,17 @@ const matTypeNames = [ 'CV_64FC1', 'CV_64FC2', 'CV_64FC3', 'CV_64FC4', ] as const; + +export function getDirName(): string { + if ('__dirname' in globalThis) { + return globalThis.__dirname; + } else { + // @ts-ignore + return fileURLToPath(new URL('.', import.meta.url)); + } +} + + export class TestContext { /** * lerna cached image @@ -65,8 +77,7 @@ export class TestContext { private maskLerna512?: Mat; public get dataPrefix(): string { - return path.join(__dirname, '..', '..', 'data'); -// return path.join(__dirname, 'io', 'data'); + return path.join(getDirName(), '..', '..', 'data'); } constructor(public cv: OpenCV) { @@ -75,7 +86,7 @@ export class TestContext { public getTestImg: () => Mat = () => { if (!this.lerna512) { - const file = path.resolve(__dirname, '../utils/Lenna.data'); + const file = path.resolve(getDirName(), '../utils/Lenna.data'); this.lerna512 = new this.cv.Mat(fs.readFileSync(file), 512, 512, this.cv.CV_8UC3); } return this.lerna512; From f9477c608b03374bbc007b67abcba35a3249f30b Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 13:13:16 +0200 Subject: [PATCH 23/50] regen types --- extra/meta.cjs | 13 +++++++++++++ extra/meta.mjs | 8 ++++++++ package.json | 4 +++- pnpm-lock.yaml | 34 +++++++++++++++++++++++++++++++++ src/lib/opencv4nodejs.ts | 1 + types/lib/cvloader.d.ts | 2 +- types/lib/meta.d.ts | 3 +++ types/lib/opencv4nodejs.d.ts | 5 +++-- types/lib/src/deprecations.d.ts | 2 +- types/lib/src/drawUtils.d.ts | 4 ++-- types/lib/src/index.d.ts | 2 +- types/lib/src/misc.d.ts | 4 ++-- 12 files changed, 72 insertions(+), 10 deletions(-) create mode 100644 extra/meta.cjs create mode 100644 extra/meta.mjs create mode 100644 types/lib/meta.d.ts diff --git a/extra/meta.cjs b/extra/meta.cjs new file mode 100644 index 000000000..0e1e1148c --- /dev/null +++ b/extra/meta.cjs @@ -0,0 +1,13 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.getRequire = exports.getDirName = void 0; + +function getDirName() { + return __dirname; +} +exports.getDirName = getDirName; + +function getRequire() { + return require; +} +exports.getRequire = getRequire; diff --git a/extra/meta.mjs b/extra/meta.mjs new file mode 100644 index 000000000..aecdf4ee8 --- /dev/null +++ b/extra/meta.mjs @@ -0,0 +1,8 @@ +import { createRequire } from 'node:module'; +import { fileURLToPath } from 'node:url'; +export function getDirName() { + return fileURLToPath(new URL('.', import.meta.url)); +} +export function getRequire() { + return createRequire(import.meta.url); +} diff --git a/package.json b/package.json index fbcc6ed88..9d215ae59 100644 --- a/package.json +++ b/package.json @@ -45,8 +45,9 @@ "module": "./esm/lib/opencv4nodejs.js", "typings": "./typings/index.d.ts", "scripts": { - "build": "tsc --pretty --project tsconfig.json && tsc --pretty --project tsconfig-esm.json", + "build": "tsc --pretty --project tsconfig.json && tsc --pretty --project tsconfig-esm.json && npm run copyfile", "build-types": "rimraf types && tsc --pretty --project tsconfig-types.json", + "copyfile": "shx cp extra/meta.mjs esm/lib/meta.js && shx cp extra/meta.cjs cjs/lib/meta.js", "prepack": "npm run build", "install_old": "node bin/install.js auto", "install_Mac": "CXXFLAGS=\"-std=c++17 -Wno-c++11-narrowing -Wno-c++17-extensions -Wno-c++17-attribute-extensions\" node ./bin/install.js --version 4.5.3 build", @@ -89,6 +90,7 @@ "eslint-plugin-react-hooks": "^4.6.0", "progress": "^2.0.3", "rimraf": "^5.0.5", + "shx": "^0.3.4", "typescript": "^5.4.5" }, "files": [ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7fc5972a0..0f2581edf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -64,6 +64,9 @@ devDependencies: rimraf: specifier: ^5.0.5 version: 5.0.5 + shx: + specifier: ^0.3.4 + version: 0.3.4 typescript: specifier: ^5.4.5 version: 5.4.5 @@ -1600,6 +1603,11 @@ packages: side-channel: 1.0.6 dev: true + /interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + dev: true + /ip-address@9.0.5: resolution: {integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==} engines: {node: '>= 12'} @@ -2303,6 +2311,13 @@ packages: resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} dev: true + /rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + dependencies: + resolve: 1.22.8 + dev: true + /reflect.getprototypeof@1.0.6: resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} engines: {node: '>= 0.4'} @@ -2456,6 +2471,25 @@ packages: resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} engines: {node: '>=8'} + /shelljs@0.8.5: + resolution: {integrity: sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==} + engines: {node: '>=4'} + hasBin: true + dependencies: + glob: 7.2.3 + interpret: 1.4.0 + rechoir: 0.6.2 + dev: true + + /shx@0.3.4: + resolution: {integrity: sha512-N6A9MLVqjxZYcVn8hLmtneQWIJtp8IKzMP4eMnx+nqkvXoqinUPCbUFLp2UcWTEIUONhlk0ewxr/jaVGlc+J+g==} + engines: {node: '>=6'} + hasBin: true + dependencies: + minimist: 1.2.8 + shelljs: 0.8.5 + dev: true + /side-channel@1.0.6: resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} engines: {node: '>= 0.4'} diff --git a/src/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts index fd38a6c84..c58db7969 100644 --- a/src/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -5,6 +5,7 @@ import extendWithJsSources from './src/index.js'; import { getOpenCV } from './cvloader.js'; import type * as openCV from '../../typings/index.js'; export type * as openCV from '../../typings/index.js'; +export { getDirName, getRequire } from "./meta.js" declare type OpenCVType = typeof openCV; diff --git a/types/lib/cvloader.d.ts b/types/lib/cvloader.d.ts index 51e79d8df..751795b29 100644 --- a/types/lib/cvloader.d.ts +++ b/types/lib/cvloader.d.ts @@ -1,5 +1,5 @@ import { type OpenCVBuildEnvParams } from '@u4/opencv-build'; -import type * as openCV from '../../typings/index'; +import type * as openCV from '../../typings/index.js'; declare type OpenCVType = typeof openCV; export declare function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType; export default getOpenCV; diff --git a/types/lib/meta.d.ts b/types/lib/meta.d.ts new file mode 100644 index 000000000..fbdc60b8d --- /dev/null +++ b/types/lib/meta.d.ts @@ -0,0 +1,3 @@ +/// +export declare function getDirName(): string; +export declare function getRequire(): NodeRequire; diff --git a/types/lib/opencv4nodejs.d.ts b/types/lib/opencv4nodejs.d.ts index d30f24cf9..ad18b1378 100644 --- a/types/lib/opencv4nodejs.d.ts +++ b/types/lib/opencv4nodejs.d.ts @@ -1,7 +1,8 @@ -import type * as openCV from '../../typings/index'; -export type * as openCV from '../../typings/index'; +import type * as openCV from '../../typings/index.js'; +export type * as openCV from '../../typings/index.js'; export declare const cv: typeof openCV; declare const defExport: { [key: string]: any; }; +export { getDirName, getRequire } from "./meta.js"; export default defExport; diff --git a/types/lib/src/deprecations.d.ts b/types/lib/src/deprecations.d.ts index ca2ce178e..d7c27d55e 100644 --- a/types/lib/src/deprecations.d.ts +++ b/types/lib/src/deprecations.d.ts @@ -1,2 +1,2 @@ -import type * as openCV from '../../../typings/index'; +import type * as openCV from '../../../typings/index.js'; export default function (cv: typeof openCV): void; diff --git a/types/lib/src/drawUtils.d.ts b/types/lib/src/drawUtils.d.ts index 2125e1e05..fc0660e24 100644 --- a/types/lib/src/drawUtils.d.ts +++ b/types/lib/src/drawUtils.d.ts @@ -1,5 +1,5 @@ -import type * as openCV from '../../../typings/index'; -import { Mat, Rect, Vec3 } from '../../../typings/index'; +import type * as openCV from '../../../typings/index.js'; +import { Mat, Rect, Vec3 } from '../../../typings/index.js'; export interface TextParams { fontType: number; fontSize: number; diff --git a/types/lib/src/index.d.ts b/types/lib/src/index.d.ts index 68e129c35..e3942e11d 100644 --- a/types/lib/src/index.d.ts +++ b/types/lib/src/index.d.ts @@ -1,2 +1,2 @@ -import * as OpenCV from '../../../typings/index'; +import * as OpenCV from '../../../typings/index.js'; export default function extendWithJsSources(cv: typeof OpenCV): typeof OpenCV; diff --git a/types/lib/src/misc.d.ts b/types/lib/src/misc.d.ts index 9156b494d..9d47b77ff 100644 --- a/types/lib/src/misc.d.ts +++ b/types/lib/src/misc.d.ts @@ -1,5 +1,5 @@ -import type * as openCV from '../../../typings/index'; -import type { Mat, Rect } from '../../../typings/index'; +import type * as openCV from '../../../typings/index.js'; +import type { Mat, Rect } from '../../../typings/index.js'; export declare const allTypes: readonly ["CV_8U", "CV_8S", "CV_16U", "CV_16S", "CV_32S", "CV_32F", "CV_64F", "CV_8UC1", "CV_8UC2", "CV_8UC3", "CV_8UC4", "CV_8SC1", "CV_8SC2", "CV_8SC3", "CV_8SC4", "CV_16UC1", "CV_16UC2", "CV_16UC3", "CV_16UC4", "CV_16SC1", "CV_16SC2", "CV_16SC3", "CV_16SC4", "CV_32SC1", "CV_32SC2", "CV_32SC3", "CV_32SC4", "CV_32FC1", "CV_32FC2", "CV_32FC3", "CV_32FC4", "CV_64FC1", "CV_64FC2", "CV_64FC3", "CV_64FC4"]; export type MatTypes = typeof allTypes[number]; /** From 35c52290df546910f26d4017aed8d11b9a6ec047 Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 13:15:11 +0200 Subject: [PATCH 24/50] prepare alpha-6 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9d215ae59..6eb69e50a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@u4/opencv4nodejs", - "version": "7.0.0-alpha-5", + "version": "7.0.0-alpha-6", "description": "Asynchronous OpenCV 3.x / 4.x nodejs bindings with JavaScript and TypeScript API.", "keywords": [ "opencv", From bdf32432e0b88f65210a41ee9ac5573befcbdc83 Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 14:53:16 +0200 Subject: [PATCH 25/50] ESM PASS --- test/.mocharc.json | 7 + test/package-lock.json | 1498 ------------------------- test/package.json | 14 +- test/pnpm-lock.yaml | 155 +-- test/tests/calib3d/MatCalib3d.test.ts | 10 +- test/tests/io/io.test.ts | 13 +- test/tests/model.ts | 17 +- test/tsconfig.json | 4 +- tsconfig.json | 4 + typings/index.d.ts | 1 + 10 files changed, 127 insertions(+), 1596 deletions(-) create mode 100644 test/.mocharc.json delete mode 100644 test/package-lock.json diff --git a/test/.mocharc.json b/test/.mocharc.json new file mode 100644 index 000000000..cb0f98149 --- /dev/null +++ b/test/.mocharc.json @@ -0,0 +1,7 @@ +{ + "timeout": "30000", + "node-option": [ + "experimental-specifier-resolution=node", + "loader=ts-node/esm" + ] +} \ No newline at end of file diff --git a/test/package-lock.json b/test/package-lock.json deleted file mode 100644 index 15b1e04d2..000000000 --- a/test/package-lock.json +++ /dev/null @@ -1,1498 +0,0 @@ -{ - "name": "opencv4nodejs_test", - "version": "1.1.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "opencv4nodejs_test", - "version": "1.1.0", - "license": "MIT", - "dependencies": { - "chai": "^4.2.0", - "istanbul": "^0.4.5", - "mocha": "^5.2.0" - }, - "devDependencies": { - "@types/chai": "^4.3.0", - "@types/mocha": "^9.1.0", - "rimraf": "^3.0.2", - "typescript": "^4.5.5" - } - }, - "node_modules/@types/chai": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz", - "integrity": "sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==", - "dev": true - }, - "node_modules/@types/mocha": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", - "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", - "dev": true - }, - "node_modules/abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=" - }, - "node_modules/align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "optional": true, - "dependencies": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "engines": { - "node": "*" - } - }, - "node_modules/async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "node_modules/brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" - }, - "node_modules/camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "optional": true, - "dependencies": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", - "engines": { - "node": "*" - } - }, - "node_modules/cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "optional": true, - "dependencies": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - } - }, - "node_modules/cliui/node_modules/wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "optional": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "node_modules/diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "dependencies": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=0.12.0" - }, - "optionalDependencies": { - "source-map": "~0.2.0" - } - }, - "node_modules/escodegen/node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/escodegen/node_modules/estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "node_modules/get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", - "engines": { - "node": "*" - } - }, - "node_modules/glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", - "engines": { - "node": ">=4.x" - } - }, - "node_modules/handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "dependencies": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^2.6" - } - }, - "node_modules/handlebars/node_modules/source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=", - "bin": { - "he": "bin/he" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "optional": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "node_modules/istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "deprecated": "This module is no longer maintained, try this instead:\n npm i nyc\nVisit https://istanbul.js.org/integrations for other alternatives.", - "dependencies": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "istanbul": "lib/cli.js" - } - }, - "node_modules/istanbul/node_modules/esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul/node_modules/glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "dependencies": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - } - }, - "node_modules/istanbul/node_modules/resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" - }, - "node_modules/istanbul/node_modules/supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "dependencies": { - "has-flag": "^1.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/js-yaml": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz", - "integrity": "sha512-0LoUNELX4S+iofCT8f4uEHIiRBR+c2AINyC8qRWfC6QNruLtxVZRJaPcu/xwMgFIgDxF25tGHaDjvxzJCNE9yw==", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "optional": true, - "dependencies": { - "is-buffer": "^1.1.5" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dependencies": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "node_modules/mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "deprecated": "Legacy versions of mkdirp are no longer supported. Please update to mkdirp 1.x. (Note that the API surface has changed to use Promises in 1.x.)", - "dependencies": { - "minimist": "0.0.8" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "dependencies": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/mocha/node_modules/debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/mocha/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "engines": { - "node": ">=4" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "node_modules/nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "dependencies": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - } - }, - "node_modules/optimist/node_modules/wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "dependencies": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=", - "engines": { - "node": "*" - } - }, - "node_modules/prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "optional": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "optional": true, - "dependencies": { - "align-text": "^0.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "optional": true, - "dependencies": { - "amdefine": ">=0.0.4" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "node_modules/type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dependencies": { - "prelude-ls": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "engines": { - "node": ">=4" - } - }, - "node_modules/typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "optional": true, - "dependencies": { - "source-map": "~0.5.1", - "yargs": "~3.10.0" - }, - "bin": { - "uglifyjs": "bin/uglifyjs" - }, - "engines": { - "node": ">=0.8.0" - }, - "optionalDependencies": { - "uglify-to-browserify": "~1.0.0" - } - }, - "node_modules/uglify-js/node_modules/source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "optional": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "optional": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "node_modules/yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "optional": true, - "dependencies": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - }, - "dependencies": { - "@types/chai": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.0.tgz", - "integrity": "sha512-/ceqdqeRraGolFTcfoXNiqjyQhZzbINDngeoAq9GoHa8PPK1yNzTaxWjA6BFWp5Ua9JpXEMSS4s5i9tS0hOJtw==", - "dev": true - }, - "@types/mocha": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-9.1.0.tgz", - "integrity": "sha512-QCWHkbMv4Y5U9oW10Uxbr45qMMSzl4OzijsozynUAgx3kEHUdXB00udx2dWDQ7f2TU2a2uuiFaRZjCe3unPpeg==", - "dev": true - }, - "abbrev": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.0.9.tgz", - "integrity": "sha1-kbR5JYinc4wl813W9jdSovh3YTU=" - }, - "align-text": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", - "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", - "optional": true, - "requires": { - "kind-of": "^3.0.2", - "longest": "^1.0.1", - "repeat-string": "^1.5.2" - } - }, - "amdefine": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", - "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" - }, - "argparse": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.9.tgz", - "integrity": "sha1-c9g7wmP4bpf4zE9rrhsOkKfSLIY=", - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==" - }, - "async": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", - "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" - }, - "brace-expansion": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", - "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" - }, - "camelcase": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", - "optional": true - }, - "center-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", - "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", - "optional": true, - "requires": { - "align-text": "^0.1.3", - "lazy-cache": "^1.0.3" - } - }, - "chai": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.2.0.tgz", - "integrity": "sha512-XQU3bhBukrOsQCuwZndwGcCVQHyZi53fQ6Ys1Fym7E4olpIqqZZhhoFJoaKVvV17lWQoXYwgWN2nF5crA8J2jw==", - "requires": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.2", - "deep-eql": "^3.0.1", - "get-func-name": "^2.0.0", - "pathval": "^1.1.0", - "type-detect": "^4.0.5" - } - }, - "check-error": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", - "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=" - }, - "cliui": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", - "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", - "optional": true, - "requires": { - "center-align": "^0.1.1", - "right-align": "^0.1.1", - "wordwrap": "0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", - "optional": true - } - } - }, - "commander": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.15.1.tgz", - "integrity": "sha512-VlfT9F3V0v+jr4yxPc5gg9s62/fIVWsd2Bk2iD435um1NlGMYdVCq+MjcXnhYq2icNOizHr1kK+5TI6H0Hy0ag==" - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "optional": true - }, - "deep-eql": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", - "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", - "requires": { - "type-detect": "^4.0.0" - } - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=" - }, - "diff": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", - "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==" - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" - }, - "escodegen": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.8.1.tgz", - "integrity": "sha1-WltTr0aTEQvrsIZ6o0MN07cKEBg=", - "requires": { - "esprima": "^2.7.1", - "estraverse": "^1.9.1", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.2.0" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" - }, - "estraverse": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.9.3.tgz", - "integrity": "sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q=" - } - } - }, - "esprima": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.0.tgz", - "integrity": "sha512-oftTcaMu/EGrEIu904mWteKIv8vMuOgGYo7EhVJJN00R/EED9DCua/xxHRdYnKtcECzVg7xOWhflvJMnqcFZjw==" - }, - "esutils": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.2.tgz", - "integrity": "sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs=" - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" - }, - "get-func-name": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", - "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=" - }, - "glob": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.2.tgz", - "integrity": "sha512-MJTUg1kjuLeQCJ+ccE4Vpa6kKVXkPYJ2mOCQyUuKLcLQsdrMCpBPUi8qVE6+YuaJkozeA9NusTAw3hLr8Xe5EQ==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==" - }, - "handlebars": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.11.tgz", - "integrity": "sha1-Ywo13+ApS8KB7a5v/F0yn8eYLcw=", - "requires": { - "async": "^1.4.0", - "optimist": "^0.6.1", - "source-map": "^0.4.4", - "uglify-js": "^2.6" - }, - "dependencies": { - "source-map": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", - "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", - "requires": { - "amdefine": ">=0.0.4" - } - } - } - }, - "has-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", - "integrity": "sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo=" - }, - "he": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/he/-/he-1.1.1.tgz", - "integrity": "sha1-k0EP0hsAlzUVH4howvJx80J+I/0=" - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "optional": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" - }, - "istanbul": { - "version": "0.4.5", - "resolved": "https://registry.npmjs.org/istanbul/-/istanbul-0.4.5.tgz", - "integrity": "sha1-ZcfXPUxNqE1POsMQuRj7C4Azczs=", - "requires": { - "abbrev": "1.0.x", - "async": "1.x", - "escodegen": "1.8.x", - "esprima": "2.7.x", - "glob": "^5.0.15", - "handlebars": "^4.0.1", - "js-yaml": "3.x", - "mkdirp": "0.5.x", - "nopt": "3.x", - "once": "1.x", - "resolve": "1.1.x", - "supports-color": "^3.1.0", - "which": "^1.1.1", - "wordwrap": "^1.0.0" - }, - "dependencies": { - "esprima": { - "version": "2.7.3", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", - "integrity": "sha1-luO3DVd59q1JzQMmc9HDEnZ7pYE=" - }, - "glob": { - "version": "5.0.15", - "resolved": "https://registry.npmjs.org/glob/-/glob-5.0.15.tgz", - "integrity": "sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E=", - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "resolve": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", - "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" - }, - "supports-color": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", - "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", - "requires": { - "has-flag": "^1.0.0" - } - } - } - }, - "js-yaml": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.9.0.tgz", - "integrity": "sha512-0LoUNELX4S+iofCT8f4uEHIiRBR+c2AINyC8qRWfC6QNruLtxVZRJaPcu/xwMgFIgDxF25tGHaDjvxzJCNE9yw==", - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - }, - "lazy-cache": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", - "optional": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "longest": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=" - }, - "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", - "requires": { - "minimist": "0.0.8" - } - }, - "mocha": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-5.2.0.tgz", - "integrity": "sha512-2IUgKDhc3J7Uug+FxMXuqIyYzH7gJjXECKe/w43IGgQHTSj3InJi+yAA7T24L9bQMRKiUEHxEX37G5JpVUGLcQ==", - "requires": { - "browser-stdout": "1.3.1", - "commander": "2.15.1", - "debug": "3.1.0", - "diff": "3.5.0", - "escape-string-regexp": "1.0.5", - "glob": "7.1.2", - "growl": "1.10.5", - "he": "1.1.1", - "minimatch": "3.0.4", - "mkdirp": "0.5.1", - "supports-color": "5.4.0" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "requires": { - "ms": "2.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" - }, - "supports-color": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.4.0.tgz", - "integrity": "sha512-zjaXglF5nnWpsq470jSv6P9DwPvgLkuapYmfDm3JWOm0vkNTVF2tI4UrN2r6jH1qM/uc/WtxYY1hYoA2dOKj5w==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" - }, - "nopt": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", - "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=", - "requires": { - "abbrev": "1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "requires": { - "wrappy": "1" - } - }, - "optimist": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", - "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", - "requires": { - "minimist": "~0.0.1", - "wordwrap": "~0.0.2" - }, - "dependencies": { - "wordwrap": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", - "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" - } - } - }, - "optionator": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", - "integrity": "sha1-NkxeQJ0/TWMB1sC0wFu6UBgK62Q=", - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.4", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "wordwrap": "~1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" - }, - "pathval": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz", - "integrity": "sha1-uULm1L3mUwBe9rcTYd74cn0GReA=" - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "optional": true - }, - "right-align": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", - "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", - "optional": true, - "requires": { - "align-text": "^0.1.1" - } - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, - "source-map": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.2.0.tgz", - "integrity": "sha1-2rc/vPwrqBm03gO9b26qSBZLP50=", - "optional": true, - "requires": { - "amdefine": ">=0.0.4" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=" - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" - }, - "typescript": { - "version": "4.5.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.5.5.tgz", - "integrity": "sha512-TCTIul70LyWe6IJWT8QSYeA54WQe8EjQFU4wY52Fasj5UKx88LNYKCgBEHcOMOrFF1rKGbD8v/xcNWVUq9SymA==", - "dev": true - }, - "uglify-js": { - "version": "2.8.29", - "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-2.8.29.tgz", - "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", - "optional": true, - "requires": { - "source-map": "~0.5.1", - "uglify-to-browserify": "~1.0.0", - "yargs": "~3.10.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "optional": true - } - } - }, - "uglify-to-browserify": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", - "integrity": "sha1-bgkk1r2mta/jSeOabWMoUKD4grc=", - "optional": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - }, - "window-size": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", - "optional": true - }, - "wordwrap": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", - "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" - }, - "yargs": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", - "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", - "optional": true, - "requires": { - "camelcase": "^1.0.2", - "cliui": "^2.1.0", - "decamelize": "^1.0.0", - "window-size": "0.1.0" - } - } - } -} diff --git a/test/package.json b/test/package.json index ab7b6bf3c..54f73e514 100644 --- a/test/package.json +++ b/test/package.json @@ -1,13 +1,14 @@ { "name": "opencv4nodejs_test", "version": "1.1.0", + "type": "module", "scripts": { - "test": "mocha -r ts-node/register --timeout 30000 ./tests/**/*.test.ts", - "test2": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha -r ts-node/register 'tests/**/*.test.ts'", - "test3": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha -r ts-node/register 'tests/**/simple.test.ts'", - "testIO": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha -r ts-node/register 'tests/io/**/*.ts'", - "testIOIO": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha -r ts-node/register 'tests/io/io.test.ts'", - "testCore": "env TS_NODE_COMPILER_OPTIONS='{\"module\": \"commonjs\" }' mocha -r ts-node/register 'tests/core/core.test.ts'", + "test": "ts-mocha ./tests/**/*.test.ts", + "test2": "ts-mocha 'tests/**/*.test.ts'", + "test3": "ts-mocha 'tests/**/simple.test.ts'", + "testIO": "ts-mocha 'tests/io/**/*.ts'", + "testIOIO": "ts-mocha 'tests/io/io.test.ts'", + "testCore": "ts-mocha 'tests/core/core.test.ts'", "test-appveyor": "set APPVEYOR_BUILD=true && mocha -r ts-node/register --timeout 30000 ./tests/**/*.test.ts", "test-docker": "DOCKER_BUILD=true mocha -r ts-node/register --timeout 60000 ./tests/**/*.test.ts", "test-externalMemTrackingOther": "mocha -r ts-node/register --timeout 30000 ./externalMemTracking/other/index.test.ts", @@ -33,6 +34,7 @@ "@types/node": "^20.12.7", "chai-arrays": "^2.2.0", "rimraf": "^5.0.5", + "ts-mocha": "^10.0.0", "ts-node": "^10.9.2", "typescript": "^5.4.5" } diff --git a/test/pnpm-lock.yaml b/test/pnpm-lock.yaml index 26d770763..64d4bb554 100644 --- a/test/pnpm-lock.yaml +++ b/test/pnpm-lock.yaml @@ -37,6 +37,9 @@ devDependencies: rimraf: specifier: ^5.0.5 version: 5.0.5 + ts-mocha: + specifier: ^10.0.0 + version: 10.0.0(mocha@10.4.0) ts-node: specifier: ^10.9.2 version: 10.9.2(@types/node@20.12.7)(typescript@5.4.5) @@ -114,6 +117,12 @@ packages: resolution: {integrity: sha512-Wj71sXE4Q4AkGdG9Tvq1u/fquNz9EdG4LIJMwVVII7ashjD/8cf8fyIfJAjRr6YcsXnSE8cOGQPq1gqeR8z+3w==} dev: true + /@types/json5@0.0.29: + resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} + requiresBuild: true + dev: true + optional: true + /@types/mocha@10.0.6: resolution: {integrity: sha512-dJvrYWxP/UcXm36Qn36fxhUKu8A/xMRXVT2cliFF1Z7UA9liG5Psj3ezNSZw+5puH2czDXRLcXQxf8JbJt0ejg==} dev: true @@ -149,7 +158,6 @@ packages: /ansi-colors@4.1.1: resolution: {integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==} engines: {node: '>=6'} - dev: false /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -177,7 +185,6 @@ packages: dependencies: normalize-path: 3.0.0 picomatch: 2.3.1 - dev: false /arg@4.1.3: resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} @@ -191,7 +198,11 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: false + + /arrify@1.0.1: + resolution: {integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==} + engines: {node: '>=0.10.0'} + dev: true /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} @@ -207,7 +218,6 @@ packages: /binary-extensions@2.3.0: resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==} engines: {node: '>=8'} - dev: false /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -226,16 +236,17 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: false /browser-stdout@1.3.1: resolution: {integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==} - dev: false + + /buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + dev: true /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - dev: false /chai-arrays@2.2.0: resolution: {integrity: sha512-4awrdGI2EH8owJ9I58PXwG4N56/FiM8bsn4CVSNEgr4GKAM6Kq5JPVApUbhUBjDakbZNuRvV7quRSC38PWq/tg==} @@ -261,7 +272,6 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: false /check-error@1.0.3: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} @@ -282,7 +292,6 @@ packages: readdirp: 3.6.0 optionalDependencies: fsevents: 2.3.3 - dev: false /cliui@7.0.4: resolution: {integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==} @@ -290,7 +299,6 @@ packages: string-width: 4.2.3 strip-ansi: 6.0.1 wrap-ansi: 7.0.0 - dev: false /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -329,12 +337,10 @@ packages: dependencies: ms: 2.1.2 supports-color: 8.1.1 - dev: false /decamelize@4.0.0: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} - dev: false /deep-eql@4.1.3: resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} @@ -347,6 +353,11 @@ packages: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} dev: false + /diff@3.5.0: + resolution: {integrity: sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==} + engines: {node: '>=0.3.1'} + dev: true + /diff@4.0.2: resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} engines: {node: '>=0.3.1'} @@ -355,7 +366,6 @@ packages: /diff@5.0.0: resolution: {integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==} engines: {node: '>=0.3.1'} - dev: false /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -371,12 +381,10 @@ packages: /escalade@3.1.2: resolution: {integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==} engines: {node: '>=6'} - dev: false /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - dev: false /escodegen@1.8.1: resolution: {integrity: sha512-yhi5S+mNTOuRvyW4gWlg5W1byMaQGWWSYHXsuFZ7GBo7tpyOwi2EdzMP/QWxh9hwkD2m+wDVHJsxhRIj+v/b/A==} @@ -422,7 +430,6 @@ packages: engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: false /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -430,12 +437,10 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: false /flat@5.0.2: resolution: {integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==} hasBin: true - dev: false /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} @@ -447,20 +452,17 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - dev: false /fsevents@2.3.3: resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true - dev: false optional: true /get-caller-file@2.0.5: resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} engines: {node: 6.* || 8.* || >= 10.*} - dev: false /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} @@ -471,7 +473,6 @@ packages: engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: false /glob@10.3.12: resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} @@ -504,7 +505,6 @@ packages: inherits: 2.0.4 minimatch: 5.0.1 once: 1.4.0 - dev: false /handlebars@4.7.8: resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} @@ -527,35 +527,29 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: false /he@1.2.0: resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} hasBin: true - dev: false /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} dependencies: once: 1.4.0 wrappy: 1.0.2 - dev: false /inherits@2.0.4: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} - dev: false /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} engines: {node: '>=8'} dependencies: binary-extensions: 2.3.0 - dev: false /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: false /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} @@ -566,22 +560,18 @@ packages: engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: false /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: false /is-plain-obj@2.1.0: resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==} engines: {node: '>=8'} - dev: false /is-unicode-supported@0.1.0: resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} engines: {node: '>=10'} - dev: false /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -632,7 +622,15 @@ packages: hasBin: true dependencies: argparse: 2.0.1 - dev: false + + /json5@1.0.2: + resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} + hasBin: true + requiresBuild: true + dependencies: + minimist: 1.2.8 + dev: true + optional: true /levn@0.3.0: resolution: {integrity: sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==} @@ -647,7 +645,6 @@ packages: engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: false /log-symbols@4.1.0: resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} @@ -655,7 +652,6 @@ packages: dependencies: chalk: 4.1.2 is-unicode-supported: 0.1.0 - dev: false /loupe@2.3.7: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} @@ -683,7 +679,6 @@ packages: engines: {node: '>=10'} dependencies: brace-expansion: 2.0.1 - dev: false /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} @@ -694,7 +689,6 @@ packages: /minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} - dev: false /minipass@7.0.4: resolution: {integrity: sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==} @@ -706,7 +700,6 @@ packages: hasBin: true dependencies: minimist: 1.2.8 - dev: false /mocha@10.4.0: resolution: {integrity: sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==} @@ -733,15 +726,12 @@ packages: yargs: 16.2.0 yargs-parser: 20.2.4 yargs-unparser: 2.0.0 - dev: false /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - dev: false /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: false /neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} @@ -757,13 +747,11 @@ packages: /normalize-path@3.0.0: resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} engines: {node: '>=0.10.0'} - dev: false /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: wrappy: 1.0.2 - dev: false /optionator@0.8.3: resolution: {integrity: sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==} @@ -782,19 +770,16 @@ packages: engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - dev: false /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: false /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: false /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} @@ -821,7 +806,6 @@ packages: /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: false /prelude-ls@1.1.2: resolution: {integrity: sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==} @@ -832,19 +816,16 @@ packages: resolution: {integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==} dependencies: safe-buffer: 5.2.1 - dev: false /readdirp@3.6.0: resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} engines: {node: '>=8.10.0'} dependencies: picomatch: 2.3.1 - dev: false /require-directory@2.1.1: resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} engines: {node: '>=0.10.0'} - dev: false /resolve@1.1.7: resolution: {integrity: sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==} @@ -860,13 +841,11 @@ packages: /safe-buffer@5.2.1: resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} - dev: false /serialize-javascript@6.0.0: resolution: {integrity: sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==} dependencies: randombytes: 2.1.0 - dev: false /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} @@ -885,6 +864,13 @@ packages: engines: {node: '>=14'} dev: true + /source-map-support@0.5.21: + resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==} + dependencies: + buffer-from: 1.1.2 + source-map: 0.6.1 + dev: true + /source-map@0.2.0: resolution: {integrity: sha512-CBdZ2oa/BHhS4xj5DlhjWNHcan57/5YuvfdLf17iVmIpd9KRm+DFLmC6nBNj+6Ua7Kt3TmOjDpQT1aTYOQtoUA==} engines: {node: '>=0.8.0'} @@ -897,7 +883,6 @@ packages: /source-map@0.6.1: resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} engines: {node: '>=0.10.0'} - dev: false /sprintf-js@1.0.3: resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} @@ -933,10 +918,16 @@ packages: ansi-regex: 6.0.1 dev: true + /strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + requiresBuild: true + dev: true + optional: true + /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - dev: false /supports-color@3.2.3: resolution: {integrity: sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==} @@ -950,21 +941,31 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: false /supports-color@8.1.1: resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} engines: {node: '>=10'} dependencies: has-flag: 4.0.0 - dev: false /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: false + + /ts-mocha@10.0.0(mocha@10.4.0): + resolution: {integrity: sha512-VRfgDO+iiuJFlNB18tzOfypJ21xn2xbuZyDvJvqpTbWgkAgD17ONGr8t+Tl8rcBtOBdjXp5e/Rk+d39f7XBHRw==} + engines: {node: '>= 6.X.X'} + hasBin: true + peerDependencies: + mocha: ^3.X.X || ^4.X.X || ^5.X.X || ^6.X.X || ^7.X.X || ^8.X.X || ^9.X.X || ^10.X.X + dependencies: + mocha: 10.4.0 + ts-node: 7.0.1 + optionalDependencies: + tsconfig-paths: 3.15.0 + dev: true /ts-node@10.9.2(@types/node@20.12.7)(typescript@5.4.5): resolution: {integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==} @@ -997,6 +998,32 @@ packages: yn: 3.1.1 dev: true + /ts-node@7.0.1: + resolution: {integrity: sha512-BVwVbPJRspzNh2yfslyT1PSbl5uIk03EZlb493RKHN4qej/D06n1cEhjlOJG69oFsE7OT8XjpTUcYf6pKTLMhw==} + engines: {node: '>=4.2.0'} + hasBin: true + dependencies: + arrify: 1.0.1 + buffer-from: 1.1.2 + diff: 3.5.0 + make-error: 1.3.6 + minimist: 1.2.8 + mkdirp: 0.5.6 + source-map-support: 0.5.21 + yn: 2.0.0 + dev: true + + /tsconfig-paths@3.15.0: + resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} + requiresBuild: true + dependencies: + '@types/json5': 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: true + optional: true + /type-check@0.3.2: resolution: {integrity: sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==} engines: {node: '>= 0.8.0'} @@ -1057,7 +1084,6 @@ packages: /workerpool@6.2.1: resolution: {integrity: sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==} - dev: false /wrap-ansi@7.0.0: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} @@ -1078,17 +1104,14 @@ packages: /wrappy@1.0.2: resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} - dev: false /y18n@5.0.8: resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} engines: {node: '>=10'} - dev: false /yargs-parser@20.2.4: resolution: {integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==} engines: {node: '>=10'} - dev: false /yargs-unparser@2.0.0: resolution: {integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==} @@ -1098,7 +1121,6 @@ packages: decamelize: 4.0.0 flat: 5.0.2 is-plain-obj: 2.1.0 - dev: false /yargs@16.2.0: resolution: {integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==} @@ -1111,7 +1133,11 @@ packages: string-width: 4.2.3 y18n: 5.0.8 yargs-parser: 20.2.4 - dev: false + + /yn@2.0.0: + resolution: {integrity: sha512-uTv8J/wiWTgUTg+9vLTi//leUl5vDQS6uii/emeTb2ssY7vl6QWf2fFbIIGjnhjvbdKlU0ed7QPgY1htTC86jQ==} + engines: {node: '>=4'} + dev: true /yn@3.1.1: resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} @@ -1121,4 +1147,3 @@ packages: /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: false diff --git a/test/tests/calib3d/MatCalib3d.test.ts b/test/tests/calib3d/MatCalib3d.test.ts index db21b0b96..c16afeeef 100644 --- a/test/tests/calib3d/MatCalib3d.test.ts +++ b/test/tests/calib3d/MatCalib3d.test.ts @@ -2,11 +2,11 @@ import { expect } from 'chai'; import { CalibrationMatrixValues, CorrectMatchesRet, DecomposeEssentialMatRet, DecomposeHomographyMatRet, DecomposeProjectionMatrixRet, Mat, OptimalNewCameraMatrix, RqDecomp3x3Ret, StereoRectify, Vec3, } from '@u4/opencv4nodejs'; -import { getTestContext } from '../model'; -import { assertMetaData } from '../../utils/matTestUtils'; -import { expectToBeVec2, expectToBeVec3, expectToBeVec4 } from '../../utils/testUtils'; -import { generateAPITests } from '../../utils/generateAPITests'; -import toTest from '../toTest'; +import { getTestContext } from '../model.js'; +import { assertMetaData } from '../../utils/matTestUtils.js'; +import { expectToBeVec2, expectToBeVec3, expectToBeVec4 } from '../../utils/testUtils.js'; +import { generateAPITests } from '../../utils/generateAPITests.js'; +import toTest from '../toTest.js'; if (toTest.calib3d) { const { diff --git a/test/tests/io/io.test.ts b/test/tests/io/io.test.ts index a19048f4f..496196575 100644 --- a/test/tests/io/io.test.ts +++ b/test/tests/io/io.test.ts @@ -2,7 +2,8 @@ import fs from 'fs'; import path from 'path'; import { expect } from 'chai'; import { Mat } from '@u4/opencv4nodejs'; -import { getDirName, getTestContext } from '../model.js'; +import { getDirName } from '@u4/opencv4nodejs'; +import { getTestContext } from '../model.js'; import { assertDataDeepEquals, assertMetaData } from '../../utils/matTestUtils.js'; import { clearTmpData, @@ -11,9 +12,9 @@ import { getTmpDataFilePath, _asyncFuncShouldRequireArgs, } - from '../../utils/testUtils'; -import { generateAPITests } from '../../utils/generateAPITests'; -import toTest from '../toTest'; + from '../../utils/testUtils.js'; +import { generateAPITests } from '../../utils/generateAPITests.js'; +import toTest from '../toTest.js'; if (toTest.io) { const { @@ -36,8 +37,8 @@ if (toTest.io) { before(() => { lenna = cv.imread(getLennaPngPath()); got = cv.imread(getGotJpgPath()); - const lennaBase64File = fs.readFileSync(path.join(getDirName(), 'data/lennaBase64.json'), { encoding: 'utf8', flag: 'r' }); - const gotBase64File = fs.readFileSync(path.join(getDirName(), 'data/gotBase64.json'), { encoding: 'utf8', flag: 'r' }); + const lennaBase64File = fs.readFileSync(path.join(getDirName(), '../../test/tests/io/data/lennaBase64.json'), { encoding: 'utf8', flag: 'r' }); + const gotBase64File = fs.readFileSync(path.join(getDirName(), '../../test/tests/io/data/gotBase64.json'), { encoding: 'utf8', flag: 'r' }); lennaBase64Buf = Buffer.from(JSON.parse(lennaBase64File).data, 'base64'); gotBase64Buf = Buffer.from(JSON.parse(gotBase64File).data, 'base64'); // imageData = fs.readFileSync(getTestImagePath(true)); diff --git a/test/tests/model.ts b/test/tests/model.ts index 606773ca5..36b8be614 100644 --- a/test/tests/model.ts +++ b/test/tests/model.ts @@ -1,8 +1,8 @@ import { cv as realCV, Mat } from '@u4/opencv4nodejs'; import fs from 'fs'; import path from 'path'; -import generateClassMethodTestsFactory from '../utils/generateClassMethodTests'; -import { fileURLToPath } from 'url'; +import { getDirName } from '@u4/opencv4nodejs'; +import generateClassMethodTestsFactory from '../utils/generateClassMethodTests.js'; export type OpenCV = typeof realCV @@ -44,17 +44,6 @@ const matTypeNames = [ 'CV_64FC1', 'CV_64FC2', 'CV_64FC3', 'CV_64FC4', ] as const; - -export function getDirName(): string { - if ('__dirname' in globalThis) { - return globalThis.__dirname; - } else { - // @ts-ignore - return fileURLToPath(new URL('.', import.meta.url)); - } -} - - export class TestContext { /** * lerna cached image @@ -86,7 +75,7 @@ export class TestContext { public getTestImg: () => Mat = () => { if (!this.lerna512) { - const file = path.resolve(getDirName(), '../utils/Lenna.data'); + const file = path.resolve(getDirName(), '../../test/utils/Lenna.data'); this.lerna512 = new this.cv.Mat(fs.readFileSync(file), 512, 512, this.cv.CV_8UC3); } return this.lerna512; diff --git a/test/tsconfig.json b/test/tsconfig.json index 53d393b73..d8703507a 100644 --- a/test/tsconfig.json +++ b/test/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { - "target": "es2016", - "module": "commonjs", + "target": "ES2022", + "module": "ES2022", "moduleResolution": "node", "esModuleInterop": true, "forceConsistentCasingInFileNames": true, diff --git a/tsconfig.json b/tsconfig.json index 5fd4b4ac3..6f4f81dba 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -8,4 +8,8 @@ "outDir": "cjs", "moduleResolution": "Node10", }, + "include": [ + "./**/*.ts", + "../install/*.ts", + "../lib/**/*.ts" ] } diff --git a/typings/index.d.ts b/typings/index.d.ts index 4ec8f8743..8405073d8 100644 --- a/typings/index.d.ts +++ b/typings/index.d.ts @@ -2,3 +2,4 @@ import * as allOpenCV from './openCV'; export * from './openCV'; export declare const cv: typeof allOpenCV; export default cv; +export { getDirName, getRequire } from "../types/lib/meta.js"; From 4231f24e3925e39e484f84d142114376ce0ffba7 Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 14:59:06 +0200 Subject: [PATCH 26/50] update chai 5 --- test/package.json | 3 +-- test/pnpm-lock.yaml | 54 +++++++++++++++++++-------------------------- 2 files changed, 24 insertions(+), 33 deletions(-) diff --git a/test/package.json b/test/package.json index 54f73e514..8c34498bc 100644 --- a/test/package.json +++ b/test/package.json @@ -23,12 +23,11 @@ "license": "MIT", "dependencies": { "@u4/opencv4nodejs": "link:..", - "chai": "^4.4.1", + "chai": "^5.1.0", "istanbul": "^0.4.5", "mocha": "^10.4.0" }, "devDependencies": { - "@types/chai": "^4.3.14", "@types/chai-arrays": "^2.0.3", "@types/mocha": "^10.0.6", "@types/node": "^20.12.7", diff --git a/test/pnpm-lock.yaml b/test/pnpm-lock.yaml index 64d4bb554..9bab65114 100644 --- a/test/pnpm-lock.yaml +++ b/test/pnpm-lock.yaml @@ -9,8 +9,8 @@ dependencies: specifier: link:.. version: link:.. chai: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^5.1.0 + version: 5.1.0 istanbul: specifier: ^0.4.5 version: 0.4.5 @@ -204,8 +204,9 @@ packages: engines: {node: '>=0.10.0'} dev: true - /assertion-error@1.1.0: - resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + /assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} dev: false /async@1.5.2: @@ -253,17 +254,15 @@ packages: engines: {node: '>=0.10'} dev: true - /chai@4.4.1: - resolution: {integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==} - engines: {node: '>=4'} + /chai@5.1.0: + resolution: {integrity: sha512-kDZ7MZyM6Q1DhR9jy7dalKohXQ2yrlXkk59CR52aRKxJrobmlBNqnFQxX9xOX8w+4mz8SYlKJa/7D7ddltFXCw==} + engines: {node: '>=12'} dependencies: - assertion-error: 1.1.0 - check-error: 1.0.3 - deep-eql: 4.1.3 - get-func-name: 2.0.2 - loupe: 2.3.7 - pathval: 1.1.1 - type-detect: 4.0.8 + assertion-error: 2.0.1 + check-error: 2.0.0 + deep-eql: 5.0.1 + loupe: 3.1.0 + pathval: 2.0.0 dev: false /chalk@4.1.2: @@ -273,10 +272,9 @@ packages: ansi-styles: 4.3.0 supports-color: 7.2.0 - /check-error@1.0.3: - resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} - dependencies: - get-func-name: 2.0.2 + /check-error@2.0.0: + resolution: {integrity: sha512-tjLAOBHKVxtPoHe/SA7kNOMvhCRdCJ3vETdeY0RuAc9popf+hyaSV6ZEg9hr4cpWF7jmo/JSWEnLDrnijS9Tog==} + engines: {node: '>= 16'} dev: false /chokidar@3.5.3: @@ -342,11 +340,9 @@ packages: resolution: {integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==} engines: {node: '>=10'} - /deep-eql@4.1.3: - resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==} + /deep-eql@5.0.1: + resolution: {integrity: sha512-nwQCf6ne2gez3o1MxWifqkciwt0zhl0LO1/UwVu4uMBuPmflWM4oQ70XMqHqnBJA+nhzncaqL9HVL6KkHJ28lw==} engines: {node: '>=6'} - dependencies: - type-detect: 4.0.8 dev: false /deep-is@0.1.4: @@ -653,8 +649,8 @@ packages: chalk: 4.1.2 is-unicode-supported: 0.1.0 - /loupe@2.3.7: - resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} + /loupe@3.1.0: + resolution: {integrity: sha512-qKl+FrLXUhFuHUoDJG7f8P8gEMHq9NFS0c6ghXG1J0rldmZFQZoNVv/vyirE9qwCIhWZDsvEFd1sbFu3GvRQFg==} dependencies: get-func-name: 2.0.2 dev: false @@ -799,8 +795,9 @@ packages: minipass: 7.0.4 dev: true - /pathval@1.1.1: - resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + /pathval@2.0.0: + resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==} + engines: {node: '>= 14.16'} dev: false /picomatch@2.3.1: @@ -1031,11 +1028,6 @@ packages: prelude-ls: 1.1.2 dev: false - /type-detect@4.0.8: - resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} - engines: {node: '>=4'} - dev: false - /typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} From 4d764eff786b16a61e2c8d8367e1e5ac45c74c2a Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 15:04:22 +0200 Subject: [PATCH 27/50] updare deps --- package.json | 6 +-- pnpm-lock.yaml | 108 ++++++++++++++++++++++---------------------- test/pnpm-lock.yaml | 3 -- tsconfig.json | 6 +-- 4 files changed, 58 insertions(+), 65 deletions(-) diff --git a/package.json b/package.json index 6eb69e50a..011b203a4 100644 --- a/package.json +++ b/package.json @@ -78,8 +78,8 @@ "devDependencies": { "@types/node": "^20.12.7", "@types/progress": "^2.0.7", - "@typescript-eslint/eslint-plugin": "^7.7.0", - "@typescript-eslint/parser": "^7.7.0", + "@typescript-eslint/eslint-plugin": "^7.7.1", + "@typescript-eslint/parser": "^7.7.1", "axios": "^1.6.8", "cross-env": "^7.0.3", "eslint": "^8.57.0", @@ -87,7 +87,7 @@ "eslint-plugin-import": "^2.29.1", "eslint-plugin-jsx-a11y": "^6.8.0", "eslint-plugin-react": "^7.34.1", - "eslint-plugin-react-hooks": "^4.6.0", + "eslint-plugin-react-hooks": "^4.6.2", "progress": "^2.0.3", "rimraf": "^5.0.5", "shx": "^0.3.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 0f2581edf..e1d4bd01a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -29,11 +29,11 @@ devDependencies: specifier: ^2.0.7 version: 2.0.7 '@typescript-eslint/eslint-plugin': - specifier: ^7.7.0 - version: 7.7.0(@typescript-eslint/parser@7.7.0)(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.7.1 + version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5) '@typescript-eslint/parser': - specifier: ^7.7.0 - version: 7.7.0(eslint@8.57.0)(typescript@5.4.5) + specifier: ^7.7.1 + version: 7.7.1(eslint@8.57.0)(typescript@5.4.5) axios: specifier: ^1.6.8 version: 1.6.8 @@ -45,10 +45,10 @@ devDependencies: version: 8.57.0 eslint-config-airbnb: specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.34.1)(eslint@8.57.0) + version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.1)(eslint@8.57.0) eslint-plugin-import: specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.7.0)(eslint@8.57.0) + version: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: specifier: ^6.8.0 version: 6.8.0(eslint@8.57.0) @@ -56,8 +56,8 @@ devDependencies: specifier: ^7.34.1 version: 7.34.1(eslint@8.57.0) eslint-plugin-react-hooks: - specifier: ^4.6.0 - version: 4.6.0(eslint@8.57.0) + specifier: ^4.6.2 + version: 4.6.2(eslint@8.57.0) progress: specifier: ^2.0.3 version: 2.0.3 @@ -235,8 +235,8 @@ packages: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: true - /@typescript-eslint/eslint-plugin@7.7.0(@typescript-eslint/parser@7.7.0)(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-GJWR0YnfrKnsRoluVO3PRb9r5aMZriiMMM/RHj5nnTrBy1/wIgk76XCtCKcnXGjpZQJQRFtGV9/0JJ6n30uwpQ==} + /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -247,11 +247,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/type-utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/type-utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 eslint: 8.57.0 graphemer: 1.4.0 @@ -264,8 +264,8 @@ packages: - supports-color dev: true - /@typescript-eslint/parser@7.7.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-fNcDm3wSwVM8QYL4HKVBggdIPAy9Q41vcvC/GtDobw3c4ndVT3K6cqudUmjHPw8EAp4ufax0o58/xvWaP2FmTg==} + /@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -274,10 +274,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 eslint: 8.57.0 typescript: 5.4.5 @@ -285,16 +285,16 @@ packages: - supports-color dev: true - /@typescript-eslint/scope-manager@7.7.0: - resolution: {integrity: sha512-/8INDn0YLInbe9Wt7dK4cXLDYp0fNHP5xKLHvZl3mOT5X17rK/YShXaiNmorl+/U4VKCVIjJnx4Ri5b0y+HClw==} + /@typescript-eslint/scope-manager@7.7.1: + resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 dev: true - /@typescript-eslint/type-utils@7.7.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-bOp3ejoRYrhAlnT/bozNQi3nio9tIgv3U5C0mVDdZC7cpcQEDZXvq8inrHYghLVwuNABRqrMW5tzAv88Vy77Sg==} + /@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -303,8 +303,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) debug: 4.3.4 eslint: 8.57.0 ts-api-utils: 1.3.0(typescript@5.4.5) @@ -313,13 +313,13 @@ packages: - supports-color dev: true - /@typescript-eslint/types@7.7.0: - resolution: {integrity: sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==} + /@typescript-eslint/types@7.7.1: + resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} engines: {node: ^18.18.0 || >=20.0.0} dev: true - /@typescript-eslint/typescript-estree@7.7.0(typescript@5.4.5): - resolution: {integrity: sha512-8p71HQPE6CbxIBy2kWHqM1KGrC07pk6RJn40n0DSc6bMOBBREZxSDJ+BmRzc8B5OdaMh1ty3mkuWRg4sCFiDQQ==} + /@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5): + resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -327,8 +327,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/visitor-keys': 7.7.0 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -340,8 +340,8 @@ packages: - supports-color dev: true - /@typescript-eslint/utils@7.7.0(eslint@8.57.0)(typescript@5.4.5): - resolution: {integrity: sha512-LKGAXMPQs8U/zMRFXDZOzmMKgFv3COlxUQ+2NMPhbqgVm6R1w+nU1i4836Pmxu9jZAuIeyySNrN/6Rc657ggig==} + /@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): + resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -349,9 +349,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.7.0 - '@typescript-eslint/types': 7.7.0 - '@typescript-eslint/typescript-estree': 7.7.0(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.7.1 + '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) eslint: 8.57.0 semver: 7.6.0 transitivePeerDependencies: @@ -359,11 +359,11 @@ packages: - typescript dev: true - /@typescript-eslint/visitor-keys@7.7.0: - resolution: {integrity: sha512-h0WHOj8MhdhY8YWkzIF30R379y0NqyOHExI9N9KCzvmu05EgG4FumeYa3ccfKUSphyWkWQE1ybVrgz/Pbam6YA==} + /@typescript-eslint/visitor-keys@7.7.1: + resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.7.0 + '@typescript-eslint/types': 7.7.1 eslint-visitor-keys: 3.4.3 dev: true @@ -985,13 +985,13 @@ packages: dependencies: confusing-browser-globals: 1.0.11 eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.8 semver: 6.3.1 dev: true - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.0)(eslint-plugin-react@7.34.1)(eslint@8.57.0): + /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.1)(eslint@8.57.0): resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: @@ -1003,10 +1003,10 @@ packages: dependencies: eslint: 8.57.0 eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.0)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0) eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) eslint-plugin-react: 7.34.1(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.0(eslint@8.57.0) + eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) object.assign: 4.1.5 object.entries: 1.1.8 dev: true @@ -1021,7 +1021,7 @@ packages: - supports-color dev: true - /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} engines: {node: '>=4'} peerDependencies: @@ -1042,7 +1042,7 @@ packages: eslint-import-resolver-webpack: optional: true dependencies: - '@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) debug: 3.2.7 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 @@ -1050,7 +1050,7 @@ packages: - supports-color dev: true - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.0)(eslint@8.57.0): + /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0): resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} engines: {node: '>=4'} peerDependencies: @@ -1060,7 +1060,7 @@ packages: '@typescript-eslint/parser': optional: true dependencies: - '@typescript-eslint/parser': 7.7.0(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 array.prototype.flat: 1.3.2 @@ -1069,7 +1069,7 @@ packages: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.0)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -1110,8 +1110,8 @@ packages: object.fromentries: 2.0.8 dev: true - /eslint-plugin-react-hooks@4.6.0(eslint@8.57.0): - resolution: {integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==} + /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): + resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} engines: {node: '>=10'} peerDependencies: eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 diff --git a/test/pnpm-lock.yaml b/test/pnpm-lock.yaml index 9bab65114..1a1d4b8a6 100644 --- a/test/pnpm-lock.yaml +++ b/test/pnpm-lock.yaml @@ -19,9 +19,6 @@ dependencies: version: 10.4.0 devDependencies: - '@types/chai': - specifier: ^4.3.14 - version: 4.3.14 '@types/chai-arrays': specifier: ^2.0.3 version: 2.0.3 diff --git a/tsconfig.json b/tsconfig.json index 6f4f81dba..61490aed8 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -7,9 +7,5 @@ // "declarationDir": "types", "outDir": "cjs", "moduleResolution": "Node10", - }, - "include": [ - "./**/*.ts", - "../install/*.ts", - "../lib/**/*.ts" ] + } } From 83959ad441cadbf8f714a8201eceda53d943e76c Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 16:22:54 +0200 Subject: [PATCH 28/50] update eslint + lint --- .eslintrc | 39 - eslint.config.mjs | 35 + examples/src/EASTTextDetection.ts | 7 +- examples/src/OCRTools.ts | 10 +- examples/src/asyncMatchFeatures.ts | 10 +- examples/src/dnn/ssdUtils.ts | 6 +- .../dnnDarknetYOLORealTimeObjectDetection.ts | 2 +- examples/src/dnnSSDCoco.ts | 2 +- examples/src/dnnTensorflowInception.ts | 2 +- examples/src/faceRecognition1.ts | 4 +- examples/src/handGestureRecognition0.ts | 16 +- examples/src/machineLearningOCR.ts | 5 +- examples/src/matchFeatures.ts | 4 +- examples/src/ocrHMMCharacters.ts | 2 +- examples/src/simpleTracking1.ts | 2 +- .../src/templateMatch/templateMatching.ts | 2 +- examples/src/utils.ts | 5 +- package.json | 13 +- pnpm-lock.yaml | 1533 +++-------------- src/lib/src/drawUtils.ts | 2 +- test/utils/generateAPITests.ts | 3 +- 21 files changed, 275 insertions(+), 1429 deletions(-) delete mode 100644 .eslintrc create mode 100644 eslint.config.mjs diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index a7ba1f551..000000000 --- a/.eslintrc +++ /dev/null @@ -1,39 +0,0 @@ -{ - "parser": "@typescript-eslint/parser", - // "parserOptions": { - // "ecmaVersion": 2018, - // "sourceType": "module", - // "ecmaFeatures": { - // "jsx": true - // }, - // "project": "./tsconfig.json" - // }, - "ignorePatterns": [ "**/*.js" ], - "root": true, - "plugins": [ - "@typescript-eslint" - ], - "extends": ["eslint:recommended", "plugin:@typescript-eslint/eslint-recommended", "plugin:@typescript-eslint/recommended"], - "rules": { - "linebreak-style": 0, - "comma-dangle": ["error", "always-multiline"], - "no-plusplus": "off", - "import/no-unresolved": 0, - "import/extensions": 0, - "import/no-extraneous-dependencies": 0, - "no-async-promise-executor": 0, - "radix": 1 - // unit tests only - // "max-len" : 0, - // "no-new" : 0, - // "no-unused-expressions": 0, - // "prefer-spread": 0, - // "@typescript-eslint/ban-ts-comment": 0, - // "@typescript-eslint/no-explicit-any": 0 - }, - "env": { - "es6": true, - "node": true - // "mocha": true - } -} diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 000000000..c6ac0cb88 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,35 @@ +// @ts-check +import eslint from '@eslint/js'; +import tseslint from 'typescript-eslint'; + +export default tseslint.config( + eslint.configs.recommended, + ...tseslint.configs.recommended, + { + ignores: [ + "test/**/*.ts", + "**/*.js", + "types/**/*.d.ts", + "src/lib/meta.ts", + ], + } + , + {"rules": { + "linebreak-style": 0, + "comma-dangle": ["error", "always-multiline"], + "no-plusplus": "off", + "import/no-unresolved": 0, + "import/extensions": 0, + "import/no-extraneous-dependencies": 0, + "no-async-promise-executor": 0, + "radix": 1, + "no-undef": 0, + // unit tests only + // "max-len" : 0, + // "no-new" : 0, + // "no-unused-expressions": 0, + // "prefer-spread": 0, + // "@typescript-eslint/ban-ts-comment": 0, + // "@typescript-eslint/no-explicit-any": 0 + }}, +); diff --git a/examples/src/EASTTextDetection.ts b/examples/src/EASTTextDetection.ts index 9b884423e..6871cc5ad 100644 --- a/examples/src/EASTTextDetection.ts +++ b/examples/src/EASTTextDetection.ts @@ -45,7 +45,7 @@ function decode(scores: Mat, geometry: Mat, confThreshold = MIN_CONFIDENCE) { startX, startY, endX - startX, - endY - startY + endY - startY, )); confidences.push(score); } @@ -81,7 +81,8 @@ async function detection(modelPath: string, imgAbsPath: string): Promise { const indices = cv.NMSBoxes( boxes, confidences, - MIN_CONFIDENCE, NMS_THRESHOLD + MIN_CONFIDENCE, + NMS_THRESHOLD, ); indices.forEach((i) => { @@ -90,7 +91,7 @@ async function detection(modelPath: string, imgAbsPath: string): Promise { rect.x * widthRatio, rect.y * heightRatio, rect.width * widthRatio, - rect.height * heightRatio + rect.height * heightRatio, ) drawBlueRect(img, imgRect); }); diff --git a/examples/src/OCRTools.ts b/examples/src/OCRTools.ts index 2aea54bec..036e09f92 100644 --- a/examples/src/OCRTools.ts +++ b/examples/src/OCRTools.ts @@ -13,7 +13,7 @@ const getBoundingRect = (component: number[]) => new cv.Rect( component[cv.CC_STAT_LEFT], component[cv.CC_STAT_TOP], component[cv.CC_STAT_WIDTH], - component[cv.CC_STAT_HEIGHT] + component[cv.CC_STAT_HEIGHT], ); const getLetterBoundingRect = (img: Mat, isIorJ?: boolean) => { @@ -46,7 +46,7 @@ const getLetterBoundingRect = (img: Mat, isIorJ?: boolean) => { xLeft, dotComponent[cv.CC_STAT_TOP], Math.max(letterRect.width, dotRectXRight - xLeft), - (letterRectYBottom - dotComponent[cv.CC_STAT_TOP]) + (letterRectYBottom - dotComponent[cv.CC_STAT_TOP]), ); } @@ -65,7 +65,7 @@ export const centerLetterInImage = (img: Mat, isIorJ?: boolean) => { offX, offY, rect.width, - rect.height + rect.height, ); const centered = new cv.Mat(img.rows, img.cols, img.type, [255, 255, 255]); @@ -78,7 +78,7 @@ export const saveConfusionMatrix = ( testDataFiles: string[][], predict: (mat: Mat, isIorJ: boolean) => number, numTestImagesPerClass: number, - outputFile: string + outputFile: string, ) => { const confusionMat = new cv.Mat(26, 26, cv.CV_64F, 0); testDataFiles.forEach((files: string[], label: number) => { @@ -91,7 +91,7 @@ export const saveConfusionMatrix = ( const confusionMatMatrix = [[''].concat(lccs)].concat( confusionMat.div(numTestImagesPerClass) - .getDataAsArray().map((col: number[], l: number) => [lccs[l]].concat(col.map((v: number) => '' + Math.round(v * 100) / 100))) + .getDataAsArray().map((col: number[], l: number) => [lccs[l]].concat(col.map((v: number) => '' + Math.round(v * 100) / 100))), ); const csvRows = confusionMatMatrix.map(cols => cols.join(';')); diff --git a/examples/src/asyncMatchFeatures.ts b/examples/src/asyncMatchFeatures.ts index 3baed5d47..3e7ebdd5a 100644 --- a/examples/src/asyncMatchFeatures.ts +++ b/examples/src/asyncMatchFeatures.ts @@ -4,7 +4,7 @@ import { FeatureDetector, Mat } from '@u4/opencv4nodejs'; const detectAndComputeAsync = (det: FeatureDetector, img: Mat) => det.detectAsync(img) .then(kps => det.computeAsync(img, kps) - .then(desc => ({ kps, desc })) + .then(desc => ({ kps, desc })), ); const img1 = cv.imread(getResourcePath('s0.jpg')); @@ -55,14 +55,14 @@ async function asyncMatch() { .then(allResults => cv.matchBruteForceAsync( allResults[0].desc, - allResults[1].desc + allResults[1].desc, ) .then(matches => ({ matches, kps1: allResults[0].kps, kps2: allResults[1].kps, - })) - ) + })), + ), ); for (let i = 0; i < promises.length; i++) { try { @@ -72,7 +72,7 @@ async function asyncMatch() { img2, result.kps1, result.kps2, - result.matches + result.matches, ); const title = `Detector ${detectorNames[i]}` cv.imshow(title, drawMatchesImg); diff --git a/examples/src/dnn/ssdUtils.ts b/examples/src/dnn/ssdUtils.ts index 888c07126..52829d322 100644 --- a/examples/src/dnn/ssdUtils.ts +++ b/examples/src/dnn/ssdUtils.ts @@ -14,17 +14,17 @@ export function extractResults(outputBlob: Mat, imgDimensions: { rows: number, c const confidence = outputBlob.at(i, 2); const bottomLeft = new cv.Point2( outputBlob.at(i, 3) * imgDimensions.cols, - outputBlob.at(i, 6) * imgDimensions.rows + outputBlob.at(i, 6) * imgDimensions.rows, ); const topRight = new cv.Point2( outputBlob.at(i, 5) * imgDimensions.cols, - outputBlob.at(i, 4) * imgDimensions.rows + outputBlob.at(i, 4) * imgDimensions.rows, ); const rect = new cv.Rect( bottomLeft.x, topRight.y, topRight.x - bottomLeft.x, - bottomLeft.y - topRight.y + bottomLeft.y - topRight.y, ); return ({ classLabel, confidence, rect }); diff --git a/examples/src/dnnDarknetYOLORealTimeObjectDetection.ts b/examples/src/dnnDarknetYOLORealTimeObjectDetection.ts index 1e93769ec..3126ad3a9 100644 --- a/examples/src/dnnDarknetYOLORealTimeObjectDetection.ts +++ b/examples/src/dnnDarknetYOLORealTimeObjectDetection.ts @@ -62,7 +62,7 @@ class dnnDarknetYOLORealTimeObjectDetection { boxes, confidences, this.minConfidence, - this.nmsThreshold + this.nmsThreshold, ); indices.forEach(i => { diff --git a/examples/src/dnnSSDCoco.ts b/examples/src/dnnSSDCoco.ts index 0d0bdd711..5692ebd8b 100644 --- a/examples/src/dnnSSDCoco.ts +++ b/examples/src/dnnSSDCoco.ts @@ -59,7 +59,7 @@ const runDetectDishesExample = async (net: Net) => { fontSize: 0.8, color: classColors[className], })), - alpha + alpha, ); Object.keys(classColors).forEach((className) => { diff --git a/examples/src/dnnTensorflowInception.ts b/examples/src/dnnTensorflowInception.ts index ff6a08194..08a5fd249 100644 --- a/examples/src/dnnTensorflowInception.ts +++ b/examples/src/dnnTensorflowInception.ts @@ -102,7 +102,7 @@ async function main() { img, { x: 0, y: 0 }, predictions.map(p => ({ text: p, fontSize: 0.5, thickness: 1 })), - alpha + alpha, ); cv.imshow('img', img); await wait4key(); diff --git a/examples/src/faceRecognition1.ts b/examples/src/faceRecognition1.ts index 37ed243e1..5c60afc07 100644 --- a/examples/src/faceRecognition1.ts +++ b/examples/src/faceRecognition1.ts @@ -57,7 +57,7 @@ async function main() { const rect = cv.drawDetection( twoFacesImg, faceRect, - { color: new cv.Vec3(255, 0, 0), segmentFraction: 4 } + { color: new cv.Vec3(255, 0, 0), segmentFraction: 4 }, ); const alpha = 0.4; @@ -65,7 +65,7 @@ async function main() { twoFacesImg, new cv.Point2(rect.x, rect.y + rect.height + 10), [{ text: who }], - alpha + alpha, ); }); diff --git a/examples/src/handGestureRecognition0.ts b/examples/src/handGestureRecognition0.ts index 2c6834fd4..09e90a52f 100644 --- a/examples/src/handGestureRecognition0.ts +++ b/examples/src/handGestureRecognition0.ts @@ -75,7 +75,7 @@ const getRoughHull = (contour: Contour, maxDist: number) => { const center: Point2 = getCenterPt(pointGroup.map(ptWithIdx => ptWithIdx.pt)); // sort ascending by distance to center return pointGroup.sort( - (ptWithIdx1, ptWithIdx2) => ptDist(ptWithIdx1.pt, center) - ptDist(ptWithIdx2.pt, center) + (ptWithIdx1, ptWithIdx2) => ptDist(ptWithIdx1.pt, center) - ptDist(ptWithIdx2.pt, center), )[0]; }; const pointGroups = Array.from(pointsByLabel.values()); @@ -160,7 +160,7 @@ grabFrames(video, delay, (frame) => { [handContour.getPoints()], 0, blue, - { thickness: 6 } + { thickness: 6 }, ); // draw points and vertices @@ -168,20 +168,20 @@ grabFrames(video, delay, (frame) => { resizedImg.drawLine( v.pt, v.d1, - { color: green, thickness: 2 } + { color: green, thickness: 2 }, ); resizedImg.drawLine( v.pt, v.d2, - { color: green, thickness: 2 } + { color: green, thickness: 2 }, ); resizedImg.drawEllipse( new cv.RotatedRect(v.pt, new cv.Size(20, 20), 0), - { color: red, thickness: 2 } + { color: red, thickness: 2 }, ); result.drawEllipse( new cv.RotatedRect(v.pt, new cv.Size(20, 20), 0), - { color: red, thickness: 2 } + { color: red, thickness: 2 }, ); } @@ -190,7 +190,7 @@ grabFrames(video, delay, (frame) => { result.drawRectangle( new cv.Point2(10, 10), new cv.Point2(70, 70), - { color: green, thickness: 2 } + { color: green, thickness: 2 }, ); const fontScale = 2; @@ -199,7 +199,7 @@ grabFrames(video, delay, (frame) => { new cv.Point2(20, 60), cv.FONT_ITALIC, fontScale, - { color: green, thickness: 2 } + { color: green, thickness: 2 }, ); const { rows, cols } = result; diff --git a/examples/src/machineLearningOCR.ts b/examples/src/machineLearningOCR.ts index 6ac2b6415..c1286cc1d 100644 --- a/examples/src/machineLearningOCR.ts +++ b/examples/src/machineLearningOCR.ts @@ -67,7 +67,7 @@ const trainSVM = (trainDataFiles: string[][], isAuto = false) => { const trainData = new cv.TrainData( new cv.Mat(samples, cv.CV_32F), cv.ml.ROW_SAMPLE, - new cv.Mat([labels], cv.CV_32S) + new cv.Mat([labels], cv.CV_32S), ); svm[isAuto ? 'trainAuto' : 'train'](trainData); }; @@ -113,10 +113,9 @@ console.log('prediction result:'); errs.forEach((err, l) => console.log(lccs[l], err, 1 - (err / numTestImagesPerClass))); console.log('average: ', 1 - (errs.reduce((e1, e2) => e1 + e2) / (lccs.length * numTestImagesPerClass))); - saveConfusionMatrix( testDataFiles, (img, isIorJ) => svm.predict(computeHOGDescriptorFromImage(img, isIorJ) as number[]), numTestImagesPerClass, - path.join(outPath, 'confusionmatrix.csv') + path.join(outPath, 'confusionmatrix.csv'), ); diff --git a/examples/src/matchFeatures.ts b/examples/src/matchFeatures.ts index fc7457785..a2e7b2dd9 100644 --- a/examples/src/matchFeatures.ts +++ b/examples/src/matchFeatures.ts @@ -17,7 +17,7 @@ const matchFeaturesPass = (arg: { img1: Mat, img2: Mat, detector: FeatureDetecto // only keep good matches const bestN = 40; const bestMatches = matches.sort( - (match1, match2) => match1.distance - match2.distance + (match1, match2) => match1.distance - match2.distance, ).slice(0, bestN); return cv.drawMatches( @@ -25,7 +25,7 @@ const matchFeaturesPass = (arg: { img1: Mat, img2: Mat, detector: FeatureDetecto img2, keyPoints1, keyPoints2, - bestMatches + bestMatches, ); }; diff --git a/examples/src/ocrHMMCharacters.ts b/examples/src/ocrHMMCharacters.ts index 44e9d3b60..14b4559f3 100644 --- a/examples/src/ocrHMMCharacters.ts +++ b/examples/src/ocrHMMCharacters.ts @@ -45,7 +45,7 @@ export async function ocrHMMCharacters() { (clazz: number, i: number) => ({ class: vocabulary[clazz], confidence: confidences[i], - }) + }), ) .filter(prediction => prediction.confidence > minConfidence); diff --git a/examples/src/simpleTracking1.ts b/examples/src/simpleTracking1.ts index 30ff4fde1..5326efa18 100644 --- a/examples/src/simpleTracking1.ts +++ b/examples/src/simpleTracking1.ts @@ -10,7 +10,7 @@ grabFrames(getResourcePath('traffic.mp4'), delay, (frame) => { const dilated = foreGroundMask.dilate( cv.getStructuringElement(cv.MORPH_ELLIPSE, new cv.Size(4, 4)), new cv.Point2(-1, -1), - iterations + iterations, ); const blurred = dilated.blur(new cv.Size(10, 10)); const thresholded = blurred.threshold(200, 255, cv.THRESH_BINARY); diff --git a/examples/src/templateMatch/templateMatching.ts b/examples/src/templateMatch/templateMatching.ts index 632035244..465c3855b 100644 --- a/examples/src/templateMatch/templateMatching.ts +++ b/examples/src/templateMatch/templateMatching.ts @@ -17,7 +17,7 @@ const findWaldo = async () => { new cv.Rect(x, y, waldoMat.cols, waldoMat.rows), new cv.Vec3(0, 255, 0), 2, - cv.LINE_8 + cv.LINE_8, ); const windowName = 'We\'ve found Waldo!'; diff --git a/examples/src/utils.ts b/examples/src/utils.ts index 3f50ee893..04970232d 100644 --- a/examples/src/utils.ts +++ b/examples/src/utils.ts @@ -139,7 +139,8 @@ export const drawRectAroundBlobs = (binaryImg: Mat, dstImg: Mat, minPxSize: numb dstImg.drawRectangle( new cv.Point2(x1, y1), new cv.Point2(x2, y2), - blue, thickness + blue, + thickness, ); } } @@ -150,7 +151,7 @@ export const drawRect = (image: Mat, rect: Rect, color: Vec3, opts = { thickness rect, color, opts.thickness, - cv.LINE_8 + cv.LINE_8, ); const { HEADLESS } = process.env; diff --git a/package.json b/package.json index 011b203a4..8b18bfdfd 100644 --- a/package.json +++ b/package.json @@ -70,24 +70,19 @@ }, "dependencies": { "@u4/opencv-build": "1.0.0-alpha2", + "eslint": "^9.1.1", "glob": "^10.3.12", "nan": "^2.19.0", "node-gyp": "^10.1.0", - "picocolors": "^1.0.0" + "picocolors": "^1.0.0", + "typescript-eslint": "^7.7.1" }, "devDependencies": { + "@eslint/js": "^9.1.1", "@types/node": "^20.12.7", "@types/progress": "^2.0.7", - "@typescript-eslint/eslint-plugin": "^7.7.1", - "@typescript-eslint/parser": "^7.7.1", "axios": "^1.6.8", "cross-env": "^7.0.3", - "eslint": "^8.57.0", - "eslint-config-airbnb": "^19.0.4", - "eslint-plugin-import": "^2.29.1", - "eslint-plugin-jsx-a11y": "^6.8.0", - "eslint-plugin-react": "^7.34.1", - "eslint-plugin-react-hooks": "^4.6.2", "progress": "^2.0.3", "rimraf": "^5.0.5", "shx": "^0.3.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e1d4bd01a..2d85c8c82 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -8,6 +8,9 @@ dependencies: '@u4/opencv-build': specifier: 1.0.0-alpha2 version: 1.0.0-alpha2 + eslint: + specifier: ^9.1.1 + version: 9.1.1 glob: specifier: ^10.3.12 version: 10.3.12 @@ -20,44 +23,26 @@ dependencies: picocolors: specifier: ^1.0.0 version: 1.0.0 + typescript-eslint: + specifier: ^7.7.1 + version: 7.7.1(eslint@9.1.1)(typescript@5.4.5) devDependencies: + '@eslint/js': + specifier: ^9.1.1 + version: 9.1.1 '@types/node': specifier: ^20.12.7 version: 20.12.7 '@types/progress': specifier: ^2.0.7 version: 2.0.7 - '@typescript-eslint/eslint-plugin': - specifier: ^7.7.1 - version: 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/parser': - specifier: ^7.7.1 - version: 7.7.1(eslint@8.57.0)(typescript@5.4.5) axios: specifier: ^1.6.8 version: 1.6.8 cross-env: specifier: ^7.0.3 version: 7.0.3 - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-config-airbnb: - specifier: ^19.0.4 - version: 19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.1)(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.29.1 - version: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0) - eslint-plugin-jsx-a11y: - specifier: ^6.8.0 - version: 6.8.0(eslint@8.57.0) - eslint-plugin-react: - specifier: ^7.34.1 - version: 7.34.1(eslint@8.57.0) - eslint-plugin-react-hooks: - specifier: ^4.6.2 - version: 4.6.2(eslint@8.57.0) progress: specifier: ^2.0.3 version: 2.0.3 @@ -76,14 +61,7 @@ packages: /@aashutoshrathi/word-wrap@1.2.6: resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} engines: {node: '>=0.10.0'} - dev: true - - /@babel/runtime@7.24.4: - resolution: {integrity: sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==} - engines: {node: '>=6.9.0'} - dependencies: - regenerator-runtime: 0.14.1 - dev: true + dev: false /@deno/shim-deno-test@0.5.0: resolution: {integrity: sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==} @@ -96,29 +74,29 @@ packages: which: 4.0.0 dev: false - /@eslint-community/eslint-utils@4.4.0(eslint@8.57.0): + /@eslint-community/eslint-utils@4.4.0(eslint@9.1.1): resolution: {integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} peerDependencies: eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 dependencies: - eslint: 8.57.0 + eslint: 9.1.1 eslint-visitor-keys: 3.4.3 - dev: true + dev: false /@eslint-community/regexpp@4.10.0: resolution: {integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==} engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} - dev: true + dev: false - /@eslint/eslintrc@2.1.4: - resolution: {integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /@eslint/eslintrc@3.0.2: + resolution: {integrity: sha512-wV19ZEGEMAC1eHgrS7UQPqsdEiCIbTKTasEfcXAigzoXICcqZSjBZEHlZwNVvKg6UBCjSlos84XiLqsRJnIcIg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: ajv: 6.12.6 debug: 4.3.4 - espree: 9.6.1 - globals: 13.24.0 + espree: 10.0.1 + globals: 14.0.0 ignore: 5.3.1 import-fresh: 3.3.0 js-yaml: 4.1.0 @@ -126,15 +104,14 @@ packages: strip-json-comments: 3.1.1 transitivePeerDependencies: - supports-color - dev: true + dev: false - /@eslint/js@8.57.0: - resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + /@eslint/js@9.1.1: + resolution: {integrity: sha512-5WoDz3Y19Bg2BnErkZTp0en+c/i9PvgFS7MBe1+m60HjFr0hrphlAGp4yzI7pxpt4xShln4ZyYp4neJm8hmOkQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - /@humanwhocodes/config-array@0.11.14: - resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} + /@humanwhocodes/config-array@0.13.0: + resolution: {integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==} engines: {node: '>=10.10.0'} dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -142,16 +119,21 @@ packages: minimatch: 3.1.2 transitivePeerDependencies: - supports-color - dev: true + dev: false /@humanwhocodes/module-importer@1.0.1: resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - dev: true + dev: false /@humanwhocodes/object-schema@2.0.3: resolution: {integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==} - dev: true + dev: false + + /@humanwhocodes/retry@0.2.3: + resolution: {integrity: sha512-X38nUbachlb01YMlvPFojKoiXq+LzZvuSce70KPMPdeM1Rj03k4dR7lDslhbqXn3Ang4EU3+EAmwEAsbrjHW3g==} + engines: {node: '>=18.18'} + dev: false /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} @@ -170,12 +152,12 @@ packages: dependencies: '@nodelib/fs.stat': 2.0.5 run-parallel: 1.2.0 - dev: true + dev: false /@nodelib/fs.stat@2.0.5: resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} engines: {node: '>= 8'} - dev: true + dev: false /@nodelib/fs.walk@1.2.8: resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} @@ -183,7 +165,7 @@ packages: dependencies: '@nodelib/fs.scandir': 2.1.5 fastq: 1.17.1 - dev: true + dev: false /@npmcli/agent@2.2.2: resolution: {integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==} @@ -213,11 +195,7 @@ packages: /@types/json-schema@7.0.15: resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} - dev: true - - /@types/json5@0.0.29: - resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==} - dev: true + dev: false /@types/node@20.12.7: resolution: {integrity: sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==} @@ -233,9 +211,9 @@ packages: /@types/semver@7.5.8: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} - dev: true + dev: false - /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0)(typescript@5.4.5): + /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@9.1.1)(typescript@5.4.5): resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -247,13 +225,13 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.4.5) '@typescript-eslint/scope-manager': 7.7.1 - '@typescript-eslint/type-utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/type-utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 - eslint: 8.57.0 + eslint: 9.1.1 graphemer: 1.4.0 ignore: 5.3.1 natural-compare: 1.4.0 @@ -262,9 +240,9 @@ packages: typescript: 5.4.5 transitivePeerDependencies: - supports-color - dev: true + dev: false - /@typescript-eslint/parser@7.7.1(eslint@8.57.0)(typescript@5.4.5): + /@typescript-eslint/parser@7.7.1(eslint@9.1.1)(typescript@5.4.5): resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -279,11 +257,11 @@ packages: '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) '@typescript-eslint/visitor-keys': 7.7.1 debug: 4.3.4 - eslint: 8.57.0 + eslint: 9.1.1 typescript: 5.4.5 transitivePeerDependencies: - supports-color - dev: true + dev: false /@typescript-eslint/scope-manager@7.7.1: resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} @@ -291,9 +269,9 @@ packages: dependencies: '@typescript-eslint/types': 7.7.1 '@typescript-eslint/visitor-keys': 7.7.1 - dev: true + dev: false - /@typescript-eslint/type-utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): + /@typescript-eslint/type-utils@7.7.1(eslint@9.1.1)(typescript@5.4.5): resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: @@ -304,19 +282,19 @@ packages: optional: true dependencies: '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.1(eslint@8.57.0)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) debug: 4.3.4 - eslint: 8.57.0 + eslint: 9.1.1 ts-api-utils: 1.3.0(typescript@5.4.5) typescript: 5.4.5 transitivePeerDependencies: - supports-color - dev: true + dev: false /@typescript-eslint/types@7.7.1: resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} engines: {node: ^18.18.0 || >=20.0.0} - dev: true + dev: false /@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5): resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} @@ -338,26 +316,26 @@ packages: typescript: 5.4.5 transitivePeerDependencies: - supports-color - dev: true + dev: false - /@typescript-eslint/utils@7.7.1(eslint@8.57.0)(typescript@5.4.5): + /@typescript-eslint/utils@7.7.1(eslint@9.1.1)(typescript@5.4.5): resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 '@typescript-eslint/scope-manager': 7.7.1 '@typescript-eslint/types': 7.7.1 '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) - eslint: 8.57.0 + eslint: 9.1.1 semver: 7.6.0 transitivePeerDependencies: - supports-color - typescript - dev: true + dev: false /@typescript-eslint/visitor-keys@7.7.1: resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} @@ -365,7 +343,7 @@ packages: dependencies: '@typescript-eslint/types': 7.7.1 eslint-visitor-keys: 3.4.3 - dev: true + dev: false /@u4/opencv-build@1.0.0-alpha2: resolution: {integrity: sha512-GhLSQZvui/xK8AtztUKd/wq6o0P2e0/NoqC6k6yFBbhd/0Pzi6rQaQ3877ioB7/KLd4x6JXrcaOBdYc6b0GzPA==} @@ -377,10 +355,6 @@ packages: rimraf: 5.0.5 dev: false - /@ungap/structured-clone@1.2.0: - resolution: {integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==} - dev: true - /abbrev@2.0.0: resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -392,13 +366,13 @@ packages: acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 dependencies: acorn: 8.11.3 - dev: true + dev: false /acorn@8.11.3: resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==} engines: {node: '>=0.4.0'} hasBin: true - dev: true + dev: false /agent-base@7.1.1: resolution: {integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==} @@ -424,7 +398,7 @@ packages: fast-json-stable-stringify: 2.1.0 json-schema-traverse: 0.4.1 uri-js: 4.4.1 - dev: true + dev: false /ansi-regex@5.0.1: resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} @@ -455,136 +429,17 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: true - - /aria-query@5.3.0: - resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} - dependencies: - dequal: 2.0.3 - dev: true - - /array-buffer-byte-length@1.0.1: - resolution: {integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 - dev: true - - /array-includes@3.1.8: - resolution: {integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - dev: true + dev: false /array-union@2.1.0: resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} engines: {node: '>=8'} - dev: true - - /array.prototype.findlast@1.2.5: - resolution: {integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.findlastindex@1.2.5: - resolution: {integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.flat@1.3.2: - resolution: {integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.flatmap@1.3.2: - resolution: {integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.toreversed@1.1.2: - resolution: {integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - dev: true - - /array.prototype.tosorted@1.1.3: - resolution: {integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 - dev: true - - /arraybuffer.prototype.slice@1.0.3: - resolution: {integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 - dev: true - - /ast-types-flow@0.0.8: - resolution: {integrity: sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==} - dev: true + dev: false /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: true - /available-typed-arrays@1.0.7: - resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} - engines: {node: '>= 0.4'} - dependencies: - possible-typed-array-names: 1.0.0 - dev: true - - /axe-core@4.7.0: - resolution: {integrity: sha512-M0JtH+hlOL5pLQwHOLNYZaXuhqmvS8oExsqB1SBYgA4Dk7u/xx+YdGHXaK5pyUfed5mYXdlYiphWq3G8cRi5JQ==} - engines: {node: '>=4'} - dev: true - /axios@1.6.8: resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} dependencies: @@ -595,12 +450,6 @@ packages: - debug dev: true - /axobject-query@3.2.1: - resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==} - dependencies: - dequal: 2.0.3 - dev: true - /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} @@ -609,7 +458,6 @@ packages: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - dev: true /brace-expansion@2.0.1: resolution: {integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==} @@ -621,7 +469,7 @@ packages: engines: {node: '>=8'} dependencies: fill-range: 7.0.1 - dev: true + dev: false /cacache@18.0.2: resolution: {integrity: sha512-r3NU8h/P+4lVUHfeRw1dtgQYar3DZMm4/cm2bZgOvrFC/su7budSOeqh52VJIC4U4iG1WWwV6vRW0znqBvxNuw==} @@ -641,21 +489,10 @@ packages: unique-filename: 3.0.0 dev: false - /call-bind@1.0.7: - resolution: {integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - set-function-length: 1.2.2 - dev: true - /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - dev: true + dev: false /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -663,7 +500,7 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 - dev: true + dev: false /chownr@2.0.0: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} @@ -698,11 +535,6 @@ packages: /concat-map@0.0.1: resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} - dev: true - - /confusing-browser-globals@1.0.11: - resolution: {integrity: sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==} - dev: true /console-control-strings@1.1.0: resolution: {integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==} @@ -724,48 +556,6 @@ packages: shebang-command: 2.0.0 which: 2.0.2 - /damerau-levenshtein@1.0.8: - resolution: {integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==} - dev: true - - /data-view-buffer@1.0.1: - resolution: {integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: true - - /data-view-byte-length@1.0.1: - resolution: {integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: true - - /data-view-byte-offset@1.0.0: - resolution: {integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-data-view: 1.0.1 - dev: true - - /debug@3.2.7: - resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true - dependencies: - ms: 2.1.3 - dev: true - /debug@4.3.4: resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} engines: {node: '>=6.0'} @@ -776,59 +566,23 @@ packages: optional: true dependencies: ms: 2.1.2 + dev: false /deep-is@0.1.4: resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} - dev: true - - /define-data-property@1.1.4: - resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} - engines: {node: '>= 0.4'} - dependencies: - es-define-property: 1.0.0 - es-errors: 1.3.0 - gopd: 1.0.1 - dev: true - - /define-properties@1.2.1: - resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - has-property-descriptors: 1.0.2 - object-keys: 1.1.1 - dev: true + dev: false /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} dev: true - /dequal@2.0.3: - resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} - engines: {node: '>=6'} - dev: true - /dir-glob@3.0.1: resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} engines: {node: '>=8'} dependencies: path-type: 4.0.0 - dev: true - - /doctrine@2.1.0: - resolution: {integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==} - engines: {node: '>=0.10.0'} - dependencies: - esutils: 2.0.3 - dev: true - - /doctrine@3.0.0: - resolution: {integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==} - engines: {node: '>=6.0.0'} - dependencies: - esutils: 2.0.3 - dev: true + dev: false /eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} @@ -856,344 +610,60 @@ packages: resolution: {integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==} dev: false - /es-abstract@1.23.3: - resolution: {integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==} - engines: {node: '>= 0.4'} - dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 - globalthis: 1.0.3 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 - is-callable: 1.2.7 - is-data-view: 1.0.1 - is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 - object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 - string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - dev: true - - /es-define-property@1.0.0: - resolution: {integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - dev: true - - /es-errors@1.3.0: - resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} - engines: {node: '>= 0.4'} - dev: true - - /es-iterator-helpers@1.0.18: - resolution: {integrity: sha512-scxAJaewsahbqTYrGKJihhViaM6DDZDDoucfvzNbK0pOren1g/daDQ3IAhzn+1G14rBG7w+i5N+qul60++zlKA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.3 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.2 - dev: true - - /es-object-atoms@1.0.0: - resolution: {integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - dev: true - - /es-set-tostringtag@2.0.3: - resolution: {integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==} - engines: {node: '>= 0.4'} - dependencies: - get-intrinsic: 1.2.4 - has-tostringtag: 1.0.2 - hasown: 2.0.2 - dev: true - - /es-shim-unscopables@1.0.2: - resolution: {integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==} - dependencies: - hasown: 2.0.2 - dev: true - - /es-to-primitive@1.2.1: - resolution: {integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==} - engines: {node: '>= 0.4'} - dependencies: - is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 - dev: true - /escape-string-regexp@4.0.0: resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} engines: {node: '>=10'} - dev: true - - /eslint-config-airbnb-base@15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0): - resolution: {integrity: sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==} - engines: {node: ^10.12.0 || >=12.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.2 - dependencies: - confusing-browser-globals: 1.0.11 - eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0) - object.assign: 4.1.5 - object.entries: 1.1.8 - semver: 6.3.1 - dev: true - - /eslint-config-airbnb@19.0.4(eslint-plugin-import@2.29.1)(eslint-plugin-jsx-a11y@6.8.0)(eslint-plugin-react-hooks@4.6.2)(eslint-plugin-react@7.34.1)(eslint@8.57.0): - resolution: {integrity: sha512-T75QYQVQX57jiNgpF9r1KegMICE94VYwoFQyMGhrvc+lB8YF2E/M/PYDaQe1AJcWaEgqLE+ErXV1Og/+6Vyzew==} - engines: {node: ^10.12.0 || ^12.22.0 || ^14.17.0 || >=16.0.0} - peerDependencies: - eslint: ^7.32.0 || ^8.2.0 - eslint-plugin-import: ^2.25.3 - eslint-plugin-jsx-a11y: ^6.5.1 - eslint-plugin-react: ^7.28.0 - eslint-plugin-react-hooks: ^4.3.0 - dependencies: - eslint: 8.57.0 - eslint-config-airbnb-base: 15.0.0(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0) - eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0) - eslint-plugin-react: 7.34.1(eslint@8.57.0) - eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0) - object.assign: 4.1.5 - object.entries: 1.1.8 - dev: true - - /eslint-import-resolver-node@0.3.9: - resolution: {integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==} - dependencies: - debug: 3.2.7 - is-core-module: 2.13.1 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-module-utils@2.8.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): - resolution: {integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true - dependencies: - '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) - debug: 3.2.7 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - transitivePeerDependencies: - - supports-color - dev: true - - /eslint-plugin-import@2.29.1(@typescript-eslint/parser@7.7.1)(eslint@8.57.0): - resolution: {integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==} - engines: {node: '>=4'} - peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - dependencies: - '@typescript-eslint/parser': 7.7.1(eslint@8.57.0)(typescript@5.4.5) - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 8.57.0 - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@7.7.1)(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) - hasown: 2.0.2 - is-core-module: 2.13.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 - semver: 6.3.1 - tsconfig-paths: 3.15.0 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - dev: true - - /eslint-plugin-jsx-a11y@6.8.0(eslint@8.57.0): - resolution: {integrity: sha512-Hdh937BS3KdwwbBaKd5+PLCOmYY6U4f2h9Z2ktwtNKvIdIEu137rjYbcb9ApSbVJfWxANNuiKTD/9tOKjK9qOA==} - engines: {node: '>=4.0'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - '@babel/runtime': 7.24.4 - aria-query: 5.3.0 - array-includes: 3.1.8 - array.prototype.flatmap: 1.3.2 - ast-types-flow: 0.0.8 - axe-core: 4.7.0 - axobject-query: 3.2.1 - damerau-levenshtein: 1.0.8 - emoji-regex: 9.2.2 - es-iterator-helpers: 1.0.18 - eslint: 8.57.0 - hasown: 2.0.2 - jsx-ast-utils: 3.3.5 - language-tags: 1.0.9 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - dev: true - - /eslint-plugin-react-hooks@4.6.2(eslint@8.57.0): - resolution: {integrity: sha512-QzliNJq4GinDBcD8gPB5v0wh6g8q3SUi6EFF0x8N/BL9PoVs0atuGc47ozMRyOWAKdwaZ5OnbOEa3WR+dSGKuQ==} - engines: {node: '>=10'} - peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 - dependencies: - eslint: 8.57.0 - dev: true - - /eslint-plugin-react@7.34.1(eslint@8.57.0): - resolution: {integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==} - engines: {node: '>=4'} - peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 - dependencies: - array-includes: 3.1.8 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.18 - eslint: 8.57.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - object.hasown: 1.1.4 - object.values: 1.2.0 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.11 - dev: true + dev: false - /eslint-scope@7.2.2: - resolution: {integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-scope@8.0.1: + resolution: {integrity: sha512-pL8XjgP4ZOmmwfFE8mEhSxA7ZY4C+LWyqjQ3o4yWkkmD0qcMT9kkW3zWHOczhWcjTSgqycYAgwSlXvZltv65og==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: esrecurse: 4.3.0 estraverse: 5.3.0 - dev: true + dev: false /eslint-visitor-keys@3.4.3: resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - dev: true + dev: false - /eslint@8.57.0: - resolution: {integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /eslint-visitor-keys@4.0.0: + resolution: {integrity: sha512-OtIRv/2GyiF6o/d8K7MYKKbXrOUBIK6SfkIRM4Z0dY3w+LiQ0vy3F57m0Z71bjbyeiWFiHJ8brqnmE6H6/jEuw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + dev: false + + /eslint@9.1.1: + resolution: {integrity: sha512-b4cRQ0BeZcSEzPpY2PjFY70VbO32K7BStTGtBsnIGdTSEEQzBi8hPBcGQmTG2zUvFr9uLe0TK42bw8YszuHEqg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) '@eslint-community/regexpp': 4.10.0 - '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/eslintrc': 3.0.2 + '@eslint/js': 9.1.1 + '@humanwhocodes/config-array': 0.13.0 '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.2.3 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 ajv: 6.12.6 chalk: 4.1.2 cross-spawn: 7.0.3 debug: 4.3.4 - doctrine: 3.0.0 escape-string-regexp: 4.0.0 - eslint-scope: 7.2.2 - eslint-visitor-keys: 3.4.3 - espree: 9.6.1 + eslint-scope: 8.0.1 + eslint-visitor-keys: 4.0.0 + espree: 10.0.1 esquery: 1.5.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 - file-entry-cache: 6.0.1 + file-entry-cache: 8.0.0 find-up: 5.0.0 glob-parent: 6.0.2 - globals: 13.24.0 - graphemer: 1.4.0 ignore: 5.3.1 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -1204,40 +674,40 @@ packages: text-table: 0.2.0 transitivePeerDependencies: - supports-color - dev: true + dev: false - /espree@9.6.1: - resolution: {integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==} - engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + /espree@10.0.1: + resolution: {integrity: sha512-MWkrWZbJsL2UwnjxTX3gG8FneachS/Mwg7tdGXce011sJd5b0JG54vat5KHnfSBODZ3Wvzd2WnjxyzsRoVv+ww==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} dependencies: acorn: 8.11.3 acorn-jsx: 5.3.2(acorn@8.11.3) - eslint-visitor-keys: 3.4.3 - dev: true + eslint-visitor-keys: 4.0.0 + dev: false /esquery@1.5.0: resolution: {integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==} engines: {node: '>=0.10'} dependencies: estraverse: 5.3.0 - dev: true + dev: false /esrecurse@4.3.0: resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} engines: {node: '>=4.0'} dependencies: estraverse: 5.3.0 - dev: true + dev: false /estraverse@5.3.0: resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} engines: {node: '>=4.0'} - dev: true + dev: false /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} engines: {node: '>=0.10.0'} - dev: true + dev: false /exponential-backoff@3.1.1: resolution: {integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==} @@ -1245,7 +715,7 @@ packages: /fast-deep-equal@3.1.3: resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} - dev: true + dev: false /fast-glob@3.3.2: resolution: {integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==} @@ -1256,35 +726,35 @@ packages: glob-parent: 5.1.2 merge2: 1.4.1 micromatch: 4.0.5 - dev: true + dev: false /fast-json-stable-stringify@2.1.0: resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} - dev: true + dev: false /fast-levenshtein@2.0.6: resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} - dev: true + dev: false /fastq@1.17.1: resolution: {integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==} dependencies: reusify: 1.0.4 - dev: true + dev: false - /file-entry-cache@6.0.1: - resolution: {integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==} - engines: {node: ^10.12.0 || >=12.0.0} + /file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} dependencies: - flat-cache: 3.2.0 - dev: true + flat-cache: 4.0.1 + dev: false /fill-range@7.0.1: resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} engines: {node: '>=8'} dependencies: to-regex-range: 5.0.1 - dev: true + dev: false /find-up@5.0.0: resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} @@ -1292,20 +762,19 @@ packages: dependencies: locate-path: 6.0.0 path-exists: 4.0.0 - dev: true + dev: false - /flat-cache@3.2.0: - resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} - engines: {node: ^10.12.0 || >=12.0.0} + /flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} dependencies: flatted: 3.3.1 keyv: 4.5.4 - rimraf: 3.0.2 - dev: true + dev: false /flatted@3.3.1: resolution: {integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==} - dev: true + dev: false /follow-redirects@1.15.6: resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} @@ -1317,12 +786,6 @@ packages: optional: true dev: true - /for-each@0.3.3: - resolution: {integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==} - dependencies: - is-callable: 1.2.7 - dev: true - /foreground-child@3.1.1: resolution: {integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==} engines: {node: '>=14'} @@ -1361,20 +824,6 @@ packages: resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} dev: true - /function.prototype.name@1.1.6: - resolution: {integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - functions-have-names: 1.2.3 - dev: true - - /functions-have-names@1.2.3: - resolution: {integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==} - dev: true - /gauge@5.0.1: resolution: {integrity: sha512-CmykPMJGuNan/3S4kZOpvvPYSNqSHANiWnh9XcMU2pSjtBfF0XzZ2p1bFAxTbnFxyBuPxQYHhzwaoOmUdqzvxQ==} engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} @@ -1389,39 +838,19 @@ packages: wide-align: 1.1.5 dev: false - /get-intrinsic@1.2.4: - resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - hasown: 2.0.2 - dev: true - - /get-symbol-description@1.0.2: - resolution: {integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - dev: true - /glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} engines: {node: '>= 6'} dependencies: is-glob: 4.0.3 - dev: true + dev: false /glob-parent@6.0.2: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} dependencies: is-glob: 4.0.3 - dev: true + dev: false /glob@10.3.12: resolution: {integrity: sha512-TCNv8vJ+xz4QiqTpfOJA7HvYv+tNIRHKfUWw/q+v2jdgN4ebz+KY9tGx5J4rHP0o84mNP+ApH66HRX8us3Khqg==} @@ -1445,19 +874,10 @@ packages: path-is-absolute: 1.0.1 dev: true - /globals@13.24.0: - resolution: {integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==} - engines: {node: '>=8'} - dependencies: - type-fest: 0.20.2 - dev: true - - /globalthis@1.0.3: - resolution: {integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - dev: true + /globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + dev: false /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -1469,13 +889,7 @@ packages: ignore: 5.3.1 merge2: 1.4.1 slash: 3.0.0 - dev: true - - /gopd@1.0.1: - resolution: {integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==} - dependencies: - get-intrinsic: 1.2.4 - dev: true + dev: false /graceful-fs@4.2.11: resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} @@ -1483,39 +897,12 @@ packages: /graphemer@1.4.0: resolution: {integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==} - dev: true - - /has-bigints@1.0.2: - resolution: {integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==} - dev: true + dev: false /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} - dev: true - - /has-property-descriptors@1.0.2: - resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} - dependencies: - es-define-property: 1.0.0 - dev: true - - /has-proto@1.0.3: - resolution: {integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==} - engines: {node: '>= 0.4'} - dev: true - - /has-symbols@1.0.3: - resolution: {integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==} - engines: {node: '>= 0.4'} - dev: true - - /has-tostringtag@1.0.2: - resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true + dev: false /has-unicode@2.0.1: resolution: {integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==} @@ -1564,7 +951,7 @@ packages: /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} engines: {node: '>= 4'} - dev: true + dev: false /import-fresh@3.3.0: resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} @@ -1572,11 +959,12 @@ packages: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: true + dev: false /imurmurhash@0.1.4: resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} engines: {node: '>=0.8.19'} + dev: false /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} @@ -1594,15 +982,6 @@ packages: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true - /internal-slot@1.0.7: - resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} - engines: {node: '>= 0.4'} - dependencies: - es-errors: 1.3.0 - hasown: 2.0.2 - side-channel: 1.0.6 - dev: true - /interpret@1.4.0: resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} engines: {node: '>= 0.10'} @@ -1616,183 +995,41 @@ packages: sprintf-js: 1.1.3 dev: false - /is-array-buffer@3.0.4: - resolution: {integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - dev: true - - /is-async-function@2.0.0: - resolution: {integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - - /is-bigint@1.0.4: - resolution: {integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==} - dependencies: - has-bigints: 1.0.2 - dev: true - - /is-boolean-object@1.1.2: - resolution: {integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - dev: true - - /is-callable@1.2.7: - resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} - engines: {node: '>= 0.4'} - dev: true - /is-core-module@2.13.1: resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==} dependencies: hasown: 2.0.2 dev: true - /is-data-view@1.0.1: - resolution: {integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==} - engines: {node: '>= 0.4'} - dependencies: - is-typed-array: 1.1.13 - dev: true - - /is-date-object@1.0.5: - resolution: {integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - /is-extglob@2.1.1: resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} engines: {node: '>=0.10.0'} - dev: true - - /is-finalizationregistry@1.0.2: - resolution: {integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==} - dependencies: - call-bind: 1.0.7 - dev: true + dev: false /is-fullwidth-code-point@3.0.0: resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} engines: {node: '>=8'} - /is-generator-function@1.0.10: - resolution: {integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - /is-glob@4.0.3: resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} engines: {node: '>=0.10.0'} dependencies: is-extglob: 2.1.1 - dev: true + dev: false /is-lambda@1.0.1: resolution: {integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==} dev: false - /is-map@2.0.3: - resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==} - engines: {node: '>= 0.4'} - dev: true - - /is-negative-zero@2.0.3: - resolution: {integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==} - engines: {node: '>= 0.4'} - dev: true - - /is-number-object@1.0.7: - resolution: {integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - /is-number@7.0.0: resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} engines: {node: '>=0.12.0'} - dev: true - - /is-path-inside@3.0.3: - resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} - engines: {node: '>=8'} - dev: true - - /is-regex@1.1.4: - resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - dev: true - - /is-set@2.0.3: - resolution: {integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==} - engines: {node: '>= 0.4'} - dev: true - - /is-shared-array-buffer@1.0.3: - resolution: {integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - dev: true - - /is-string@1.0.7: - resolution: {integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==} - engines: {node: '>= 0.4'} - dependencies: - has-tostringtag: 1.0.2 - dev: true - - /is-symbol@1.0.4: - resolution: {integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==} - engines: {node: '>= 0.4'} - dependencies: - has-symbols: 1.0.3 - dev: true - - /is-typed-array@1.1.13: - resolution: {integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==} - engines: {node: '>= 0.4'} - dependencies: - which-typed-array: 1.1.15 - dev: true - - /is-weakmap@2.0.2: - resolution: {integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==} - engines: {node: '>= 0.4'} - dev: true - - /is-weakref@1.0.2: - resolution: {integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==} - dependencies: - call-bind: 1.0.7 - dev: true - - /is-weakset@2.0.3: - resolution: {integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - dev: true + dev: false - /isarray@2.0.5: - resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} - dev: true + /is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + dev: false /isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} @@ -1802,16 +1039,6 @@ packages: engines: {node: '>=16'} dev: false - /iterator.prototype@1.1.2: - resolution: {integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==} - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 - set-function-name: 2.0.2 - dev: true - /jackspeak@2.3.6: resolution: {integrity: sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==} engines: {node: '>=14'} @@ -1820,16 +1047,12 @@ packages: optionalDependencies: '@pkgjs/parseargs': 0.11.0 - /js-tokens@4.0.0: - resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - dev: true - /js-yaml@4.1.0: resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==} hasBin: true dependencies: argparse: 2.0.1 - dev: true + dev: false /jsbn@1.1.0: resolution: {integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==} @@ -1837,49 +1060,21 @@ packages: /json-buffer@3.0.1: resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} - dev: true + dev: false /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} - dev: true + dev: false /json-stable-stringify-without-jsonify@1.0.1: resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} - dev: true - - /json5@1.0.2: - resolution: {integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==} - hasBin: true - dependencies: - minimist: 1.2.8 - dev: true - - /jsx-ast-utils@3.3.5: - resolution: {integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==} - engines: {node: '>=4.0'} - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.2.0 - dev: true + dev: false /keyv@4.5.4: resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} dependencies: json-buffer: 3.0.1 - dev: true - - /language-subtag-registry@0.3.22: - resolution: {integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==} - dev: true - - /language-tags@1.0.9: - resolution: {integrity: sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==} - engines: {node: '>=0.10'} - dependencies: - language-subtag-registry: 0.3.22 - dev: true + dev: false /levn@0.4.1: resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} @@ -1887,25 +1082,18 @@ packages: dependencies: prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true + dev: false /locate-path@6.0.0: resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} engines: {node: '>=10'} dependencies: p-locate: 5.0.0 - dev: true + dev: false /lodash.merge@4.6.2: resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} - dev: true - - /loose-envify@1.4.0: - resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==} - hasBin: true - dependencies: - js-tokens: 4.0.0 - dev: true + dev: false /lru-cache@10.2.0: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} @@ -1916,6 +1104,7 @@ packages: engines: {node: '>=10'} dependencies: yallist: 4.0.0 + dev: false /make-fetch-happen@13.0.0: resolution: {integrity: sha512-7ThobcL8brtGo9CavByQrQi+23aIfgYU++wg4B87AIS8Rb2ZBt/MEaDqzA00Xwv/jUjAjYkLHjVolYuTLKda2A==} @@ -1939,7 +1128,7 @@ packages: /merge2@1.4.1: resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} engines: {node: '>= 8'} - dev: true + dev: false /micromatch@4.0.5: resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} @@ -1947,7 +1136,7 @@ packages: dependencies: braces: 3.0.2 picomatch: 2.3.1 - dev: true + dev: false /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} @@ -1965,7 +1154,6 @@ packages: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} dependencies: brace-expansion: 1.1.11 - dev: true /minimatch@9.0.4: resolution: {integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==} @@ -2048,10 +1236,7 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} - - /ms@2.1.3: - resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} - dev: true + dev: false /nan@2.19.0: resolution: {integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==} @@ -2059,7 +1244,7 @@ packages: /natural-compare@1.4.0: resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} - dev: true + dev: false /negotiator@0.6.3: resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==} @@ -2103,76 +1288,6 @@ packages: set-blocking: 2.0.0 dev: false - /object-assign@4.1.1: - resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} - engines: {node: '>=0.10.0'} - dev: true - - /object-inspect@1.13.1: - resolution: {integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==} - dev: true - - /object-keys@1.1.1: - resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} - engines: {node: '>= 0.4'} - dev: true - - /object.assign@4.1.5: - resolution: {integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - has-symbols: 1.0.3 - object-keys: 1.1.1 - dev: true - - /object.entries@1.1.8: - resolution: {integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - - /object.fromentries@2.0.8: - resolution: {integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: true - - /object.groupby@1.0.3: - resolution: {integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - dev: true - - /object.hasown@1.1.4: - resolution: {integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==} - engines: {node: '>= 0.4'} - dependencies: - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: true - - /object.values@1.2.0: - resolution: {integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - /once@1.4.0: resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} dependencies: @@ -2189,21 +1304,21 @@ packages: levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 - dev: true + dev: false /p-limit@3.1.0: resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} engines: {node: '>=10'} dependencies: yocto-queue: 0.1.0 - dev: true + dev: false /p-locate@5.0.0: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} dependencies: p-limit: 3.1.0 - dev: true + dev: false /p-map@4.0.0: resolution: {integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==} @@ -2217,12 +1332,12 @@ packages: engines: {node: '>=6'} dependencies: callsites: 3.1.0 - dev: true + dev: false /path-exists@4.0.0: resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} engines: {node: '>=8'} - dev: true + dev: false /path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} @@ -2247,7 +1362,7 @@ packages: /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - dev: true + dev: false /picocolors@1.0.0: resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} @@ -2256,17 +1371,12 @@ packages: /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - dev: true - - /possible-typed-array-names@1.0.0: - resolution: {integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==} - engines: {node: '>= 0.4'} - dev: true + dev: false /prelude-ls@1.2.1: resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} engines: {node: '>= 0.8.0'} - dev: true + dev: false /proc-log@3.0.0: resolution: {integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==} @@ -2286,14 +1396,6 @@ packages: retry: 0.12.0 dev: false - /prop-types@15.8.1: - resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==} - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - dev: true - /proxy-from-env@1.1.0: resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} dev: true @@ -2301,15 +1403,11 @@ packages: /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} - dev: true + dev: false /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} - dev: true - - /react-is@16.13.1: - resolution: {integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==} - dev: true + dev: false /rechoir@0.6.2: resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} @@ -2318,37 +1416,10 @@ packages: resolve: 1.22.8 dev: true - /reflect.getprototypeof@1.0.6: - resolution: {integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.3 - which-builtin-type: 1.1.3 - dev: true - - /regenerator-runtime@0.14.1: - resolution: {integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==} - dev: true - - /regexp.prototype.flags@1.5.2: - resolution: {integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - dev: true - /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - dev: true + dev: false /resolve@1.22.8: resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==} @@ -2359,15 +1430,6 @@ packages: supports-preserve-symlinks-flag: 1.0.0 dev: true - /resolve@2.0.0-next.5: - resolution: {integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==} - hasBin: true - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - supports-preserve-symlinks-flag: 1.0.0 - dev: true - /retry@0.12.0: resolution: {integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==} engines: {node: '>= 4'} @@ -2376,14 +1438,7 @@ packages: /reusify@1.0.4: resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} engines: {iojs: '>=1.0.0', node: '>=0.10.0'} - dev: true - - /rimraf@3.0.2: - resolution: {integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==} - hasBin: true - dependencies: - glob: 7.2.3 - dev: true + dev: false /rimraf@5.0.5: resolution: {integrity: sha512-CqDakW+hMe/Bz202FPEymy68P+G50RfMQK+Qo5YUqc9SPipvbGjCGKd0RSKEelbsfQuw3g5NZDSrlZZAJurH1A==} @@ -2396,26 +1451,7 @@ packages: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} dependencies: queue-microtask: 1.2.3 - dev: true - - /safe-array-concat@1.1.2: - resolution: {integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==} - engines: {node: '>=0.4'} - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - isarray: 2.0.5 - dev: true - - /safe-regex-test@1.0.3: - resolution: {integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-regex: 1.1.4 - dev: true + dev: false /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} @@ -2423,44 +1459,18 @@ packages: dev: false optional: true - /semver@6.3.1: - resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} - hasBin: true - dev: true - /semver@7.6.0: resolution: {integrity: sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==} engines: {node: '>=10'} hasBin: true dependencies: lru-cache: 6.0.0 + dev: false /set-blocking@2.0.0: resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} dev: false - /set-function-length@1.2.2: - resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-property-descriptors: 1.0.2 - dev: true - - /set-function-name@2.0.2: - resolution: {integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==} - engines: {node: '>= 0.4'} - dependencies: - define-data-property: 1.1.4 - es-errors: 1.3.0 - functions-have-names: 1.2.3 - has-property-descriptors: 1.0.2 - dev: true - /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -2490,16 +1500,6 @@ packages: shelljs: 0.8.5 dev: true - /side-channel@1.0.6: - resolution: {integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 - dev: true - /signal-exit@4.1.0: resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} engines: {node: '>=14'} @@ -2507,7 +1507,7 @@ packages: /slash@3.0.0: resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} engines: {node: '>=8'} - dev: true + dev: false /smart-buffer@4.2.0: resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} @@ -2560,51 +1560,6 @@ packages: emoji-regex: 9.2.2 strip-ansi: 7.1.0 - /string.prototype.matchall@4.0.11: - resolution: {integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 - set-function-name: 2.0.2 - side-channel: 1.0.6 - dev: true - - /string.prototype.trim@1.2.9: - resolution: {integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - dev: true - - /string.prototype.trimend@1.0.8: - resolution: {integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - - /string.prototype.trimstart@1.0.8: - resolution: {integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - dev: true - /strip-ansi@6.0.1: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} @@ -2617,22 +1572,17 @@ packages: dependencies: ansi-regex: 6.0.1 - /strip-bom@3.0.0: - resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} - engines: {node: '>=4'} - dev: true - /strip-json-comments@3.1.1: resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} engines: {node: '>=8'} - dev: true + dev: false /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} engines: {node: '>=8'} dependencies: has-flag: 4.0.0 - dev: true + dev: false /supports-preserve-symlinks-flag@1.0.0: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} @@ -2653,14 +1603,14 @@ packages: /text-table@0.2.0: resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} - dev: true + dev: false /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} engines: {node: '>=8.0'} dependencies: is-number: 7.0.0 - dev: true + dev: false /ts-api-utils@1.3.0(typescript@5.4.5): resolution: {integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==} @@ -2669,87 +1619,38 @@ packages: typescript: '>=4.2.0' dependencies: typescript: 5.4.5 - dev: true - - /tsconfig-paths@3.15.0: - resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==} - dependencies: - '@types/json5': 0.0.29 - json5: 1.0.2 - minimist: 1.2.8 - strip-bom: 3.0.0 - dev: true + dev: false /type-check@0.4.0: resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} engines: {node: '>= 0.8.0'} dependencies: prelude-ls: 1.2.1 - dev: true - - /type-fest@0.20.2: - resolution: {integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==} - engines: {node: '>=10'} - dev: true - - /typed-array-buffer@1.0.2: - resolution: {integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - es-errors: 1.3.0 - is-typed-array: 1.1.13 - dev: true - - /typed-array-byte-length@1.0.1: - resolution: {integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==} - engines: {node: '>= 0.4'} - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - dev: true - - /typed-array-byte-offset@1.0.2: - resolution: {integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - dev: true + dev: false - /typed-array-length@1.0.6: - resolution: {integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==} - engines: {node: '>= 0.4'} + /typescript-eslint@7.7.1(eslint@9.1.1)(typescript@5.4.5): + resolution: {integrity: sha512-ykEBfa3xx3odjZy6GRED4SCPrjo0rgHwstLlEgLX4EMEuv7QeIDSmfV+S6Kk+XkbsYn4BDEcPvsci1X26lRpMQ==} + engines: {node: ^18.18.0 || >=20.0.0} + peerDependencies: + eslint: ^8.56.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - dev: true + '@typescript-eslint/eslint-plugin': 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) + eslint: 9.1.1 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + dev: false /typescript@5.4.5: resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} engines: {node: '>=14.17'} hasBin: true - dev: true - - /unbox-primitive@1.0.2: - resolution: {integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==} - dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 - dev: true /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} @@ -2773,56 +1674,7 @@ packages: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} dependencies: punycode: 2.3.1 - dev: true - - /which-boxed-primitive@1.0.2: - resolution: {integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==} - dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 - dev: true - - /which-builtin-type@1.1.3: - resolution: {integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==} - engines: {node: '>= 0.4'} - dependencies: - function.prototype.name: 1.1.6 - has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 - isarray: 2.0.5 - which-boxed-primitive: 1.0.2 - which-collection: 1.0.2 - which-typed-array: 1.1.15 - dev: true - - /which-collection@1.0.2: - resolution: {integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==} - engines: {node: '>= 0.4'} - dependencies: - is-map: 2.0.3 - is-set: 2.0.3 - is-weakmap: 2.0.2 - is-weakset: 2.0.3 - dev: true - - /which-typed-array@1.1.15: - resolution: {integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==} - engines: {node: '>= 0.4'} - dependencies: - available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-tostringtag: 1.0.2 - dev: true + dev: false /which@2.0.2: resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} @@ -2867,8 +1719,9 @@ packages: /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} + dev: false /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'} - dev: true + dev: false diff --git a/src/lib/src/drawUtils.ts b/src/lib/src/drawUtils.ts index d34c43506..66390fd0e 100644 --- a/src/lib/src/drawUtils.ts +++ b/src/lib/src/drawUtils.ts @@ -118,7 +118,7 @@ function insertText(boxImg: Mat, text: string, origin: { x: number, y: number }, pt = pt.add(new cv.Point2(0, getLineHeight(textLine))) insertText(boxImg, textLine.text, pt, opts) pt = pt.add(new cv.Point2(0, linePadding)) - } + }, ) boxImg.copyTo(img.getRegion(rect)) return img diff --git a/test/utils/generateAPITests.ts b/test/utils/generateAPITests.ts index a8c52d525..a8680d0fc 100644 --- a/test/utils/generateAPITests.ts +++ b/test/utils/generateAPITests.ts @@ -79,10 +79,11 @@ export const generateAPITests = (opts_: PartialAPITestOpts): void => { case 'callbacked': // Use Callback args.push(expectOutputCallbacked(done, dut, args)); return dut[method].apply(dut, args); - default: // Use Sync + default: {// Use Sync const result = dut[method].apply(dut, args); opts.expectOutput(result, dut, args); return done(); + } } }; From 5f0e9faf96b989ac4885d79be487e924e1c825f9 Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 16:39:01 +0200 Subject: [PATCH 29/50] lint --- eslint.config.mjs | 1 + test/tests/core/core.test.ts | 24 +++++++++++------------- test/tests/face/recognizerTests.ts | 2 +- test/tests/features2d/KeyPoint.test.ts | 2 +- test/tests/features2d/detectorTests.ts | 2 +- test/tests/imgproc/MatImgproc.test.ts | 14 +++++++------- test/tests/index.test.ts | 2 +- test/tests/io/VideoCapture.test.ts | 2 +- test/tests/tracking/Tracker.test.ts | 2 +- test/tests/ximgproc/ximgproc.test.ts | 2 +- test/utils/matTestUtils.ts | 4 ++-- test/utils/testUtils.ts | 2 +- typings/group/core_cluster.d.ts | 2 +- 13 files changed, 30 insertions(+), 31 deletions(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index c6ac0cb88..184092917 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -24,6 +24,7 @@ export default tseslint.config( "no-async-promise-executor": 0, "radix": 1, "no-undef": 0, + "no-case-declarations": 0, // unit tests only // "max-len" : 0, // "no-new" : 0, diff --git a/test/tests/core/core.test.ts b/test/tests/core/core.test.ts index 77d1d1897..75402b3ca 100644 --- a/test/tests/core/core.test.ts +++ b/test/tests/core/core.test.ts @@ -1,6 +1,6 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ import { expect } from 'chai'; -import { Mat, Point2, Point3 } from '@u4/opencv4nodejs'; +import { Mat, Point2, Point3, Vec2 } from '@u4/opencv4nodejs'; import asyncHooks from 'async_hooks'; import { getTestContext, TestContext } from '../model'; import { @@ -30,7 +30,7 @@ if (toTest.core) { const {getNodeMajorVersion} = TestContext; - const partitionTests = (createInstance: () => Point2) => { + const partitionTests = (createInstance: () => Point2 | Vec2) => { it('should return labels and numLabels', () => { const { labels, numLabels } = cv.partition([createInstance(), createInstance()], () => true); @@ -79,27 +79,25 @@ if (toTest.core) { }); describe('Vec2 input', () => { - // @ts-ignore - partitionTests(() => new cv.Vec2(0, 0)); + partitionTests(() => { + return new cv.Vec2(0, 0); + }); }); describe('Vec3 input', () => { - // @ts-ignore partitionTests(() => new cv.Vec3(0, 0, 0)); }); describe('Vec4 input', () => { - // @ts-ignore partitionTests(() => new cv.Vec4(0, 0, 0, 0)); }); describe('Vec6 input', () => { - // @ts-ignore partitionTests(() => new cv.Vec6(0, 0, 0, 0, 0, 0)); }); describe('Mat input', () => { - // @ts-ignore + // @ts-ignore partitionTests(() => new cv.Mat()); }); }); @@ -282,7 +280,7 @@ if (toTest.core) { it('should trigger `init` callback in async_hooks', () => { let typeFound = false; const hook = asyncHooks.createHook({ - // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars + // eslint-disable-next-line @typescript-eslint/no-unused-vars init: (_asyncId, type, _triggerAsyncId, _resource) => { if (type.indexOf('opencv4nodejs') === 0) { typeFound = true; @@ -295,7 +293,7 @@ if (toTest.core) { const createInstance = () => new cv.Point2(0, 0); const num = 5; const instances = Array(num).fill(0).map(() => createInstance()); - // eslint-disable-next-line no-unused-vars + // const { labels, numLabels } = cv.partition(instances, () => true); expect(typeFound).to.be.equal(true); @@ -698,7 +696,7 @@ if (toTest.core) { classNameSpace: 'Mat', methodNameSpace: 'Core', getRequiredArgs: () => ([dim, rtype, dtype]), - // eslint-disable-next-line no-unused-vars + expectOutput: (res) => { expect(res).to.be.instanceOf(cv.Mat); expect(res.getDataAsArray()).to.eql(expectedResults); @@ -724,7 +722,7 @@ if (toTest.core) { methodName: 'eigen', classNameSpace: 'Mat', methodNameSpace: 'Core', - // eslint-disable-next-line no-unused-vars + expectOutput: (res: Mat) => { expect(res).to.be.instanceOf(cv.Mat); const arrayRes = res.getDataAsArray(); @@ -755,7 +753,7 @@ if (toTest.core) { ['flags', flags], ]), getRequiredArgs: () => ([m2]), - // eslint-disable-next-line no-unused-vars + expectOutput: (res: Mat) => { expect(res).to.be.instanceOf(cv.Mat); const arrayRes = res.getDataAsArray(); diff --git a/test/tests/face/recognizerTests.ts b/test/tests/face/recognizerTests.ts index 9a62415ee..b3874fe8d 100644 --- a/test/tests/face/recognizerTests.ts +++ b/test/tests/face/recognizerTests.ts @@ -12,7 +12,7 @@ export default (args0: TestContext) => (args: string[], values: number[], Recogn props[arg] = values[i]; }); - /* eslint-disable new-parens */ + it('is constructable from args', () => { expect(() => new (Recognizer.bind.apply(Recognizer, [null].concat(values)))).to.not.throw(); }); diff --git a/test/tests/features2d/KeyPoint.test.ts b/test/tests/features2d/KeyPoint.test.ts index a6647a022..fc7176973 100644 --- a/test/tests/features2d/KeyPoint.test.ts +++ b/test/tests/features2d/KeyPoint.test.ts @@ -1,4 +1,4 @@ -/* eslint-disable camelcase */ + import { expect } from 'chai'; import { assertPropsWithValue, expectFloat } from '../../utils/testUtils'; import { getTestContext } from '../model'; diff --git a/test/tests/features2d/detectorTests.ts b/test/tests/features2d/detectorTests.ts index f7e0e3cf2..6b890cf56 100644 --- a/test/tests/features2d/detectorTests.ts +++ b/test/tests/features2d/detectorTests.ts @@ -42,7 +42,7 @@ export default function (args: TestContext) { customProps.args.forEach((arg: string, i) => { props[arg] = customProps.values[i]; }); - /* eslint-disable new-parens */ + const detector = new (Detector.bind.apply(Detector, [null].concat(customProps.values))); assertPropsWithValue(detector, props); }); diff --git a/test/tests/imgproc/MatImgproc.test.ts b/test/tests/imgproc/MatImgproc.test.ts index b6dd4be38..644e7ac05 100644 --- a/test/tests/imgproc/MatImgproc.test.ts +++ b/test/tests/imgproc/MatImgproc.test.ts @@ -902,7 +902,7 @@ if (toTest.imgproc) { ['apertureSize', 5], ['L2gradient', true], ]), - expectOutput: (binImg) => { + expectOutput: (binImg: any) => { assertMetaData(binImg)(img.rows, img.cols, cv.CV_8U); }, }); @@ -995,7 +995,7 @@ if (toTest.imgproc) { ['size', sizeDown], ['borderType', cv.BORDER_REFLECT], ]), - expectOutput: (outImg) => assertMetaData(outImg)(sizeDown.height, sizeDown.width, cv.CV_8UC3), + expectOutput: (outImg: any) => assertMetaData(outImg)(sizeDown.height, sizeDown.width, cv.CV_8UC3), }); }); @@ -1008,7 +1008,7 @@ if (toTest.imgproc) { ['size', sizeUp], ['borderType', cv.BORDER_DEFAULT], ]), - expectOutput: (outImg) => assertMetaData(outImg)(sizeUp.height, sizeUp.width, cv.CV_8UC3), + expectOutput: (outImg: any) => assertMetaData(outImg)(sizeUp.height, sizeUp.width, cv.CV_8UC3), }); }); @@ -1016,7 +1016,7 @@ if (toTest.imgproc) { const expectOutput = (pyramid: Mat[]) => { expect(pyramid).to.be.an('array').lengthOf(4); pyramid.forEach((outImg, i) => { - /* eslint-disable no-restricted-properties */ + const scale = 1 / 2 ** i; expect(outImg).to.be.instanceOf(cv.Mat); assertMetaData(outImg)(img.rows * scale, img.cols * scale, cv.CV_8UC3); @@ -1383,7 +1383,7 @@ if (toTest.imgproc) { zeroZone, criteria, ]), - expectOutput: (adjustedCorners) => { + expectOutput: (adjustedCorners: unknown) => { expect(adjustedCorners).to.be.an('array').lengthOf(corners.length); }, }); @@ -1431,7 +1431,7 @@ if (toTest.imgproc) { ['sdepth', cv.CV_64F], ['sqdepth', cv.CV_64F], ]), - expectOutput: (res) => { + expectOutput: (res: unknown) => { expect(res).to.have.property('sum').to.be.instanceOf(cv.Mat); expect(res).to.have.property('sqsum').to.be.instanceOf(cv.Mat); expect(res).to.have.property('tilted').to.be.instanceOf(cv.Mat); @@ -1504,7 +1504,7 @@ if (toTest.imgproc) { methodName: 'undistort', methodNameSpace: 'Mat', getRequiredArgs: () => ([cameraMatrix, distCoeffs]), - expectOutput: (res) => { + expectOutput: (res: unknown) => { expect(res).to.be.instanceOf(cv.Mat); }, }); diff --git a/test/tests/index.test.ts b/test/tests/index.test.ts index 585d30311..76dbe657a 100644 --- a/test/tests/index.test.ts +++ b/test/tests/index.test.ts @@ -1,4 +1,4 @@ -/* eslint-disable no-console */ + import { expect } from 'chai'; import cv from '@u4/opencv4nodejs'; import { getTestContext } from './model'; diff --git a/test/tests/io/VideoCapture.test.ts b/test/tests/io/VideoCapture.test.ts index feea6f7eb..880c3d06c 100644 --- a/test/tests/io/VideoCapture.test.ts +++ b/test/tests/io/VideoCapture.test.ts @@ -1,4 +1,4 @@ -/* eslint-disable no-bitwise */ + import { VideoCapture } from '@u4/opencv4nodejs'; import { expect } from 'chai'; import path from 'path'; diff --git a/test/tests/tracking/Tracker.test.ts b/test/tests/tracking/Tracker.test.ts index 4ccd919f1..4ba277a66 100644 --- a/test/tests/tracking/Tracker.test.ts +++ b/test/tests/tracking/Tracker.test.ts @@ -23,7 +23,7 @@ if (toTest.tracking) { } = getTestContext(); const TrackerTestGenerator = (getTestImg2: () => Mat) => (trackerName: TrackerNames) => { - // eslint-disable-next-line no-unused-vars, @typescript-eslint/no-unused-vars + // eslint-disable-next-line @typescript-eslint/no-unused-vars const newTracker = (_arg2?: unknown) => new cv[trackerName](); const newTrackerParams = () => { if (trackerName === 'TrackerBoosting' || trackerName === 'TrackerKCF' || trackerName === 'TrackerMIL') { diff --git a/test/tests/ximgproc/ximgproc.test.ts b/test/tests/ximgproc/ximgproc.test.ts index e6b500546..e761b4505 100644 --- a/test/tests/ximgproc/ximgproc.test.ts +++ b/test/tests/ximgproc/ximgproc.test.ts @@ -1,4 +1,4 @@ -/* eslint-disable camelcase */ + import { assert, expect } from 'chai'; import { assertMetaData } from '../../utils/matTestUtils'; import { assertPropsWithValue } from '../../utils/testUtils'; diff --git a/test/utils/matTestUtils.ts b/test/utils/matTestUtils.ts index 31cbf36b9..8fa076e35 100644 --- a/test/utils/matTestUtils.ts +++ b/test/utils/matTestUtils.ts @@ -10,7 +10,7 @@ const normalizeValue = (val: number | Vec4 | Array) => ((val as Vec4).x : ((val as Array).length !== 4 ? [undefined, (val as number[])[0], (val as number[])[1], (val as number[])[2]] : val) ); -// eslint-disable-next-line no-unused-vars + type Comparator = (a: T, b: T) => boolean; export const AssertMatValueEquals = (cmpFunc: Comparator) => (val0: number | number[], val1: number | number[]): void => { @@ -41,7 +41,7 @@ export const assertDataDeepEquals = (data0: any, data1: any): void => { assert(dangerousDeepEquals(data0, data1), 'mat data not equal'); }; -// eslint-disable-next-line no-unused-vars + type CompareInts = (a: number, b: number) => void; export const MatValuesComparator = (mat0: Mat, mat1: Mat) => (cmpFunc: CompareInts): void => { diff --git a/test/utils/testUtils.ts b/test/utils/testUtils.ts index 5424b3815..7246cf7f5 100644 --- a/test/utils/testUtils.ts +++ b/test/utils/testUtils.ts @@ -1,5 +1,5 @@ /* eslint-disable @typescript-eslint/no-explicit-any */ -/* eslint-disable no-unused-vars */ + import { assert, expect } from 'chai'; import fs from 'fs'; import { diff --git a/typings/group/core_cluster.d.ts b/typings/group/core_cluster.d.ts index e05858097..76a24b7a3 100644 --- a/typings/group/core_cluster.d.ts +++ b/typings/group/core_cluster.d.ts @@ -17,7 +17,7 @@ export function kmeans(data: Point3[], k: number, termCriteria: TermCriteria, at // template // int partition (const std::vector< _Tp > &_vec, std::vector< int > &labels, _EqPredicate predicate=_EqPredicate()) -export function partition(data: Point2[], predicate: (pt1: Point2, pt2: Point2) => boolean): { labels: number[], numLabels: number }; +export function partition(data: Array, predicate: (pt1: Point2 | Vec2, pt2: Point2 | Vec2) => boolean): { labels: number[], numLabels: number }; export function partition(data: Point3[], predicate: (pt1: Point3, pt2: Point3) => boolean): { labels: number[], numLabels: number }; export function partition(data: Vec2[], predicate: (vec1: Vec2, vec2: Vec2) => boolean): { labels: number[], numLabels: number }; export function partition(data: Vec3[], predicate: (vec1: Vec3, vec2: Vec3) => boolean): { labels: number[], numLabels: number }; From f75957aab0190f53f0ad5596a42d674276b0eaed Mon Sep 17 00:00:00 2001 From: urielch Date: Sun, 28 Apr 2024 16:43:11 +0200 Subject: [PATCH 30/50] add files to packages --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 8b18bfdfd..e1793e8ca 100644 --- a/package.json +++ b/package.json @@ -95,6 +95,7 @@ "src/**/*.xml", "bin/*.js", "typings", + "types", "binding.gyp", "binding_old.gyp" ] From 9085598bfd518395187ec32f28dd5a8828bb681c Mon Sep 17 00:00:00 2001 From: urielch Date: Mon, 29 Apr 2024 23:00:02 +0200 Subject: [PATCH 31/50] fix import chai error --- test/tests/img_hash/imgHashTests.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/tests/img_hash/imgHashTests.ts b/test/tests/img_hash/imgHashTests.ts index e95f31f75..493c08ef2 100644 --- a/test/tests/img_hash/imgHashTests.ts +++ b/test/tests/img_hash/imgHashTests.ts @@ -1,10 +1,10 @@ -import chai, { expect } from 'chai'; +import { use, expect } from 'chai'; import chaiArrays from 'chai-arrays'; import { PHash } from '../../../typings'; import { generateAPITests } from '../../utils/generateAPITests'; import { getTestContext } from '../model'; -chai.use(chaiArrays); +use(chaiArrays); export default () => (ImgHash: typeof PHash) => { const { getTestImg } = getTestContext(); From 38bbe3f049923b008286ede5fac0e37c2405a479 Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 00:00:21 +0200 Subject: [PATCH 32/50] use less __dirname --- examples/src/AgeGender/AgeGender.ts | 14 +++++----- .../object_detection_yolo.ts | 6 ++-- .../getDataFromOpenImages_snowman.ts | 4 +-- .../object_detection_yolo.ts | 6 ++-- examples/src/utils.ts | 28 +++++++++++-------- src/lib/cvloader.ts | 1 - test/tests/model.ts | 2 +- test/utils/testUtils.ts | 1 - 8 files changed, 32 insertions(+), 30 deletions(-) diff --git a/examples/src/AgeGender/AgeGender.ts b/examples/src/AgeGender/AgeGender.ts index 05760ad8f..077fd588d 100644 --- a/examples/src/AgeGender/AgeGender.ts +++ b/examples/src/AgeGender/AgeGender.ts @@ -1,7 +1,7 @@ import fs from 'fs'; import mri from 'mri'; import { Mat, Net, Point2, Rect, Size, Vec3, VideoCapture } from '@u4/opencv4nodejs'; -import { cv, getCachedFile, wait4key } from '../utils'; +import { cv, getCachedFile, getExampleDirname, wait4key } from '../utils'; import path from 'path'; import NetIdentifier from './NetIdentifier'; @@ -48,16 +48,16 @@ if (args.help) { } const main = async () => { - const faceProto = path.resolve(__dirname, "opencv_face_detector.pbtxt") - const faceModel = await getCachedFile(path.resolve(__dirname, "opencv_face_detector_uint8.pb"), 'https://github.com/spmallick/learnopencv/raw/master/AgeGender/opencv_face_detector_uint8.pb') + const faceProto = getExampleDirname("AgeGender", "opencv_face_detector.pbtxt") + const faceModel = await getCachedFile(getExampleDirname("AgeGender", "opencv_face_detector_uint8.pb"), 'https://github.com/spmallick/learnopencv/raw/master/AgeGender/opencv_face_detector_uint8.pb') - const ageProto = path.resolve(__dirname, "age_deploy.prototxt") + const ageProto = getExampleDirname("AgeGender", "age_deploy.prototxt") // 44 MB file - const ageModel = path.resolve(__dirname, "age_net.caffemodel") // https://www.dropbox.com/s/xfb20y596869vbb/age_net.caffemodel?dl=0 + const ageModel = getExampleDirname("AgeGender", "age_net.caffemodel") // https://www.dropbox.com/s/xfb20y596869vbb/age_net.caffemodel?dl=0 - const genderProto = path.resolve(__dirname, "gender_deploy.prototxt") + const genderProto = getExampleDirname("AgeGender", "gender_deploy.prototxt") // 44 MB file - const genderModel = path.resolve(__dirname, "gender_net.caffemodel") // https://www.dropbox.com/s/iyv483wz7ztr9gh/gender_net.caffemodel?dl=0 + const genderModel = getExampleDirname("AgeGender", "gender_net.caffemodel") // https://www.dropbox.com/s/iyv483wz7ztr9gh/gender_net.caffemodel?dl=0 const MODEL_MEAN_VALUES = new Vec3(78.4263377603, 87.7689143744, 114.895847746) diff --git a/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts b/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts index d37f95e98..2b33d4ff0 100644 --- a/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts +++ b/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts @@ -2,7 +2,7 @@ import { assert } from 'console'; import fs from 'fs'; import mri from 'mri'; import { Mat, Net, Point2, Rect, Size, Vec3, VideoCapture, VideoWriter } from '@u4/opencv4nodejs'; -import { cv, getCachedFile } from '../utils'; +import { cv, getCachedFile, getExampleDirname } from '../utils'; import path from 'path'; // ported from https://github.com/spmallick/learnopencv/blob/master/ObjectDetection-YOLO/object_detection_yolo.py @@ -28,12 +28,12 @@ const device = args.device || 'cpu'; async function main() { // # Load names of classes - const classesFile = path.resolve(__dirname, "coco.names"); + const classesFile = getExampleDirname("ObjectDetection-YOLO", "coco.names"); // classes = None const classes = fs.readFileSync(classesFile, 'utf8').split(/[\r\n]+/); // Give the configuration and weight files for the model and load the network using them. - const modelConfiguration = path.resolve(__dirname, "yolov3.cfg") + const modelConfiguration = getExampleDirname("ObjectDetection-YOLO", "yolov3.cfg") const modelWeights = await getCachedFile("yolov3.weights", 'https://pjreddie.com/media/files/yolov3.weights') const net: Net = cv.readNetFromDarknet(modelConfiguration, modelWeights) diff --git a/examples/src/YOLOv3-Training-Snowman-Detector/getDataFromOpenImages_snowman.ts b/examples/src/YOLOv3-Training-Snowman-Detector/getDataFromOpenImages_snowman.ts index cd5fa6be7..70ea727d8 100644 --- a/examples/src/YOLOv3-Training-Snowman-Detector/getDataFromOpenImages_snowman.ts +++ b/examples/src/YOLOv3-Training-Snowman-Detector/getDataFromOpenImages_snowman.ts @@ -1,4 +1,4 @@ -import { getCachedFile } from "../utils"; +import { getCachedFile, getExampleDirname } from "../utils"; import fs from 'fs'; import path from 'path'; // import rimraf from 'rimraf'; @@ -14,7 +14,7 @@ async function getDataFromOpenImages_snowman() { const runMode = "train"; const classes = ["Snowman"]; - const dataPath = __dirname; // "../../data/dnn/openimages"; + const dataPath = getExampleDirname("YOLOv3-Training-Snowman-Detector"); // "../../data/dnn/openimages"; const JPEGImages = path.join(dataPath, 'JPEGImages'); const labels = path.join(dataPath, 'labels'); diff --git a/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts b/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts index 1d7f883d6..5f9194136 100644 --- a/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts +++ b/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts @@ -4,7 +4,7 @@ import mri from "mri"; import fs from "fs"; import path from "path"; import assert from 'assert'; -import { cv } from "../utils"; +import { cv, getExampleDirname } from "../utils"; import { Net, Mat, VideoCapture, VideoWriter, Size, Point2, Vec3, Rect } from '@u4/opencv4nodejs'; // # Usage example: python3 object_detection_yolo.py --video=run.mp4 @@ -41,8 +41,8 @@ const classes = fs.readFileSync(classesFile, { encoding: 'utf8' }).trim().split( // Give the configuration and weight files for the model and load the network using them. -const modelConfiguration = path.join(__dirname, 'darknet-yolov3.cfg'); -const modelWeights = path.join(__dirname, 'weights', 'darknet-yolov3_final.weights'); // "/data-ssd/sunita/snowman/darknet-yolov3_final.weights"; +const modelConfiguration = getExampleDirname("YOLOv3-Training-Snowman-Detector", 'darknet-yolov3.cfg'); +const modelWeights = getExampleDirname("YOLOv3-Training-Snowman-Detector", 'weights', 'darknet-yolov3_final.weights'); // "/data-ssd/sunita/snowman/darknet-yolov3_final.weights"; const net = cv.readNetFromDarknet(modelConfiguration, modelWeights) if (args.device == "cpu") { diff --git a/examples/src/utils.ts b/examples/src/utils.ts index 04970232d..c3f0320f1 100644 --- a/examples/src/utils.ts +++ b/examples/src/utils.ts @@ -9,9 +9,23 @@ import crypto from 'crypto'; export const delay = (ms: number): Promise => new Promise(resolve => setTimeout(resolve, ms)); +export function getExampleDirname(...names: string[]) { + let dir = '.'; + try { + // eslint-disable-next-line @typescript-eslint/ban-ts-comment + // @ts-ignore + dir = fileURLToPath(new URL('.', import.meta.url)); + } catch { + dir = __dirname; + } + if (!names.length) + return dir; + return path.resolve(dir, ...names); +} + export function getCachedFile(localName: string, url: string, opts?: { notice?: string, noProgress?: boolean }): Promise { opts = opts || {}; - const localFile = path.resolve(__dirname, localName); + const localFile = getExampleDirname(localName); if (fs.existsSync(localFile)) { return Promise.resolve(localFile); } @@ -62,21 +76,11 @@ export function getCachedFile(localName: string, url: string, opts?: { notice?: }) } - -let _dirname = '.'; -try { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - _dirname = fileURLToPath(new URL('.', import.meta.url)); -} catch { - _dirname = __dirname; -} - /** * add some helpter for examples TS */ -export const dataPath = path.resolve(_dirname, '..', '..', 'data'); +export const dataPath = getExampleDirname('..', '..', 'data'); // export const getDataFilePath = (fileName: string): string => { // const fullpath = path.resolve(dataPath, fileName) diff --git a/src/lib/cvloader.ts b/src/lib/cvloader.ts index cdf2cb19d..0649c670a 100644 --- a/src/lib/cvloader.ts +++ b/src/lib/cvloader.ts @@ -53,7 +53,6 @@ export function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { requirePath = path.join(dirname, '../../build/Release/opencv4nodejs.node'); } requirePath = requirePath.replace(/\.node$/, ''); - // path.join(__dirname, process.env.BINDINGS_DEBUG ? '../../build/Debug/opencv4nodejs' : '../../build/Release/opencv4nodejs') } try { logDebug('require', `require path is ${pc.yellow(requirePath)}`) diff --git a/test/tests/model.ts b/test/tests/model.ts index 36b8be614..5c5a0c746 100644 --- a/test/tests/model.ts +++ b/test/tests/model.ts @@ -100,7 +100,7 @@ export class TestContext { public getPeoplesTestImg: () => Mat = () => { if (!this.people360) { - const file = path.resolve(__dirname, '../utils/people.data'); + const file = path.resolve(getDirName(), '../../test/utils/people.data'); this.people360 = new this.cv.Mat(fs.readFileSync(file), 360, 640, this.cv.CV_8UC3); } return this.people360; diff --git a/test/utils/testUtils.ts b/test/utils/testUtils.ts index 7246cf7f5..6028c704f 100644 --- a/test/utils/testUtils.ts +++ b/test/utils/testUtils.ts @@ -8,7 +8,6 @@ import { Vec3, Vec4, } from '@u4/opencv4nodejs'; -import type Chai from 'chai'; export const assertError = (func: () => any, msg: string): void => { let errMsg = ''; From 674d735c9f7bcf31e85a616d6af39241a6d34abf Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 00:23:57 +0200 Subject: [PATCH 33/50] add pnpm run rebuild in appveyor --- appveyor.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/appveyor.yml b/appveyor.yml index 2409a9c7b..bd12a289f 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -86,6 +86,7 @@ test_script: - cd c:\projects\opencv4nodejs - pnpm install --frozen-lockfile - pnpm run prepack + - pnpm run rebuild # - npm link # - build-opencv rebuild # - cd c:\projects\opencv4nodejs\ci\envs && build-opencv rebuild && pnpm install && pnpm test From 09a957a85ca49a4f171e0b62d0f14e7461e443e7 Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 07:42:24 +0200 Subject: [PATCH 34/50] update appveyor to build V4.9.0 --- appveyor.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index bd12a289f..fb717f1ed 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -15,10 +15,10 @@ shallow_clone: true # what combinations to test environment: OPENCV3_N0: 3.4.16 # 2021-10-11 - #OPENCV4_N_0: 4.6.0 # 2022-06-12 - OPENCV4_N0: 4.5.5 # 2022-06-12 - OPENCV4_N1: 4.5.0 # 2021-12-30 - OPENCV4_N2: 4.4.0 # 2020-07-18 + OPENCV4_N0: 4.9.0 # 2022-06-12 + # OPENCV4_N0: 4.5.5 # 2022-06-12 + # OPENCV4_N1: 4.5.0 # 2021-12-30 + # OPENCV4_N2: 4.4.0 # 2020-07-18 # OPENCV4_N0: 4.5.3 # # OPENCV4_N1: 4.5.2 # From f1551302a5e983501620bbf23a78929c27fddd3c Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 08:05:07 +0200 Subject: [PATCH 35/50] patch examples --- examples/package.json | 7 ++- examples/pnpm-lock.yaml | 32 +++++------ examples/src/utils.ts | 9 +-- examples/tsconfig.json | 97 +------------------------------- examples/tsconfig.prod.json | 98 +-------------------------------- typings/group/core_cluster.d.ts | 24 ++++---- 6 files changed, 38 insertions(+), 229 deletions(-) diff --git a/examples/package.json b/examples/package.json index 2103ae64e..90cf3e3e4 100644 --- a/examples/package.json +++ b/examples/package.json @@ -2,7 +2,8 @@ "name": "opencv4nodejs-examples", "version": "0.0.0", "description": "example for opencv4nodejs", - "main": "EASTTextDetection.js", + "main": "src/EASTTextDetection.js", + "type": "commonjs", "scripts": { "clean": "rimraf src/**/*.js src/**/*.map *.js.map *.js *.log" }, @@ -11,10 +12,10 @@ "dependencies": { "@types/lodash.samplesize": "^4.2.9", "@u4/opencv4nodejs": "link:..", - "axios": "^1.2.2", + "axios": "^1.6.8", "lodash.samplesize": "^4.2.0", "mri": "^1.2.0", - "p-limit": "3.1.0", + "p-limit": "5.0.0", "picocolors": "^1.0.0", "progress": "^2.0.3" }, diff --git a/examples/pnpm-lock.yaml b/examples/pnpm-lock.yaml index 22aef82cf..253d71529 100644 --- a/examples/pnpm-lock.yaml +++ b/examples/pnpm-lock.yaml @@ -12,8 +12,8 @@ dependencies: specifier: link:.. version: link:.. axios: - specifier: ^1.2.2 - version: 1.2.2 + specifier: ^1.6.8 + version: 1.6.8 lodash.samplesize: specifier: ^4.2.0 version: 4.2.0 @@ -21,8 +21,8 @@ dependencies: specifier: ^1.2.0 version: 1.2.0 p-limit: - specifier: 3.1.0 - version: 3.1.0 + specifier: 5.0.0 + version: 5.0.0 picocolors: specifier: ^1.0.0 version: 1.0.0 @@ -180,10 +180,10 @@ packages: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} dev: false - /axios@1.2.2: - resolution: {integrity: sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==} + /axios@1.6.8: + resolution: {integrity: sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==} dependencies: - follow-redirects: 1.15.2 + follow-redirects: 1.15.6 form-data: 4.0.0 proxy-from-env: 1.1.0 transitivePeerDependencies: @@ -253,8 +253,8 @@ packages: resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} dev: true - /follow-redirects@1.15.2: - resolution: {integrity: sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==} + /follow-redirects@1.15.6: + resolution: {integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==} engines: {node: '>=4.0'} peerDependencies: debug: '*' @@ -351,11 +351,11 @@ packages: resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} engines: {node: '>=4'} - /p-limit@3.1.0: - resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} - engines: {node: '>=10'} + /p-limit@5.0.0: + resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==} + engines: {node: '>=18'} dependencies: - yocto-queue: 0.1.0 + yocto-queue: 1.0.0 dev: false /path-key@3.1.1: @@ -517,7 +517,7 @@ packages: engines: {node: '>=6'} dev: true - /yocto-queue@0.1.0: - resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} - engines: {node: '>=10'} + /yocto-queue@1.0.0: + resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} + engines: {node: '>=12.20'} dev: false diff --git a/examples/src/utils.ts b/examples/src/utils.ts index c3f0320f1..0eace870e 100644 --- a/examples/src/utils.ts +++ b/examples/src/utils.ts @@ -11,13 +11,8 @@ export const delay = (ms: number): Promise => new Promise(resolve => setTi export function getExampleDirname(...names: string[]) { let dir = '.'; - try { - // eslint-disable-next-line @typescript-eslint/ban-ts-comment - // @ts-ignore - dir = fileURLToPath(new URL('.', import.meta.url)); - } catch { - dir = __dirname; - } + // dir = fileURLToPath(new URL('.', import.meta.url)); + dir = __dirname; if (!names.length) return dir; return path.resolve(dir, ...names); diff --git a/examples/tsconfig.json b/examples/tsconfig.json index 7f3f93387..34aef5b7e 100644 --- a/examples/tsconfig.json +++ b/examples/tsconfig.json @@ -1,108 +1,13 @@ { "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Projects */ - // "incremental": true, /* Enable incremental compilation */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ "target": "ESNext", - /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ - // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - - /* Modules */ "module": "commonjs", - /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "resolveJsonModule": true, /* Enable importing .json files */ - // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ "inlineSourceMap": true, - /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ "esModuleInterop": true, - /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ "forceConsistentCasingInFileNames": true, - /* Ensure that casing is correct in imports. */ - - /* Type Checking */ "strict": true, - /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ - // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ - // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, - "include": ["./src/**/*.ts"] + "include": ["src"] } \ No newline at end of file diff --git a/examples/tsconfig.prod.json b/examples/tsconfig.prod.json index c5626571d..225b51395 100644 --- a/examples/tsconfig.prod.json +++ b/examples/tsconfig.prod.json @@ -1,108 +1,12 @@ { "compilerOptions": { - /* Visit https://aka.ms/tsconfig.json to read more about this file */ - - /* Projects */ - // "incremental": true, /* Enable incremental compilation */ - // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ - // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ - // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ - // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ - // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ - - /* Language and Environment */ "target": "ESNext", - /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ - // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ - // "jsx": "preserve", /* Specify what JSX code is generated. */ - // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ - // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ - // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ - // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ - // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ - // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ - // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ - // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ - - /* Modules */ "module": "commonjs", - /* Specify what module code is generated. */ - // "rootDir": "./", /* Specify the root folder within your source files. */ - // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ - // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ - // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ - // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ - // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ - // "types": [], /* Specify type package names to be included without being referenced in a source file. */ - // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ - // "resolveJsonModule": true, /* Enable importing .json files */ - // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ - - /* JavaScript Support */ - // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ - // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ - // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ - - /* Emit */ - // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ - // "declarationMap": true, /* Create sourcemaps for d.ts files. */ - // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ - // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ - // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ - // "outDir": "./", /* Specify an output folder for all emitted files. */ - // "removeComments": true, /* Disable emitting comments. */ - // "noEmit": true, /* Disable emitting files from a compilation. */ - // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ - // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ - // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ - // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ - // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ "inlineSourceMap": false, - /* Include sourcemap files inside the emitted JavaScript. */ - // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ - // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ - // "newLine": "crlf", /* Set the newline character for emitting files. */ - // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ - // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ - // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ - // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ - // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ - // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ - - /* Interop Constraints */ - // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ - // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ "esModuleInterop": true, - /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ - // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ "forceConsistentCasingInFileNames": true, - /* Ensure that casing is correct in imports. */ - - /* Type Checking */ "strict": true, - /* Enable all strict type-checking options. */ - // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ - // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ - // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ - // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ - // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ - // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ - // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ - // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ - // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ - // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ - // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ - // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ - // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ - // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ - // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ - // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ - // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ - // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ - - /* Completeness */ - // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ "skipLibCheck": true /* Skip type checking all .d.ts files. */ }, - "include": ["./src/**/*.ts"] + "include": ["src"] } \ No newline at end of file diff --git a/typings/group/core_cluster.d.ts b/typings/group/core_cluster.d.ts index 76a24b7a3..31fb12ff1 100644 --- a/typings/group/core_cluster.d.ts +++ b/typings/group/core_cluster.d.ts @@ -7,20 +7,24 @@ import { Point2 } from "../Point2"; import { Point3 } from "../Point3"; import { TermCriteria } from "../TermCriteria"; - // double cv::kmeans (InputArray data, int K, InputOutputArray bestLabels, TermCriteria criteria, int attempts, int flags, OutputArray centers=noArray()) // Finds centers of clusters and groups input samples around the clusters. More... // // Splits an element set into equivalency classes. More... -export function kmeans(data: Point2[], k: number, termCriteria: TermCriteria, attempts: number, flags: number): { labels: number[], centers: Point2[] }; -export function kmeans(data: Point3[], k: number, termCriteria: TermCriteria, attempts: number, flags: number): { labels: number[], centers: Point3[] }; + +export function kmeans(data: T[], k: number, termCriteria: TermCriteria, attempts: number, flags: number): { labels: number[], centers: T[] }; + +// export function kmeans(data: Point2[], k: number, termCriteria: TermCriteria, attempts: number, flags: number): { labels: number[], centers: Point2[] }; +// export function kmeans(data: Point3[], k: number, termCriteria: TermCriteria, attempts: number, flags: number): { labels: number[], centers: Point3[] }; // template // int partition (const std::vector< _Tp > &_vec, std::vector< int > &labels, _EqPredicate predicate=_EqPredicate()) -export function partition(data: Array, predicate: (pt1: Point2 | Vec2, pt2: Point2 | Vec2) => boolean): { labels: number[], numLabels: number }; -export function partition(data: Point3[], predicate: (pt1: Point3, pt2: Point3) => boolean): { labels: number[], numLabels: number }; -export function partition(data: Vec2[], predicate: (vec1: Vec2, vec2: Vec2) => boolean): { labels: number[], numLabels: number }; -export function partition(data: Vec3[], predicate: (vec1: Vec3, vec2: Vec3) => boolean): { labels: number[], numLabels: number }; -export function partition(data: Vec4[], predicate: (vec1: Vec4, vec2: Vec4) => boolean): { labels: number[], numLabels: number }; -export function partition(data: Vec6[], predicate: (vec1: Vec6, vec2: Vec6) => boolean): { labels: number[], numLabels: number }; -export function partition(data: Mat[], predicate: (mat1: Mat, mat2: Mat) => boolean): { labels: number[], numLabels: number }; +export function partition(data: Array, predicate: (pt1: T, pt2: T) => boolean): { labels: number[], numLabels: number }; + +// export function partition(data: Point2[], predicate: (pt1: Point2, pt2: Point2) => boolean): { labels: number[], numLabels: number }; +// export function partition(data: Point3[], predicate: (pt1: Point3, pt2: Point3) => boolean): { labels: number[], numLabels: number }; +// export function partition(data: Vec2[], predicate: (vec1: Vec2, vec2: Vec2) => boolean): { labels: number[], numLabels: number }; +// export function partition(data: Vec3[], predicate: (vec1: Vec3, vec2: Vec3) => boolean): { labels: number[], numLabels: number }; +// export function partition(data: Vec4[], predicate: (vec1: Vec4, vec2: Vec4) => boolean): { labels: number[], numLabels: number }; +// export function partition(data: Vec6[], predicate: (vec1: Vec6, vec2: Vec6) => boolean): { labels: number[], numLabels: number }; +// export function partition(data: Mat[], predicate: (mat1: Mat, mat2: Mat) => boolean): { labels: number[], numLabels: number }; From 3531f390714990f9da93fd8c9a1daf705f175b6f Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 08:37:27 +0200 Subject: [PATCH 36/50] use ESM import style in examples --- examples/src/AgeGender/AgeGender.ts | 7 +++---- examples/src/AgeGender/NetIdentifier.ts | 1 - examples/src/EASTTextDetection.ts | 4 ++-- examples/src/OCRTools.ts | 4 ++-- .../ObjectDetection-YOLO/object_detection_yolo.ts | 7 +++---- .../getDataFromOpenImages_snowman.ts | 9 ++++----- .../object_detection_yolo.ts | 15 +++++++-------- .../splitTrainAndTest.ts | 4 ++-- examples/src/applyColorMap.ts | 2 +- examples/src/asyncMatchFeatures.ts | 2 +- .../dnnTensorflowObjectDetectionClassNames.ts | 6 ++++-- examples/src/dnn/loadFacenet.ts | 6 +++--- examples/src/dnn/ssdUtils.ts | 2 +- .../src/dnnDarknetYOLORealTimeObjectDetection.ts | 2 +- examples/src/dnnSSDCoco.ts | 8 ++++---- examples/src/dnnTensorflowInception.ts | 6 +++--- examples/src/dnnTensorflowObjectDetection.ts | 9 ++++----- examples/src/faceDetect/asyncFaceDetection.ts | 2 +- examples/src/faceDetect/commons.ts | 6 +++--- examples/src/faceDetect/faceAndEyeDetection.ts | 3 +-- examples/src/faceDetect/faceDetection.ts | 2 +- examples/src/faceDetect/facenetSSD.ts | 4 ++-- examples/src/faceDetect/videoFaceDetectionCpu.ts | 4 ++-- .../src/faceDetect/videoFaceDetectionCpuAsync.ts | 4 ++-- examples/src/faceDetect/videoFaceDetectionGpu.ts | 5 +++-- .../src/faceDetect/videoFaceDetectionGpuAsync.ts | 5 +++-- examples/src/faceDetect/webcamFaceDetectionCpu.ts | 4 ++-- examples/src/faceDetect/webcamFaceDetectionGpu.ts | 4 ++-- examples/src/faceDetect/webcamFacenetSSD.ts | 4 ++-- examples/src/faceRecognition0.ts | 6 +++--- examples/src/faceRecognition1.ts | 6 +++--- examples/src/facemark.ts | 3 +-- examples/src/getStructureSimilarity.ts | 2 +- examples/src/guidedFilter.ts | 3 +-- examples/src/handGestureRecognition0.ts | 5 ++--- examples/src/machineLearningOCR.ts | 9 ++++----- examples/src/makeDataSetOCR.ts | 6 +++--- examples/src/matchFeatures.ts | 2 +- examples/src/ocrHMMCharacters.ts | 4 ++-- examples/src/ocrHMMWords.ts | 4 ++-- examples/src/plotHist.ts | 3 +-- examples/src/simpleTracking0.ts | 2 +- examples/src/simpleTracking1.ts | 2 +- examples/src/templateMatch/multiMatchBench.ts | 2 +- examples/src/templateMatch/multiMatchColision.ts | 2 +- examples/src/templateMatch/templateMatching.ts | 2 +- examples/src/test34d.ts | 2 -- examples/src/utils.ts | 7 ++++--- 48 files changed, 102 insertions(+), 111 deletions(-) diff --git a/examples/src/AgeGender/AgeGender.ts b/examples/src/AgeGender/AgeGender.ts index 077fd588d..3dd84823f 100644 --- a/examples/src/AgeGender/AgeGender.ts +++ b/examples/src/AgeGender/AgeGender.ts @@ -1,9 +1,8 @@ -import fs from 'fs'; +import fs from 'node:fs'; import mri from 'mri'; import { Mat, Net, Point2, Rect, Size, Vec3, VideoCapture } from '@u4/opencv4nodejs'; -import { cv, getCachedFile, getExampleDirname, wait4key } from '../utils'; -import path from 'path'; -import NetIdentifier from './NetIdentifier'; +import { cv, getCachedFile, getExampleDirname, wait4key } from '../utils.js'; +import NetIdentifier from './NetIdentifier.js'; // ported from https://github.com/spmallick/learnopencv/blob/master/AgeGender/AgeGender.py diff --git a/examples/src/AgeGender/NetIdentifier.ts b/examples/src/AgeGender/NetIdentifier.ts index 5afada8d8..6546924fb 100644 --- a/examples/src/AgeGender/NetIdentifier.ts +++ b/examples/src/AgeGender/NetIdentifier.ts @@ -1,6 +1,5 @@ import cv, { Net, Mat } from "@u4/opencv4nodejs"; - const getMaxIndex = (scores: number[]): number => { let max = Number.MIN_VALUE; let classId = -1; diff --git a/examples/src/EASTTextDetection.ts b/examples/src/EASTTextDetection.ts index 6871cc5ad..d0815ed65 100644 --- a/examples/src/EASTTextDetection.ts +++ b/examples/src/EASTTextDetection.ts @@ -1,6 +1,6 @@ -import path from 'path'; -import { cv, drawBlueRect, getCachedFile, getResourcePath, wait4key } from './utils'; +import path from 'node:path'; import type { Mat, Rect } from '@u4/opencv4nodejs'; +import { cv, drawBlueRect, getCachedFile, getResourcePath, wait4key } from './utils.js'; /** * Text detection simple code example. diff --git a/examples/src/OCRTools.ts b/examples/src/OCRTools.ts index 036e09f92..835d2ce45 100644 --- a/examples/src/OCRTools.ts +++ b/examples/src/OCRTools.ts @@ -1,6 +1,6 @@ -import fs from 'fs'; +import fs from 'node:fs'; import { Mat } from '@u4/opencv4nodejs'; -import { cv } from './utils'; +import { cv } from './utils.js'; // a - z export const lccs: Array = Array(26).fill(97).map((v, i) => v + i).map(ascii => String.fromCharCode(ascii)); diff --git a/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts b/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts index 2b33d4ff0..d9b7f147f 100644 --- a/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts +++ b/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts @@ -1,9 +1,8 @@ -import { assert } from 'console'; -import fs from 'fs'; +import fs from 'node:fs'; +import { assert } from 'node:console'; import mri from 'mri'; import { Mat, Net, Point2, Rect, Size, Vec3, VideoCapture, VideoWriter } from '@u4/opencv4nodejs'; -import { cv, getCachedFile, getExampleDirname } from '../utils'; -import path from 'path'; +import { cv, getCachedFile, getExampleDirname } from '../utils.js'; // ported from https://github.com/spmallick/learnopencv/blob/master/ObjectDetection-YOLO/object_detection_yolo.py diff --git a/examples/src/YOLOv3-Training-Snowman-Detector/getDataFromOpenImages_snowman.ts b/examples/src/YOLOv3-Training-Snowman-Detector/getDataFromOpenImages_snowman.ts index 70ea727d8..961113566 100644 --- a/examples/src/YOLOv3-Training-Snowman-Detector/getDataFromOpenImages_snowman.ts +++ b/examples/src/YOLOv3-Training-Snowman-Detector/getDataFromOpenImages_snowman.ts @@ -1,9 +1,8 @@ -import { getCachedFile, getExampleDirname } from "../utils"; -import fs from 'fs'; -import path from 'path'; -// import rimraf from 'rimraf'; -import readline from 'readline'; +import fs from 'node:fs'; +import path from 'node:path'; +import readline from 'node:readline'; import pLimit from 'p-limit'; +import { getCachedFile, getExampleDirname } from "../utils.js"; /** * imported from https://github.com/spmallick/learnopencv/blob/master/YOLOv3-Training-Snowman-Detector/getDataFromOpenImages_snowman.py diff --git a/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts b/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts index 5f9194136..c62bc4822 100644 --- a/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts +++ b/examples/src/YOLOv3-Training-Snowman-Detector/object_detection_yolo.ts @@ -1,11 +1,10 @@ // # This code is written at BigVision LLC. It is based on the OpenCV project. It is subject to the license terms in the LICENSE file found in this distribution and at http://opencv.org/license.html +import fs from "node:fs"; +import assert from 'node:assert'; import mri from "mri"; -import fs from "fs"; -import path from "path"; -import assert from 'assert'; -import { cv, getExampleDirname } from "../utils"; import { Net, Mat, VideoCapture, VideoWriter, Size, Point2, Vec3, Rect } from '@u4/opencv4nodejs'; +import { cv, getExampleDirname } from "../utils.js"; // # Usage example: python3 object_detection_yolo.py --video=run.mp4 // # python3 object_detection_yolo.py --image=bird.jpg @@ -18,11 +17,11 @@ import { Net, Mat, VideoCapture, VideoWriter, Size, Point2, Vec3, Rect } from '@ // Initialize the parameters const conf = { - confThreshold: 0.5,// #Confidence threshold - nmsThreshold: 0.4,// #Non-maximum suppression threshold + confThreshold: 0.5, // #Confidence threshold + nmsThreshold: 0.4, // #Non-maximum suppression threshold } -const inpWidth = 416;// #608 #Width of network's input image -const inpHeight = 416;// #608 #Height of network's input image +const inpWidth = 416; // #608 #Width of network's input image +const inpHeight = 416; // #608 #Height of network's input image const args: { image?: string, video?: string, device?: string, help?: boolean } = mri(process.argv.slice(2), { default: { device: 'cpu' }, alias: { h: 'help' } }); diff --git a/examples/src/YOLOv3-Training-Snowman-Detector/splitTrainAndTest.ts b/examples/src/YOLOv3-Training-Snowman-Detector/splitTrainAndTest.ts index 5794a6c28..036eba87b 100644 --- a/examples/src/YOLOv3-Training-Snowman-Detector/splitTrainAndTest.ts +++ b/examples/src/YOLOv3-Training-Snowman-Detector/splitTrainAndTest.ts @@ -1,5 +1,5 @@ -import fs from 'fs'; -import path from 'path'; +import fs from 'node:fs'; +import path from 'node:path'; import samplesize from 'lodash.samplesize'; import pc from 'picocolors'; diff --git a/examples/src/applyColorMap.ts b/examples/src/applyColorMap.ts index 629543f99..c11812141 100644 --- a/examples/src/applyColorMap.ts +++ b/examples/src/applyColorMap.ts @@ -1,6 +1,6 @@ // using default import import cv from '@u4/opencv4nodejs'; -import { cv_imshow, cv_setWindowProperty, getResourcePath, wait4key } from './utils'; +import { cv_imshow, cv_setWindowProperty, getResourcePath, wait4key } from './utils.js'; export async function applyColorMap() { const file = getResourcePath('Lenna.png'); diff --git a/examples/src/asyncMatchFeatures.ts b/examples/src/asyncMatchFeatures.ts index 3e7ebdd5a..419801d90 100644 --- a/examples/src/asyncMatchFeatures.ts +++ b/examples/src/asyncMatchFeatures.ts @@ -1,5 +1,5 @@ -import { cv, getResourcePath, wait4key } from './utils'; import { FeatureDetector, Mat } from '@u4/opencv4nodejs'; +import { cv, getResourcePath, wait4key } from './utils.js'; const detectAndComputeAsync = (det: FeatureDetector, img: Mat) => det.detectAsync(img) diff --git a/examples/src/data/dnnTensorflowObjectDetectionClassNames.ts b/examples/src/data/dnnTensorflowObjectDetectionClassNames.ts index 0fe67757d..b1c083b8b 100644 --- a/examples/src/data/dnnTensorflowObjectDetectionClassNames.ts +++ b/examples/src/data/dnnTensorflowObjectDetectionClassNames.ts @@ -1,4 +1,4 @@ -export = { +const dnnTensorflowObjectDetectionClassNames = { 0: "background", 1: "person", 2: "bicycle", @@ -80,4 +80,6 @@ export = { 88: "teddy bear", 89: "hair drier", 90: "toothbrush", -} as {[key: number]: string}; \ No newline at end of file +} as {[key: number]: string}; + +export default dnnTensorflowObjectDetectionClassNames; \ No newline at end of file diff --git a/examples/src/dnn/loadFacenet.ts b/examples/src/dnn/loadFacenet.ts index dc150b379..a00590c64 100644 --- a/examples/src/dnn/loadFacenet.ts +++ b/examples/src/dnn/loadFacenet.ts @@ -1,6 +1,6 @@ -import fs from 'fs'; -import path from 'path'; -import { cv, getResourcePath } from '../utils'; +import fs from 'node:fs'; +import path from 'node:path'; +import { cv, getResourcePath } from '../utils.js'; export default function () { const modelPath = path.resolve(path.join(getResourcePath('dnn'), 'facenet')); diff --git a/examples/src/dnn/ssdUtils.ts b/examples/src/dnn/ssdUtils.ts index 52829d322..e697df8c5 100644 --- a/examples/src/dnn/ssdUtils.ts +++ b/examples/src/dnn/ssdUtils.ts @@ -1,5 +1,5 @@ import type { Mat, Rect } from '@u4/opencv4nodejs'; -import { cv } from '../utils'; +import { cv } from '../utils.js'; export type Prediction = { classLabel: number diff --git a/examples/src/dnnDarknetYOLORealTimeObjectDetection.ts b/examples/src/dnnDarknetYOLORealTimeObjectDetection.ts index 3126ad3a9..6ad9533c9 100644 --- a/examples/src/dnnDarknetYOLORealTimeObjectDetection.ts +++ b/examples/src/dnnDarknetYOLORealTimeObjectDetection.ts @@ -4,7 +4,7 @@ */ import fs from "fs"; import { Mat, Net, Rect } from '@u4/opencv4nodejs'; -import { cv, getCachedFile, runVideoDetection } from "./utils"; +import { cv, getCachedFile, runVideoDetection } from './utils.js'; class dnnDarknetYOLORealTimeObjectDetection { // set webcam port diff --git a/examples/src/dnnSSDCoco.ts b/examples/src/dnnSSDCoco.ts index 5692ebd8b..4214ca354 100644 --- a/examples/src/dnnSSDCoco.ts +++ b/examples/src/dnnSSDCoco.ts @@ -1,7 +1,7 @@ -import { getResourcePath, drawRect, wait4key } from './utils'; -import fs from 'fs'; -import path from 'path'; -import { classNames } from './data/dnnCocoClassNames'; +import fs from 'node:fs'; +import path from 'node:path'; +import { getResourcePath, drawRect, wait4key } from './utils.js'; +import { classNames } from './data/dnnCocoClassNames.js'; import { extractResults, Prediction } from './dnn/ssdUtils'; import {cv, Mat, Net, Vec3 } from '@u4/opencv4nodejs'; diff --git a/examples/src/dnnTensorflowInception.ts b/examples/src/dnnTensorflowInception.ts index 08a5fd249..ffd7c1e87 100644 --- a/examples/src/dnnTensorflowInception.ts +++ b/examples/src/dnnTensorflowInception.ts @@ -1,7 +1,7 @@ -import { cv, getResourcePath, wait4key } from './utils'; -import fs from 'fs'; -import path from 'path'; +import fs from 'node:fs'; +import path from 'node:path'; import { Mat } from '@u4/opencv4nodejs'; +import { cv, getResourcePath, wait4key } from './utils.js'; async function main() { if (!cv.xmodules || !cv.xmodules.dnn) { diff --git a/examples/src/dnnTensorflowObjectDetection.ts b/examples/src/dnnTensorflowObjectDetection.ts index 57de1c381..1f8167ee6 100644 --- a/examples/src/dnnTensorflowObjectDetection.ts +++ b/examples/src/dnnTensorflowObjectDetection.ts @@ -1,13 +1,12 @@ - /** * Please refer to the python version of "ExploreOpencvDnn" by Saumya Shovan Roy. * For more detail: https://github.com/rdeepc/ExploreOpencvDnn */ -import fs from "fs"; -import path from "path"; +import fs from "node:fs"; +import path from "node:path"; import { Mat } from '@u4/opencv4nodejs'; -import classNames from "./data/dnnTensorflowObjectDetectionClassNames"; -import { cv, getCachedFile, getResourcePath, runVideoDetection } from "./utils"; +import classNames from "./data/dnnTensorflowObjectDetectionClassNames.js"; +import { cv, getCachedFile, getResourcePath, runVideoDetection } from './utils.js'; async function main() { if (!cv.xmodules || !cv.xmodules.dnn) { diff --git a/examples/src/faceDetect/asyncFaceDetection.ts b/examples/src/faceDetect/asyncFaceDetection.ts index a5376bdb7..03974711f 100644 --- a/examples/src/faceDetect/asyncFaceDetection.ts +++ b/examples/src/faceDetect/asyncFaceDetection.ts @@ -1,4 +1,4 @@ -import { cv, getResourcePath, drawBlueRect, wait4key } from '../utils'; +import { cv, getResourcePath, drawBlueRect, wait4key } from '../utils.js'; export async function asyncFaceDetection() { const classifier = new cv.CascadeClassifier(cv.HAAR_FRONTALFACE_ALT2); diff --git a/examples/src/faceDetect/commons.ts b/examples/src/faceDetect/commons.ts index 028afd536..c9f1a716d 100644 --- a/examples/src/faceDetect/commons.ts +++ b/examples/src/faceDetect/commons.ts @@ -1,6 +1,6 @@ -import { cv, grabFrames, drawBlueRect } from '../utils'; -import loadFacenet from '../dnn/loadFacenet'; -import { extractResults } from '../dnn/ssdUtils'; +import { cv, grabFrames, drawBlueRect } from '../utils.js'; +import loadFacenet from '../dnn/loadFacenet.js'; +import { extractResults } from '../dnn/ssdUtils.js'; import { Mat, Net, Rect } from '@u4/opencv4nodejs'; /** diff --git a/examples/src/faceDetect/faceAndEyeDetection.ts b/examples/src/faceDetect/faceAndEyeDetection.ts index b5e94b939..fd668478e 100644 --- a/examples/src/faceDetect/faceAndEyeDetection.ts +++ b/examples/src/faceDetect/faceAndEyeDetection.ts @@ -1,6 +1,5 @@ import { Rect } from '@u4/opencv4nodejs'; -import { cv, getResourcePath, drawBlueRect, drawGreenRect, wait4key } from '../utils'; - +import { cv, getResourcePath, drawBlueRect, drawGreenRect, wait4key } from '../utils.js'; export async function faceAndEyeDetection() { diff --git a/examples/src/faceDetect/faceDetection.ts b/examples/src/faceDetect/faceDetection.ts index f5f08b6fd..158c7508c 100644 --- a/examples/src/faceDetect/faceDetection.ts +++ b/examples/src/faceDetect/faceDetection.ts @@ -1,4 +1,4 @@ -import { cv, getResourcePath, drawBlueRect, wait4key } from '../utils'; +import { cv, getResourcePath, drawBlueRect, wait4key } from '../utils.js'; export async function faceDetection() { const image = cv.imread(getResourcePath('got.jpg')); diff --git a/examples/src/faceDetect/facenetSSD.ts b/examples/src/faceDetect/facenetSSD.ts index c19446a0e..f891c9a0a 100644 --- a/examples/src/faceDetect/facenetSSD.ts +++ b/examples/src/faceDetect/facenetSSD.ts @@ -1,5 +1,5 @@ -import { cv, getResourcePath, wait4key } from '../utils'; -import { makeRunDetectFacenetSSD } from './commons'; +import { cv, getResourcePath, wait4key } from '../utils.js'; +import { makeRunDetectFacenetSSD } from './commons.js'; export async function facenetSSD() { const runDetection = makeRunDetectFacenetSSD(); diff --git a/examples/src/faceDetect/videoFaceDetectionCpu.ts b/examples/src/faceDetect/videoFaceDetectionCpu.ts index a78bcb13e..2014c8eb0 100644 --- a/examples/src/faceDetect/videoFaceDetectionCpu.ts +++ b/examples/src/faceDetect/videoFaceDetectionCpu.ts @@ -1,6 +1,6 @@ import { Mat } from '@u4/opencv4nodejs'; -import { cv, getResourcePath } from '../utils'; -import { runVideoFaceDetection } from './commons'; +import { cv, getResourcePath } from '../utils.js'; +import { runVideoFaceDetection } from './commons.js'; const videoFile = getResourcePath('people.mp4'); diff --git a/examples/src/faceDetect/videoFaceDetectionCpuAsync.ts b/examples/src/faceDetect/videoFaceDetectionCpuAsync.ts index a3c7c2212..37704f44e 100644 --- a/examples/src/faceDetect/videoFaceDetectionCpuAsync.ts +++ b/examples/src/faceDetect/videoFaceDetectionCpuAsync.ts @@ -1,6 +1,6 @@ import type { Mat, Rect } from '@u4/opencv4nodejs'; -import { cv, getResourcePath } from '../utils'; -import { runVideoFaceDetectionAsync } from './commons'; +import { cv, getResourcePath } from '../utils.js'; +import { runVideoFaceDetectionAsync } from './commons.js'; const videoFile = getResourcePath('people.mp4'); diff --git a/examples/src/faceDetect/videoFaceDetectionGpu.ts b/examples/src/faceDetect/videoFaceDetectionGpu.ts index 29bc2d27a..07f6b25b3 100644 --- a/examples/src/faceDetect/videoFaceDetectionGpu.ts +++ b/examples/src/faceDetect/videoFaceDetectionGpu.ts @@ -1,6 +1,7 @@ import { Mat } from '@u4/opencv4nodejs'; -import { cv, getResourcePath } from '../utils'; -import { runVideoFaceDetection } from './commons'; +import { cv, getResourcePath } from '../utils.js'; +import { runVideoFaceDetection } from './commons.js'; + if (cv.version.minor === 4) { console.log('Warning: It seems like opencv 3.4 does not run the opencl version of detectMultiScale.'); } diff --git a/examples/src/faceDetect/videoFaceDetectionGpuAsync.ts b/examples/src/faceDetect/videoFaceDetectionGpuAsync.ts index e94c4d80a..209a30e83 100644 --- a/examples/src/faceDetect/videoFaceDetectionGpuAsync.ts +++ b/examples/src/faceDetect/videoFaceDetectionGpuAsync.ts @@ -1,6 +1,7 @@ import { Mat } from '@u4/opencv4nodejs'; -import { cv, getResourcePath } from '../utils'; -import { runVideoFaceDetectionAsync } from './commons'; +import { cv, getResourcePath } from '../utils.js'; +import { runVideoFaceDetectionAsync } from './commons.js'; + if (cv.version.minor === 4) { console.log('Warning: It seems like opencv 3.4 does not run the opencl version of detectMultiScale.'); } diff --git a/examples/src/faceDetect/webcamFaceDetectionCpu.ts b/examples/src/faceDetect/webcamFaceDetectionCpu.ts index d9fe1c103..87f207aa6 100644 --- a/examples/src/faceDetect/webcamFaceDetectionCpu.ts +++ b/examples/src/faceDetect/webcamFaceDetectionCpu.ts @@ -1,6 +1,6 @@ import { Mat } from '@u4/opencv4nodejs'; -import { cv } from '../utils'; -import { runVideoFaceDetection } from './commons'; +import { cv } from '../utils.js'; +import { runVideoFaceDetection } from './commons.js'; const classifier = new cv.CascadeClassifier(cv.HAAR_FRONTALFACE_ALT2); diff --git a/examples/src/faceDetect/webcamFaceDetectionGpu.ts b/examples/src/faceDetect/webcamFaceDetectionGpu.ts index ee5db7058..609e765ae 100644 --- a/examples/src/faceDetect/webcamFaceDetectionGpu.ts +++ b/examples/src/faceDetect/webcamFaceDetectionGpu.ts @@ -1,6 +1,6 @@ import { Mat } from '@u4/opencv4nodejs'; -import { cv } from '../utils'; -import { runVideoFaceDetection } from './commons'; +import { cv } from '../utils.js'; +import { runVideoFaceDetection } from './commons.js'; const classifier = new cv.CascadeClassifier(cv.HAAR_FRONTALFACE_ALT2); diff --git a/examples/src/faceDetect/webcamFacenetSSD.ts b/examples/src/faceDetect/webcamFacenetSSD.ts index 04d2a00da..be1c11b66 100644 --- a/examples/src/faceDetect/webcamFacenetSSD.ts +++ b/examples/src/faceDetect/webcamFacenetSSD.ts @@ -1,6 +1,6 @@ import { Mat } from '@u4/opencv4nodejs'; -import { cv, grabFrames } from '../utils'; -import { makeRunDetectFacenetSSD } from './commons'; +import { cv, grabFrames } from '../utils.js'; +import { makeRunDetectFacenetSSD } from './commons.js'; const runDetection = makeRunDetectFacenetSSD(); diff --git a/examples/src/faceRecognition0.ts b/examples/src/faceRecognition0.ts index c2acf7c90..c4f1f702b 100644 --- a/examples/src/faceRecognition0.ts +++ b/examples/src/faceRecognition0.ts @@ -1,7 +1,7 @@ -import fs from 'fs'; -import path from 'path'; +import fs from 'node:fs'; +import path from 'node:path'; import { FaceRecognizer, Mat } from '@u4/opencv4nodejs'; -import { cv, getResourcePath, wait4key } from './utils'; +import { cv, getResourcePath, wait4key } from './utils.js'; async function main() { if (!cv.xmodules || !cv.xmodules.face) { diff --git a/examples/src/faceRecognition1.ts b/examples/src/faceRecognition1.ts index 5c60afc07..21f335355 100644 --- a/examples/src/faceRecognition1.ts +++ b/examples/src/faceRecognition1.ts @@ -1,7 +1,7 @@ -import fs from 'fs'; -import path from 'path'; +import fs from 'node:fs'; +import path from 'node:path'; import cv, { Mat } from '@u4/opencv4nodejs'; -import { getResourcePath, wait4key } from './utils'; +import { getResourcePath, wait4key } from './utils.js'; async function main() { if (!cv.xmodules || !cv.xmodules.face) { diff --git a/examples/src/facemark.ts b/examples/src/facemark.ts index 397f76b0f..6f65cf542 100644 --- a/examples/src/facemark.ts +++ b/examples/src/facemark.ts @@ -1,6 +1,5 @@ import { Mat } from '@u4/opencv4nodejs'; -import { cv, getCachedFile, getResourcePath, wait4key } from './utils'; - +import { cv, getCachedFile, getResourcePath, wait4key } from './utils.js'; async function main() { if (!cv.xmodules || !cv.xmodules.face) { diff --git a/examples/src/getStructureSimilarity.ts b/examples/src/getStructureSimilarity.ts index cb3762524..ce2c910ea 100644 --- a/examples/src/getStructureSimilarity.ts +++ b/examples/src/getStructureSimilarity.ts @@ -1,5 +1,5 @@ import { CV_32F, imread, Mat, Size } from '@u4/opencv4nodejs'; -import { getResourcePath } from './utils'; +import { getResourcePath } from './utils.js'; // Ported from https://docs.opencv.org/2.4/doc/tutorials/gpu/gpu-basics-similarity/gpu-basics-similarity.html function getStructureSimilarity(i1: Mat, i2: Mat): number { diff --git a/examples/src/guidedFilter.ts b/examples/src/guidedFilter.ts index 05be337ea..23306cd28 100644 --- a/examples/src/guidedFilter.ts +++ b/examples/src/guidedFilter.ts @@ -1,5 +1,4 @@ -import { cv, getResourcePath, wait4key } from './utils'; - +import { cv, getResourcePath, wait4key } from './utils.js'; export async function guidedFilter() { const image = cv.imread(getResourcePath('Lenna.png')); diff --git a/examples/src/handGestureRecognition0.ts b/examples/src/handGestureRecognition0.ts index 09e90a52f..3785a7045 100644 --- a/examples/src/handGestureRecognition0.ts +++ b/examples/src/handGestureRecognition0.ts @@ -1,8 +1,7 @@ -import path from 'path'; +import path from 'node:path'; import type { Contour, Mat } from '@u4/opencv4nodejs'; import { Point2 } from '@u4/opencv4nodejs'; -import { cv, getResourcePath } from './utils'; -import { grabFrames } from './utils'; +import { cv, getResourcePath, grabFrames } from './utils.js'; interface PointWithIdx { pt: Point2; diff --git a/examples/src/machineLearningOCR.ts b/examples/src/machineLearningOCR.ts index c1286cc1d..fefe8f98b 100644 --- a/examples/src/machineLearningOCR.ts +++ b/examples/src/machineLearningOCR.ts @@ -1,14 +1,13 @@ -import path from 'path'; -import fs from 'fs'; -import { cv, getResourcePath } from './utils'; -import { lccs, centerLetterInImage, saveConfusionMatrix } from './OCRTools'; +import fs from 'node:fs'; +import path from 'node:path'; import { Mat } from '@u4/opencv4nodejs'; +import { cv, getResourcePath } from './utils.js'; +import { lccs, centerLetterInImage, saveConfusionMatrix } from './OCRTools.js'; const outPath = getResourcePath('ocr'); const trainDataPath = path.join(outPath, 'traindata'); const testDataPath = path.join(outPath, 'testdata'); - const SVMFile = 'lcletters.xml'; const hog = new cv.HOGDescriptor({ diff --git a/examples/src/makeDataSetOCR.ts b/examples/src/makeDataSetOCR.ts index 0ec34bdc2..af6978648 100644 --- a/examples/src/makeDataSetOCR.ts +++ b/examples/src/makeDataSetOCR.ts @@ -1,8 +1,8 @@ /* eslint-disable @typescript-eslint/no-unused-vars */ -import fs from 'fs'; -import { cv, getResourcePath } from './utils'; +import fs from 'node:fs'; +import path from 'node:path'; import type { Mat } from '@u4/opencv4nodejs'; -import path from 'path'; +import { cv, getResourcePath } from './utils.js'; const labeledDataPath = path.join(getResourcePath('ocr-nocommit'), 'letters'); const outputDataPath = path.join(getResourcePath('ocr-nocommit'), 'letters_generated'); diff --git a/examples/src/matchFeatures.ts b/examples/src/matchFeatures.ts index a2e7b2dd9..09f382319 100644 --- a/examples/src/matchFeatures.ts +++ b/examples/src/matchFeatures.ts @@ -1,5 +1,5 @@ import { DescriptorMatch, FeatureDetector, Mat } from '@u4/opencv4nodejs'; -import { cv, getResourcePath, wait4key } from './utils'; +import { cv, getResourcePath, wait4key } from './utils.js'; const matchFeaturesPass = (arg: { img1: Mat, img2: Mat, detector: FeatureDetector, matchFunc: (descs1: Mat, descs2: Mat) => DescriptorMatch[] }) => { const { img1, img2, detector, matchFunc } = arg; diff --git a/examples/src/ocrHMMCharacters.ts b/examples/src/ocrHMMCharacters.ts index 14b4559f3..c91798bd1 100644 --- a/examples/src/ocrHMMCharacters.ts +++ b/examples/src/ocrHMMCharacters.ts @@ -1,6 +1,6 @@ -import { cv, getResourcePath, wait4key } from './utils'; -import path from 'path'; +import path from 'node:path'; import type { Mat } from '@u4/opencv4nodejs'; +import { cv, getResourcePath, wait4key } from './utils.js'; /** * OCR One by one using OCRHMMClassifier diff --git a/examples/src/ocrHMMWords.ts b/examples/src/ocrHMMWords.ts index c63dcf1f5..0c9fed262 100644 --- a/examples/src/ocrHMMWords.ts +++ b/examples/src/ocrHMMWords.ts @@ -1,6 +1,6 @@ -import path from 'path'; +import path from 'node:path'; import { cv } from '@u4/opencv4nodejs'; -import { getResourcePath, wait4key } from './utils'; +import { getResourcePath, wait4key } from './utils.js'; export async function ocrHMMWords() { diff --git a/examples/src/plotHist.ts b/examples/src/plotHist.ts index cdeff487d..ec5ea9a80 100644 --- a/examples/src/plotHist.ts +++ b/examples/src/plotHist.ts @@ -1,5 +1,4 @@ -import { cv, getResourcePath, wait4key } from './utils'; - +import { cv, getResourcePath, wait4key } from './utils.js'; export async function plotHist() { const img = cv.imread(getResourcePath('Lenna.png')); diff --git a/examples/src/simpleTracking0.ts b/examples/src/simpleTracking0.ts index 3518fbef7..91e4392f9 100644 --- a/examples/src/simpleTracking0.ts +++ b/examples/src/simpleTracking0.ts @@ -1,4 +1,4 @@ -import { cv, grabFrames, drawRectAroundBlobs, getResourcePath } from './utils'; +import { cv, grabFrames, drawRectAroundBlobs, getResourcePath } from './utils.js'; const delay = 100; grabFrames(getResourcePath('horses.mp4'), delay, (frame) => { diff --git a/examples/src/simpleTracking1.ts b/examples/src/simpleTracking1.ts index 5326efa18..6eab5f442 100644 --- a/examples/src/simpleTracking1.ts +++ b/examples/src/simpleTracking1.ts @@ -1,4 +1,4 @@ -import { cv, grabFrames, drawRectAroundBlobs, getResourcePath } from './utils'; +import { cv, grabFrames, drawRectAroundBlobs, getResourcePath } from './utils.js'; const bgSubtractor = new cv.BackgroundSubtractorMOG2(); diff --git a/examples/src/templateMatch/multiMatchBench.ts b/examples/src/templateMatch/multiMatchBench.ts index 82de7807f..d6795b301 100644 --- a/examples/src/templateMatch/multiMatchBench.ts +++ b/examples/src/templateMatch/multiMatchBench.ts @@ -1,5 +1,5 @@ import cv, { Mat } from '@u4/opencv4nodejs'; -import { getResourcePath, wait4key } from '../utils'; +import { getResourcePath, wait4key } from '../utils.js'; const confidence = 0.97; diff --git a/examples/src/templateMatch/multiMatchColision.ts b/examples/src/templateMatch/multiMatchColision.ts index 73d2b7c8b..ab9fd8aaa 100644 --- a/examples/src/templateMatch/multiMatchColision.ts +++ b/examples/src/templateMatch/multiMatchColision.ts @@ -1,5 +1,5 @@ import cv, { Mat } from '@u4/opencv4nodejs'; -import { getResourcePath, wait4key } from '../utils'; +import { getResourcePath, wait4key } from '../utils.js'; const confidence = 0.60; diff --git a/examples/src/templateMatch/templateMatching.ts b/examples/src/templateMatch/templateMatching.ts index 465c3855b..67957e9ab 100644 --- a/examples/src/templateMatch/templateMatching.ts +++ b/examples/src/templateMatch/templateMatching.ts @@ -1,5 +1,5 @@ import cv from '@u4/opencv4nodejs'; -import { getResourcePath, wait4key } from '../utils'; +import { getResourcePath, wait4key } from '../utils.js'; const findWaldo = async () => { // Load images diff --git a/examples/src/test34d.ts b/examples/src/test34d.ts index 9d3710ee3..a7aee8947 100644 --- a/examples/src/test34d.ts +++ b/examples/src/test34d.ts @@ -1,7 +1,5 @@ - import { cv } from "./utils"; - try { console.log(''); console.log('1 Dims'); diff --git a/examples/src/utils.ts b/examples/src/utils.ts index 0eace870e..58e97ab49 100644 --- a/examples/src/utils.ts +++ b/examples/src/utils.ts @@ -1,11 +1,12 @@ -import path from 'path'; -import fs from 'fs'; +import path from 'node:path'; +import fs from 'node:fs'; +import crypto from 'node:crypto'; +import { fileURLToPath } from 'node:url'; import cv, { Mat, Rect, Vec3 } from '@u4/opencv4nodejs'; export { default as cv } from '@u4/opencv4nodejs'; import Axios from 'axios'; import ProgressBar from 'progress'; import pc from 'picocolors'; -import crypto from 'crypto'; export const delay = (ms: number): Promise => new Promise(resolve => setTimeout(resolve, ms)); From 64322addd49a4c30c5f32e3c4300857b3ed7bdda Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 09:25:49 +0200 Subject: [PATCH 37/50] fix Export structure. --- examples/src/AgeGender/AgeGender.ts | 8 +- src/lib/opencv4nodejs.ts | 146 +++++++++++++++++++++++++++- 2 files changed, 150 insertions(+), 4 deletions(-) diff --git a/examples/src/AgeGender/AgeGender.ts b/examples/src/AgeGender/AgeGender.ts index 3dd84823f..e75e7dedb 100644 --- a/examples/src/AgeGender/AgeGender.ts +++ b/examples/src/AgeGender/AgeGender.ts @@ -1,5 +1,6 @@ import fs from 'node:fs'; import mri from 'mri'; +import * as openCV from '@u4/opencv4nodejs'; import { Mat, Net, Point2, Rect, Size, Vec3, VideoCapture } from '@u4/opencv4nodejs'; import { cv, getCachedFile, getExampleDirname, wait4key } from '../utils.js'; import NetIdentifier from './NetIdentifier.js'; @@ -62,8 +63,13 @@ const main = async () => { // Load network if (!fs.existsSync(ageModel)) { - throw Error(`fail to read ${ageModel}`); + throw Error(`fail to read ${ageModel} please download if from https://www.dropbox.com/s/xfb20y596869vbb/age_net.caffemodel?dl=0`); } + + if (!fs.existsSync(genderModel)) { + throw Error(`fail to read ${genderModel} please download if from https://www.dropbox.com/s/iyv483wz7ztr9gh/gender_net.caffemodel?dl=0`); + } + if (!fs.existsSync(ageProto)) { throw Error(`fail to read ${ageProto}`); } diff --git a/src/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts index c58db7969..2fedc009c 100644 --- a/src/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -1,9 +1,9 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ import { type OpenCVBuildEnvParams } from '@u4/opencv-build'; import promisify from './promisify.js'; import extendWithJsSources from './src/index.js'; import { getOpenCV } from './cvloader.js'; import type * as openCV from '../../typings/index.js'; + export type * as openCV from '../../typings/index.js'; export { getDirName, getRequire } from "./meta.js" @@ -31,9 +31,149 @@ export const cv = loadOpenCV({ prebuild: 'latestBuild' }); const defExport: { [key: string]: any } = { cv }; // duplicate all export for retro-compatibility for (const key in cv) { - defExport[key] = (cv)[key]; + defExport[key] = cv[key]; } -defExport['cv'] = cv; +// const allExports = Object.keys(defExport).filter(key => key !== 'cv' && !key.includes('"')); +// console.log('\n\n'); +// while (allExports.length) { +// const keys = allExports.splice(0, 15); +// console.log(`const { ${keys} } = defExport;`); +// console.log(`export { ${keys} };`); +// } +// console.log('\n\n'); + +////////////// +//// GENERATED code + +const { isCustomMatAllocatorEnabled,dangerousEnableCustomMatAllocator,dangerousDisableCustomMatAllocator,getMemMetrics,version,modules,xmodules,CV_8U,CV_8S,CV_16U,CV_16S,CV_32S,CV_32F,CV_64F,CV_16F } = defExport; +export { isCustomMatAllocatorEnabled,dangerousEnableCustomMatAllocator,dangerousDisableCustomMatAllocator,getMemMetrics,version,modules,xmodules,CV_8U,CV_8S,CV_16U,CV_16S,CV_32S,CV_32F,CV_64F,CV_16F }; +const { CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4,CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4,CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4,CV_16SC1,CV_16SC2,CV_16SC3 } = defExport; +export { CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4,CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4,CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4,CV_16SC1,CV_16SC2,CV_16SC3 }; +const { CV_16SC4,CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4,CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4,CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4,CV_16FC1,CV_16FC2 } = defExport; +export { CV_16SC4,CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4,CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4,CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4,CV_16FC1,CV_16FC2 }; +const { CV_16FC3,CV_16FC4,NORM_INF,NORM_L1,NORM_L2,NORM_L2SQR,NORM_HAMMING,NORM_HAMMING2,NORM_TYPE_MASK,NORM_RELATIVE,NORM_MINMAX,KMEANS_RANDOM_CENTERS,KMEANS_PP_CENTERS,KMEANS_USE_INITIAL_LABELS,termCriteria } = defExport; +export { CV_16FC3,CV_16FC4,NORM_INF,NORM_L1,NORM_L2,NORM_L2SQR,NORM_HAMMING,NORM_HAMMING2,NORM_TYPE_MASK,NORM_RELATIVE,NORM_MINMAX,KMEANS_RANDOM_CENTERS,KMEANS_PP_CENTERS,KMEANS_USE_INITIAL_LABELS,termCriteria }; +const { haarCascades,lbpCascades,REDUCE_SUM,REDUCE_AVG,REDUCE_MAX,REDUCE_MIN,ROTATE_90_CLOCKWISE,ROTATE_180,ROTATE_90_COUNTERCLOCKWISE,DECOMP_LU,DECOMP_CHOLESKY,DECOMP_EIG,DECOMP_SVD,DECOMP_QR,DECOMP_NORMAL } = defExport; +export { haarCascades,lbpCascades,REDUCE_SUM,REDUCE_AVG,REDUCE_MAX,REDUCE_MIN,ROTATE_90_CLOCKWISE,ROTATE_180,ROTATE_90_COUNTERCLOCKWISE,DECOMP_LU,DECOMP_CHOLESKY,DECOMP_EIG,DECOMP_SVD,DECOMP_QR,DECOMP_NORMAL }; +const { BORDER_CONSTANT,BORDER_REPLICATE,BORDER_REFLECT,BORDER_WRAP,BORDER_REFLECT_101,BORDER_TRANSPARENT,BORDER_ISOLATED,BORDER_DEFAULT,Mat,Point,Point2,Point3,Vec,Vec2,Vec3 } = defExport; +export { BORDER_CONSTANT,BORDER_REPLICATE,BORDER_REFLECT,BORDER_WRAP,BORDER_REFLECT_101,BORDER_TRANSPARENT,BORDER_ISOLATED,BORDER_DEFAULT,Mat,Point,Point2,Point3,Vec,Vec2,Vec3 }; +const { Vec4,Vec6,Size,Rect,RotatedRect,TermCriteria,HistAxes,getBuildInformation,partition,kmeans,cartToPolar,cartToPolarAsync,polarToCart,polarToCartAsync,getNumThreads } = defExport; +export { Vec4,Vec6,Size,Rect,RotatedRect,TermCriteria,HistAxes,getBuildInformation,partition,kmeans,cartToPolar,cartToPolarAsync,polarToCart,polarToCartAsync,getNumThreads }; +const { setNumThreads,getThreadNum,addWeighted,addWeightedAsync,minMaxLoc,minMaxLocAsync,findNonZero,findNonZeroAsync,countNonZero,countNonZeroAsync,split,splitAsync,mulSpectrums,mulSpectrumsAsync,transform } = defExport; +export { setNumThreads,getThreadNum,addWeighted,addWeightedAsync,minMaxLoc,minMaxLocAsync,findNonZero,findNonZeroAsync,countNonZero,countNonZeroAsync,split,splitAsync,mulSpectrums,mulSpectrumsAsync,transform }; +const { transformAsync,perspectiveTransform,perspectiveTransformAsync,convertScaleAbs,convertScaleAbsAsync,sum,sumAsync,mean,meanAsync,meanStdDev,meanStdDevAsync,reduce,reduceAsync,eigen,eigenAsync } = defExport; +export { transformAsync,perspectiveTransform,perspectiveTransformAsync,convertScaleAbs,convertScaleAbsAsync,sum,sumAsync,mean,meanAsync,meanStdDev,meanStdDevAsync,reduce,reduceAsync,eigen,eigenAsync }; +const { min,minAsync,max,maxAsync,solve,solveAsync,magnitude,magnitudeAsync,getTickFrequency,getTickCount,getVersionMajor,getVersionMinor,getVersionRevision,WINDOW_NORMAL,WINDOW_AUTOSIZE } = defExport; +export { min,minAsync,max,maxAsync,solve,solveAsync,magnitude,magnitudeAsync,getTickFrequency,getTickCount,getVersionMajor,getVersionMinor,getVersionRevision,WINDOW_NORMAL,WINDOW_AUTOSIZE }; +const { WINDOW_OPENGL,WINDOW_FULLSCREEN,WINDOW_FREERATIO,WINDOW_KEEPRATIO,WINDOW_GUI_EXPANDED,WINDOW_GUI_NORMAL,WND_PROP_FULLSCREEN,WND_PROP_AUTOSIZE,WND_PROP_ASPECT_RATIO,WND_PROP_OPENGL,WND_PROP_VISIBLE,WND_PROP_TOPMOST,WND_PROP_VSYNC,EVENT_MOUSEMOVE,EVENT_LBUTTONDOWN } = defExport; +export { WINDOW_OPENGL,WINDOW_FULLSCREEN,WINDOW_FREERATIO,WINDOW_KEEPRATIO,WINDOW_GUI_EXPANDED,WINDOW_GUI_NORMAL,WND_PROP_FULLSCREEN,WND_PROP_AUTOSIZE,WND_PROP_ASPECT_RATIO,WND_PROP_OPENGL,WND_PROP_VISIBLE,WND_PROP_TOPMOST,WND_PROP_VSYNC,EVENT_MOUSEMOVE,EVENT_LBUTTONDOWN }; +const { EVENT_RBUTTONDOWN,EVENT_MBUTTONDOWN,EVENT_LBUTTONUP,EVENT_RBUTTONUP,EVENT_MBUTTONUP,EVENT_LBUTTONDBLCLK,EVENT_RBUTTONDBLCLK,EVENT_MBUTTONDBLCLK,EVENT_MOUSEWHEEL,EVENT_MOUSEHWHEEL,EVENT_FLAG_LBUTTON,EVENT_FLAG_RBUTTON,EVENT_FLAG_MBUTTON,EVENT_FLAG_CTRLKEY,EVENT_FLAG_SHIFTKEY } = defExport; +export { EVENT_RBUTTONDOWN,EVENT_MBUTTONDOWN,EVENT_LBUTTONUP,EVENT_RBUTTONUP,EVENT_MBUTTONUP,EVENT_LBUTTONDBLCLK,EVENT_RBUTTONDBLCLK,EVENT_MBUTTONDBLCLK,EVENT_MOUSEWHEEL,EVENT_MOUSEHWHEEL,EVENT_FLAG_LBUTTON,EVENT_FLAG_RBUTTON,EVENT_FLAG_MBUTTON,EVENT_FLAG_CTRLKEY,EVENT_FLAG_SHIFTKEY }; +const { EVENT_FLAG_ALTKEY,QT_FONT_LIGHT,QT_FONT_NORMAL,QT_FONT_DEMIBOLD,QT_FONT_BOLD,QT_FONT_BLACK,QT_STYLE_NORMAL,QT_STYLE_ITALIC,QT_STYLE_OBLIQUE,QT_PUSH_BUTTON,QT_CHECKBOX,QT_RADIOBOX,QT_NEW_BUTTONBAR,setWindowProperty,getWindowProperty } = defExport; +export { EVENT_FLAG_ALTKEY,QT_FONT_LIGHT,QT_FONT_NORMAL,QT_FONT_DEMIBOLD,QT_FONT_BOLD,QT_FONT_BLACK,QT_STYLE_NORMAL,QT_STYLE_ITALIC,QT_STYLE_OBLIQUE,QT_PUSH_BUTTON,QT_CHECKBOX,QT_RADIOBOX,QT_NEW_BUTTONBAR,setWindowProperty,getWindowProperty }; +const { setWindowTitle,moveWindow,namedWindow,resizeWindow,startWindowThread,REGULAR,LMEDS,RANSAC,RHO,SOLVEPNP_ITERATIVE,SOLVEPNP_EPNP,SOLVEPNP_P3P,SOLVEPNP_DLS,SOLVEPNP_UPNP,CALIB_CB_ADAPTIVE_THRESH } = defExport; +export { setWindowTitle,moveWindow,namedWindow,resizeWindow,startWindowThread,REGULAR,LMEDS,RANSAC,RHO,SOLVEPNP_ITERATIVE,SOLVEPNP_EPNP,SOLVEPNP_P3P,SOLVEPNP_DLS,SOLVEPNP_UPNP,CALIB_CB_ADAPTIVE_THRESH }; +const { CALIB_CB_NORMALIZE_IMAGE,CALIB_CB_FILTER_QUADS,CALIB_CB_FAST_CHECK,CALIB_CB_SYMMETRIC_GRID,CALIB_CB_ASYMMETRIC_GRID,CALIB_CB_CLUSTERING,CALIB_USE_INTRINSIC_GUESS,CALIB_FIX_ASPECT_RATIO,CALIB_FIX_PRINCIPAL_POINT,CALIB_ZERO_TANGENT_DIST,CALIB_FIX_FOCAL_LENGTH,CALIB_FIX_K1,CALIB_FIX_K2,CALIB_FIX_K3,CALIB_FIX_K4 } = defExport; +export { CALIB_CB_NORMALIZE_IMAGE,CALIB_CB_FILTER_QUADS,CALIB_CB_FAST_CHECK,CALIB_CB_SYMMETRIC_GRID,CALIB_CB_ASYMMETRIC_GRID,CALIB_CB_CLUSTERING,CALIB_USE_INTRINSIC_GUESS,CALIB_FIX_ASPECT_RATIO,CALIB_FIX_PRINCIPAL_POINT,CALIB_ZERO_TANGENT_DIST,CALIB_FIX_FOCAL_LENGTH,CALIB_FIX_K1,CALIB_FIX_K2,CALIB_FIX_K3,CALIB_FIX_K4 }; +const { CALIB_FIX_K5,CALIB_FIX_K6,CALIB_RATIONAL_MODEL,CALIB_THIN_PRISM_MODEL,CALIB_FIX_S1_S2_S3_S4,CALIB_FIX_INTRINSIC,CALIB_SAME_FOCAL_LENGTH,CALIB_ZERO_DISPARITY,CALIB_TILTED_MODEL,CALIB_FIX_TAUX_TAUY,CALIB_USE_LU,CALIB_USE_QR,SOLVEPNP_AP3P,SOLVEPNP_MAX_COUNT,CALIB_FIX_TANGENT_DIST } = defExport; +export { CALIB_FIX_K5,CALIB_FIX_K6,CALIB_RATIONAL_MODEL,CALIB_THIN_PRISM_MODEL,CALIB_FIX_S1_S2_S3_S4,CALIB_FIX_INTRINSIC,CALIB_SAME_FOCAL_LENGTH,CALIB_ZERO_DISPARITY,CALIB_TILTED_MODEL,CALIB_FIX_TAUX_TAUY,CALIB_USE_LU,CALIB_USE_QR,SOLVEPNP_AP3P,SOLVEPNP_MAX_COUNT,CALIB_FIX_TANGENT_DIST }; +const { FM_7POINT,FM_8POINT,FM_LMEDS,FM_RANSAC,findHomography,findHomographyAsync,composeRT,composeRTAsync,solvePnP,solvePnPAsync,solvePnPRansac,solvePnPRansacAsync,projectPoints,projectPointsAsync,initCameraMatrix2D } = defExport; +export { FM_7POINT,FM_8POINT,FM_LMEDS,FM_RANSAC,findHomography,findHomographyAsync,composeRT,composeRTAsync,solvePnP,solvePnPAsync,solvePnPRansac,solvePnPRansacAsync,projectPoints,projectPointsAsync,initCameraMatrix2D }; +const { initCameraMatrix2DAsync,stereoCalibrate,stereoCalibrateAsync,stereoRectifyUncalibrated,stereoRectifyUncalibratedAsync,findFundamentalMat,findFundamentalMatAsync,findEssentialMat,findEssentialMatAsync,recoverPose,recoverPoseAsync,computeCorrespondEpilines,computeCorrespondEpilinesAsync,getValidDisparityROI,getValidDisparityROIAsync } = defExport; +export { initCameraMatrix2DAsync,stereoCalibrate,stereoCalibrateAsync,stereoRectifyUncalibrated,stereoRectifyUncalibratedAsync,findFundamentalMat,findFundamentalMatAsync,findEssentialMat,findEssentialMatAsync,recoverPose,recoverPoseAsync,computeCorrespondEpilines,computeCorrespondEpilinesAsync,getValidDisparityROI,getValidDisparityROIAsync }; +const { estimateAffine3D,estimateAffine3DAsync,sampsonDistance,sampsonDistanceAsync,calibrateCamera,calibrateCameraAsync,calibrateCameraExtended,calibrateCameraExtendedAsync,estimateAffine2D,estimateAffine2DAsync,estimateAffinePartial2D,estimateAffinePartial2DAsync,solveP3P,solveP3PAsync,undistortPoints } = defExport; +export { estimateAffine3D,estimateAffine3DAsync,sampsonDistance,sampsonDistanceAsync,calibrateCamera,calibrateCameraAsync,calibrateCameraExtended,calibrateCameraExtendedAsync,estimateAffine2D,estimateAffine2DAsync,estimateAffinePartial2D,estimateAffinePartial2DAsync,solveP3P,solveP3PAsync,undistortPoints }; +const { undistortPointsAsync,DNN_BACKEND_OPENCV,DNN_BACKEND_INFERENCE_ENGINE,DNN_BACKEND_HALIDE,DNN_BACKEND_CUDA,DNN_TARGET_CPU,DNN_TARGET_OPENCL,DNN_TARGET_OPENCL_FP16,DNN_TARGET_MYRIAD,DNN_TARGET_CUDA,DNN_TARGET_CUDA_FP16,DNN_TARGET_HDDL,Net,readNetFromTensorflow,readNetFromTensorflowAsync } = defExport; +export { undistortPointsAsync,DNN_BACKEND_OPENCV,DNN_BACKEND_INFERENCE_ENGINE,DNN_BACKEND_HALIDE,DNN_BACKEND_CUDA,DNN_TARGET_CPU,DNN_TARGET_OPENCL,DNN_TARGET_OPENCL_FP16,DNN_TARGET_MYRIAD,DNN_TARGET_CUDA,DNN_TARGET_CUDA_FP16,DNN_TARGET_HDDL,Net,readNetFromTensorflow,readNetFromTensorflowAsync }; +const { readNetFromCaffe,readNetFromCaffeAsync,blobFromImage,blobFromImageAsync,blobFromImages,blobFromImagesAsync,readNetFromDarknet,readNetFromDarknetAsync,NMSBoxes,readNetFromONNX,readNetFromONNXAsync,readNet,readNetAsync,EigenFaceRecognizer,FisherFaceRecognizer } = defExport; +export { readNetFromCaffe,readNetFromCaffeAsync,blobFromImage,blobFromImageAsync,blobFromImages,blobFromImagesAsync,readNetFromDarknet,readNetFromDarknetAsync,NMSBoxes,readNetFromONNX,readNetFromONNXAsync,readNet,readNetAsync,EigenFaceRecognizer,FisherFaceRecognizer }; +const { LBPHFaceRecognizer,FacemarkAAM,FacemarkAAMData,FacemarkAAMParams,FacemarkLBF,FacemarkLBFParams,KeyPoint,KeyPointMatch,DescriptorMatch,matchFlannBased,matchBruteForce,matchBruteForceL1,matchBruteForceHamming,matchFlannBasedAsync,matchBruteForceAsync } = defExport; +export { LBPHFaceRecognizer,FacemarkAAM,FacemarkAAMData,FacemarkAAMParams,FacemarkLBF,FacemarkLBFParams,KeyPoint,KeyPointMatch,DescriptorMatch,matchFlannBased,matchBruteForce,matchBruteForceL1,matchBruteForceHamming,matchFlannBasedAsync,matchBruteForceAsync }; +const { matchBruteForceL1Async,matchBruteForceHammingAsync,matchBruteForceHammingLut,matchBruteForceSL2,matchBruteForceHammingLutAsync,matchBruteForceSL2Async,matchKnnFlannBased,matchKnnBruteForce,matchKnnBruteForceL1,matchKnnBruteForceHamming,matchKnnFlannBasedAsync,matchKnnBruteForceAsync,matchKnnBruteForceL1Async,matchKnnBruteForceHammingAsync,matchKnnBruteForceHammingLut } = defExport; +export { matchBruteForceL1Async,matchBruteForceHammingAsync,matchBruteForceHammingLut,matchBruteForceSL2,matchBruteForceHammingLutAsync,matchBruteForceSL2Async,matchKnnFlannBased,matchKnnBruteForce,matchKnnBruteForceL1,matchKnnBruteForceHamming,matchKnnFlannBasedAsync,matchKnnBruteForceAsync,matchKnnBruteForceL1Async,matchKnnBruteForceHammingAsync,matchKnnBruteForceHammingLut }; +const { matchKnnBruteForceSL2,matchKnnBruteForceHammingLutAsync,matchKnnBruteForceSL2Async,AGASTDetector,AGASTDetectorType,AKAZEDetector,AKAZEDescriptorType,BRISKDetector,BFMatcher,FASTDetector,FASTDetectorType,GFTTDetector,KAZEDetector,KAZEDiffusivityType,MSERDetector } = defExport; +export { matchKnnBruteForceSL2,matchKnnBruteForceHammingLutAsync,matchKnnBruteForceSL2Async,AGASTDetector,AGASTDetectorType,AKAZEDetector,AKAZEDescriptorType,BRISKDetector,BFMatcher,FASTDetector,FASTDetectorType,GFTTDetector,KAZEDetector,KAZEDiffusivityType,MSERDetector }; +const { ORBDetector,ORBScoreType,SimpleBlobDetectorParams,SimpleBlobDetector,drawKeyPoints,drawMatches,MORPH_RECT,MORPH_CROSS,MORPH_ELLIPSE,MORPH_ERODE,MORPH_DILATE,MORPH_OPEN,MORPH_CLOSE,MORPH_GRADIENT,MORPH_TOPHAT } = defExport; +export { ORBDetector,ORBScoreType,SimpleBlobDetectorParams,SimpleBlobDetector,drawKeyPoints,drawMatches,MORPH_RECT,MORPH_CROSS,MORPH_ELLIPSE,MORPH_ERODE,MORPH_DILATE,MORPH_OPEN,MORPH_CLOSE,MORPH_GRADIENT,MORPH_TOPHAT }; +const { MORPH_BLACKHAT,MORPH_HITMISS,INTER_NEAREST,INTER_LINEAR,INTER_CUBIC,INTER_AREA,INTER_LANCZOS4,INTER_MAX,INTER_LINEAR_EXACT,WARP_FILL_OUTLIERS,WARP_INVERSE_MAP,THRESH_BINARY,THRESH_BINARY_INV,THRESH_TRUNC,THRESH_TOZERO } = defExport; +export { MORPH_BLACKHAT,MORPH_HITMISS,INTER_NEAREST,INTER_LINEAR,INTER_CUBIC,INTER_AREA,INTER_LANCZOS4,INTER_MAX,INTER_LINEAR_EXACT,WARP_FILL_OUTLIERS,WARP_INVERSE_MAP,THRESH_BINARY,THRESH_BINARY_INV,THRESH_TRUNC,THRESH_TOZERO }; +const { THRESH_TOZERO_INV,THRESH_MASK,THRESH_OTSU,THRESH_TRIANGLE,ADAPTIVE_THRESH_MEAN_C,ADAPTIVE_THRESH_GAUSSIAN_C,GC_BGD,GC_FGD,GC_PR_BGD,GC_PR_FGD,GC_INIT_WITH_RECT,GC_INIT_WITH_MASK,GC_EVAL,TM_SQDIFF,TM_SQDIFF_NORMED } = defExport; +export { THRESH_TOZERO_INV,THRESH_MASK,THRESH_OTSU,THRESH_TRIANGLE,ADAPTIVE_THRESH_MEAN_C,ADAPTIVE_THRESH_GAUSSIAN_C,GC_BGD,GC_FGD,GC_PR_BGD,GC_PR_FGD,GC_INIT_WITH_RECT,GC_INIT_WITH_MASK,GC_EVAL,TM_SQDIFF,TM_SQDIFF_NORMED }; +const { TM_CCORR,TM_CCORR_NORMED,TM_CCOEFF,TM_CCOEFF_NORMED,DFT_INVERSE,DFT_SCALE,DFT_ROWS,DFT_COMPLEX_OUTPUT,DFT_REAL_OUTPUT,DCT_INVERSE,DCT_ROWS,HOUGH_STANDARD,HOUGH_PROBABILISTIC,HOUGH_MULTI_SCALE,HOUGH_GRADIENT } = defExport; +export { TM_CCORR,TM_CCORR_NORMED,TM_CCOEFF,TM_CCOEFF_NORMED,DFT_INVERSE,DFT_SCALE,DFT_ROWS,DFT_COMPLEX_OUTPUT,DFT_REAL_OUTPUT,DCT_INVERSE,DCT_ROWS,HOUGH_STANDARD,HOUGH_PROBABILISTIC,HOUGH_MULTI_SCALE,HOUGH_GRADIENT }; +const { HISTCMP_CORREL,HISTCMP_CHISQR,HISTCMP_INTERSECT,HISTCMP_BHATTACHARYYA,HISTCMP_HELLINGER,HISTCMP_CHISQR_ALT,HISTCMP_KL_DIV,FLOODFILL_FIXED_RANGE,FLOODFILL_MASK_ONLY,COLOR_BGR2BGRA,COLOR_RGB2RGBA,COLOR_BGRA2BGR,COLOR_RGBA2RGB,COLOR_BGR2RGBA,COLOR_RGB2BGRA } = defExport; +export { HISTCMP_CORREL,HISTCMP_CHISQR,HISTCMP_INTERSECT,HISTCMP_BHATTACHARYYA,HISTCMP_HELLINGER,HISTCMP_CHISQR_ALT,HISTCMP_KL_DIV,FLOODFILL_FIXED_RANGE,FLOODFILL_MASK_ONLY,COLOR_BGR2BGRA,COLOR_RGB2RGBA,COLOR_BGRA2BGR,COLOR_RGBA2RGB,COLOR_BGR2RGBA,COLOR_RGB2BGRA }; +const { COLOR_RGBA2BGR,COLOR_BGRA2RGB,COLOR_BGR2RGB,COLOR_RGB2BGR,COLOR_BGRA2RGBA,COLOR_RGBA2BGRA,COLOR_BGR2GRAY,COLOR_RGB2GRAY,COLOR_GRAY2BGR,COLOR_GRAY2RGB,COLOR_GRAY2BGRA,COLOR_GRAY2RGBA,COLOR_BGRA2GRAY,COLOR_RGBA2GRAY,COLOR_BGR2BGR565 } = defExport; +export { COLOR_RGBA2BGR,COLOR_BGRA2RGB,COLOR_BGR2RGB,COLOR_RGB2BGR,COLOR_BGRA2RGBA,COLOR_RGBA2BGRA,COLOR_BGR2GRAY,COLOR_RGB2GRAY,COLOR_GRAY2BGR,COLOR_GRAY2RGB,COLOR_GRAY2BGRA,COLOR_GRAY2RGBA,COLOR_BGRA2GRAY,COLOR_RGBA2GRAY,COLOR_BGR2BGR565 }; +const { COLOR_RGB2BGR565,COLOR_BGR5652BGR,COLOR_BGR5652RGB,COLOR_BGRA2BGR565,COLOR_RGBA2BGR565,COLOR_BGR5652BGRA,COLOR_BGR5652RGBA,COLOR_GRAY2BGR565,COLOR_BGR5652GRAY,COLOR_BGR2BGR555,COLOR_RGB2BGR555,COLOR_BGR5552BGR,COLOR_BGR5552RGB,COLOR_BGRA2BGR555,COLOR_RGBA2BGR555 } = defExport; +export { COLOR_RGB2BGR565,COLOR_BGR5652BGR,COLOR_BGR5652RGB,COLOR_BGRA2BGR565,COLOR_RGBA2BGR565,COLOR_BGR5652BGRA,COLOR_BGR5652RGBA,COLOR_GRAY2BGR565,COLOR_BGR5652GRAY,COLOR_BGR2BGR555,COLOR_RGB2BGR555,COLOR_BGR5552BGR,COLOR_BGR5552RGB,COLOR_BGRA2BGR555,COLOR_RGBA2BGR555 }; +const { COLOR_BGR5552BGRA,COLOR_BGR5552RGBA,COLOR_GRAY2BGR555,COLOR_BGR5552GRAY,COLOR_BGR2XYZ,COLOR_RGB2XYZ,COLOR_XYZ2BGR,COLOR_XYZ2RGB,COLOR_BGR2YCrCb,COLOR_RGB2YCrCb,COLOR_YCrCb2BGR,COLOR_YCrCb2RGB,COLOR_BGR2HSV,COLOR_RGB2HSV,COLOR_BGR2Lab } = defExport; +export { COLOR_BGR5552BGRA,COLOR_BGR5552RGBA,COLOR_GRAY2BGR555,COLOR_BGR5552GRAY,COLOR_BGR2XYZ,COLOR_RGB2XYZ,COLOR_XYZ2BGR,COLOR_XYZ2RGB,COLOR_BGR2YCrCb,COLOR_RGB2YCrCb,COLOR_YCrCb2BGR,COLOR_YCrCb2RGB,COLOR_BGR2HSV,COLOR_RGB2HSV,COLOR_BGR2Lab }; +const { COLOR_RGB2Lab,COLOR_BGR2Luv,COLOR_RGB2Luv,COLOR_BGR2HLS,COLOR_RGB2HLS,COLOR_HSV2BGR,COLOR_HSV2RGB,COLOR_Lab2BGR,COLOR_Lab2RGB,COLOR_Luv2BGR,COLOR_Luv2RGB,COLOR_HLS2BGR,COLOR_HLS2RGB,COLOR_BGR2HSV_FULL,COLOR_RGB2HSV_FULL } = defExport; +export { COLOR_RGB2Lab,COLOR_BGR2Luv,COLOR_RGB2Luv,COLOR_BGR2HLS,COLOR_RGB2HLS,COLOR_HSV2BGR,COLOR_HSV2RGB,COLOR_Lab2BGR,COLOR_Lab2RGB,COLOR_Luv2BGR,COLOR_Luv2RGB,COLOR_HLS2BGR,COLOR_HLS2RGB,COLOR_BGR2HSV_FULL,COLOR_RGB2HSV_FULL }; +const { COLOR_BGR2HLS_FULL,COLOR_RGB2HLS_FULL,COLOR_HSV2BGR_FULL,COLOR_HSV2RGB_FULL,COLOR_HLS2BGR_FULL,COLOR_HLS2RGB_FULL,COLOR_LBGR2Lab,COLOR_LRGB2Lab,COLOR_LBGR2Luv,COLOR_LRGB2Luv,COLOR_Lab2LBGR,COLOR_Lab2LRGB,COLOR_Luv2LBGR,COLOR_Luv2LRGB,COLOR_BGR2YUV } = defExport; +export { COLOR_BGR2HLS_FULL,COLOR_RGB2HLS_FULL,COLOR_HSV2BGR_FULL,COLOR_HSV2RGB_FULL,COLOR_HLS2BGR_FULL,COLOR_HLS2RGB_FULL,COLOR_LBGR2Lab,COLOR_LRGB2Lab,COLOR_LBGR2Luv,COLOR_LRGB2Luv,COLOR_Lab2LBGR,COLOR_Lab2LRGB,COLOR_Luv2LBGR,COLOR_Luv2LRGB,COLOR_BGR2YUV }; +const { COLOR_RGB2YUV,COLOR_YUV2BGR,COLOR_YUV2RGB,COLOR_YUV2RGB_NV12,COLOR_YUV2BGR_NV12,COLOR_YUV2RGB_NV21,COLOR_YUV2BGR_NV21,COLOR_YUV420sp2RGB,COLOR_YUV420sp2BGR,COLOR_YUV2RGBA_NV12,COLOR_YUV2BGRA_NV12,COLOR_YUV2RGBA_NV21,COLOR_YUV2BGRA_NV21,COLOR_YUV420sp2RGBA,COLOR_YUV420sp2BGRA } = defExport; +export { COLOR_RGB2YUV,COLOR_YUV2BGR,COLOR_YUV2RGB,COLOR_YUV2RGB_NV12,COLOR_YUV2BGR_NV12,COLOR_YUV2RGB_NV21,COLOR_YUV2BGR_NV21,COLOR_YUV420sp2RGB,COLOR_YUV420sp2BGR,COLOR_YUV2RGBA_NV12,COLOR_YUV2BGRA_NV12,COLOR_YUV2RGBA_NV21,COLOR_YUV2BGRA_NV21,COLOR_YUV420sp2RGBA,COLOR_YUV420sp2BGRA }; +const { COLOR_YUV2RGB_YV12,COLOR_YUV2BGR_YV12,COLOR_YUV2RGB_IYUV,COLOR_YUV2BGR_IYUV,COLOR_YUV2RGB_I420,COLOR_YUV2BGR_I420,COLOR_YUV420p2RGB,COLOR_YUV420p2BGR,COLOR_YUV2RGBA_YV12,COLOR_YUV2BGRA_YV12,COLOR_YUV2RGBA_IYUV,COLOR_YUV2BGRA_IYUV,COLOR_YUV2RGBA_I420,COLOR_YUV2BGRA_I420,COLOR_YUV420p2RGBA } = defExport; +export { COLOR_YUV2RGB_YV12,COLOR_YUV2BGR_YV12,COLOR_YUV2RGB_IYUV,COLOR_YUV2BGR_IYUV,COLOR_YUV2RGB_I420,COLOR_YUV2BGR_I420,COLOR_YUV420p2RGB,COLOR_YUV420p2BGR,COLOR_YUV2RGBA_YV12,COLOR_YUV2BGRA_YV12,COLOR_YUV2RGBA_IYUV,COLOR_YUV2BGRA_IYUV,COLOR_YUV2RGBA_I420,COLOR_YUV2BGRA_I420,COLOR_YUV420p2RGBA }; +const { COLOR_YUV420p2BGRA,COLOR_YUV2GRAY_420,COLOR_YUV2GRAY_NV21,COLOR_YUV2GRAY_NV12,COLOR_YUV2GRAY_YV12,COLOR_YUV2GRAY_IYUV,COLOR_YUV2GRAY_I420,COLOR_YUV420sp2GRAY,COLOR_YUV420p2GRAY,COLOR_YUV2RGB_UYVY,COLOR_YUV2BGR_UYVY,COLOR_YUV2RGB_Y422,COLOR_YUV2BGR_Y422,COLOR_YUV2RGB_UYNV,COLOR_YUV2BGR_UYNV } = defExport; +export { COLOR_YUV420p2BGRA,COLOR_YUV2GRAY_420,COLOR_YUV2GRAY_NV21,COLOR_YUV2GRAY_NV12,COLOR_YUV2GRAY_YV12,COLOR_YUV2GRAY_IYUV,COLOR_YUV2GRAY_I420,COLOR_YUV420sp2GRAY,COLOR_YUV420p2GRAY,COLOR_YUV2RGB_UYVY,COLOR_YUV2BGR_UYVY,COLOR_YUV2RGB_Y422,COLOR_YUV2BGR_Y422,COLOR_YUV2RGB_UYNV,COLOR_YUV2BGR_UYNV }; +const { COLOR_YUV2RGBA_UYVY,COLOR_YUV2BGRA_UYVY,COLOR_YUV2RGBA_Y422,COLOR_YUV2BGRA_Y422,COLOR_YUV2RGBA_UYNV,COLOR_YUV2BGRA_UYNV,COLOR_YUV2RGB_YUY2,COLOR_YUV2BGR_YUY2,COLOR_YUV2RGB_YVYU,COLOR_YUV2BGR_YVYU,COLOR_YUV2RGB_YUYV,COLOR_YUV2BGR_YUYV,COLOR_YUV2RGB_YUNV,COLOR_YUV2BGR_YUNV,COLOR_YUV2RGBA_YUY2 } = defExport; +export { COLOR_YUV2RGBA_UYVY,COLOR_YUV2BGRA_UYVY,COLOR_YUV2RGBA_Y422,COLOR_YUV2BGRA_Y422,COLOR_YUV2RGBA_UYNV,COLOR_YUV2BGRA_UYNV,COLOR_YUV2RGB_YUY2,COLOR_YUV2BGR_YUY2,COLOR_YUV2RGB_YVYU,COLOR_YUV2BGR_YVYU,COLOR_YUV2RGB_YUYV,COLOR_YUV2BGR_YUYV,COLOR_YUV2RGB_YUNV,COLOR_YUV2BGR_YUNV,COLOR_YUV2RGBA_YUY2 }; +const { COLOR_YUV2BGRA_YUY2,COLOR_YUV2RGBA_YVYU,COLOR_YUV2BGRA_YVYU,COLOR_YUV2RGBA_YUYV,COLOR_YUV2BGRA_YUYV,COLOR_YUV2RGBA_YUNV,COLOR_YUV2BGRA_YUNV,COLOR_YUV2GRAY_UYVY,COLOR_YUV2GRAY_YUY2,COLOR_YUV2GRAY_Y422,COLOR_YUV2GRAY_UYNV,COLOR_YUV2GRAY_YVYU,COLOR_YUV2GRAY_YUYV,COLOR_YUV2GRAY_YUNV,COLOR_RGBA2mRGBA } = defExport; +export { COLOR_YUV2BGRA_YUY2,COLOR_YUV2RGBA_YVYU,COLOR_YUV2BGRA_YVYU,COLOR_YUV2RGBA_YUYV,COLOR_YUV2BGRA_YUYV,COLOR_YUV2RGBA_YUNV,COLOR_YUV2BGRA_YUNV,COLOR_YUV2GRAY_UYVY,COLOR_YUV2GRAY_YUY2,COLOR_YUV2GRAY_Y422,COLOR_YUV2GRAY_UYNV,COLOR_YUV2GRAY_YVYU,COLOR_YUV2GRAY_YUYV,COLOR_YUV2GRAY_YUNV,COLOR_RGBA2mRGBA }; +const { COLOR_mRGBA2RGBA,COLOR_RGB2YUV_I420,COLOR_BGR2YUV_I420,COLOR_RGB2YUV_IYUV,COLOR_BGR2YUV_IYUV,COLOR_RGBA2YUV_I420,COLOR_BGRA2YUV_I420,COLOR_RGBA2YUV_IYUV,COLOR_BGRA2YUV_IYUV,COLOR_RGB2YUV_YV12,COLOR_BGR2YUV_YV12,COLOR_RGBA2YUV_YV12,COLOR_BGRA2YUV_YV12,COLOR_BayerBG2BGR,COLOR_BayerGB2BGR } = defExport; +export { COLOR_mRGBA2RGBA,COLOR_RGB2YUV_I420,COLOR_BGR2YUV_I420,COLOR_RGB2YUV_IYUV,COLOR_BGR2YUV_IYUV,COLOR_RGBA2YUV_I420,COLOR_BGRA2YUV_I420,COLOR_RGBA2YUV_IYUV,COLOR_BGRA2YUV_IYUV,COLOR_RGB2YUV_YV12,COLOR_BGR2YUV_YV12,COLOR_RGBA2YUV_YV12,COLOR_BGRA2YUV_YV12,COLOR_BayerBG2BGR,COLOR_BayerGB2BGR }; +const { COLOR_BayerRG2BGR,COLOR_BayerGR2BGR,COLOR_BayerBG2RGB,COLOR_BayerGB2RGB,COLOR_BayerRG2RGB,COLOR_BayerGR2RGB,COLOR_BayerBG2GRAY,COLOR_BayerGB2GRAY,COLOR_BayerRG2GRAY,COLOR_BayerGR2GRAY,COLOR_BayerBG2BGR_VNG,COLOR_BayerGB2BGR_VNG,COLOR_BayerRG2BGR_VNG,COLOR_BayerGR2BGR_VNG,COLOR_BayerBG2RGB_VNG } = defExport; +export { COLOR_BayerRG2BGR,COLOR_BayerGR2BGR,COLOR_BayerBG2RGB,COLOR_BayerGB2RGB,COLOR_BayerRG2RGB,COLOR_BayerGR2RGB,COLOR_BayerBG2GRAY,COLOR_BayerGB2GRAY,COLOR_BayerRG2GRAY,COLOR_BayerGR2GRAY,COLOR_BayerBG2BGR_VNG,COLOR_BayerGB2BGR_VNG,COLOR_BayerRG2BGR_VNG,COLOR_BayerGR2BGR_VNG,COLOR_BayerBG2RGB_VNG }; +const { COLOR_BayerGB2RGB_VNG,COLOR_BayerRG2RGB_VNG,COLOR_BayerGR2RGB_VNG,COLOR_BayerBG2BGR_EA,COLOR_BayerGB2BGR_EA,COLOR_BayerRG2BGR_EA,COLOR_BayerGR2BGR_EA,COLOR_BayerBG2RGB_EA,COLOR_BayerGB2RGB_EA,COLOR_BayerRG2RGB_EA,COLOR_BayerGR2RGB_EA,COLOR_COLORCVT_MAX,CC_STAT_LEFT,CC_STAT_TOP,CC_STAT_WIDTH } = defExport; +export { COLOR_BayerGB2RGB_VNG,COLOR_BayerRG2RGB_VNG,COLOR_BayerGR2RGB_VNG,COLOR_BayerBG2BGR_EA,COLOR_BayerGB2BGR_EA,COLOR_BayerRG2BGR_EA,COLOR_BayerGR2BGR_EA,COLOR_BayerBG2RGB_EA,COLOR_BayerGB2RGB_EA,COLOR_BayerRG2RGB_EA,COLOR_BayerGR2RGB_EA,COLOR_COLORCVT_MAX,CC_STAT_LEFT,CC_STAT_TOP,CC_STAT_WIDTH }; +const { CC_STAT_HEIGHT,CC_STAT_AREA,CC_STAT_MAX,CHAIN_APPROX_NONE,CHAIN_APPROX_SIMPLE,CHAIN_APPROX_TC89_L1,CHAIN_APPROX_TC89_KCOS,DIST_USER,DIST_L1,DIST_L2,DIST_C,DIST_L12,DIST_FAIR,DIST_WELSCH,DIST_HUBER } = defExport; +export { CC_STAT_HEIGHT,CC_STAT_AREA,CC_STAT_MAX,CHAIN_APPROX_NONE,CHAIN_APPROX_SIMPLE,CHAIN_APPROX_TC89_L1,CHAIN_APPROX_TC89_KCOS,DIST_USER,DIST_L1,DIST_L2,DIST_C,DIST_L12,DIST_FAIR,DIST_WELSCH,DIST_HUBER }; +const { DIST_MASK_3,DIST_MASK_5,DIST_MASK_PRECISE,DIST_LABEL_CCOMP,DIST_LABEL_PIXEL,RETR_EXTERNAL,RETR_LIST,RETR_CCOMP,RETR_TREE,RETR_FLOODFILL,CONTOURS_MATCH_I1,CONTOURS_MATCH_I2,CONTOURS_MATCH_I3,FONT_HERSHEY_SIMPLEX,FONT_HERSHEY_PLAIN } = defExport; +export { DIST_MASK_3,DIST_MASK_5,DIST_MASK_PRECISE,DIST_LABEL_CCOMP,DIST_LABEL_PIXEL,RETR_EXTERNAL,RETR_LIST,RETR_CCOMP,RETR_TREE,RETR_FLOODFILL,CONTOURS_MATCH_I1,CONTOURS_MATCH_I2,CONTOURS_MATCH_I3,FONT_HERSHEY_SIMPLEX,FONT_HERSHEY_PLAIN }; +const { FONT_HERSHEY_DUPLEX,FONT_HERSHEY_COMPLEX,FONT_HERSHEY_TRIPLEX,FONT_HERSHEY_COMPLEX_SMALL,FONT_HERSHEY_SCRIPT_SIMPLEX,FONT_HERSHEY_SCRIPT_COMPLEX,FONT_ITALIC,FILLED,LINE_4,LINE_8,LINE_AA,COLORMAP_AUTUMN,COLORMAP_BONE,COLORMAP_JET,COLORMAP_WINTER } = defExport; +export { FONT_HERSHEY_DUPLEX,FONT_HERSHEY_COMPLEX,FONT_HERSHEY_TRIPLEX,FONT_HERSHEY_COMPLEX_SMALL,FONT_HERSHEY_SCRIPT_SIMPLEX,FONT_HERSHEY_SCRIPT_COMPLEX,FONT_ITALIC,FILLED,LINE_4,LINE_8,LINE_AA,COLORMAP_AUTUMN,COLORMAP_BONE,COLORMAP_JET,COLORMAP_WINTER }; +const { COLORMAP_RAINBOW,COLORMAP_OCEAN,COLORMAP_SUMMER,COLORMAP_SPRING,COLORMAP_COOL,COLORMAP_HSV,COLORMAP_PINK,COLORMAP_HOT,COLORMAP_PARULA,getStructuringElement,getRotationMatrix2D,plot1DHist,fitLine,getAffineTransform,getPerspectiveTransform } = defExport; +export { COLORMAP_RAINBOW,COLORMAP_OCEAN,COLORMAP_SUMMER,COLORMAP_SPRING,COLORMAP_COOL,COLORMAP_HSV,COLORMAP_PINK,COLORMAP_HOT,COLORMAP_PARULA,getStructuringElement,getRotationMatrix2D,plot1DHist,fitLine,getAffineTransform,getPerspectiveTransform }; +const { getTextSize,getTextSizeAsync,applyColorMap,applyColorMapAsync,canny,cannyAsync,goodFeaturesToTrack,goodFeaturesToTrackAsync,blur,blurAsync,gaussianBlur,gaussianBlurAsync,medianBlur,medianBlurAsync,accumulate } = defExport; +export { getTextSize,getTextSizeAsync,applyColorMap,applyColorMapAsync,canny,cannyAsync,goodFeaturesToTrack,goodFeaturesToTrackAsync,blur,blurAsync,gaussianBlur,gaussianBlurAsync,medianBlur,medianBlurAsync,accumulate }; +const { accumulateAsync,accumulateProduct,accumulateProductAsync,accumulateSquare,accumulateSquareAsync,accumulateWeighted,accumulateWeightedAsync,calcHist,calcHistAsync,Moments,Contour,CAP_PROP_POS_MSEC,CAP_PROP_POS_FRAMES,CAP_PROP_POS_AVI_RATIO,CAP_PROP_FRAME_WIDTH } = defExport; +export { accumulateAsync,accumulateProduct,accumulateProductAsync,accumulateSquare,accumulateSquareAsync,accumulateWeighted,accumulateWeightedAsync,calcHist,calcHistAsync,Moments,Contour,CAP_PROP_POS_MSEC,CAP_PROP_POS_FRAMES,CAP_PROP_POS_AVI_RATIO,CAP_PROP_FRAME_WIDTH }; +const { CAP_PROP_FRAME_HEIGHT,CAP_PROP_FPS,CAP_PROP_FOURCC,CAP_PROP_FRAME_COUNT,CAP_PROP_FORMAT,CAP_PROP_MODE,CAP_PROP_BRIGHTNESS,CAP_PROP_CONTRAST,CAP_PROP_SATURATION,CAP_PROP_HUE,CAP_PROP_GAIN,CAP_PROP_EXPOSURE,CAP_PROP_CONVERT_RGB,CAP_PROP_WHITE_BALANCE_BLUE_U,CAP_PROP_RECTIFICATION } = defExport; +export { CAP_PROP_FRAME_HEIGHT,CAP_PROP_FPS,CAP_PROP_FOURCC,CAP_PROP_FRAME_COUNT,CAP_PROP_FORMAT,CAP_PROP_MODE,CAP_PROP_BRIGHTNESS,CAP_PROP_CONTRAST,CAP_PROP_SATURATION,CAP_PROP_HUE,CAP_PROP_GAIN,CAP_PROP_EXPOSURE,CAP_PROP_CONVERT_RGB,CAP_PROP_WHITE_BALANCE_BLUE_U,CAP_PROP_RECTIFICATION }; +const { CAP_PROP_MONOCHROME,CAP_PROP_SHARPNESS,CAP_PROP_AUTO_EXPOSURE,CAP_PROP_GAMMA,CAP_PROP_TEMPERATURE,CAP_PROP_TRIGGER,CAP_PROP_TRIGGER_DELAY,CAP_PROP_WHITE_BALANCE_RED_V,CAP_PROP_ZOOM,CAP_PROP_FOCUS,CAP_PROP_GUID,CAP_PROP_ISO_SPEED,CAP_PROP_BACKLIGHT,CAP_PROP_PAN,CAP_PROP_TILT } = defExport; +export { CAP_PROP_MONOCHROME,CAP_PROP_SHARPNESS,CAP_PROP_AUTO_EXPOSURE,CAP_PROP_GAMMA,CAP_PROP_TEMPERATURE,CAP_PROP_TRIGGER,CAP_PROP_TRIGGER_DELAY,CAP_PROP_WHITE_BALANCE_RED_V,CAP_PROP_ZOOM,CAP_PROP_FOCUS,CAP_PROP_GUID,CAP_PROP_ISO_SPEED,CAP_PROP_BACKLIGHT,CAP_PROP_PAN,CAP_PROP_TILT }; +const { CAP_PROP_ROLL,CAP_PROP_IRIS,CAP_PROP_SETTINGS,CAP_PROP_BUFFERSIZE,CAP_PROP_AUTOFOCUS,CAP_ANY,CAP_VFW,CAP_V4L,CAP_V4L2,CAP_FIREWIRE,CAP_IEEE1394,CAP_DC1394,CAP_CMU1394,CAP_QT,CAP_UNICAP } = defExport; +export { CAP_PROP_ROLL,CAP_PROP_IRIS,CAP_PROP_SETTINGS,CAP_PROP_BUFFERSIZE,CAP_PROP_AUTOFOCUS,CAP_ANY,CAP_VFW,CAP_V4L,CAP_V4L2,CAP_FIREWIRE,CAP_IEEE1394,CAP_DC1394,CAP_CMU1394,CAP_QT,CAP_UNICAP }; +const { CAP_DSHOW,CAP_PVAPI,CAP_OPENNI,CAP_OPENNI_ASUS,CAP_ANDROID,CAP_XIAPI,CAP_AVFOUNDATION,CAP_GIGANETIX,CAP_MSMF,CAP_WINRT,CAP_INTELPERC,CAP_OPENNI2,CAP_OPENNI2_ASUS,CAP_GPHOTO2,CAP_GSTREAMER } = defExport; +export { CAP_DSHOW,CAP_PVAPI,CAP_OPENNI,CAP_OPENNI_ASUS,CAP_ANDROID,CAP_XIAPI,CAP_AVFOUNDATION,CAP_GIGANETIX,CAP_MSMF,CAP_WINRT,CAP_INTELPERC,CAP_OPENNI2,CAP_OPENNI2_ASUS,CAP_GPHOTO2,CAP_GSTREAMER }; +const { CAP_FFMPEG,CAP_IMAGES,CAP_ARAVIS,VIDEOWRITER_PROP_QUALITY,VIDEOWRITER_PROP_FRAMEBYTES,VIDEOWRITER_PROP_NSTRIPES,VideoCapture,VideoWriter,imread,imshow,imshowWait,imwrite,waitKey,waitKeyEx,imencode } = defExport; +export { CAP_FFMPEG,CAP_IMAGES,CAP_ARAVIS,VIDEOWRITER_PROP_QUALITY,VIDEOWRITER_PROP_FRAMEBYTES,VIDEOWRITER_PROP_NSTRIPES,VideoCapture,VideoWriter,imread,imshow,imshowWait,imwrite,waitKey,waitKeyEx,imencode }; +const { imdecode,destroyWindow,destroyAllWindows,imreadAsync,imwriteAsync,imencodeAsync,imdecodeAsync,IMREAD_UNCHANGED,IMREAD_GRAYSCALE,IMREAD_COLOR,IMREAD_ANYDEPTH,IMREAD_ANYCOLOR,IMREAD_LOAD_GDAL,IMWRITE_JPEG_QUALITY,IMWRITE_JPEG_PROGRESSIVE } = defExport; +export { imdecode,destroyWindow,destroyAllWindows,imreadAsync,imwriteAsync,imencodeAsync,imdecodeAsync,IMREAD_UNCHANGED,IMREAD_GRAYSCALE,IMREAD_COLOR,IMREAD_ANYDEPTH,IMREAD_ANYCOLOR,IMREAD_LOAD_GDAL,IMWRITE_JPEG_QUALITY,IMWRITE_JPEG_PROGRESSIVE }; +const { IMWRITE_JPEG_OPTIMIZE,IMWRITE_JPEG_RST_INTERVAL,IMWRITE_JPEG_LUMA_QUALITY,IMWRITE_JPEG_CHROMA_QUALITY,IMWRITE_PNG_COMPRESSION,IMWRITE_PNG_STRATEGY,IMWRITE_PNG_BILEVEL,IMWRITE_PXM_BINARY,IMWRITE_WEBP_QUALITY,IMREAD_REDUCED_GRAYSCALE_2,IMREAD_REDUCED_COLOR_2,IMREAD_REDUCED_GRAYSCALE_4,IMREAD_REDUCED_COLOR_4,IMREAD_REDUCED_GRAYSCALE_8,IMREAD_REDUCED_COLOR_8 } = defExport; +export { IMWRITE_JPEG_OPTIMIZE,IMWRITE_JPEG_RST_INTERVAL,IMWRITE_JPEG_LUMA_QUALITY,IMWRITE_JPEG_CHROMA_QUALITY,IMWRITE_PNG_COMPRESSION,IMWRITE_PNG_STRATEGY,IMWRITE_PNG_BILEVEL,IMWRITE_PXM_BINARY,IMWRITE_WEBP_QUALITY,IMREAD_REDUCED_GRAYSCALE_2,IMREAD_REDUCED_COLOR_2,IMREAD_REDUCED_GRAYSCALE_4,IMREAD_REDUCED_COLOR_4,IMREAD_REDUCED_GRAYSCALE_8,IMREAD_REDUCED_COLOR_8 }; +const { IMREAD_IGNORE_ORIENTATION,IMWRITE_PAM_TUPLETYPE,IMWRITE_PAM_FORMAT_NULL,IMWRITE_PAM_FORMAT_BLACKANDWHITE,IMWRITE_PAM_FORMAT_GRAYSCALE,IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA,IMWRITE_PAM_FORMAT_RGB,IMWRITE_PAM_FORMAT_RGB_ALPHA,IMWRITE_PNG_STRATEGY_DEFAULT,IMWRITE_PNG_STRATEGY_FILTERED,IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY,IMWRITE_PNG_STRATEGY_RLE,IMWRITE_PNG_STRATEGY_FIXED,ml,statModel } = defExport; +export { IMREAD_IGNORE_ORIENTATION,IMWRITE_PAM_TUPLETYPE,IMWRITE_PAM_FORMAT_NULL,IMWRITE_PAM_FORMAT_BLACKANDWHITE,IMWRITE_PAM_FORMAT_GRAYSCALE,IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA,IMWRITE_PAM_FORMAT_RGB,IMWRITE_PAM_FORMAT_RGB_ALPHA,IMWRITE_PNG_STRATEGY_DEFAULT,IMWRITE_PNG_STRATEGY_FILTERED,IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY,IMWRITE_PNG_STRATEGY_RLE,IMWRITE_PNG_STRATEGY_FIXED,ml,statModel }; +const { TrainData,ParamGrid,StatModel,SVM,CascadeClassifier,HOGDescriptor,HOGHistogramNormType,DetectionROI,INPAINT_NS,INPAINT_TELEA,NORMAL_CLONE,MIXED_CLONE,MONOCHROME_TRANSFER,fastNlMeansDenoisingColored,fastNlMeansDenoisingColoredAsync } = defExport; +export { TrainData,ParamGrid,StatModel,SVM,CascadeClassifier,HOGDescriptor,HOGHistogramNormType,DetectionROI,INPAINT_NS,INPAINT_TELEA,NORMAL_CLONE,MIXED_CLONE,MONOCHROME_TRANSFER,fastNlMeansDenoisingColored,fastNlMeansDenoisingColoredAsync }; +const { inpaint,inpaintAsync,seamlessClone,seamlessCloneAsync,OCRHMMDecoder,OCRHMMClassifier,loadOCRHMMClassifierNM,loadOCRHMMClassifierNMAsync,loadOCRHMMClassifierCNN,loadOCRHMMClassifierCNNAsync,createOCRHMMTransitionsTable,createOCRHMMTransitionsTableAsync,TrackerBoostingParams,TrackerBoosting,TrackerMedianFlow } = defExport; +export { inpaint,inpaintAsync,seamlessClone,seamlessCloneAsync,OCRHMMDecoder,OCRHMMClassifier,loadOCRHMMClassifierNM,loadOCRHMMClassifierNMAsync,loadOCRHMMClassifierCNN,loadOCRHMMClassifierCNNAsync,createOCRHMMTransitionsTable,createOCRHMMTransitionsTableAsync,TrackerBoostingParams,TrackerBoosting,TrackerMedianFlow }; +const { TrackerMILParams,TrackerMIL,TrackerTLD,TrackerKCFParams,TrackerKCF,MultiTracker,trackerKCFModes,TrackerGOTURN,TrackerMOSSE,TrackerCSRTParams,TrackerCSRT,BackgroundSubtractorMOG2,BackgroundSubtractorKNN,SIFTDetector,SURFDetector } = defExport; +export { TrackerMILParams,TrackerMIL,TrackerTLD,TrackerKCFParams,TrackerKCF,MultiTracker,trackerKCFModes,TrackerGOTURN,TrackerMOSSE,TrackerCSRTParams,TrackerCSRT,BackgroundSubtractorMOG2,BackgroundSubtractorKNN,SIFTDetector,SURFDetector }; +const { SuperpixelSEEDS,SuperpixelSLIC,SuperpixelLSC,SLIC,SLICO,PHash,HAAR_EYE,HAAR_EYE_TREE_EYEGLASSES,HAAR_FRONTALCATFACE,HAAR_FRONTALCATFACE_EXTENDED,HAAR_FRONTALFACE_ALT,HAAR_FRONTALFACE_ALT2,HAAR_FRONTALFACE_ALT_TREE,HAAR_FRONTALFACE_DEFAULT,HAAR_FULLBODY } = defExport; +export { SuperpixelSEEDS,SuperpixelSLIC,SuperpixelLSC,SLIC,SLICO,PHash,HAAR_EYE,HAAR_EYE_TREE_EYEGLASSES,HAAR_FRONTALCATFACE,HAAR_FRONTALCATFACE_EXTENDED,HAAR_FRONTALFACE_ALT,HAAR_FRONTALFACE_ALT2,HAAR_FRONTALFACE_ALT_TREE,HAAR_FRONTALFACE_DEFAULT,HAAR_FULLBODY }; +const { HAAR_LEFTEYE_2SPLITS,HAAR_LICENCE_PLATE_RUS_16STAGES,HAAR_LOWERBODY,HAAR_PROFILEFACE,HAAR_RIGHTEYE_2SPLITS,HAAR_RUSSIAN_PLATE_NUMBER,HAAR_SMILE,HAAR_UPPERBODY,LBP_FRONTALCATFACE,LBP_FRONTALFACE,LBP_FRONTALFACE_IMPROVED,LBP_PROFILEFACE,LBP_SILVERWARE,drawTextBox,drawDetection } = defExport; +export { HAAR_LEFTEYE_2SPLITS,HAAR_LICENCE_PLATE_RUS_16STAGES,HAAR_LOWERBODY,HAAR_PROFILEFACE,HAAR_RIGHTEYE_2SPLITS,HAAR_RUSSIAN_PLATE_NUMBER,HAAR_SMILE,HAAR_UPPERBODY,LBP_FRONTALCATFACE,LBP_FRONTALFACE,LBP_FRONTALFACE_IMPROVED,LBP_PROFILEFACE,LBP_SILVERWARE,drawTextBox,drawDetection }; +const { getVersion,getVersionString,toMatTypeName,getScoreMax,dropOverlappingZone } = defExport; +export { getVersion,getVersionString,toMatTypeName,getScoreMax,dropOverlappingZone }; + +// defExport['cv'] = cv; +// const {Vec3} = defExport; +// export {Vec3}; +// export * from defExport; export default defExport; From 766d9b30664437699c88f7f460e84cabcf819431 Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 09:41:54 +0200 Subject: [PATCH 38/50] fix typings + improve exports --- src/lib/opencv4nodejs.ts | 136 ++++++++++++++-------------- test/tests/imgproc/Contour.test.ts | 1 - typings/constants.d.ts | 5 + typings/cv.d.ts | 8 ++ typings/group/calib3d.d.ts | 10 ++ typings/group/imgproc_colormap.d.ts | 1 + 6 files changed, 92 insertions(+), 69 deletions(-) diff --git a/src/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts index 2fedc009c..4158c5c7c 100644 --- a/src/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -28,17 +28,17 @@ function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { } export const cv = loadOpenCV({ prebuild: 'latestBuild' }); -const defExport: { [key: string]: any } = { cv }; +// const defExport: { [key: string]: any } = { cv }; // duplicate all export for retro-compatibility -for (const key in cv) { - defExport[key] = cv[key]; -} +// for (const key in cv) { +// defExport[key] = cv[key]; +// } // const allExports = Object.keys(defExport).filter(key => key !== 'cv' && !key.includes('"')); // console.log('\n\n'); // while (allExports.length) { // const keys = allExports.splice(0, 15); -// console.log(`const { ${keys} } = defExport;`); +// console.log(`const { ${keys} } = cv;`); // console.log(`export { ${keys} };`); // } // console.log('\n\n'); @@ -46,134 +46,134 @@ for (const key in cv) { ////////////// //// GENERATED code -const { isCustomMatAllocatorEnabled,dangerousEnableCustomMatAllocator,dangerousDisableCustomMatAllocator,getMemMetrics,version,modules,xmodules,CV_8U,CV_8S,CV_16U,CV_16S,CV_32S,CV_32F,CV_64F,CV_16F } = defExport; +const { isCustomMatAllocatorEnabled,dangerousEnableCustomMatAllocator,dangerousDisableCustomMatAllocator,getMemMetrics,version,modules,xmodules,CV_8U,CV_8S,CV_16U,CV_16S,CV_32S,CV_32F,CV_64F,CV_16F } = cv; export { isCustomMatAllocatorEnabled,dangerousEnableCustomMatAllocator,dangerousDisableCustomMatAllocator,getMemMetrics,version,modules,xmodules,CV_8U,CV_8S,CV_16U,CV_16S,CV_32S,CV_32F,CV_64F,CV_16F }; -const { CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4,CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4,CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4,CV_16SC1,CV_16SC2,CV_16SC3 } = defExport; +const { CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4,CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4,CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4,CV_16SC1,CV_16SC2,CV_16SC3 } = cv; export { CV_8UC1,CV_8UC2,CV_8UC3,CV_8UC4,CV_8SC1,CV_8SC2,CV_8SC3,CV_8SC4,CV_16UC1,CV_16UC2,CV_16UC3,CV_16UC4,CV_16SC1,CV_16SC2,CV_16SC3 }; -const { CV_16SC4,CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4,CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4,CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4,CV_16FC1,CV_16FC2 } = defExport; +const { CV_16SC4,CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4,CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4,CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4,CV_16FC1,CV_16FC2 } = cv; export { CV_16SC4,CV_32SC1,CV_32SC2,CV_32SC3,CV_32SC4,CV_32FC1,CV_32FC2,CV_32FC3,CV_32FC4,CV_64FC1,CV_64FC2,CV_64FC3,CV_64FC4,CV_16FC1,CV_16FC2 }; -const { CV_16FC3,CV_16FC4,NORM_INF,NORM_L1,NORM_L2,NORM_L2SQR,NORM_HAMMING,NORM_HAMMING2,NORM_TYPE_MASK,NORM_RELATIVE,NORM_MINMAX,KMEANS_RANDOM_CENTERS,KMEANS_PP_CENTERS,KMEANS_USE_INITIAL_LABELS,termCriteria } = defExport; +const { CV_16FC3,CV_16FC4,NORM_INF,NORM_L1,NORM_L2,NORM_L2SQR,NORM_HAMMING,NORM_HAMMING2,NORM_TYPE_MASK,NORM_RELATIVE,NORM_MINMAX,KMEANS_RANDOM_CENTERS,KMEANS_PP_CENTERS,KMEANS_USE_INITIAL_LABELS,termCriteria } = cv; export { CV_16FC3,CV_16FC4,NORM_INF,NORM_L1,NORM_L2,NORM_L2SQR,NORM_HAMMING,NORM_HAMMING2,NORM_TYPE_MASK,NORM_RELATIVE,NORM_MINMAX,KMEANS_RANDOM_CENTERS,KMEANS_PP_CENTERS,KMEANS_USE_INITIAL_LABELS,termCriteria }; -const { haarCascades,lbpCascades,REDUCE_SUM,REDUCE_AVG,REDUCE_MAX,REDUCE_MIN,ROTATE_90_CLOCKWISE,ROTATE_180,ROTATE_90_COUNTERCLOCKWISE,DECOMP_LU,DECOMP_CHOLESKY,DECOMP_EIG,DECOMP_SVD,DECOMP_QR,DECOMP_NORMAL } = defExport; +const { haarCascades,lbpCascades,REDUCE_SUM,REDUCE_AVG,REDUCE_MAX,REDUCE_MIN,ROTATE_90_CLOCKWISE,ROTATE_180,ROTATE_90_COUNTERCLOCKWISE,DECOMP_LU,DECOMP_CHOLESKY,DECOMP_EIG,DECOMP_SVD,DECOMP_QR,DECOMP_NORMAL } = cv; export { haarCascades,lbpCascades,REDUCE_SUM,REDUCE_AVG,REDUCE_MAX,REDUCE_MIN,ROTATE_90_CLOCKWISE,ROTATE_180,ROTATE_90_COUNTERCLOCKWISE,DECOMP_LU,DECOMP_CHOLESKY,DECOMP_EIG,DECOMP_SVD,DECOMP_QR,DECOMP_NORMAL }; -const { BORDER_CONSTANT,BORDER_REPLICATE,BORDER_REFLECT,BORDER_WRAP,BORDER_REFLECT_101,BORDER_TRANSPARENT,BORDER_ISOLATED,BORDER_DEFAULT,Mat,Point,Point2,Point3,Vec,Vec2,Vec3 } = defExport; +const { BORDER_CONSTANT,BORDER_REPLICATE,BORDER_REFLECT,BORDER_WRAP,BORDER_REFLECT_101,BORDER_TRANSPARENT,BORDER_ISOLATED,BORDER_DEFAULT,Mat,Point,Point2,Point3,Vec,Vec2,Vec3 } = cv; export { BORDER_CONSTANT,BORDER_REPLICATE,BORDER_REFLECT,BORDER_WRAP,BORDER_REFLECT_101,BORDER_TRANSPARENT,BORDER_ISOLATED,BORDER_DEFAULT,Mat,Point,Point2,Point3,Vec,Vec2,Vec3 }; -const { Vec4,Vec6,Size,Rect,RotatedRect,TermCriteria,HistAxes,getBuildInformation,partition,kmeans,cartToPolar,cartToPolarAsync,polarToCart,polarToCartAsync,getNumThreads } = defExport; +const { Vec4,Vec6,Size,Rect,RotatedRect,TermCriteria,HistAxes,getBuildInformation,partition,kmeans,cartToPolar,cartToPolarAsync,polarToCart,polarToCartAsync,getNumThreads } = cv; export { Vec4,Vec6,Size,Rect,RotatedRect,TermCriteria,HistAxes,getBuildInformation,partition,kmeans,cartToPolar,cartToPolarAsync,polarToCart,polarToCartAsync,getNumThreads }; -const { setNumThreads,getThreadNum,addWeighted,addWeightedAsync,minMaxLoc,minMaxLocAsync,findNonZero,findNonZeroAsync,countNonZero,countNonZeroAsync,split,splitAsync,mulSpectrums,mulSpectrumsAsync,transform } = defExport; +const { setNumThreads,getThreadNum,addWeighted,addWeightedAsync,minMaxLoc,minMaxLocAsync,findNonZero,findNonZeroAsync,countNonZero,countNonZeroAsync,split,splitAsync,mulSpectrums,mulSpectrumsAsync,transform } = cv; export { setNumThreads,getThreadNum,addWeighted,addWeightedAsync,minMaxLoc,minMaxLocAsync,findNonZero,findNonZeroAsync,countNonZero,countNonZeroAsync,split,splitAsync,mulSpectrums,mulSpectrumsAsync,transform }; -const { transformAsync,perspectiveTransform,perspectiveTransformAsync,convertScaleAbs,convertScaleAbsAsync,sum,sumAsync,mean,meanAsync,meanStdDev,meanStdDevAsync,reduce,reduceAsync,eigen,eigenAsync } = defExport; +const { transformAsync,perspectiveTransform,perspectiveTransformAsync,convertScaleAbs,convertScaleAbsAsync,sum,sumAsync,mean,meanAsync,meanStdDev,meanStdDevAsync,reduce,reduceAsync,eigen,eigenAsync } = cv; export { transformAsync,perspectiveTransform,perspectiveTransformAsync,convertScaleAbs,convertScaleAbsAsync,sum,sumAsync,mean,meanAsync,meanStdDev,meanStdDevAsync,reduce,reduceAsync,eigen,eigenAsync }; -const { min,minAsync,max,maxAsync,solve,solveAsync,magnitude,magnitudeAsync,getTickFrequency,getTickCount,getVersionMajor,getVersionMinor,getVersionRevision,WINDOW_NORMAL,WINDOW_AUTOSIZE } = defExport; +const { min,minAsync,max,maxAsync,solve,solveAsync,magnitude,magnitudeAsync,getTickFrequency,getTickCount,getVersionMajor,getVersionMinor,getVersionRevision,WINDOW_NORMAL,WINDOW_AUTOSIZE } = cv; export { min,minAsync,max,maxAsync,solve,solveAsync,magnitude,magnitudeAsync,getTickFrequency,getTickCount,getVersionMajor,getVersionMinor,getVersionRevision,WINDOW_NORMAL,WINDOW_AUTOSIZE }; -const { WINDOW_OPENGL,WINDOW_FULLSCREEN,WINDOW_FREERATIO,WINDOW_KEEPRATIO,WINDOW_GUI_EXPANDED,WINDOW_GUI_NORMAL,WND_PROP_FULLSCREEN,WND_PROP_AUTOSIZE,WND_PROP_ASPECT_RATIO,WND_PROP_OPENGL,WND_PROP_VISIBLE,WND_PROP_TOPMOST,WND_PROP_VSYNC,EVENT_MOUSEMOVE,EVENT_LBUTTONDOWN } = defExport; +const { WINDOW_OPENGL,WINDOW_FULLSCREEN,WINDOW_FREERATIO,WINDOW_KEEPRATIO,WINDOW_GUI_EXPANDED,WINDOW_GUI_NORMAL,WND_PROP_FULLSCREEN,WND_PROP_AUTOSIZE,WND_PROP_ASPECT_RATIO,WND_PROP_OPENGL,WND_PROP_VISIBLE,WND_PROP_TOPMOST,WND_PROP_VSYNC,EVENT_MOUSEMOVE,EVENT_LBUTTONDOWN } = cv; export { WINDOW_OPENGL,WINDOW_FULLSCREEN,WINDOW_FREERATIO,WINDOW_KEEPRATIO,WINDOW_GUI_EXPANDED,WINDOW_GUI_NORMAL,WND_PROP_FULLSCREEN,WND_PROP_AUTOSIZE,WND_PROP_ASPECT_RATIO,WND_PROP_OPENGL,WND_PROP_VISIBLE,WND_PROP_TOPMOST,WND_PROP_VSYNC,EVENT_MOUSEMOVE,EVENT_LBUTTONDOWN }; -const { EVENT_RBUTTONDOWN,EVENT_MBUTTONDOWN,EVENT_LBUTTONUP,EVENT_RBUTTONUP,EVENT_MBUTTONUP,EVENT_LBUTTONDBLCLK,EVENT_RBUTTONDBLCLK,EVENT_MBUTTONDBLCLK,EVENT_MOUSEWHEEL,EVENT_MOUSEHWHEEL,EVENT_FLAG_LBUTTON,EVENT_FLAG_RBUTTON,EVENT_FLAG_MBUTTON,EVENT_FLAG_CTRLKEY,EVENT_FLAG_SHIFTKEY } = defExport; +const { EVENT_RBUTTONDOWN,EVENT_MBUTTONDOWN,EVENT_LBUTTONUP,EVENT_RBUTTONUP,EVENT_MBUTTONUP,EVENT_LBUTTONDBLCLK,EVENT_RBUTTONDBLCLK,EVENT_MBUTTONDBLCLK,EVENT_MOUSEWHEEL,EVENT_MOUSEHWHEEL,EVENT_FLAG_LBUTTON,EVENT_FLAG_RBUTTON,EVENT_FLAG_MBUTTON,EVENT_FLAG_CTRLKEY,EVENT_FLAG_SHIFTKEY } = cv; export { EVENT_RBUTTONDOWN,EVENT_MBUTTONDOWN,EVENT_LBUTTONUP,EVENT_RBUTTONUP,EVENT_MBUTTONUP,EVENT_LBUTTONDBLCLK,EVENT_RBUTTONDBLCLK,EVENT_MBUTTONDBLCLK,EVENT_MOUSEWHEEL,EVENT_MOUSEHWHEEL,EVENT_FLAG_LBUTTON,EVENT_FLAG_RBUTTON,EVENT_FLAG_MBUTTON,EVENT_FLAG_CTRLKEY,EVENT_FLAG_SHIFTKEY }; -const { EVENT_FLAG_ALTKEY,QT_FONT_LIGHT,QT_FONT_NORMAL,QT_FONT_DEMIBOLD,QT_FONT_BOLD,QT_FONT_BLACK,QT_STYLE_NORMAL,QT_STYLE_ITALIC,QT_STYLE_OBLIQUE,QT_PUSH_BUTTON,QT_CHECKBOX,QT_RADIOBOX,QT_NEW_BUTTONBAR,setWindowProperty,getWindowProperty } = defExport; +const { EVENT_FLAG_ALTKEY,QT_FONT_LIGHT,QT_FONT_NORMAL,QT_FONT_DEMIBOLD,QT_FONT_BOLD,QT_FONT_BLACK,QT_STYLE_NORMAL,QT_STYLE_ITALIC,QT_STYLE_OBLIQUE,QT_PUSH_BUTTON,QT_CHECKBOX,QT_RADIOBOX,QT_NEW_BUTTONBAR,setWindowProperty,getWindowProperty } = cv; export { EVENT_FLAG_ALTKEY,QT_FONT_LIGHT,QT_FONT_NORMAL,QT_FONT_DEMIBOLD,QT_FONT_BOLD,QT_FONT_BLACK,QT_STYLE_NORMAL,QT_STYLE_ITALIC,QT_STYLE_OBLIQUE,QT_PUSH_BUTTON,QT_CHECKBOX,QT_RADIOBOX,QT_NEW_BUTTONBAR,setWindowProperty,getWindowProperty }; -const { setWindowTitle,moveWindow,namedWindow,resizeWindow,startWindowThread,REGULAR,LMEDS,RANSAC,RHO,SOLVEPNP_ITERATIVE,SOLVEPNP_EPNP,SOLVEPNP_P3P,SOLVEPNP_DLS,SOLVEPNP_UPNP,CALIB_CB_ADAPTIVE_THRESH } = defExport; +const { setWindowTitle,moveWindow,namedWindow,resizeWindow,startWindowThread,REGULAR,LMEDS,RANSAC,RHO,SOLVEPNP_ITERATIVE,SOLVEPNP_EPNP,SOLVEPNP_P3P,SOLVEPNP_DLS,SOLVEPNP_UPNP,CALIB_CB_ADAPTIVE_THRESH } = cv; export { setWindowTitle,moveWindow,namedWindow,resizeWindow,startWindowThread,REGULAR,LMEDS,RANSAC,RHO,SOLVEPNP_ITERATIVE,SOLVEPNP_EPNP,SOLVEPNP_P3P,SOLVEPNP_DLS,SOLVEPNP_UPNP,CALIB_CB_ADAPTIVE_THRESH }; -const { CALIB_CB_NORMALIZE_IMAGE,CALIB_CB_FILTER_QUADS,CALIB_CB_FAST_CHECK,CALIB_CB_SYMMETRIC_GRID,CALIB_CB_ASYMMETRIC_GRID,CALIB_CB_CLUSTERING,CALIB_USE_INTRINSIC_GUESS,CALIB_FIX_ASPECT_RATIO,CALIB_FIX_PRINCIPAL_POINT,CALIB_ZERO_TANGENT_DIST,CALIB_FIX_FOCAL_LENGTH,CALIB_FIX_K1,CALIB_FIX_K2,CALIB_FIX_K3,CALIB_FIX_K4 } = defExport; +const { CALIB_CB_NORMALIZE_IMAGE,CALIB_CB_FILTER_QUADS,CALIB_CB_FAST_CHECK,CALIB_CB_SYMMETRIC_GRID,CALIB_CB_ASYMMETRIC_GRID,CALIB_CB_CLUSTERING,CALIB_USE_INTRINSIC_GUESS,CALIB_FIX_ASPECT_RATIO,CALIB_FIX_PRINCIPAL_POINT,CALIB_ZERO_TANGENT_DIST,CALIB_FIX_FOCAL_LENGTH,CALIB_FIX_K1,CALIB_FIX_K2,CALIB_FIX_K3,CALIB_FIX_K4 } = cv; export { CALIB_CB_NORMALIZE_IMAGE,CALIB_CB_FILTER_QUADS,CALIB_CB_FAST_CHECK,CALIB_CB_SYMMETRIC_GRID,CALIB_CB_ASYMMETRIC_GRID,CALIB_CB_CLUSTERING,CALIB_USE_INTRINSIC_GUESS,CALIB_FIX_ASPECT_RATIO,CALIB_FIX_PRINCIPAL_POINT,CALIB_ZERO_TANGENT_DIST,CALIB_FIX_FOCAL_LENGTH,CALIB_FIX_K1,CALIB_FIX_K2,CALIB_FIX_K3,CALIB_FIX_K4 }; -const { CALIB_FIX_K5,CALIB_FIX_K6,CALIB_RATIONAL_MODEL,CALIB_THIN_PRISM_MODEL,CALIB_FIX_S1_S2_S3_S4,CALIB_FIX_INTRINSIC,CALIB_SAME_FOCAL_LENGTH,CALIB_ZERO_DISPARITY,CALIB_TILTED_MODEL,CALIB_FIX_TAUX_TAUY,CALIB_USE_LU,CALIB_USE_QR,SOLVEPNP_AP3P,SOLVEPNP_MAX_COUNT,CALIB_FIX_TANGENT_DIST } = defExport; +const { CALIB_FIX_K5,CALIB_FIX_K6,CALIB_RATIONAL_MODEL,CALIB_THIN_PRISM_MODEL,CALIB_FIX_S1_S2_S3_S4,CALIB_FIX_INTRINSIC,CALIB_SAME_FOCAL_LENGTH,CALIB_ZERO_DISPARITY,CALIB_TILTED_MODEL,CALIB_FIX_TAUX_TAUY,CALIB_USE_LU,CALIB_USE_QR,SOLVEPNP_AP3P,SOLVEPNP_MAX_COUNT,CALIB_FIX_TANGENT_DIST } = cv; export { CALIB_FIX_K5,CALIB_FIX_K6,CALIB_RATIONAL_MODEL,CALIB_THIN_PRISM_MODEL,CALIB_FIX_S1_S2_S3_S4,CALIB_FIX_INTRINSIC,CALIB_SAME_FOCAL_LENGTH,CALIB_ZERO_DISPARITY,CALIB_TILTED_MODEL,CALIB_FIX_TAUX_TAUY,CALIB_USE_LU,CALIB_USE_QR,SOLVEPNP_AP3P,SOLVEPNP_MAX_COUNT,CALIB_FIX_TANGENT_DIST }; -const { FM_7POINT,FM_8POINT,FM_LMEDS,FM_RANSAC,findHomography,findHomographyAsync,composeRT,composeRTAsync,solvePnP,solvePnPAsync,solvePnPRansac,solvePnPRansacAsync,projectPoints,projectPointsAsync,initCameraMatrix2D } = defExport; +const { FM_7POINT,FM_8POINT,FM_LMEDS,FM_RANSAC,findHomography,findHomographyAsync,composeRT,composeRTAsync,solvePnP,solvePnPAsync,solvePnPRansac,solvePnPRansacAsync,projectPoints,projectPointsAsync,initCameraMatrix2D } = cv; export { FM_7POINT,FM_8POINT,FM_LMEDS,FM_RANSAC,findHomography,findHomographyAsync,composeRT,composeRTAsync,solvePnP,solvePnPAsync,solvePnPRansac,solvePnPRansacAsync,projectPoints,projectPointsAsync,initCameraMatrix2D }; -const { initCameraMatrix2DAsync,stereoCalibrate,stereoCalibrateAsync,stereoRectifyUncalibrated,stereoRectifyUncalibratedAsync,findFundamentalMat,findFundamentalMatAsync,findEssentialMat,findEssentialMatAsync,recoverPose,recoverPoseAsync,computeCorrespondEpilines,computeCorrespondEpilinesAsync,getValidDisparityROI,getValidDisparityROIAsync } = defExport; +const { initCameraMatrix2DAsync,stereoCalibrate,stereoCalibrateAsync,stereoRectifyUncalibrated,stereoRectifyUncalibratedAsync,findFundamentalMat,findFundamentalMatAsync,findEssentialMat,findEssentialMatAsync,recoverPose,recoverPoseAsync,computeCorrespondEpilines,computeCorrespondEpilinesAsync,getValidDisparityROI,getValidDisparityROIAsync } = cv; export { initCameraMatrix2DAsync,stereoCalibrate,stereoCalibrateAsync,stereoRectifyUncalibrated,stereoRectifyUncalibratedAsync,findFundamentalMat,findFundamentalMatAsync,findEssentialMat,findEssentialMatAsync,recoverPose,recoverPoseAsync,computeCorrespondEpilines,computeCorrespondEpilinesAsync,getValidDisparityROI,getValidDisparityROIAsync }; -const { estimateAffine3D,estimateAffine3DAsync,sampsonDistance,sampsonDistanceAsync,calibrateCamera,calibrateCameraAsync,calibrateCameraExtended,calibrateCameraExtendedAsync,estimateAffine2D,estimateAffine2DAsync,estimateAffinePartial2D,estimateAffinePartial2DAsync,solveP3P,solveP3PAsync,undistortPoints } = defExport; +const { estimateAffine3D,estimateAffine3DAsync,sampsonDistance,sampsonDistanceAsync,calibrateCamera,calibrateCameraAsync,calibrateCameraExtended,calibrateCameraExtendedAsync,estimateAffine2D,estimateAffine2DAsync,estimateAffinePartial2D,estimateAffinePartial2DAsync,solveP3P,solveP3PAsync,undistortPoints } = cv; export { estimateAffine3D,estimateAffine3DAsync,sampsonDistance,sampsonDistanceAsync,calibrateCamera,calibrateCameraAsync,calibrateCameraExtended,calibrateCameraExtendedAsync,estimateAffine2D,estimateAffine2DAsync,estimateAffinePartial2D,estimateAffinePartial2DAsync,solveP3P,solveP3PAsync,undistortPoints }; -const { undistortPointsAsync,DNN_BACKEND_OPENCV,DNN_BACKEND_INFERENCE_ENGINE,DNN_BACKEND_HALIDE,DNN_BACKEND_CUDA,DNN_TARGET_CPU,DNN_TARGET_OPENCL,DNN_TARGET_OPENCL_FP16,DNN_TARGET_MYRIAD,DNN_TARGET_CUDA,DNN_TARGET_CUDA_FP16,DNN_TARGET_HDDL,Net,readNetFromTensorflow,readNetFromTensorflowAsync } = defExport; +const { undistortPointsAsync,DNN_BACKEND_OPENCV,DNN_BACKEND_INFERENCE_ENGINE,DNN_BACKEND_HALIDE,DNN_BACKEND_CUDA,DNN_TARGET_CPU,DNN_TARGET_OPENCL,DNN_TARGET_OPENCL_FP16,DNN_TARGET_MYRIAD,DNN_TARGET_CUDA,DNN_TARGET_CUDA_FP16,DNN_TARGET_HDDL,Net,readNetFromTensorflow,readNetFromTensorflowAsync } = cv; export { undistortPointsAsync,DNN_BACKEND_OPENCV,DNN_BACKEND_INFERENCE_ENGINE,DNN_BACKEND_HALIDE,DNN_BACKEND_CUDA,DNN_TARGET_CPU,DNN_TARGET_OPENCL,DNN_TARGET_OPENCL_FP16,DNN_TARGET_MYRIAD,DNN_TARGET_CUDA,DNN_TARGET_CUDA_FP16,DNN_TARGET_HDDL,Net,readNetFromTensorflow,readNetFromTensorflowAsync }; -const { readNetFromCaffe,readNetFromCaffeAsync,blobFromImage,blobFromImageAsync,blobFromImages,blobFromImagesAsync,readNetFromDarknet,readNetFromDarknetAsync,NMSBoxes,readNetFromONNX,readNetFromONNXAsync,readNet,readNetAsync,EigenFaceRecognizer,FisherFaceRecognizer } = defExport; +const { readNetFromCaffe,readNetFromCaffeAsync,blobFromImage,blobFromImageAsync,blobFromImages,blobFromImagesAsync,readNetFromDarknet,readNetFromDarknetAsync,NMSBoxes,readNetFromONNX,readNetFromONNXAsync,readNet,readNetAsync,EigenFaceRecognizer,FisherFaceRecognizer } = cv; export { readNetFromCaffe,readNetFromCaffeAsync,blobFromImage,blobFromImageAsync,blobFromImages,blobFromImagesAsync,readNetFromDarknet,readNetFromDarknetAsync,NMSBoxes,readNetFromONNX,readNetFromONNXAsync,readNet,readNetAsync,EigenFaceRecognizer,FisherFaceRecognizer }; -const { LBPHFaceRecognizer,FacemarkAAM,FacemarkAAMData,FacemarkAAMParams,FacemarkLBF,FacemarkLBFParams,KeyPoint,KeyPointMatch,DescriptorMatch,matchFlannBased,matchBruteForce,matchBruteForceL1,matchBruteForceHamming,matchFlannBasedAsync,matchBruteForceAsync } = defExport; +const { LBPHFaceRecognizer,FacemarkAAM,FacemarkAAMData,FacemarkAAMParams,FacemarkLBF,FacemarkLBFParams,KeyPoint,KeyPointMatch,DescriptorMatch,matchFlannBased,matchBruteForce,matchBruteForceL1,matchBruteForceHamming,matchFlannBasedAsync,matchBruteForceAsync } = cv; export { LBPHFaceRecognizer,FacemarkAAM,FacemarkAAMData,FacemarkAAMParams,FacemarkLBF,FacemarkLBFParams,KeyPoint,KeyPointMatch,DescriptorMatch,matchFlannBased,matchBruteForce,matchBruteForceL1,matchBruteForceHamming,matchFlannBasedAsync,matchBruteForceAsync }; -const { matchBruteForceL1Async,matchBruteForceHammingAsync,matchBruteForceHammingLut,matchBruteForceSL2,matchBruteForceHammingLutAsync,matchBruteForceSL2Async,matchKnnFlannBased,matchKnnBruteForce,matchKnnBruteForceL1,matchKnnBruteForceHamming,matchKnnFlannBasedAsync,matchKnnBruteForceAsync,matchKnnBruteForceL1Async,matchKnnBruteForceHammingAsync,matchKnnBruteForceHammingLut } = defExport; +const { matchBruteForceL1Async,matchBruteForceHammingAsync,matchBruteForceHammingLut,matchBruteForceSL2,matchBruteForceHammingLutAsync,matchBruteForceSL2Async,matchKnnFlannBased,matchKnnBruteForce,matchKnnBruteForceL1,matchKnnBruteForceHamming,matchKnnFlannBasedAsync,matchKnnBruteForceAsync,matchKnnBruteForceL1Async,matchKnnBruteForceHammingAsync,matchKnnBruteForceHammingLut } = cv; export { matchBruteForceL1Async,matchBruteForceHammingAsync,matchBruteForceHammingLut,matchBruteForceSL2,matchBruteForceHammingLutAsync,matchBruteForceSL2Async,matchKnnFlannBased,matchKnnBruteForce,matchKnnBruteForceL1,matchKnnBruteForceHamming,matchKnnFlannBasedAsync,matchKnnBruteForceAsync,matchKnnBruteForceL1Async,matchKnnBruteForceHammingAsync,matchKnnBruteForceHammingLut }; -const { matchKnnBruteForceSL2,matchKnnBruteForceHammingLutAsync,matchKnnBruteForceSL2Async,AGASTDetector,AGASTDetectorType,AKAZEDetector,AKAZEDescriptorType,BRISKDetector,BFMatcher,FASTDetector,FASTDetectorType,GFTTDetector,KAZEDetector,KAZEDiffusivityType,MSERDetector } = defExport; +const { matchKnnBruteForceSL2,matchKnnBruteForceHammingLutAsync,matchKnnBruteForceSL2Async,AGASTDetector,AGASTDetectorType,AKAZEDetector,AKAZEDescriptorType,BRISKDetector,BFMatcher,FASTDetector,FASTDetectorType,GFTTDetector,KAZEDetector,KAZEDiffusivityType,MSERDetector } = cv; export { matchKnnBruteForceSL2,matchKnnBruteForceHammingLutAsync,matchKnnBruteForceSL2Async,AGASTDetector,AGASTDetectorType,AKAZEDetector,AKAZEDescriptorType,BRISKDetector,BFMatcher,FASTDetector,FASTDetectorType,GFTTDetector,KAZEDetector,KAZEDiffusivityType,MSERDetector }; -const { ORBDetector,ORBScoreType,SimpleBlobDetectorParams,SimpleBlobDetector,drawKeyPoints,drawMatches,MORPH_RECT,MORPH_CROSS,MORPH_ELLIPSE,MORPH_ERODE,MORPH_DILATE,MORPH_OPEN,MORPH_CLOSE,MORPH_GRADIENT,MORPH_TOPHAT } = defExport; +const { ORBDetector,ORBScoreType,SimpleBlobDetectorParams,SimpleBlobDetector,drawKeyPoints,drawMatches,MORPH_RECT,MORPH_CROSS,MORPH_ELLIPSE,MORPH_ERODE,MORPH_DILATE,MORPH_OPEN,MORPH_CLOSE,MORPH_GRADIENT,MORPH_TOPHAT } = cv; export { ORBDetector,ORBScoreType,SimpleBlobDetectorParams,SimpleBlobDetector,drawKeyPoints,drawMatches,MORPH_RECT,MORPH_CROSS,MORPH_ELLIPSE,MORPH_ERODE,MORPH_DILATE,MORPH_OPEN,MORPH_CLOSE,MORPH_GRADIENT,MORPH_TOPHAT }; -const { MORPH_BLACKHAT,MORPH_HITMISS,INTER_NEAREST,INTER_LINEAR,INTER_CUBIC,INTER_AREA,INTER_LANCZOS4,INTER_MAX,INTER_LINEAR_EXACT,WARP_FILL_OUTLIERS,WARP_INVERSE_MAP,THRESH_BINARY,THRESH_BINARY_INV,THRESH_TRUNC,THRESH_TOZERO } = defExport; +const { MORPH_BLACKHAT,MORPH_HITMISS,INTER_NEAREST,INTER_LINEAR,INTER_CUBIC,INTER_AREA,INTER_LANCZOS4,INTER_MAX,INTER_LINEAR_EXACT,WARP_FILL_OUTLIERS,WARP_INVERSE_MAP,THRESH_BINARY,THRESH_BINARY_INV,THRESH_TRUNC,THRESH_TOZERO } = cv; export { MORPH_BLACKHAT,MORPH_HITMISS,INTER_NEAREST,INTER_LINEAR,INTER_CUBIC,INTER_AREA,INTER_LANCZOS4,INTER_MAX,INTER_LINEAR_EXACT,WARP_FILL_OUTLIERS,WARP_INVERSE_MAP,THRESH_BINARY,THRESH_BINARY_INV,THRESH_TRUNC,THRESH_TOZERO }; -const { THRESH_TOZERO_INV,THRESH_MASK,THRESH_OTSU,THRESH_TRIANGLE,ADAPTIVE_THRESH_MEAN_C,ADAPTIVE_THRESH_GAUSSIAN_C,GC_BGD,GC_FGD,GC_PR_BGD,GC_PR_FGD,GC_INIT_WITH_RECT,GC_INIT_WITH_MASK,GC_EVAL,TM_SQDIFF,TM_SQDIFF_NORMED } = defExport; +const { THRESH_TOZERO_INV,THRESH_MASK,THRESH_OTSU,THRESH_TRIANGLE,ADAPTIVE_THRESH_MEAN_C,ADAPTIVE_THRESH_GAUSSIAN_C,GC_BGD,GC_FGD,GC_PR_BGD,GC_PR_FGD,GC_INIT_WITH_RECT,GC_INIT_WITH_MASK,GC_EVAL,TM_SQDIFF,TM_SQDIFF_NORMED } = cv; export { THRESH_TOZERO_INV,THRESH_MASK,THRESH_OTSU,THRESH_TRIANGLE,ADAPTIVE_THRESH_MEAN_C,ADAPTIVE_THRESH_GAUSSIAN_C,GC_BGD,GC_FGD,GC_PR_BGD,GC_PR_FGD,GC_INIT_WITH_RECT,GC_INIT_WITH_MASK,GC_EVAL,TM_SQDIFF,TM_SQDIFF_NORMED }; -const { TM_CCORR,TM_CCORR_NORMED,TM_CCOEFF,TM_CCOEFF_NORMED,DFT_INVERSE,DFT_SCALE,DFT_ROWS,DFT_COMPLEX_OUTPUT,DFT_REAL_OUTPUT,DCT_INVERSE,DCT_ROWS,HOUGH_STANDARD,HOUGH_PROBABILISTIC,HOUGH_MULTI_SCALE,HOUGH_GRADIENT } = defExport; +const { TM_CCORR,TM_CCORR_NORMED,TM_CCOEFF,TM_CCOEFF_NORMED,DFT_INVERSE,DFT_SCALE,DFT_ROWS,DFT_COMPLEX_OUTPUT,DFT_REAL_OUTPUT,DCT_INVERSE,DCT_ROWS,HOUGH_STANDARD,HOUGH_PROBABILISTIC,HOUGH_MULTI_SCALE,HOUGH_GRADIENT } = cv; export { TM_CCORR,TM_CCORR_NORMED,TM_CCOEFF,TM_CCOEFF_NORMED,DFT_INVERSE,DFT_SCALE,DFT_ROWS,DFT_COMPLEX_OUTPUT,DFT_REAL_OUTPUT,DCT_INVERSE,DCT_ROWS,HOUGH_STANDARD,HOUGH_PROBABILISTIC,HOUGH_MULTI_SCALE,HOUGH_GRADIENT }; -const { HISTCMP_CORREL,HISTCMP_CHISQR,HISTCMP_INTERSECT,HISTCMP_BHATTACHARYYA,HISTCMP_HELLINGER,HISTCMP_CHISQR_ALT,HISTCMP_KL_DIV,FLOODFILL_FIXED_RANGE,FLOODFILL_MASK_ONLY,COLOR_BGR2BGRA,COLOR_RGB2RGBA,COLOR_BGRA2BGR,COLOR_RGBA2RGB,COLOR_BGR2RGBA,COLOR_RGB2BGRA } = defExport; +const { HISTCMP_CORREL,HISTCMP_CHISQR,HISTCMP_INTERSECT,HISTCMP_BHATTACHARYYA,HISTCMP_HELLINGER,HISTCMP_CHISQR_ALT,HISTCMP_KL_DIV,FLOODFILL_FIXED_RANGE,FLOODFILL_MASK_ONLY,COLOR_BGR2BGRA,COLOR_RGB2RGBA,COLOR_BGRA2BGR,COLOR_RGBA2RGB,COLOR_BGR2RGBA,COLOR_RGB2BGRA } = cv; export { HISTCMP_CORREL,HISTCMP_CHISQR,HISTCMP_INTERSECT,HISTCMP_BHATTACHARYYA,HISTCMP_HELLINGER,HISTCMP_CHISQR_ALT,HISTCMP_KL_DIV,FLOODFILL_FIXED_RANGE,FLOODFILL_MASK_ONLY,COLOR_BGR2BGRA,COLOR_RGB2RGBA,COLOR_BGRA2BGR,COLOR_RGBA2RGB,COLOR_BGR2RGBA,COLOR_RGB2BGRA }; -const { COLOR_RGBA2BGR,COLOR_BGRA2RGB,COLOR_BGR2RGB,COLOR_RGB2BGR,COLOR_BGRA2RGBA,COLOR_RGBA2BGRA,COLOR_BGR2GRAY,COLOR_RGB2GRAY,COLOR_GRAY2BGR,COLOR_GRAY2RGB,COLOR_GRAY2BGRA,COLOR_GRAY2RGBA,COLOR_BGRA2GRAY,COLOR_RGBA2GRAY,COLOR_BGR2BGR565 } = defExport; +const { COLOR_RGBA2BGR,COLOR_BGRA2RGB,COLOR_BGR2RGB,COLOR_RGB2BGR,COLOR_BGRA2RGBA,COLOR_RGBA2BGRA,COLOR_BGR2GRAY,COLOR_RGB2GRAY,COLOR_GRAY2BGR,COLOR_GRAY2RGB,COLOR_GRAY2BGRA,COLOR_GRAY2RGBA,COLOR_BGRA2GRAY,COLOR_RGBA2GRAY,COLOR_BGR2BGR565 } = cv; export { COLOR_RGBA2BGR,COLOR_BGRA2RGB,COLOR_BGR2RGB,COLOR_RGB2BGR,COLOR_BGRA2RGBA,COLOR_RGBA2BGRA,COLOR_BGR2GRAY,COLOR_RGB2GRAY,COLOR_GRAY2BGR,COLOR_GRAY2RGB,COLOR_GRAY2BGRA,COLOR_GRAY2RGBA,COLOR_BGRA2GRAY,COLOR_RGBA2GRAY,COLOR_BGR2BGR565 }; -const { COLOR_RGB2BGR565,COLOR_BGR5652BGR,COLOR_BGR5652RGB,COLOR_BGRA2BGR565,COLOR_RGBA2BGR565,COLOR_BGR5652BGRA,COLOR_BGR5652RGBA,COLOR_GRAY2BGR565,COLOR_BGR5652GRAY,COLOR_BGR2BGR555,COLOR_RGB2BGR555,COLOR_BGR5552BGR,COLOR_BGR5552RGB,COLOR_BGRA2BGR555,COLOR_RGBA2BGR555 } = defExport; +const { COLOR_RGB2BGR565,COLOR_BGR5652BGR,COLOR_BGR5652RGB,COLOR_BGRA2BGR565,COLOR_RGBA2BGR565,COLOR_BGR5652BGRA,COLOR_BGR5652RGBA,COLOR_GRAY2BGR565,COLOR_BGR5652GRAY,COLOR_BGR2BGR555,COLOR_RGB2BGR555,COLOR_BGR5552BGR,COLOR_BGR5552RGB,COLOR_BGRA2BGR555,COLOR_RGBA2BGR555 } = cv; export { COLOR_RGB2BGR565,COLOR_BGR5652BGR,COLOR_BGR5652RGB,COLOR_BGRA2BGR565,COLOR_RGBA2BGR565,COLOR_BGR5652BGRA,COLOR_BGR5652RGBA,COLOR_GRAY2BGR565,COLOR_BGR5652GRAY,COLOR_BGR2BGR555,COLOR_RGB2BGR555,COLOR_BGR5552BGR,COLOR_BGR5552RGB,COLOR_BGRA2BGR555,COLOR_RGBA2BGR555 }; -const { COLOR_BGR5552BGRA,COLOR_BGR5552RGBA,COLOR_GRAY2BGR555,COLOR_BGR5552GRAY,COLOR_BGR2XYZ,COLOR_RGB2XYZ,COLOR_XYZ2BGR,COLOR_XYZ2RGB,COLOR_BGR2YCrCb,COLOR_RGB2YCrCb,COLOR_YCrCb2BGR,COLOR_YCrCb2RGB,COLOR_BGR2HSV,COLOR_RGB2HSV,COLOR_BGR2Lab } = defExport; +const { COLOR_BGR5552BGRA,COLOR_BGR5552RGBA,COLOR_GRAY2BGR555,COLOR_BGR5552GRAY,COLOR_BGR2XYZ,COLOR_RGB2XYZ,COLOR_XYZ2BGR,COLOR_XYZ2RGB,COLOR_BGR2YCrCb,COLOR_RGB2YCrCb,COLOR_YCrCb2BGR,COLOR_YCrCb2RGB,COLOR_BGR2HSV,COLOR_RGB2HSV,COLOR_BGR2Lab } = cv; export { COLOR_BGR5552BGRA,COLOR_BGR5552RGBA,COLOR_GRAY2BGR555,COLOR_BGR5552GRAY,COLOR_BGR2XYZ,COLOR_RGB2XYZ,COLOR_XYZ2BGR,COLOR_XYZ2RGB,COLOR_BGR2YCrCb,COLOR_RGB2YCrCb,COLOR_YCrCb2BGR,COLOR_YCrCb2RGB,COLOR_BGR2HSV,COLOR_RGB2HSV,COLOR_BGR2Lab }; -const { COLOR_RGB2Lab,COLOR_BGR2Luv,COLOR_RGB2Luv,COLOR_BGR2HLS,COLOR_RGB2HLS,COLOR_HSV2BGR,COLOR_HSV2RGB,COLOR_Lab2BGR,COLOR_Lab2RGB,COLOR_Luv2BGR,COLOR_Luv2RGB,COLOR_HLS2BGR,COLOR_HLS2RGB,COLOR_BGR2HSV_FULL,COLOR_RGB2HSV_FULL } = defExport; +const { COLOR_RGB2Lab,COLOR_BGR2Luv,COLOR_RGB2Luv,COLOR_BGR2HLS,COLOR_RGB2HLS,COLOR_HSV2BGR,COLOR_HSV2RGB,COLOR_Lab2BGR,COLOR_Lab2RGB,COLOR_Luv2BGR,COLOR_Luv2RGB,COLOR_HLS2BGR,COLOR_HLS2RGB,COLOR_BGR2HSV_FULL,COLOR_RGB2HSV_FULL } = cv; export { COLOR_RGB2Lab,COLOR_BGR2Luv,COLOR_RGB2Luv,COLOR_BGR2HLS,COLOR_RGB2HLS,COLOR_HSV2BGR,COLOR_HSV2RGB,COLOR_Lab2BGR,COLOR_Lab2RGB,COLOR_Luv2BGR,COLOR_Luv2RGB,COLOR_HLS2BGR,COLOR_HLS2RGB,COLOR_BGR2HSV_FULL,COLOR_RGB2HSV_FULL }; -const { COLOR_BGR2HLS_FULL,COLOR_RGB2HLS_FULL,COLOR_HSV2BGR_FULL,COLOR_HSV2RGB_FULL,COLOR_HLS2BGR_FULL,COLOR_HLS2RGB_FULL,COLOR_LBGR2Lab,COLOR_LRGB2Lab,COLOR_LBGR2Luv,COLOR_LRGB2Luv,COLOR_Lab2LBGR,COLOR_Lab2LRGB,COLOR_Luv2LBGR,COLOR_Luv2LRGB,COLOR_BGR2YUV } = defExport; +const { COLOR_BGR2HLS_FULL,COLOR_RGB2HLS_FULL,COLOR_HSV2BGR_FULL,COLOR_HSV2RGB_FULL,COLOR_HLS2BGR_FULL,COLOR_HLS2RGB_FULL,COLOR_LBGR2Lab,COLOR_LRGB2Lab,COLOR_LBGR2Luv,COLOR_LRGB2Luv,COLOR_Lab2LBGR,COLOR_Lab2LRGB,COLOR_Luv2LBGR,COLOR_Luv2LRGB,COLOR_BGR2YUV } = cv; export { COLOR_BGR2HLS_FULL,COLOR_RGB2HLS_FULL,COLOR_HSV2BGR_FULL,COLOR_HSV2RGB_FULL,COLOR_HLS2BGR_FULL,COLOR_HLS2RGB_FULL,COLOR_LBGR2Lab,COLOR_LRGB2Lab,COLOR_LBGR2Luv,COLOR_LRGB2Luv,COLOR_Lab2LBGR,COLOR_Lab2LRGB,COLOR_Luv2LBGR,COLOR_Luv2LRGB,COLOR_BGR2YUV }; -const { COLOR_RGB2YUV,COLOR_YUV2BGR,COLOR_YUV2RGB,COLOR_YUV2RGB_NV12,COLOR_YUV2BGR_NV12,COLOR_YUV2RGB_NV21,COLOR_YUV2BGR_NV21,COLOR_YUV420sp2RGB,COLOR_YUV420sp2BGR,COLOR_YUV2RGBA_NV12,COLOR_YUV2BGRA_NV12,COLOR_YUV2RGBA_NV21,COLOR_YUV2BGRA_NV21,COLOR_YUV420sp2RGBA,COLOR_YUV420sp2BGRA } = defExport; +const { COLOR_RGB2YUV,COLOR_YUV2BGR,COLOR_YUV2RGB,COLOR_YUV2RGB_NV12,COLOR_YUV2BGR_NV12,COLOR_YUV2RGB_NV21,COLOR_YUV2BGR_NV21,COLOR_YUV420sp2RGB,COLOR_YUV420sp2BGR,COLOR_YUV2RGBA_NV12,COLOR_YUV2BGRA_NV12,COLOR_YUV2RGBA_NV21,COLOR_YUV2BGRA_NV21,COLOR_YUV420sp2RGBA,COLOR_YUV420sp2BGRA } = cv; export { COLOR_RGB2YUV,COLOR_YUV2BGR,COLOR_YUV2RGB,COLOR_YUV2RGB_NV12,COLOR_YUV2BGR_NV12,COLOR_YUV2RGB_NV21,COLOR_YUV2BGR_NV21,COLOR_YUV420sp2RGB,COLOR_YUV420sp2BGR,COLOR_YUV2RGBA_NV12,COLOR_YUV2BGRA_NV12,COLOR_YUV2RGBA_NV21,COLOR_YUV2BGRA_NV21,COLOR_YUV420sp2RGBA,COLOR_YUV420sp2BGRA }; -const { COLOR_YUV2RGB_YV12,COLOR_YUV2BGR_YV12,COLOR_YUV2RGB_IYUV,COLOR_YUV2BGR_IYUV,COLOR_YUV2RGB_I420,COLOR_YUV2BGR_I420,COLOR_YUV420p2RGB,COLOR_YUV420p2BGR,COLOR_YUV2RGBA_YV12,COLOR_YUV2BGRA_YV12,COLOR_YUV2RGBA_IYUV,COLOR_YUV2BGRA_IYUV,COLOR_YUV2RGBA_I420,COLOR_YUV2BGRA_I420,COLOR_YUV420p2RGBA } = defExport; +const { COLOR_YUV2RGB_YV12,COLOR_YUV2BGR_YV12,COLOR_YUV2RGB_IYUV,COLOR_YUV2BGR_IYUV,COLOR_YUV2RGB_I420,COLOR_YUV2BGR_I420,COLOR_YUV420p2RGB,COLOR_YUV420p2BGR,COLOR_YUV2RGBA_YV12,COLOR_YUV2BGRA_YV12,COLOR_YUV2RGBA_IYUV,COLOR_YUV2BGRA_IYUV,COLOR_YUV2RGBA_I420,COLOR_YUV2BGRA_I420,COLOR_YUV420p2RGBA } = cv; export { COLOR_YUV2RGB_YV12,COLOR_YUV2BGR_YV12,COLOR_YUV2RGB_IYUV,COLOR_YUV2BGR_IYUV,COLOR_YUV2RGB_I420,COLOR_YUV2BGR_I420,COLOR_YUV420p2RGB,COLOR_YUV420p2BGR,COLOR_YUV2RGBA_YV12,COLOR_YUV2BGRA_YV12,COLOR_YUV2RGBA_IYUV,COLOR_YUV2BGRA_IYUV,COLOR_YUV2RGBA_I420,COLOR_YUV2BGRA_I420,COLOR_YUV420p2RGBA }; -const { COLOR_YUV420p2BGRA,COLOR_YUV2GRAY_420,COLOR_YUV2GRAY_NV21,COLOR_YUV2GRAY_NV12,COLOR_YUV2GRAY_YV12,COLOR_YUV2GRAY_IYUV,COLOR_YUV2GRAY_I420,COLOR_YUV420sp2GRAY,COLOR_YUV420p2GRAY,COLOR_YUV2RGB_UYVY,COLOR_YUV2BGR_UYVY,COLOR_YUV2RGB_Y422,COLOR_YUV2BGR_Y422,COLOR_YUV2RGB_UYNV,COLOR_YUV2BGR_UYNV } = defExport; +const { COLOR_YUV420p2BGRA,COLOR_YUV2GRAY_420,COLOR_YUV2GRAY_NV21,COLOR_YUV2GRAY_NV12,COLOR_YUV2GRAY_YV12,COLOR_YUV2GRAY_IYUV,COLOR_YUV2GRAY_I420,COLOR_YUV420sp2GRAY,COLOR_YUV420p2GRAY,COLOR_YUV2RGB_UYVY,COLOR_YUV2BGR_UYVY,COLOR_YUV2RGB_Y422,COLOR_YUV2BGR_Y422,COLOR_YUV2RGB_UYNV,COLOR_YUV2BGR_UYNV } = cv; export { COLOR_YUV420p2BGRA,COLOR_YUV2GRAY_420,COLOR_YUV2GRAY_NV21,COLOR_YUV2GRAY_NV12,COLOR_YUV2GRAY_YV12,COLOR_YUV2GRAY_IYUV,COLOR_YUV2GRAY_I420,COLOR_YUV420sp2GRAY,COLOR_YUV420p2GRAY,COLOR_YUV2RGB_UYVY,COLOR_YUV2BGR_UYVY,COLOR_YUV2RGB_Y422,COLOR_YUV2BGR_Y422,COLOR_YUV2RGB_UYNV,COLOR_YUV2BGR_UYNV }; -const { COLOR_YUV2RGBA_UYVY,COLOR_YUV2BGRA_UYVY,COLOR_YUV2RGBA_Y422,COLOR_YUV2BGRA_Y422,COLOR_YUV2RGBA_UYNV,COLOR_YUV2BGRA_UYNV,COLOR_YUV2RGB_YUY2,COLOR_YUV2BGR_YUY2,COLOR_YUV2RGB_YVYU,COLOR_YUV2BGR_YVYU,COLOR_YUV2RGB_YUYV,COLOR_YUV2BGR_YUYV,COLOR_YUV2RGB_YUNV,COLOR_YUV2BGR_YUNV,COLOR_YUV2RGBA_YUY2 } = defExport; +const { COLOR_YUV2RGBA_UYVY,COLOR_YUV2BGRA_UYVY,COLOR_YUV2RGBA_Y422,COLOR_YUV2BGRA_Y422,COLOR_YUV2RGBA_UYNV,COLOR_YUV2BGRA_UYNV,COLOR_YUV2RGB_YUY2,COLOR_YUV2BGR_YUY2,COLOR_YUV2RGB_YVYU,COLOR_YUV2BGR_YVYU,COLOR_YUV2RGB_YUYV,COLOR_YUV2BGR_YUYV,COLOR_YUV2RGB_YUNV,COLOR_YUV2BGR_YUNV,COLOR_YUV2RGBA_YUY2 } = cv; export { COLOR_YUV2RGBA_UYVY,COLOR_YUV2BGRA_UYVY,COLOR_YUV2RGBA_Y422,COLOR_YUV2BGRA_Y422,COLOR_YUV2RGBA_UYNV,COLOR_YUV2BGRA_UYNV,COLOR_YUV2RGB_YUY2,COLOR_YUV2BGR_YUY2,COLOR_YUV2RGB_YVYU,COLOR_YUV2BGR_YVYU,COLOR_YUV2RGB_YUYV,COLOR_YUV2BGR_YUYV,COLOR_YUV2RGB_YUNV,COLOR_YUV2BGR_YUNV,COLOR_YUV2RGBA_YUY2 }; -const { COLOR_YUV2BGRA_YUY2,COLOR_YUV2RGBA_YVYU,COLOR_YUV2BGRA_YVYU,COLOR_YUV2RGBA_YUYV,COLOR_YUV2BGRA_YUYV,COLOR_YUV2RGBA_YUNV,COLOR_YUV2BGRA_YUNV,COLOR_YUV2GRAY_UYVY,COLOR_YUV2GRAY_YUY2,COLOR_YUV2GRAY_Y422,COLOR_YUV2GRAY_UYNV,COLOR_YUV2GRAY_YVYU,COLOR_YUV2GRAY_YUYV,COLOR_YUV2GRAY_YUNV,COLOR_RGBA2mRGBA } = defExport; +const { COLOR_YUV2BGRA_YUY2,COLOR_YUV2RGBA_YVYU,COLOR_YUV2BGRA_YVYU,COLOR_YUV2RGBA_YUYV,COLOR_YUV2BGRA_YUYV,COLOR_YUV2RGBA_YUNV,COLOR_YUV2BGRA_YUNV,COLOR_YUV2GRAY_UYVY,COLOR_YUV2GRAY_YUY2,COLOR_YUV2GRAY_Y422,COLOR_YUV2GRAY_UYNV,COLOR_YUV2GRAY_YVYU,COLOR_YUV2GRAY_YUYV,COLOR_YUV2GRAY_YUNV,COLOR_RGBA2mRGBA } = cv; export { COLOR_YUV2BGRA_YUY2,COLOR_YUV2RGBA_YVYU,COLOR_YUV2BGRA_YVYU,COLOR_YUV2RGBA_YUYV,COLOR_YUV2BGRA_YUYV,COLOR_YUV2RGBA_YUNV,COLOR_YUV2BGRA_YUNV,COLOR_YUV2GRAY_UYVY,COLOR_YUV2GRAY_YUY2,COLOR_YUV2GRAY_Y422,COLOR_YUV2GRAY_UYNV,COLOR_YUV2GRAY_YVYU,COLOR_YUV2GRAY_YUYV,COLOR_YUV2GRAY_YUNV,COLOR_RGBA2mRGBA }; -const { COLOR_mRGBA2RGBA,COLOR_RGB2YUV_I420,COLOR_BGR2YUV_I420,COLOR_RGB2YUV_IYUV,COLOR_BGR2YUV_IYUV,COLOR_RGBA2YUV_I420,COLOR_BGRA2YUV_I420,COLOR_RGBA2YUV_IYUV,COLOR_BGRA2YUV_IYUV,COLOR_RGB2YUV_YV12,COLOR_BGR2YUV_YV12,COLOR_RGBA2YUV_YV12,COLOR_BGRA2YUV_YV12,COLOR_BayerBG2BGR,COLOR_BayerGB2BGR } = defExport; +const { COLOR_mRGBA2RGBA,COLOR_RGB2YUV_I420,COLOR_BGR2YUV_I420,COLOR_RGB2YUV_IYUV,COLOR_BGR2YUV_IYUV,COLOR_RGBA2YUV_I420,COLOR_BGRA2YUV_I420,COLOR_RGBA2YUV_IYUV,COLOR_BGRA2YUV_IYUV,COLOR_RGB2YUV_YV12,COLOR_BGR2YUV_YV12,COLOR_RGBA2YUV_YV12,COLOR_BGRA2YUV_YV12,COLOR_BayerBG2BGR,COLOR_BayerGB2BGR } = cv; export { COLOR_mRGBA2RGBA,COLOR_RGB2YUV_I420,COLOR_BGR2YUV_I420,COLOR_RGB2YUV_IYUV,COLOR_BGR2YUV_IYUV,COLOR_RGBA2YUV_I420,COLOR_BGRA2YUV_I420,COLOR_RGBA2YUV_IYUV,COLOR_BGRA2YUV_IYUV,COLOR_RGB2YUV_YV12,COLOR_BGR2YUV_YV12,COLOR_RGBA2YUV_YV12,COLOR_BGRA2YUV_YV12,COLOR_BayerBG2BGR,COLOR_BayerGB2BGR }; -const { COLOR_BayerRG2BGR,COLOR_BayerGR2BGR,COLOR_BayerBG2RGB,COLOR_BayerGB2RGB,COLOR_BayerRG2RGB,COLOR_BayerGR2RGB,COLOR_BayerBG2GRAY,COLOR_BayerGB2GRAY,COLOR_BayerRG2GRAY,COLOR_BayerGR2GRAY,COLOR_BayerBG2BGR_VNG,COLOR_BayerGB2BGR_VNG,COLOR_BayerRG2BGR_VNG,COLOR_BayerGR2BGR_VNG,COLOR_BayerBG2RGB_VNG } = defExport; +const { COLOR_BayerRG2BGR,COLOR_BayerGR2BGR,COLOR_BayerBG2RGB,COLOR_BayerGB2RGB,COLOR_BayerRG2RGB,COLOR_BayerGR2RGB,COLOR_BayerBG2GRAY,COLOR_BayerGB2GRAY,COLOR_BayerRG2GRAY,COLOR_BayerGR2GRAY,COLOR_BayerBG2BGR_VNG,COLOR_BayerGB2BGR_VNG,COLOR_BayerRG2BGR_VNG,COLOR_BayerGR2BGR_VNG,COLOR_BayerBG2RGB_VNG } = cv; export { COLOR_BayerRG2BGR,COLOR_BayerGR2BGR,COLOR_BayerBG2RGB,COLOR_BayerGB2RGB,COLOR_BayerRG2RGB,COLOR_BayerGR2RGB,COLOR_BayerBG2GRAY,COLOR_BayerGB2GRAY,COLOR_BayerRG2GRAY,COLOR_BayerGR2GRAY,COLOR_BayerBG2BGR_VNG,COLOR_BayerGB2BGR_VNG,COLOR_BayerRG2BGR_VNG,COLOR_BayerGR2BGR_VNG,COLOR_BayerBG2RGB_VNG }; -const { COLOR_BayerGB2RGB_VNG,COLOR_BayerRG2RGB_VNG,COLOR_BayerGR2RGB_VNG,COLOR_BayerBG2BGR_EA,COLOR_BayerGB2BGR_EA,COLOR_BayerRG2BGR_EA,COLOR_BayerGR2BGR_EA,COLOR_BayerBG2RGB_EA,COLOR_BayerGB2RGB_EA,COLOR_BayerRG2RGB_EA,COLOR_BayerGR2RGB_EA,COLOR_COLORCVT_MAX,CC_STAT_LEFT,CC_STAT_TOP,CC_STAT_WIDTH } = defExport; +const { COLOR_BayerGB2RGB_VNG,COLOR_BayerRG2RGB_VNG,COLOR_BayerGR2RGB_VNG,COLOR_BayerBG2BGR_EA,COLOR_BayerGB2BGR_EA,COLOR_BayerRG2BGR_EA,COLOR_BayerGR2BGR_EA,COLOR_BayerBG2RGB_EA,COLOR_BayerGB2RGB_EA,COLOR_BayerRG2RGB_EA,COLOR_BayerGR2RGB_EA,COLOR_COLORCVT_MAX,CC_STAT_LEFT,CC_STAT_TOP,CC_STAT_WIDTH } = cv; export { COLOR_BayerGB2RGB_VNG,COLOR_BayerRG2RGB_VNG,COLOR_BayerGR2RGB_VNG,COLOR_BayerBG2BGR_EA,COLOR_BayerGB2BGR_EA,COLOR_BayerRG2BGR_EA,COLOR_BayerGR2BGR_EA,COLOR_BayerBG2RGB_EA,COLOR_BayerGB2RGB_EA,COLOR_BayerRG2RGB_EA,COLOR_BayerGR2RGB_EA,COLOR_COLORCVT_MAX,CC_STAT_LEFT,CC_STAT_TOP,CC_STAT_WIDTH }; -const { CC_STAT_HEIGHT,CC_STAT_AREA,CC_STAT_MAX,CHAIN_APPROX_NONE,CHAIN_APPROX_SIMPLE,CHAIN_APPROX_TC89_L1,CHAIN_APPROX_TC89_KCOS,DIST_USER,DIST_L1,DIST_L2,DIST_C,DIST_L12,DIST_FAIR,DIST_WELSCH,DIST_HUBER } = defExport; +const { CC_STAT_HEIGHT,CC_STAT_AREA,CC_STAT_MAX,CHAIN_APPROX_NONE,CHAIN_APPROX_SIMPLE,CHAIN_APPROX_TC89_L1,CHAIN_APPROX_TC89_KCOS,DIST_USER,DIST_L1,DIST_L2,DIST_C,DIST_L12,DIST_FAIR,DIST_WELSCH,DIST_HUBER } = cv; export { CC_STAT_HEIGHT,CC_STAT_AREA,CC_STAT_MAX,CHAIN_APPROX_NONE,CHAIN_APPROX_SIMPLE,CHAIN_APPROX_TC89_L1,CHAIN_APPROX_TC89_KCOS,DIST_USER,DIST_L1,DIST_L2,DIST_C,DIST_L12,DIST_FAIR,DIST_WELSCH,DIST_HUBER }; -const { DIST_MASK_3,DIST_MASK_5,DIST_MASK_PRECISE,DIST_LABEL_CCOMP,DIST_LABEL_PIXEL,RETR_EXTERNAL,RETR_LIST,RETR_CCOMP,RETR_TREE,RETR_FLOODFILL,CONTOURS_MATCH_I1,CONTOURS_MATCH_I2,CONTOURS_MATCH_I3,FONT_HERSHEY_SIMPLEX,FONT_HERSHEY_PLAIN } = defExport; +const { DIST_MASK_3,DIST_MASK_5,DIST_MASK_PRECISE,DIST_LABEL_CCOMP,DIST_LABEL_PIXEL,RETR_EXTERNAL,RETR_LIST,RETR_CCOMP,RETR_TREE,RETR_FLOODFILL,CONTOURS_MATCH_I1,CONTOURS_MATCH_I2,CONTOURS_MATCH_I3,FONT_HERSHEY_SIMPLEX,FONT_HERSHEY_PLAIN } = cv; export { DIST_MASK_3,DIST_MASK_5,DIST_MASK_PRECISE,DIST_LABEL_CCOMP,DIST_LABEL_PIXEL,RETR_EXTERNAL,RETR_LIST,RETR_CCOMP,RETR_TREE,RETR_FLOODFILL,CONTOURS_MATCH_I1,CONTOURS_MATCH_I2,CONTOURS_MATCH_I3,FONT_HERSHEY_SIMPLEX,FONT_HERSHEY_PLAIN }; -const { FONT_HERSHEY_DUPLEX,FONT_HERSHEY_COMPLEX,FONT_HERSHEY_TRIPLEX,FONT_HERSHEY_COMPLEX_SMALL,FONT_HERSHEY_SCRIPT_SIMPLEX,FONT_HERSHEY_SCRIPT_COMPLEX,FONT_ITALIC,FILLED,LINE_4,LINE_8,LINE_AA,COLORMAP_AUTUMN,COLORMAP_BONE,COLORMAP_JET,COLORMAP_WINTER } = defExport; +const { FONT_HERSHEY_DUPLEX,FONT_HERSHEY_COMPLEX,FONT_HERSHEY_TRIPLEX,FONT_HERSHEY_COMPLEX_SMALL,FONT_HERSHEY_SCRIPT_SIMPLEX,FONT_HERSHEY_SCRIPT_COMPLEX,FONT_ITALIC,FILLED,LINE_4,LINE_8,LINE_AA,COLORMAP_AUTUMN,COLORMAP_BONE,COLORMAP_JET,COLORMAP_WINTER } = cv; export { FONT_HERSHEY_DUPLEX,FONT_HERSHEY_COMPLEX,FONT_HERSHEY_TRIPLEX,FONT_HERSHEY_COMPLEX_SMALL,FONT_HERSHEY_SCRIPT_SIMPLEX,FONT_HERSHEY_SCRIPT_COMPLEX,FONT_ITALIC,FILLED,LINE_4,LINE_8,LINE_AA,COLORMAP_AUTUMN,COLORMAP_BONE,COLORMAP_JET,COLORMAP_WINTER }; -const { COLORMAP_RAINBOW,COLORMAP_OCEAN,COLORMAP_SUMMER,COLORMAP_SPRING,COLORMAP_COOL,COLORMAP_HSV,COLORMAP_PINK,COLORMAP_HOT,COLORMAP_PARULA,getStructuringElement,getRotationMatrix2D,plot1DHist,fitLine,getAffineTransform,getPerspectiveTransform } = defExport; +const { COLORMAP_RAINBOW,COLORMAP_OCEAN,COLORMAP_SUMMER,COLORMAP_SPRING,COLORMAP_COOL,COLORMAP_HSV,COLORMAP_PINK,COLORMAP_HOT,COLORMAP_PARULA,getStructuringElement,getRotationMatrix2D,plot1DHist,fitLine,getAffineTransform,getPerspectiveTransform } = cv; export { COLORMAP_RAINBOW,COLORMAP_OCEAN,COLORMAP_SUMMER,COLORMAP_SPRING,COLORMAP_COOL,COLORMAP_HSV,COLORMAP_PINK,COLORMAP_HOT,COLORMAP_PARULA,getStructuringElement,getRotationMatrix2D,plot1DHist,fitLine,getAffineTransform,getPerspectiveTransform }; -const { getTextSize,getTextSizeAsync,applyColorMap,applyColorMapAsync,canny,cannyAsync,goodFeaturesToTrack,goodFeaturesToTrackAsync,blur,blurAsync,gaussianBlur,gaussianBlurAsync,medianBlur,medianBlurAsync,accumulate } = defExport; +const { getTextSize,getTextSizeAsync,applyColorMap,applyColorMapAsync,canny,cannyAsync,goodFeaturesToTrack,goodFeaturesToTrackAsync,blur,blurAsync,gaussianBlur,gaussianBlurAsync,medianBlur,medianBlurAsync,accumulate } = cv; export { getTextSize,getTextSizeAsync,applyColorMap,applyColorMapAsync,canny,cannyAsync,goodFeaturesToTrack,goodFeaturesToTrackAsync,blur,blurAsync,gaussianBlur,gaussianBlurAsync,medianBlur,medianBlurAsync,accumulate }; -const { accumulateAsync,accumulateProduct,accumulateProductAsync,accumulateSquare,accumulateSquareAsync,accumulateWeighted,accumulateWeightedAsync,calcHist,calcHistAsync,Moments,Contour,CAP_PROP_POS_MSEC,CAP_PROP_POS_FRAMES,CAP_PROP_POS_AVI_RATIO,CAP_PROP_FRAME_WIDTH } = defExport; +const { accumulateAsync,accumulateProduct,accumulateProductAsync,accumulateSquare,accumulateSquareAsync,accumulateWeighted,accumulateWeightedAsync,calcHist,calcHistAsync,Moments,Contour,CAP_PROP_POS_MSEC,CAP_PROP_POS_FRAMES,CAP_PROP_POS_AVI_RATIO,CAP_PROP_FRAME_WIDTH } = cv; export { accumulateAsync,accumulateProduct,accumulateProductAsync,accumulateSquare,accumulateSquareAsync,accumulateWeighted,accumulateWeightedAsync,calcHist,calcHistAsync,Moments,Contour,CAP_PROP_POS_MSEC,CAP_PROP_POS_FRAMES,CAP_PROP_POS_AVI_RATIO,CAP_PROP_FRAME_WIDTH }; -const { CAP_PROP_FRAME_HEIGHT,CAP_PROP_FPS,CAP_PROP_FOURCC,CAP_PROP_FRAME_COUNT,CAP_PROP_FORMAT,CAP_PROP_MODE,CAP_PROP_BRIGHTNESS,CAP_PROP_CONTRAST,CAP_PROP_SATURATION,CAP_PROP_HUE,CAP_PROP_GAIN,CAP_PROP_EXPOSURE,CAP_PROP_CONVERT_RGB,CAP_PROP_WHITE_BALANCE_BLUE_U,CAP_PROP_RECTIFICATION } = defExport; +const { CAP_PROP_FRAME_HEIGHT,CAP_PROP_FPS,CAP_PROP_FOURCC,CAP_PROP_FRAME_COUNT,CAP_PROP_FORMAT,CAP_PROP_MODE,CAP_PROP_BRIGHTNESS,CAP_PROP_CONTRAST,CAP_PROP_SATURATION,CAP_PROP_HUE,CAP_PROP_GAIN,CAP_PROP_EXPOSURE,CAP_PROP_CONVERT_RGB,CAP_PROP_WHITE_BALANCE_BLUE_U,CAP_PROP_RECTIFICATION } = cv; export { CAP_PROP_FRAME_HEIGHT,CAP_PROP_FPS,CAP_PROP_FOURCC,CAP_PROP_FRAME_COUNT,CAP_PROP_FORMAT,CAP_PROP_MODE,CAP_PROP_BRIGHTNESS,CAP_PROP_CONTRAST,CAP_PROP_SATURATION,CAP_PROP_HUE,CAP_PROP_GAIN,CAP_PROP_EXPOSURE,CAP_PROP_CONVERT_RGB,CAP_PROP_WHITE_BALANCE_BLUE_U,CAP_PROP_RECTIFICATION }; -const { CAP_PROP_MONOCHROME,CAP_PROP_SHARPNESS,CAP_PROP_AUTO_EXPOSURE,CAP_PROP_GAMMA,CAP_PROP_TEMPERATURE,CAP_PROP_TRIGGER,CAP_PROP_TRIGGER_DELAY,CAP_PROP_WHITE_BALANCE_RED_V,CAP_PROP_ZOOM,CAP_PROP_FOCUS,CAP_PROP_GUID,CAP_PROP_ISO_SPEED,CAP_PROP_BACKLIGHT,CAP_PROP_PAN,CAP_PROP_TILT } = defExport; +const { CAP_PROP_MONOCHROME,CAP_PROP_SHARPNESS,CAP_PROP_AUTO_EXPOSURE,CAP_PROP_GAMMA,CAP_PROP_TEMPERATURE,CAP_PROP_TRIGGER,CAP_PROP_TRIGGER_DELAY,CAP_PROP_WHITE_BALANCE_RED_V,CAP_PROP_ZOOM,CAP_PROP_FOCUS,CAP_PROP_GUID,CAP_PROP_ISO_SPEED,CAP_PROP_BACKLIGHT,CAP_PROP_PAN,CAP_PROP_TILT } = cv; export { CAP_PROP_MONOCHROME,CAP_PROP_SHARPNESS,CAP_PROP_AUTO_EXPOSURE,CAP_PROP_GAMMA,CAP_PROP_TEMPERATURE,CAP_PROP_TRIGGER,CAP_PROP_TRIGGER_DELAY,CAP_PROP_WHITE_BALANCE_RED_V,CAP_PROP_ZOOM,CAP_PROP_FOCUS,CAP_PROP_GUID,CAP_PROP_ISO_SPEED,CAP_PROP_BACKLIGHT,CAP_PROP_PAN,CAP_PROP_TILT }; -const { CAP_PROP_ROLL,CAP_PROP_IRIS,CAP_PROP_SETTINGS,CAP_PROP_BUFFERSIZE,CAP_PROP_AUTOFOCUS,CAP_ANY,CAP_VFW,CAP_V4L,CAP_V4L2,CAP_FIREWIRE,CAP_IEEE1394,CAP_DC1394,CAP_CMU1394,CAP_QT,CAP_UNICAP } = defExport; +const { CAP_PROP_ROLL,CAP_PROP_IRIS,CAP_PROP_SETTINGS,CAP_PROP_BUFFERSIZE,CAP_PROP_AUTOFOCUS,CAP_ANY,CAP_VFW,CAP_V4L,CAP_V4L2,CAP_FIREWIRE,CAP_IEEE1394,CAP_DC1394,CAP_CMU1394,CAP_QT,CAP_UNICAP } = cv; export { CAP_PROP_ROLL,CAP_PROP_IRIS,CAP_PROP_SETTINGS,CAP_PROP_BUFFERSIZE,CAP_PROP_AUTOFOCUS,CAP_ANY,CAP_VFW,CAP_V4L,CAP_V4L2,CAP_FIREWIRE,CAP_IEEE1394,CAP_DC1394,CAP_CMU1394,CAP_QT,CAP_UNICAP }; -const { CAP_DSHOW,CAP_PVAPI,CAP_OPENNI,CAP_OPENNI_ASUS,CAP_ANDROID,CAP_XIAPI,CAP_AVFOUNDATION,CAP_GIGANETIX,CAP_MSMF,CAP_WINRT,CAP_INTELPERC,CAP_OPENNI2,CAP_OPENNI2_ASUS,CAP_GPHOTO2,CAP_GSTREAMER } = defExport; +const { CAP_DSHOW,CAP_PVAPI,CAP_OPENNI,CAP_OPENNI_ASUS,CAP_ANDROID,CAP_XIAPI,CAP_AVFOUNDATION,CAP_GIGANETIX,CAP_MSMF,CAP_WINRT,CAP_INTELPERC,CAP_OPENNI2,CAP_OPENNI2_ASUS,CAP_GPHOTO2,CAP_GSTREAMER } = cv; export { CAP_DSHOW,CAP_PVAPI,CAP_OPENNI,CAP_OPENNI_ASUS,CAP_ANDROID,CAP_XIAPI,CAP_AVFOUNDATION,CAP_GIGANETIX,CAP_MSMF,CAP_WINRT,CAP_INTELPERC,CAP_OPENNI2,CAP_OPENNI2_ASUS,CAP_GPHOTO2,CAP_GSTREAMER }; -const { CAP_FFMPEG,CAP_IMAGES,CAP_ARAVIS,VIDEOWRITER_PROP_QUALITY,VIDEOWRITER_PROP_FRAMEBYTES,VIDEOWRITER_PROP_NSTRIPES,VideoCapture,VideoWriter,imread,imshow,imshowWait,imwrite,waitKey,waitKeyEx,imencode } = defExport; +const { CAP_FFMPEG,CAP_IMAGES,CAP_ARAVIS,VIDEOWRITER_PROP_QUALITY,VIDEOWRITER_PROP_FRAMEBYTES,VIDEOWRITER_PROP_NSTRIPES,VideoCapture,VideoWriter,imread,imshow,imshowWait,imwrite,waitKey,waitKeyEx,imencode } = cv; export { CAP_FFMPEG,CAP_IMAGES,CAP_ARAVIS,VIDEOWRITER_PROP_QUALITY,VIDEOWRITER_PROP_FRAMEBYTES,VIDEOWRITER_PROP_NSTRIPES,VideoCapture,VideoWriter,imread,imshow,imshowWait,imwrite,waitKey,waitKeyEx,imencode }; -const { imdecode,destroyWindow,destroyAllWindows,imreadAsync,imwriteAsync,imencodeAsync,imdecodeAsync,IMREAD_UNCHANGED,IMREAD_GRAYSCALE,IMREAD_COLOR,IMREAD_ANYDEPTH,IMREAD_ANYCOLOR,IMREAD_LOAD_GDAL,IMWRITE_JPEG_QUALITY,IMWRITE_JPEG_PROGRESSIVE } = defExport; +const { imdecode,destroyWindow,destroyAllWindows,imreadAsync,imwriteAsync,imencodeAsync,imdecodeAsync,IMREAD_UNCHANGED,IMREAD_GRAYSCALE,IMREAD_COLOR,IMREAD_ANYDEPTH,IMREAD_ANYCOLOR,IMREAD_LOAD_GDAL,IMWRITE_JPEG_QUALITY,IMWRITE_JPEG_PROGRESSIVE } = cv; export { imdecode,destroyWindow,destroyAllWindows,imreadAsync,imwriteAsync,imencodeAsync,imdecodeAsync,IMREAD_UNCHANGED,IMREAD_GRAYSCALE,IMREAD_COLOR,IMREAD_ANYDEPTH,IMREAD_ANYCOLOR,IMREAD_LOAD_GDAL,IMWRITE_JPEG_QUALITY,IMWRITE_JPEG_PROGRESSIVE }; -const { IMWRITE_JPEG_OPTIMIZE,IMWRITE_JPEG_RST_INTERVAL,IMWRITE_JPEG_LUMA_QUALITY,IMWRITE_JPEG_CHROMA_QUALITY,IMWRITE_PNG_COMPRESSION,IMWRITE_PNG_STRATEGY,IMWRITE_PNG_BILEVEL,IMWRITE_PXM_BINARY,IMWRITE_WEBP_QUALITY,IMREAD_REDUCED_GRAYSCALE_2,IMREAD_REDUCED_COLOR_2,IMREAD_REDUCED_GRAYSCALE_4,IMREAD_REDUCED_COLOR_4,IMREAD_REDUCED_GRAYSCALE_8,IMREAD_REDUCED_COLOR_8 } = defExport; +const { IMWRITE_JPEG_OPTIMIZE,IMWRITE_JPEG_RST_INTERVAL,IMWRITE_JPEG_LUMA_QUALITY,IMWRITE_JPEG_CHROMA_QUALITY,IMWRITE_PNG_COMPRESSION,IMWRITE_PNG_STRATEGY,IMWRITE_PNG_BILEVEL,IMWRITE_PXM_BINARY,IMWRITE_WEBP_QUALITY,IMREAD_REDUCED_GRAYSCALE_2,IMREAD_REDUCED_COLOR_2,IMREAD_REDUCED_GRAYSCALE_4,IMREAD_REDUCED_COLOR_4,IMREAD_REDUCED_GRAYSCALE_8,IMREAD_REDUCED_COLOR_8 } = cv; export { IMWRITE_JPEG_OPTIMIZE,IMWRITE_JPEG_RST_INTERVAL,IMWRITE_JPEG_LUMA_QUALITY,IMWRITE_JPEG_CHROMA_QUALITY,IMWRITE_PNG_COMPRESSION,IMWRITE_PNG_STRATEGY,IMWRITE_PNG_BILEVEL,IMWRITE_PXM_BINARY,IMWRITE_WEBP_QUALITY,IMREAD_REDUCED_GRAYSCALE_2,IMREAD_REDUCED_COLOR_2,IMREAD_REDUCED_GRAYSCALE_4,IMREAD_REDUCED_COLOR_4,IMREAD_REDUCED_GRAYSCALE_8,IMREAD_REDUCED_COLOR_8 }; -const { IMREAD_IGNORE_ORIENTATION,IMWRITE_PAM_TUPLETYPE,IMWRITE_PAM_FORMAT_NULL,IMWRITE_PAM_FORMAT_BLACKANDWHITE,IMWRITE_PAM_FORMAT_GRAYSCALE,IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA,IMWRITE_PAM_FORMAT_RGB,IMWRITE_PAM_FORMAT_RGB_ALPHA,IMWRITE_PNG_STRATEGY_DEFAULT,IMWRITE_PNG_STRATEGY_FILTERED,IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY,IMWRITE_PNG_STRATEGY_RLE,IMWRITE_PNG_STRATEGY_FIXED,ml,statModel } = defExport; +const { IMREAD_IGNORE_ORIENTATION,IMWRITE_PAM_TUPLETYPE,IMWRITE_PAM_FORMAT_NULL,IMWRITE_PAM_FORMAT_BLACKANDWHITE,IMWRITE_PAM_FORMAT_GRAYSCALE,IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA,IMWRITE_PAM_FORMAT_RGB,IMWRITE_PAM_FORMAT_RGB_ALPHA,IMWRITE_PNG_STRATEGY_DEFAULT,IMWRITE_PNG_STRATEGY_FILTERED,IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY,IMWRITE_PNG_STRATEGY_RLE,IMWRITE_PNG_STRATEGY_FIXED,ml,statModel } = cv; export { IMREAD_IGNORE_ORIENTATION,IMWRITE_PAM_TUPLETYPE,IMWRITE_PAM_FORMAT_NULL,IMWRITE_PAM_FORMAT_BLACKANDWHITE,IMWRITE_PAM_FORMAT_GRAYSCALE,IMWRITE_PAM_FORMAT_GRAYSCALE_ALPHA,IMWRITE_PAM_FORMAT_RGB,IMWRITE_PAM_FORMAT_RGB_ALPHA,IMWRITE_PNG_STRATEGY_DEFAULT,IMWRITE_PNG_STRATEGY_FILTERED,IMWRITE_PNG_STRATEGY_HUFFMAN_ONLY,IMWRITE_PNG_STRATEGY_RLE,IMWRITE_PNG_STRATEGY_FIXED,ml,statModel }; -const { TrainData,ParamGrid,StatModel,SVM,CascadeClassifier,HOGDescriptor,HOGHistogramNormType,DetectionROI,INPAINT_NS,INPAINT_TELEA,NORMAL_CLONE,MIXED_CLONE,MONOCHROME_TRANSFER,fastNlMeansDenoisingColored,fastNlMeansDenoisingColoredAsync } = defExport; +const { TrainData,ParamGrid,StatModel,SVM,CascadeClassifier,HOGDescriptor,HOGHistogramNormType,DetectionROI,INPAINT_NS,INPAINT_TELEA,NORMAL_CLONE,MIXED_CLONE,MONOCHROME_TRANSFER,fastNlMeansDenoisingColored,fastNlMeansDenoisingColoredAsync } = cv; export { TrainData,ParamGrid,StatModel,SVM,CascadeClassifier,HOGDescriptor,HOGHistogramNormType,DetectionROI,INPAINT_NS,INPAINT_TELEA,NORMAL_CLONE,MIXED_CLONE,MONOCHROME_TRANSFER,fastNlMeansDenoisingColored,fastNlMeansDenoisingColoredAsync }; -const { inpaint,inpaintAsync,seamlessClone,seamlessCloneAsync,OCRHMMDecoder,OCRHMMClassifier,loadOCRHMMClassifierNM,loadOCRHMMClassifierNMAsync,loadOCRHMMClassifierCNN,loadOCRHMMClassifierCNNAsync,createOCRHMMTransitionsTable,createOCRHMMTransitionsTableAsync,TrackerBoostingParams,TrackerBoosting,TrackerMedianFlow } = defExport; +const { inpaint,inpaintAsync,seamlessClone,seamlessCloneAsync,OCRHMMDecoder,OCRHMMClassifier,loadOCRHMMClassifierNM,loadOCRHMMClassifierNMAsync,loadOCRHMMClassifierCNN,loadOCRHMMClassifierCNNAsync,createOCRHMMTransitionsTable,createOCRHMMTransitionsTableAsync,TrackerBoostingParams,TrackerBoosting,TrackerMedianFlow } = cv; export { inpaint,inpaintAsync,seamlessClone,seamlessCloneAsync,OCRHMMDecoder,OCRHMMClassifier,loadOCRHMMClassifierNM,loadOCRHMMClassifierNMAsync,loadOCRHMMClassifierCNN,loadOCRHMMClassifierCNNAsync,createOCRHMMTransitionsTable,createOCRHMMTransitionsTableAsync,TrackerBoostingParams,TrackerBoosting,TrackerMedianFlow }; -const { TrackerMILParams,TrackerMIL,TrackerTLD,TrackerKCFParams,TrackerKCF,MultiTracker,trackerKCFModes,TrackerGOTURN,TrackerMOSSE,TrackerCSRTParams,TrackerCSRT,BackgroundSubtractorMOG2,BackgroundSubtractorKNN,SIFTDetector,SURFDetector } = defExport; +const { TrackerMILParams,TrackerMIL,TrackerTLD,TrackerKCFParams,TrackerKCF,MultiTracker,trackerKCFModes,TrackerGOTURN,TrackerMOSSE,TrackerCSRTParams,TrackerCSRT,BackgroundSubtractorMOG2,BackgroundSubtractorKNN,SIFTDetector,SURFDetector } = cv; export { TrackerMILParams,TrackerMIL,TrackerTLD,TrackerKCFParams,TrackerKCF,MultiTracker,trackerKCFModes,TrackerGOTURN,TrackerMOSSE,TrackerCSRTParams,TrackerCSRT,BackgroundSubtractorMOG2,BackgroundSubtractorKNN,SIFTDetector,SURFDetector }; -const { SuperpixelSEEDS,SuperpixelSLIC,SuperpixelLSC,SLIC,SLICO,PHash,HAAR_EYE,HAAR_EYE_TREE_EYEGLASSES,HAAR_FRONTALCATFACE,HAAR_FRONTALCATFACE_EXTENDED,HAAR_FRONTALFACE_ALT,HAAR_FRONTALFACE_ALT2,HAAR_FRONTALFACE_ALT_TREE,HAAR_FRONTALFACE_DEFAULT,HAAR_FULLBODY } = defExport; +const { SuperpixelSEEDS,SuperpixelSLIC,SuperpixelLSC,SLIC,SLICO,PHash,HAAR_EYE,HAAR_EYE_TREE_EYEGLASSES,HAAR_FRONTALCATFACE,HAAR_FRONTALCATFACE_EXTENDED,HAAR_FRONTALFACE_ALT,HAAR_FRONTALFACE_ALT2,HAAR_FRONTALFACE_ALT_TREE,HAAR_FRONTALFACE_DEFAULT,HAAR_FULLBODY } = cv; export { SuperpixelSEEDS,SuperpixelSLIC,SuperpixelLSC,SLIC,SLICO,PHash,HAAR_EYE,HAAR_EYE_TREE_EYEGLASSES,HAAR_FRONTALCATFACE,HAAR_FRONTALCATFACE_EXTENDED,HAAR_FRONTALFACE_ALT,HAAR_FRONTALFACE_ALT2,HAAR_FRONTALFACE_ALT_TREE,HAAR_FRONTALFACE_DEFAULT,HAAR_FULLBODY }; -const { HAAR_LEFTEYE_2SPLITS,HAAR_LICENCE_PLATE_RUS_16STAGES,HAAR_LOWERBODY,HAAR_PROFILEFACE,HAAR_RIGHTEYE_2SPLITS,HAAR_RUSSIAN_PLATE_NUMBER,HAAR_SMILE,HAAR_UPPERBODY,LBP_FRONTALCATFACE,LBP_FRONTALFACE,LBP_FRONTALFACE_IMPROVED,LBP_PROFILEFACE,LBP_SILVERWARE,drawTextBox,drawDetection } = defExport; +const { HAAR_LEFTEYE_2SPLITS,HAAR_LICENCE_PLATE_RUS_16STAGES,HAAR_LOWERBODY,HAAR_PROFILEFACE,HAAR_RIGHTEYE_2SPLITS,HAAR_RUSSIAN_PLATE_NUMBER,HAAR_SMILE,HAAR_UPPERBODY,LBP_FRONTALCATFACE,LBP_FRONTALFACE,LBP_FRONTALFACE_IMPROVED,LBP_PROFILEFACE,LBP_SILVERWARE,drawTextBox,drawDetection } = cv; export { HAAR_LEFTEYE_2SPLITS,HAAR_LICENCE_PLATE_RUS_16STAGES,HAAR_LOWERBODY,HAAR_PROFILEFACE,HAAR_RIGHTEYE_2SPLITS,HAAR_RUSSIAN_PLATE_NUMBER,HAAR_SMILE,HAAR_UPPERBODY,LBP_FRONTALCATFACE,LBP_FRONTALFACE,LBP_FRONTALFACE_IMPROVED,LBP_PROFILEFACE,LBP_SILVERWARE,drawTextBox,drawDetection }; -const { getVersion,getVersionString,toMatTypeName,getScoreMax,dropOverlappingZone } = defExport; +const { getVersion,getVersionString,toMatTypeName,getScoreMax,dropOverlappingZone } = cv; export { getVersion,getVersionString,toMatTypeName,getScoreMax,dropOverlappingZone }; // defExport['cv'] = cv; // const {Vec3} = defExport; // export {Vec3}; // export * from defExport; -export default defExport; +export default cv; diff --git a/test/tests/imgproc/Contour.test.ts b/test/tests/imgproc/Contour.test.ts index 73c02be85..fbfd2e96c 100644 --- a/test/tests/imgproc/Contour.test.ts +++ b/test/tests/imgproc/Contour.test.ts @@ -220,7 +220,6 @@ if (toTest.imgproc) { }); describe('matchShapes', () => { - // @ts-expect-error multuple variable name depending on openCV version const method = cvVersionGreaterEqual(4, 0, 0) ? cv.CONTOURS_MATCH_I1 : cv.CV_CONTOURS_MATCH_I1; it('should return zero for same shapes', () => { const similarity = leftmostContour.matchShapes(leftmostContour, method); diff --git a/typings/constants.d.ts b/typings/constants.d.ts index 63d60b678..a44db1e88 100644 --- a/typings/constants.d.ts +++ b/typings/constants.d.ts @@ -634,6 +634,7 @@ export const INTER_CUBIC: number; export const INTER_LANCZOS4: number; export const INTER_LINEAR: number; export const INTER_MAX: number; +export const INTER_LINEAR_EXACT: number; export const INTER_NEAREST: number; export const KMEANS_PP_CENTERS: number; export const KMEANS_RANDOM_CENTERS: number; @@ -657,6 +658,7 @@ export const MORPH_RECT: number; export const MORPH_TOPHAT: number; export const NORM_HAMMING: number; export const NORM_HAMMING2: number; +export const NORM_TYPE_MASK: number; export const NORM_INF: number; export const NORM_L1: number; export const NORM_L2: number; @@ -670,6 +672,9 @@ export const REGULAR: number; export const RETR_CCOMP: number; export const RETR_EXTERNAL: number; export const RETR_FLOODFILL: number; +export const CONTOURS_MATCH_I1: number; +export const CONTOURS_MATCH_I2: number; +export const CONTOURS_MATCH_I3: number; export const RETR_LIST: number; export const RETR_TREE: number; export const RHO: number; diff --git a/typings/cv.d.ts b/typings/cv.d.ts index d23efd445..c30556d78 100644 --- a/typings/cv.d.ts +++ b/typings/cv.d.ts @@ -38,6 +38,7 @@ export function calcHist(img: Mat, histAxes: HistAxes[], mask?: Mat): Mat; export function calcHistAsync(img: Mat, histAxes: HistAxes[], mask?: Mat): Promise; export function canny(dx: Mat, dy: Mat, threshold1: number, threshold2: number, L2gradient?: boolean): Mat; +export function cannyAsync(dx: Mat, dy: Mat, threshold1: number, threshold2: number, L2gradient?: boolean): Promise; export function computeCorrespondEpilines(points: Point2[], whichImage: number, F: Mat): Vec3[]; export function computeCorrespondEpilinesAsync(points: Point2[], whichImage: number, F: Mat): Promise; @@ -48,6 +49,7 @@ export function drawKeyPoints(img: Mat, keyPoints: KeyPoint[]): Mat; export function drawMatches(img1: Mat, img2: Mat, keyPoints1: KeyPoint[], keyPoints2: KeyPoint[], matches: DescriptorMatch[]): Mat; export function fastNlMeansDenoisingColored(src: Mat, h?: number, hColor?: number, templateWindowSize?: number, searchWindowSize?: number): Mat; +export function fastNlMeansDenoisingColoredAsync(src: Mat, h?: number, hColor?: number, templateWindowSize?: number, searchWindowSize?: number): Promise; export function inpaint(src: Mat, mask: Mat, inpaintRadius: number, flags: number): Mat; export function inpaintAsync(src: Mat, mask: Mat, inpaintRadius: number, flags: number): Promise; @@ -169,3 +171,9 @@ export function maxAsync(src1: Mat, src2: Mat, dst: Mat): Promise; export function magnitude(x: Mat, y: Mat, magnitude: Mat): Mat; export function magnitudeAsync(x: Mat, y: Mat, magnitude: Mat): Promise; + +export const haarCascades: any; +export const lbpCascades: any; +export const KeyPointMatch: any; +export const StatModel: any; +export const HOGHistogramNormType: any; diff --git a/typings/group/calib3d.d.ts b/typings/group/calib3d.d.ts index f3ad00bb6..174838b37 100644 --- a/typings/group/calib3d.d.ts +++ b/typings/group/calib3d.d.ts @@ -188,6 +188,7 @@ export interface FindHomographyRet { } export function findHomography(srcPoints: Point2[], dstPoints: Point2[], method?: number, ransacReprojThreshold?: number, maxIters?: number, confidence?: number): FindHomographyRet; +export function findHomographyAsync(srcPoints: Point2[], dstPoints: Point2[], method?: number, ransacReprojThreshold?: number, maxIters?: number, confidence?: number): Promise; // Finds a perspective transformation between two planes. More... // @@ -300,6 +301,15 @@ export function solvePnPRansac(objectPoints: Point3[], imagePoints: Point2[], ca flags: number, }): SolvePnPRansacRet; +export function solvePnPRansacAsync(objectPoints: Point3[], imagePoints: Point2[], cameraMatrix: Mat, distCoeffs: number[], args: { + rvec: Vec3, + tvec: Vec3, + useExtrinsicGuess: boolean, + iterationsCount: number, + reprojectionError: number, + confidence: number, + flags: number, +}): Promise; //void cv::solvePnPRefineLM (InputArray objectPoints, InputArray imagePoints, InputArray cameraMatrix, InputArray distCoeffs, InputOutputArray rvec, InputOutputArray tvec, TermCriteria criteria=TermCriteria(TermCriteria::EPS+TermCriteria::COUNT, 20, FLT_EPSILON)) diff --git a/typings/group/imgproc_colormap.d.ts b/typings/group/imgproc_colormap.d.ts index f2da6077a..5c57dfaf2 100644 --- a/typings/group/imgproc_colormap.d.ts +++ b/typings/group/imgproc_colormap.d.ts @@ -9,3 +9,4 @@ import { Mat } from '../Mat.d'; // Applies a user colormap on a given image. More... export function applyColorMap(src: Mat, colormap: number | Mat): Mat; +export function applyColorMapAsync(src: Mat, colormap: number | Mat): Promise; From d80fc6e28dc0dc77c63904e0a2cd5f4c69c4366e Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 09:48:41 +0200 Subject: [PATCH 39/50] improve typing --- typings/cv.d.ts | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/typings/cv.d.ts b/typings/cv.d.ts index c30556d78..56070b3e9 100644 --- a/typings/cv.d.ts +++ b/typings/cv.d.ts @@ -172,8 +172,33 @@ export function maxAsync(src1: Mat, src2: Mat, dst: Mat): Promise; export function magnitude(x: Mat, y: Mat, magnitude: Mat): Mat; export function magnitudeAsync(x: Mat, y: Mat, magnitude: Mat): Promise; -export const haarCascades: any; -export const lbpCascades: any; -export const KeyPointMatch: any; -export const StatModel: any; -export const HOGHistogramNormType: any; +export const haarCascades: { + HAAR_EYE: string; + HAAR_EYE_TREE_EYEGLASSES: string; + HAAR_FRONTALCATFACE: string; + HAAR_FRONTALCATFACE_EXTENDED: string; + HAAR_FRONTALFACE_ALT: string; + HAAR_FRONTALFACE_ALT2: string; + HAAR_FRONTALFACE_ALT_TREE: string; + HAAR_FRONTALFACE_DEFAULT: string; + HAAR_FULLBODY: string; + HAAR_LEFTEYE_2SPLITS: string; + HAAR_LICENCE_PLATE_RUS_16STAGES: string; + HAAR_LOWERBODY: string; + HAAR_PROFILEFACE: string; + HAAR_RIGHTEYE_2SPLITS: string; + HAAR_RUSSIAN_PLATE_NUMBER: string; + HAAR_SMILE: string; + HAAR_UPPERBODY: string; +}; +export const lbpCascades: { + LBP_FRONTALCATFACE: string; + LBP_FRONTALFACE: string; + LBP_FRONTALFACE_IMPROVED: string; + LBP_PROFILEFACE: string; + LBP_SILVERWARE: string; +}; +export const HOGHistogramNormType: { L2Hys: string}; +// TODO Fill this types +export const KeyPointMatch: Function; +export const StatModel: Function; From 4b4d1ef079378696ee97ac21efabb090b9869211 Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 09:58:00 +0200 Subject: [PATCH 40/50] switch examples to ESM modules --- examples/package.json | 2 +- examples/src/utils.ts | 4 ++-- examples/tsconfig.json | 2 +- typings/cv.d.ts | 8 ++++++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/examples/package.json b/examples/package.json index 90cf3e3e4..3ce011b5f 100644 --- a/examples/package.json +++ b/examples/package.json @@ -3,7 +3,7 @@ "version": "0.0.0", "description": "example for opencv4nodejs", "main": "src/EASTTextDetection.js", - "type": "commonjs", + "type": "module", "scripts": { "clean": "rimraf src/**/*.js src/**/*.map *.js.map *.js *.log" }, diff --git a/examples/src/utils.ts b/examples/src/utils.ts index 58e97ab49..f871ee7d9 100644 --- a/examples/src/utils.ts +++ b/examples/src/utils.ts @@ -12,8 +12,8 @@ export const delay = (ms: number): Promise => new Promise(resolve => setTi export function getExampleDirname(...names: string[]) { let dir = '.'; - // dir = fileURLToPath(new URL('.', import.meta.url)); - dir = __dirname; + dir = fileURLToPath(new URL('.', import.meta.url)); + // dir = __dirname; if (!names.length) return dir; return path.resolve(dir, ...names); diff --git a/examples/tsconfig.json b/examples/tsconfig.json index 34aef5b7e..24552bc36 100644 --- a/examples/tsconfig.json +++ b/examples/tsconfig.json @@ -1,7 +1,7 @@ { "compilerOptions": { "target": "ESNext", - "module": "commonjs", + "module": "ES2022", "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ "inlineSourceMap": true, "esModuleInterop": true, diff --git a/typings/cv.d.ts b/typings/cv.d.ts index 56070b3e9..e33ac1a64 100644 --- a/typings/cv.d.ts +++ b/typings/cv.d.ts @@ -200,5 +200,9 @@ export const lbpCascades: { }; export const HOGHistogramNormType: { L2Hys: string}; // TODO Fill this types -export const KeyPointMatch: Function; -export const StatModel: Function; +export class KeyPointMatch { + distance: number; + kpTo?: Object; + kpFrom?: Object; +} +export class StatModel {} From 5e4f70fe0d6212614f9b8e78d9ff68c18cf8f347 Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 10:00:48 +0200 Subject: [PATCH 41/50] @u4/opencv4nodejs@7.0.0-alpha-7 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e1793e8ca..8ceb9f582 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@u4/opencv4nodejs", - "version": "7.0.0-alpha-6", + "version": "7.0.0-alpha-7", "description": "Asynchronous OpenCV 3.x / 4.x nodejs bindings with JavaScript and TypeScript API.", "keywords": [ "opencv", From 25a952b1b2874a9bb9b921f44c8b85ede37ebc97 Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 10:53:34 +0200 Subject: [PATCH 42/50] fix 2 ESM import --- examples/src/dnnSSDCoco.ts | 2 +- examples/src/test34d.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/examples/src/dnnSSDCoco.ts b/examples/src/dnnSSDCoco.ts index 4214ca354..caa53cacc 100644 --- a/examples/src/dnnSSDCoco.ts +++ b/examples/src/dnnSSDCoco.ts @@ -2,7 +2,7 @@ import fs from 'node:fs'; import path from 'node:path'; import { getResourcePath, drawRect, wait4key } from './utils.js'; import { classNames } from './data/dnnCocoClassNames.js'; -import { extractResults, Prediction } from './dnn/ssdUtils'; +import { extractResults, Prediction } from './dnn/ssdUtils.js'; import {cv, Mat, Net, Vec3 } from '@u4/opencv4nodejs'; if (!cv.xmodules || !cv.xmodules.dnn) { diff --git a/examples/src/test34d.ts b/examples/src/test34d.ts index a7aee8947..ca5aa21ef 100644 --- a/examples/src/test34d.ts +++ b/examples/src/test34d.ts @@ -1,4 +1,4 @@ -import { cv } from "./utils"; +import { cv } from './utils.js'; try { console.log(''); From 7fc720c5e5c37b70683338d46f57465261bbe80b Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 10:57:02 +0200 Subject: [PATCH 43/50] add DNN_BACKEND_WEBNN --- .gitignore | 1 + cc/dnn/dnn.cc | 4 ++++ examples/package.json | 2 +- typings/constants.d.ts | 2 +- 4 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 4c8ef79b8..16e770eba 100644 --- a/.gitignore +++ b/.gitignore @@ -60,3 +60,4 @@ cjs/lib/ esm/install/ esm/lib/ u4-opencv4nodejs-*.tgz +examples/yolo_out_py.avi diff --git a/cc/dnn/dnn.cc b/cc/dnn/dnn.cc index 1dc0758ae..3903385f4 100644 --- a/cc/dnn/dnn.cc +++ b/cc/dnn/dnn.cc @@ -48,6 +48,10 @@ NAN_MODULE_INIT(Dnn::Init) { FF_CONST_TYPE(DNN_TARGET_HDDL, cv::dnn::DNN_TARGET_HDDL) #endif +#if CV_VERSION_GREATER_EQUAL(4, 8, 0) + FF_CONST_TYPE(DNN_BACKEND_WEBNN, cv::dnn::DNN_BACKEND_WEBNN) +#endif + Net::Init(target); diff --git a/examples/package.json b/examples/package.json index 3ce011b5f..cffc6cd6c 100644 --- a/examples/package.json +++ b/examples/package.json @@ -5,7 +5,7 @@ "main": "src/EASTTextDetection.js", "type": "module", "scripts": { - "clean": "rimraf src/**/*.js src/**/*.map *.js.map *.js *.log" + "clean": "rimraf src/*.js src/**/*.js src/**/*.map *.js.map *.js *.log" }, "author": "", "license": "MIT", diff --git a/typings/constants.d.ts b/typings/constants.d.ts index a44db1e88..26004c2a8 100644 --- a/typings/constants.d.ts +++ b/typings/constants.d.ts @@ -86,7 +86,7 @@ export const DNN_BACKEND_OPENCV: number; export const DNN_BACKEND_INFERENCE_ENGINE: number; export const DNN_BACKEND_HALIDE: number; export const DNN_BACKEND_CUDA: number; - +export const DNN_BACKEND_WEBNN: number; export const DNN_TARGET_CPU: number; export const DNN_TARGET_OPENCL: number; export const DNN_TARGET_OPENCL_FP16: number; From 3ee00abd8e0e70527f54ad3772ba358f0732e8ae Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 12:20:07 +0200 Subject: [PATCH 44/50] clean exports --- src/lib/opencv4nodejs.ts | 20 ++++++++++---------- src/lib/src/deprecations.ts | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts index 4158c5c7c..26a902f48 100644 --- a/src/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -11,6 +11,7 @@ declare type OpenCVType = typeof openCV; function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { const cvBase = getOpenCV(opt); + // check the presence of any expected symbol, to ensure the library is loaded if (!cvBase.accumulate) { throw Error('failed to load opencv basic accumulate not found.') } @@ -28,13 +29,9 @@ function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { } export const cv = loadOpenCV({ prebuild: 'latestBuild' }); -// const defExport: { [key: string]: any } = { cv }; -// duplicate all export for retro-compatibility -// for (const key in cv) { -// defExport[key] = cv[key]; -// } -// const allExports = Object.keys(defExport).filter(key => key !== 'cv' && !key.includes('"')); +// const allExports = Object.keys(cv); +// // .filter(key => key !== 'cv' && !key.includes('"')); // console.log('\n\n'); // while (allExports.length) { // const keys = allExports.splice(0, 15); @@ -171,9 +168,12 @@ export { HAAR_LEFTEYE_2SPLITS,HAAR_LICENCE_PLATE_RUS_16STAGES,HAAR_LOWERBODY,HAA const { getVersion,getVersionString,toMatTypeName,getScoreMax,dropOverlappingZone } = cv; export { getVersion,getVersionString,toMatTypeName,getScoreMax,dropOverlappingZone }; -// defExport['cv'] = cv; -// const {Vec3} = defExport; -// export {Vec3}; -// export * from defExport; +// TODO FIX this export mess +export const AGAST = cv['"AGAST"']; +export const AKAZE = cv['"AKAZE"'] as { DESCRIPTOR_KAZE: 3, DESCRIPTOR_MLDB_UPRIGHT: 4, DESCRIPTOR_MLDB: 5 }; +export const KAZE = cv['"KAZE"']; +export const FAST = cv['"FAST"']; +export const ORB = cv['"ORB"']; + export default cv; diff --git a/src/lib/src/deprecations.ts b/src/lib/src/deprecations.ts index 8698264b0..d002007b9 100644 --- a/src/lib/src/deprecations.ts +++ b/src/lib/src/deprecations.ts @@ -2,7 +2,7 @@ import assert from 'assert'; import type * as openCV from '../../../typings/index.js' import type { Mat } from '../../../typings/index.js'; -export default function (cv: typeof openCV) { +export default function (cv: typeof openCV): void { // deprecate wrapper for the old calcHist API const _calcHist = cv.calcHist; cv.calcHist = function calcHist(img: Mat, histAxes: { channel: number, bins: number, ranges: [number, number] }[], mask?: Mat) { From 03d8315b02d26fb355142ecd7843b2f3cf4bc51e Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 12:51:32 +0200 Subject: [PATCH 45/50] update appveyor + refactor --- appveyor.yml | 4 +- .../object_detection_yolo.ts | 11 +++-- src/lib/cvloader.ts | 20 +++----- src/lib/ext/deprecations.ts | 42 +++++++++++++++++ src/lib/{src => ext}/drawUtils.ts | 0 src/lib/{src => ext}/index.ts | 1 + src/lib/{src => ext}/misc.ts | 0 src/lib/opencv4nodejs.ts | 47 ++++++++++++------- src/lib/promisify.ts | 1 + src/lib/src/deprecations.ts | 33 ------------- tsconfig.json | 1 + 11 files changed, 92 insertions(+), 68 deletions(-) create mode 100644 src/lib/ext/deprecations.ts rename src/lib/{src => ext}/drawUtils.ts (100%) rename src/lib/{src => ext}/index.ts (90%) rename src/lib/{src => ext}/misc.ts (100%) delete mode 100644 src/lib/src/deprecations.ts diff --git a/appveyor.yml b/appveyor.yml index fb717f1ed..7d085dadd 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -69,8 +69,8 @@ environment: install: - cmd: choco install OpenCV -y --version %OPENCVV% - if not "%BUILD_TASK%" == "ENVS" SET OPENCV_INCLUDE_DIR=c:\tools\opencv\build\include - - if not "%BUILD_TASK%" == "ENVS" SET OPENCV_LIB_DIR=c:\tools\opencv\build\x64\vc14\lib - - if not "%BUILD_TASK%" == "ENVS" SET OPENCV_BIN_DIR=c:\tools\opencv\build\x64\vc14\bin + - if not "%BUILD_TASK%" == "ENVS" SET OPENCV_LIB_DIR=c:\tools\opencv\build\x64\vc16\lib + - if not "%BUILD_TASK%" == "ENVS" SET OPENCV_BIN_DIR=c:\tools\opencv\build\x64\vc16\bin - if not "%BUILD_TASK%" == "ENVS" SET PATH=%PATH%;%OPENCV_BIN_DIR%; - ps: Install-Product node $env:NODEV x64 # - node --version diff --git a/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts b/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts index d9b7f147f..46a692065 100644 --- a/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts +++ b/examples/src/ObjectDetection-YOLO/object_detection_yolo.ts @@ -17,10 +17,11 @@ const args = mri(process.argv.slice(2), { default: { device: 'cpu' }, alias: { h if (args.help) { console.log('Object Detection using YOLO in OPENCV'); - console.log('--device Device to perform inference on \'cpu\' or \'gpu\'. (default is cpu)'); + console.log('--device Device to perform inference on \'cpu\' or \'cuda\' or \'opencl\'. (default is cpu)'); console.log('--image Path to image file.'); console.log('--video Path to video file.'); - process.exit(0); + console.log('OpenCV getBuildInformation:', cv.getBuildInformation()); + process.exit(0); } const device = args.device || 'cpu'; @@ -41,7 +42,11 @@ async function main() { net.setPreferableBackend(cv.DNN_BACKEND_OPENCV) net.setPreferableTarget(cv.DNN_TARGET_CPU) console.log('Using CPU device.') - } else if (device == 'gpu') { + } else if (device == 'opencl' ) { + net.setPreferableBackend(cv.DNN_BACKEND_OPENCV) + net.setPreferableTarget(cv.DNN_TARGET_OPENCL) + console.log('Using GPU device.') + } else if (device == 'gpu' || device == 'cuda' ) { net.setPreferableBackend(cv.DNN_BACKEND_CUDA) net.setPreferableTarget(cv.DNN_TARGET_CUDA) console.log('Using GPU device.') diff --git a/src/lib/cvloader.ts b/src/lib/cvloader.ts index 0649c670a..5ceabc116 100644 --- a/src/lib/cvloader.ts +++ b/src/lib/cvloader.ts @@ -1,7 +1,7 @@ import { pc, Log, OpenCVBuilder, type OpenCVBuildEnvParams } from '@u4/opencv-build'; import fs from 'fs'; import path from 'path'; -import { isElectronWebpack, resolvePath } from './commons.js'; +import { isElectronWebpack } from './commons.js'; import type * as openCV from '../../typings/index.js'; import { getDirName, getRequire } from './meta.js'; @@ -9,7 +9,7 @@ declare type OpenCVType = typeof openCV; const logDebug = process.env.OPENCV4NODES_DEBUG_REQUIRE ? (prefix: string, message: string, ...args: unknown[]) => Log.log('info', prefix, message, ...args) : () => { /* ignore */ } -function tryGetOpencvBinDir(builder: OpenCVBuilder) { +function tryGetOpencvBinDir(builder: OpenCVBuilder): string { if (process.env.OPENCV_BIN_DIR) { logDebug('tryGetOpencvBinDir', `${pc.yellow('OPENCV_BIN_DIR')} environment variable is set`) return process.env.OPENCV_BIN_DIR @@ -34,7 +34,7 @@ function tryGetOpencvBinDir(builder: OpenCVBuilder) { return builder.env.opencvBinDir as string } logDebug('tryGetOpencvBinDir', 'failed to find opencv binary environment variable in package.json') - return null + return ""; } export function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { @@ -42,7 +42,7 @@ export function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { opt = { prebuild: 'latestBuild' } const builder = new OpenCVBuilder(opt); - let opencvBuild: OpenCVType = null; + let opencvBuild: OpenCVType | null = null; let requirePath = ''; if (isElectronWebpack()) { requirePath = '../../build/Release/opencv4nodejs.node'; @@ -109,16 +109,8 @@ export function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { throw e; } } - - // resolve haarcascade files - // eslint-disable-next-line @typescript-eslint/no-explicit-any - const { haarCascades, lbpCascades } = opencvBuild as any; - const dirname = getDirName(); - const xmlDir = path.join(dirname, '..', '..', 'src', 'lib'); - Object.keys(haarCascades).forEach( - key => opencvBuild[key] = resolvePath(path.join(xmlDir, 'haarcascades'), haarCascades[key])); - Object.keys(lbpCascades).forEach( - key => opencvBuild[key] = resolvePath(path.join(xmlDir, 'lbpcascades'), lbpCascades[key])); + if (!opencvBuild) + throw new Error('Failed to require opencv4nodejs.node'); return opencvBuild; } diff --git a/src/lib/ext/deprecations.ts b/src/lib/ext/deprecations.ts new file mode 100644 index 000000000..e9a954058 --- /dev/null +++ b/src/lib/ext/deprecations.ts @@ -0,0 +1,42 @@ +import assert from 'assert'; +import type * as openCV from '../../../typings/index.js' +import type { Mat } from '../../../typings/index.js'; + +let cv: typeof openCV; +let _calcHist: (img: Mat, histAxes: openCV.HistAxes[], mask?: Mat) => Mat; + +function calcHist(img: Mat, histAxes: { channel: number, bins: number, ranges: [number, number] }[], mask?: Mat) { + assert(img instanceof cv.Mat, 'Imgproc::CalcHist - Error: expected argument 0 to be of type Mat'); + assert(Array.isArray(histAxes), 'Imgproc::CalcHist - Error: expected argument 1 to be of type array of HistAxes'); + + histAxes = histAxes.slice(); + + let warningThrown = false; + const len = histAxes.length; + + for (let i = 0; i < len; ++i) { + const entry = histAxes[i]; + if (!(entry instanceof cv.HistAxes)) { + if (!warningThrown) { + warningThrown = true; + console.warn(`Imgproc::CalcHist - Deprecated support for object in argument 1 at index ${i}. Please switch to using HistAxes instances.`); + } + histAxes[i] = new cv.HistAxes(entry); + } + } + + if (mask) { + return _calcHist(img, histAxes, mask); + } + return _calcHist(img, histAxes); +} + +export default function (newCv: typeof openCV): void { + // store global cv + cv = newCv; + _calcHist = cv.calcHist; + + // deprecate wrapper for the old calcHist API + // const _calcHist = cv.calcHist; + cv.calcHist = calcHist; +} diff --git a/src/lib/src/drawUtils.ts b/src/lib/ext/drawUtils.ts similarity index 100% rename from src/lib/src/drawUtils.ts rename to src/lib/ext/drawUtils.ts diff --git a/src/lib/src/index.ts b/src/lib/ext/index.ts similarity index 90% rename from src/lib/src/index.ts rename to src/lib/ext/index.ts index 54e9afddf..e57b9a477 100644 --- a/src/lib/src/index.ts +++ b/src/lib/ext/index.ts @@ -8,6 +8,7 @@ export default function extendWithJsSources(cv: typeof OpenCV) { makeDrawUtils(cv); // add functions misc(cv); + // add wrapper on calcHist function deprecations(cv); return cv; } \ No newline at end of file diff --git a/src/lib/src/misc.ts b/src/lib/ext/misc.ts similarity index 100% rename from src/lib/src/misc.ts rename to src/lib/ext/misc.ts diff --git a/src/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts index 26a902f48..62d0b1bcb 100644 --- a/src/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -1,8 +1,11 @@ +import path from 'node:path'; import { type OpenCVBuildEnvParams } from '@u4/opencv-build'; import promisify from './promisify.js'; -import extendWithJsSources from './src/index.js'; +import extendWithJsSources from './ext/index.js'; import { getOpenCV } from './cvloader.js'; import type * as openCV from '../../typings/index.js'; +import { getDirName } from './meta.js'; +import { resolvePath } from './commons.js'; export type * as openCV from '../../typings/index.js'; export { getDirName, getRequire } from "./meta.js" @@ -10,6 +13,7 @@ export { getDirName, getRequire } from "./meta.js" declare type OpenCVType = typeof openCV; function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { + // load native binding const cvBase = getOpenCV(opt); // check the presence of any expected symbol, to ensure the library is loaded if (!cvBase.accumulate) { @@ -18,7 +22,15 @@ function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { if (!cvBase.blur) { throw Error('failed to load opencv basic blur not found.') } - + + // resolve haarcascade and lbpCascades files paths + const { haarCascades, lbpCascades } = cvBase; + const dirname = getDirName(); + const xmlDir = path.join(dirname, '..', '..', 'src', 'lib'); + Object.keys(haarCascades).forEach( + key => cvBase[key] = resolvePath(path.join(xmlDir, 'haarcascades'), haarCascades[key])); + Object.keys(lbpCascades).forEach( + key => cvBase[key] = resolvePath(path.join(xmlDir, 'lbpcascades'), lbpCascades[key])); // promisify async methods let cvObj = promisify(cvBase); cvObj = extendWithJsSources(cvObj); @@ -30,15 +42,18 @@ function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { export const cv = loadOpenCV({ prebuild: 'latestBuild' }); -// const allExports = Object.keys(cv); -// // .filter(key => key !== 'cv' && !key.includes('"')); -// console.log('\n\n'); -// while (allExports.length) { -// const keys = allExports.splice(0, 15); -// console.log(`const { ${keys} } = cv;`); -// console.log(`export { ${keys} };`); -// } -// console.log('\n\n'); +function dumpExports() { + let allExports = Object.keys(cv); + allExports = allExports.filter(key => !key.includes('"')); + console.log('\n\n'); + while (allExports.length) { + const keys = allExports.splice(0, 15); + console.log(`const { ${keys} } = cv;`); + console.log(`export { ${keys} };`); + } + console.log('\n\n'); +} +// dumpExports(); ////////////// //// GENERATED code @@ -169,11 +184,11 @@ const { getVersion,getVersionString,toMatTypeName,getScoreMax,dropOverlappingZon export { getVersion,getVersionString,toMatTypeName,getScoreMax,dropOverlappingZone }; // TODO FIX this export mess -export const AGAST = cv['"AGAST"']; -export const AKAZE = cv['"AKAZE"'] as { DESCRIPTOR_KAZE: 3, DESCRIPTOR_MLDB_UPRIGHT: 4, DESCRIPTOR_MLDB: 5 }; -export const KAZE = cv['"KAZE"']; -export const FAST = cv['"FAST"']; -export const ORB = cv['"ORB"']; +export const AGAST = (cv as any)['"AGAST"']; +export const AKAZE = (cv as any)['"AKAZE"'] as { DESCRIPTOR_KAZE: 3, DESCRIPTOR_MLDB_UPRIGHT: 4, DESCRIPTOR_MLDB: 5 }; +export const KAZE = (cv as any)['"KAZE"']; +export const FAST = (cv as any)['"FAST"']; +export const ORB = (cv as any)['"ORB"']; export default cv; diff --git a/src/lib/promisify.ts b/src/lib/promisify.ts index c5e420712..0c4bf99fb 100644 --- a/src/lib/promisify.ts +++ b/src/lib/promisify.ts @@ -16,6 +16,7 @@ const promisify = (fn: (...args: any[]) => any) => function toPromise(this: any, return new Promise((resolve, reject) => { const args = Array.prototype.slice.call(params); + // add a param to convert callback to promise args.push(function pomisifyed(err: Error, res: any) { if (err) { return reject(err); diff --git a/src/lib/src/deprecations.ts b/src/lib/src/deprecations.ts deleted file mode 100644 index d002007b9..000000000 --- a/src/lib/src/deprecations.ts +++ /dev/null @@ -1,33 +0,0 @@ -import assert from 'assert'; -import type * as openCV from '../../../typings/index.js' -import type { Mat } from '../../../typings/index.js'; - -export default function (cv: typeof openCV): void { - // deprecate wrapper for the old calcHist API - const _calcHist = cv.calcHist; - cv.calcHist = function calcHist(img: Mat, histAxes: { channel: number, bins: number, ranges: [number, number] }[], mask?: Mat) { - assert(img instanceof cv.Mat, 'Imgproc::CalcHist - Error: expected argument 0 to be of type Mat'); - assert(Array.isArray(histAxes), 'Imgproc::CalcHist - Error: expected argument 1 to be of type array of HistAxes'); - - histAxes = histAxes.slice(); - - let warningThrown = false; - const len = histAxes.length; - - for (let i = 0; i < len; ++i) { - const entry = histAxes[i]; - if (!(entry instanceof cv.HistAxes)) { - if (!warningThrown) { - warningThrown = true; - console.warn(`Imgproc::CalcHist - Deprecated support for object in argument 1 at index ${i}. Please switch to using HistAxes instances.`); - } - histAxes[i] = new cv.HistAxes(entry); - } - } - - if (mask) { - return _calcHist(img, histAxes, mask); - } - return _calcHist(img, histAxes); - }; -} diff --git a/tsconfig.json b/tsconfig.json index 61490aed8..7edf6b520 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,6 +3,7 @@ "compilerOptions": { "module": "commonjs", "declaration": false, + "strict": false, // "declarationMap": false, // "declarationDir": "types", "outDir": "cjs", From 2c31eb0a6d3c787bc4aa8c4ad7f4fc3a3b766627 Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 12:56:48 +0200 Subject: [PATCH 46/50] tsconfig is now strict --- src/lib/cvloader.ts | 2 +- src/lib/opencv4nodejs.ts | 4 ++-- tsconfig.json | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/lib/cvloader.ts b/src/lib/cvloader.ts index 5ceabc116..2bb8694a6 100644 --- a/src/lib/cvloader.ts +++ b/src/lib/cvloader.ts @@ -60,7 +60,7 @@ export function getOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { } catch (err) { // err.code === 'ERR_DLOPEN_FAILED' - logDebug('require', `failed to require cv with exception: ${pc.red(err.toString())}`) + logDebug('require', `failed to require cv with exception: ${pc.red((err as Error).toString())}`) logDebug('require', 'attempting to add opencv binaries to path') if (!process.env.path) { diff --git a/src/lib/opencv4nodejs.ts b/src/lib/opencv4nodejs.ts index 62d0b1bcb..1f7fd0973 100644 --- a/src/lib/opencv4nodejs.ts +++ b/src/lib/opencv4nodejs.ts @@ -28,9 +28,9 @@ function loadOpenCV(opt?: OpenCVBuildEnvParams): OpenCVType { const dirname = getDirName(); const xmlDir = path.join(dirname, '..', '..', 'src', 'lib'); Object.keys(haarCascades).forEach( - key => cvBase[key] = resolvePath(path.join(xmlDir, 'haarcascades'), haarCascades[key])); + key => (cvBase as any)[key] = resolvePath(path.join(xmlDir, 'haarcascades'), haarCascades[key as keyof typeof haarCascades])); Object.keys(lbpCascades).forEach( - key => cvBase[key] = resolvePath(path.join(xmlDir, 'lbpcascades'), lbpCascades[key])); + key => (cvBase as any)[key] = resolvePath(path.join(xmlDir, 'lbpcascades'), lbpCascades[key as keyof typeof lbpCascades])); // promisify async methods let cvObj = promisify(cvBase); cvObj = extendWithJsSources(cvObj); diff --git a/tsconfig.json b/tsconfig.json index 7edf6b520..10292db61 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -3,7 +3,7 @@ "compilerOptions": { "module": "commonjs", "declaration": false, - "strict": false, + "strict": true, // "declarationMap": false, // "declarationDir": "types", "outDir": "cjs", From 55bf9d829a53c8eab47b4a9d3ee0f1606ec6ec14 Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 18:08:22 +0200 Subject: [PATCH 47/50] fix strict type error --- src/install/compileLib.ts | 26 ++++++++++++++------------ src/lib/ext/deprecations.ts | 5 ++--- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/install/compileLib.ts b/src/install/compileLib.ts index 96f4e90e0..046fdc521 100644 --- a/src/install/compileLib.ts +++ b/src/install/compileLib.ts @@ -230,9 +230,10 @@ export async function compileLib(args: string[]) { action = 'rebuild'; } } + const extra = buildOptions.extra || {}; - if (buildOptions.extra.jobs) { - JOBS = buildOptions.extra.jobs; + if (extra.jobs) { + JOBS = extra.jobs; } if (buildOptions.disableAutoBuild || toBool(env.OPENCV4NODEJS_DISABLE_AUTOBUILD) || npmEnv.disableAutoBuild) { @@ -245,14 +246,15 @@ export async function compileLib(args: string[]) { } } - if (buildOptions.extra['dry-run'] || buildOptions.extra['dryrun']) { + if (extra['dry-run'] || extra['dryrun']) { dryRun = true; } if (!silenceMode) { - for (const K in ['autoBuildFlags']) { + const K = 'autoBuildFlags' as const; + // for (const K in ['autoBuildFlags'] as const) { if (buildOptions[K]) console.log(`using ${K}:`, buildOptions[K]); - } + // } } try { @@ -309,7 +311,7 @@ or use OPENCV4NODEJS_* env variable.`) if (silenceMode) { - const outputs = process.env[actionOriginal].split(/[\n;]/); + const outputs = (process.env[actionOriginal] || '').split(/[\n;]/); outputs.forEach(o => console.log(o)); return; } @@ -325,7 +327,7 @@ or use OPENCV4NODEJS_* env variable.`) // --verbose, --loglevel=verbose Log most progress to console // --silent, --loglevel=silent Don't log anything to console - if (process.env.BINDINGS_DEBUG || buildOptions.extra['debug']) + if (process.env.BINDINGS_DEBUG || extra['debug']) flags += ' --debug'; else flags += ' --release'; @@ -336,12 +338,12 @@ or use OPENCV4NODEJS_* env variable.`) // const arch = 'x86_64' / 'x64' // flags += --arch=${arch} --target_arch=${arch} - const cmdOptions = buildOptions.extra['node-gyp-options'] || ''; + const cmdOptions = extra['node-gyp-options'] || ''; flags += ` ${cmdOptions}`; - const nodegyp = buildOptions.extra.electron ? 'electron-rebuild' : 'node-gyp'; + const nodegyp = extra.electron ? 'electron-rebuild' : 'node-gyp'; let nodegypCmd = ''; - for (const dir of process.env.PATH.split(path.delimiter)) { + for (const dir of (process.env.PATH || '').split(path.delimiter)) { nodegypCmd = getExistingBin(dir, nodegyp); if (nodegypCmd) { // no need to use full path @@ -376,7 +378,7 @@ or use OPENCV4NODEJS_* env variable.`) log('info', 'install', `Spawning in directory:${cwd} node-gyp process: ${nodegypCmd}`) - if (buildOptions.extra.vscode) { + if (extra.vscode) { // const nan = require('nan'); // const nativeNodeUtils = require('native-node-utils'); // const pblob = promisify(blob) @@ -433,7 +435,7 @@ or use OPENCV4NODEJS_* env variable.`) // } const child = child_process.exec(nodegypCmd, { maxBuffer: Infinity, cwd }, function callNodegypCmd(error/*, stdout, stderr*/) { // fs.unlinkSync(realGyp); - const bin = buildOptions.extra.electron ? 'electron-rebuild' : 'node-gyp'; + const bin = extra.electron ? 'electron-rebuild' : 'node-gyp'; if (error) { console.log(`error: `, error); log('error', 'install', `${bin} failed and return ${error.name} ${error.message} return code: ${error.code}`); diff --git a/src/lib/ext/deprecations.ts b/src/lib/ext/deprecations.ts index e9a954058..9f1444280 100644 --- a/src/lib/ext/deprecations.ts +++ b/src/lib/ext/deprecations.ts @@ -1,11 +1,10 @@ import assert from 'assert'; import type * as openCV from '../../../typings/index.js' -import type { Mat } from '../../../typings/index.js'; let cv: typeof openCV; -let _calcHist: (img: Mat, histAxes: openCV.HistAxes[], mask?: Mat) => Mat; +let _calcHist: (img: openCV.Mat, histAxes: openCV.HistAxes[], mask?: openCV.Mat) => openCV.Mat; -function calcHist(img: Mat, histAxes: { channel: number, bins: number, ranges: [number, number] }[], mask?: Mat) { +function calcHist(img: openCV.Mat, histAxes: { channel: number, bins: number, ranges: [number, number] }[], mask?: openCV.Mat) { assert(img instanceof cv.Mat, 'Imgproc::CalcHist - Error: expected argument 0 to be of type Mat'); assert(Array.isArray(histAxes), 'Imgproc::CalcHist - Error: expected argument 1 to be of type array of HistAxes'); From 324d47b6cbe0b60302dedd0c9215dcc344a1dad6 Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 19:09:32 +0200 Subject: [PATCH 48/50] prepare Version 7 --- CHANGELOG.md | 9 ++++++ package.json | 4 +-- pnpm-lock.yaml | 84 +++++++++++++++++++++++++------------------------- 3 files changed, 53 insertions(+), 44 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e5cdfc5b2..c3a1cf50b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,14 @@ # changelog +## Version 7.0.0 +- Updated code to ESM. +- Introduced new exports model. +- Fixed typing errors. +- Added missing types. +- Removed typing duplication in codebase. +- Native code is now generated directly by the default node-gyp rebuild. +- GitHub actions now test all available Windows, macOS, and Linux environments. + ## Version 6.6.0 - update gcc flag to enable C++ 17 - fix code to support latest onpenCV version up to 4.9 diff --git a/package.json b/package.json index 8ceb9f582..c8038a82f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@u4/opencv4nodejs", - "version": "7.0.0-alpha-7", + "version": "7.0.0", "description": "Asynchronous OpenCV 3.x / 4.x nodejs bindings with JavaScript and TypeScript API.", "keywords": [ "opencv", @@ -75,7 +75,7 @@ "nan": "^2.19.0", "node-gyp": "^10.1.0", "picocolors": "^1.0.0", - "typescript-eslint": "^7.7.1" + "typescript-eslint": "^7.8.0" }, "devDependencies": { "@eslint/js": "^9.1.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2d85c8c82..759f8c865 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -24,8 +24,8 @@ dependencies: specifier: ^1.0.0 version: 1.0.0 typescript-eslint: - specifier: ^7.7.1 - version: 7.7.1(eslint@9.1.1)(typescript@5.4.5) + specifier: ^7.8.0 + version: 7.8.0(eslint@9.1.1)(typescript@5.4.5) devDependencies: '@eslint/js': @@ -213,8 +213,8 @@ packages: resolution: {integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==} dev: false - /@typescript-eslint/eslint-plugin@7.7.1(@typescript-eslint/parser@7.7.1)(eslint@9.1.1)(typescript@5.4.5): - resolution: {integrity: sha512-KwfdWXJBOviaBVhxO3p5TJiLpNuh2iyXyjmWN0f1nU87pwyvfS0EmjC6ukQVYVFJd/K1+0NWGPDXiyEyQorn0Q==} + /@typescript-eslint/eslint-plugin@7.8.0(@typescript-eslint/parser@7.8.0)(eslint@9.1.1)(typescript@5.4.5): + resolution: {integrity: sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: '@typescript-eslint/parser': ^7.0.0 @@ -225,11 +225,11 @@ packages: optional: true dependencies: '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.7.1 - '@typescript-eslint/type-utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.1 + '@typescript-eslint/parser': 7.8.0(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/type-utils': 7.8.0(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 eslint: 9.1.1 graphemer: 1.4.0 @@ -242,8 +242,8 @@ packages: - supports-color dev: false - /@typescript-eslint/parser@7.7.1(eslint@9.1.1)(typescript@5.4.5): - resolution: {integrity: sha512-vmPzBOOtz48F6JAGVS/kZYk4EkXao6iGrD838sp1w3NQQC0W8ry/q641KU4PrG7AKNAf56NOcR8GOpH8l9FPCw==} + /@typescript-eslint/parser@7.8.0(eslint@9.1.1)(typescript@5.4.5): + resolution: {integrity: sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -252,10 +252,10 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/scope-manager': 7.7.1 - '@typescript-eslint/types': 7.7.1 - '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.7.1 + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 eslint: 9.1.1 typescript: 5.4.5 @@ -263,16 +263,16 @@ packages: - supports-color dev: false - /@typescript-eslint/scope-manager@7.7.1: - resolution: {integrity: sha512-PytBif2SF+9SpEUKynYn5g1RHFddJUcyynGpztX3l/ik7KmZEv19WCMhUBkHXPU9es/VWGD3/zg3wg90+Dh2rA==} + /@typescript-eslint/scope-manager@7.8.0: + resolution: {integrity: sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.7.1 - '@typescript-eslint/visitor-keys': 7.7.1 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 dev: false - /@typescript-eslint/type-utils@7.7.1(eslint@9.1.1)(typescript@5.4.5): - resolution: {integrity: sha512-ZksJLW3WF7o75zaBPScdW1Gbkwhd/lyeXGf1kQCxJaOeITscoSl0MjynVvCzuV5boUz/3fOI06Lz8La55mu29Q==} + /@typescript-eslint/type-utils@7.8.0(eslint@9.1.1)(typescript@5.4.5): + resolution: {integrity: sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -281,8 +281,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@9.1.1)(typescript@5.4.5) debug: 4.3.4 eslint: 9.1.1 ts-api-utils: 1.3.0(typescript@5.4.5) @@ -291,13 +291,13 @@ packages: - supports-color dev: false - /@typescript-eslint/types@7.7.1: - resolution: {integrity: sha512-AmPmnGW1ZLTpWa+/2omPrPfR7BcbUU4oha5VIbSbS1a1Tv966bklvLNXxp3mrbc+P2j4MNOTfDffNsk4o0c6/w==} + /@typescript-eslint/types@7.8.0: + resolution: {integrity: sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==} engines: {node: ^18.18.0 || >=20.0.0} dev: false - /@typescript-eslint/typescript-estree@7.7.1(typescript@5.4.5): - resolution: {integrity: sha512-CXe0JHCXru8Fa36dteXqmH2YxngKJjkQLjxzoj6LYwzZ7qZvgsLSc+eqItCrqIop8Vl2UKoAi0StVWu97FQZIQ==} + /@typescript-eslint/typescript-estree@7.8.0(typescript@5.4.5): + resolution: {integrity: sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: typescript: '*' @@ -305,8 +305,8 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/types': 7.7.1 - '@typescript-eslint/visitor-keys': 7.7.1 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/visitor-keys': 7.8.0 debug: 4.3.4 globby: 11.1.0 is-glob: 4.0.3 @@ -318,8 +318,8 @@ packages: - supports-color dev: false - /@typescript-eslint/utils@7.7.1(eslint@9.1.1)(typescript@5.4.5): - resolution: {integrity: sha512-QUvBxPEaBXf41ZBbaidKICgVL8Hin0p6prQDu6bbetWo39BKbWJxRsErOzMNT1rXvTll+J7ChrbmMCXM9rsvOQ==} + /@typescript-eslint/utils@7.8.0(eslint@9.1.1)(typescript@5.4.5): + resolution: {integrity: sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -327,9 +327,9 @@ packages: '@eslint-community/eslint-utils': 4.4.0(eslint@9.1.1) '@types/json-schema': 7.0.15 '@types/semver': 7.5.8 - '@typescript-eslint/scope-manager': 7.7.1 - '@typescript-eslint/types': 7.7.1 - '@typescript-eslint/typescript-estree': 7.7.1(typescript@5.4.5) + '@typescript-eslint/scope-manager': 7.8.0 + '@typescript-eslint/types': 7.8.0 + '@typescript-eslint/typescript-estree': 7.8.0(typescript@5.4.5) eslint: 9.1.1 semver: 7.6.0 transitivePeerDependencies: @@ -337,11 +337,11 @@ packages: - typescript dev: false - /@typescript-eslint/visitor-keys@7.7.1: - resolution: {integrity: sha512-gBL3Eq25uADw1LQ9kVpf3hRM+DWzs0uZknHYK3hq4jcTPqVCClHGDnB6UUUV2SFeBeA4KWHWbbLqmbGcZ4FYbw==} + /@typescript-eslint/visitor-keys@7.8.0: + resolution: {integrity: sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==} engines: {node: ^18.18.0 || >=20.0.0} dependencies: - '@typescript-eslint/types': 7.7.1 + '@typescript-eslint/types': 7.8.0 eslint-visitor-keys: 3.4.3 dev: false @@ -1628,8 +1628,8 @@ packages: prelude-ls: 1.2.1 dev: false - /typescript-eslint@7.7.1(eslint@9.1.1)(typescript@5.4.5): - resolution: {integrity: sha512-ykEBfa3xx3odjZy6GRED4SCPrjo0rgHwstLlEgLX4EMEuv7QeIDSmfV+S6Kk+XkbsYn4BDEcPvsci1X26lRpMQ==} + /typescript-eslint@7.8.0(eslint@9.1.1)(typescript@5.4.5): + resolution: {integrity: sha512-sheFG+/D8N/L7gC3WT0Q8sB97Nm573Yfr+vZFzl/4nBdYcmviBPtwGSX9TJ7wpVg28ocerKVOt+k2eGmHzcgVA==} engines: {node: ^18.18.0 || >=20.0.0} peerDependencies: eslint: ^8.56.0 @@ -1638,9 +1638,9 @@ packages: typescript: optional: true dependencies: - '@typescript-eslint/eslint-plugin': 7.7.1(@typescript-eslint/parser@7.7.1)(eslint@9.1.1)(typescript@5.4.5) - '@typescript-eslint/parser': 7.7.1(eslint@9.1.1)(typescript@5.4.5) - '@typescript-eslint/utils': 7.7.1(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/eslint-plugin': 7.8.0(@typescript-eslint/parser@7.8.0)(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/parser': 7.8.0(eslint@9.1.1)(typescript@5.4.5) + '@typescript-eslint/utils': 7.8.0(eslint@9.1.1)(typescript@5.4.5) eslint: 9.1.1 typescript: 5.4.5 transitivePeerDependencies: From 2e703f60361b352c82ea5f16133b60d3a1037faf Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 19:44:16 +0200 Subject: [PATCH 49/50] use @u4/opencv-build@1.0.0 --- package.json | 2 +- pnpm-lock.yaml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index c8038a82f..c7b4fd166 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "publish-next": "npm publish --dry-run --tag next" }, "dependencies": { - "@u4/opencv-build": "1.0.0-alpha2", + "@u4/opencv-build": "1.0.0", "eslint": "^9.1.1", "glob": "^10.3.12", "nan": "^2.19.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 759f8c865..ea6bc557f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,8 +6,8 @@ settings: dependencies: '@u4/opencv-build': - specifier: 1.0.0-alpha2 - version: 1.0.0-alpha2 + specifier: 1.0.0 + version: 1.0.0 eslint: specifier: ^9.1.1 version: 9.1.1 @@ -345,8 +345,8 @@ packages: eslint-visitor-keys: 3.4.3 dev: false - /@u4/opencv-build@1.0.0-alpha2: - resolution: {integrity: sha512-GhLSQZvui/xK8AtztUKd/wq6o0P2e0/NoqC6k6yFBbhd/0Pzi6rQaQ3877ioB7/KLd4x6JXrcaOBdYc6b0GzPA==} + /@u4/opencv-build@1.0.0: + resolution: {integrity: sha512-3/sBGebF0/UtQCq6YjCMhNSIS7tBQoqIBEFcgrl4wlk4g4rQg51ko0n31Lk5EYY25NXL0rKpyh3c8exH6wvHkQ==} hasBin: true dependencies: '@deno/shim-deno': 0.19.1 From 6ac85eda9d1e73526f4186549ed8453d4dc82879 Mon Sep 17 00:00:00 2001 From: urielch Date: Tue, 30 Apr 2024 20:40:57 +0200 Subject: [PATCH 50/50] update Readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 41cab4836..eb35d7dfa 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,8 @@ Opencv4nodejs can be linked to a prebuild openCV 3 or 4. or can build its own openCV using [@u4/opencv-build](https://www.npmjs.com/package/@u4/opencv-build), In this case, you have to choose which version you want to link. +> Since version 7, you should be able to use this module directly without any configuration if you have OpenCV installed from your package manager (Chocolatey / Brew / apt). + ### To use your OWN openCV build **3 way to use your own openCV (Without automatic building)** @@ -54,7 +56,7 @@ OPENCV_BUILD_ROOT=~/opencv #### 1) Environment variable Define environment variable: -- `OPENCV4NODEJS_AUTOBUILD_OPENCV_VERSION`="4.6.0" +- `OPENCV4NODEJS_AUTOBUILD_OPENCV_VERSION`="4.9.0" #### 2) package.json Define an opencv4nodejs section in your package.json like: