🐳 Dockerizing this service

This commit is contained in:
2021-08-28 13:03:20 -07:00
parent bf701d8838
commit 7e4d4a2157
8 changed files with 148 additions and 231 deletions

6
.dockerignore Normal file
View File

@@ -0,0 +1,6 @@
node_modules
npm-debug.log
Dockerfile
.dockerignore
.git
.gitignore

39
Dockerfile Normal file
View File

@@ -0,0 +1,39 @@
FROM node:buster-slim
# Show all node logs
ENV NPM_CONFIG_LOGLEVEL warn
ENV MONGO_URI=mongodb://localhost:27017/threetwo
RUN mkdir /threetwo-import-service
WORKDIR /threetwo-import-service
RUN apt-get update \
&& apt-get upgrade -y \
&& apt-get install -y \
bash git openssh-server \
ca-certificates \
gcc \
libgl1-mesa-glx \
python3 python3-pip \
qtbase5-dev \
wget \
xdg-utils \
xz-utils \
libvips-dev build-essential
RUN wget -nv -O- https://download.calibre-ebook.com/linux-installer.sh | sh /dev/stdin install_dir=/opt isolated=y && \
rm -rf /tmp/calibre-installer-cache
COPY package.json package-lock.json ./
COPY moleculer.config.ts ./
COPY tsconfig.json ./
RUN npm cache verify
# Install Dependncies
RUN npm install -g typescript ts-node
RUN npm install
COPY . .
EXPOSE 3000
CMD npm run dev

View File

@@ -1,40 +1,14 @@
[![Moleculer](https://badgen.net/badge/Powered%20by/Moleculer/0e83cd)](https://moleculer.services)
# threetwo-import-service # threetwo-import-service
This is a [Moleculer](https://moleculer.services/)-based microservices project. Generated with the [Moleculer CLI](https://moleculer.services/docs/0.14/moleculer-cli.html).
## Usage This microservice houses endpoints for the following functions:
Start the project with `npm run dev` command.
After starting, open the http://localhost:3000/ URL in your browser.
On the welcome page you can test the generated services via API Gateway and check the nodes & services.
In the terminal, try the following commands: 1. Local import of a comic library into mongo (currently supports `cbr` and `cbz` files)
- `nodes` - List all connected nodes. 2. Metadata extraction from file, `comicinfo.xml`
- `actions` - List all registered service actions. 3. Mongo comic object orchestration
- `call greeter.hello` - Call the `greeter.hello` action. 4. CRUD operations on `Comic` model
- `call greeter.welcome --name John` - Call the `greeter.welcome` action with the `name` parameter. 5. Helper utils to help with image metadata extraction, file operations and more.
- `call products.list` - List the products (call the `products.list` action).
## Docker Instructions
## Services 1. Build the image using `docker build . -t frishi/threetwo-import-service`. Give it a hot minute.
- **api**: API Gateway services 2. Run it using `docker run -it frishi/threetwo-import-service`
- **greeter**: Sample service with `hello` and `welcome` actions.
- **products**: Sample DB service. To use with MongoDB, set `MONGO_URI` environment variables and install MongoDB adapter with `npm i moleculer-db-adapter-mongo`.
## Mixins
- **db.mixin**: Database access mixin for services. Based on [moleculer-db](https://github.com/moleculerjs/moleculer-db#readme)
## Useful links
* Moleculer website: https://moleculer.services/
* Moleculer Documentation: https://moleculer.services/docs/0.14/
## NPM scripts
- `npm run dev`: Start development mode (load all services locally with hot-reload & REPL)
- `npm run start`: Start production mode (set `SERVICES` env variable to load certain services)
- `npm run cli`: Start a CLI and connect to production. Don't forget to set production namespace with `--ns` argument in script
- `npm run lint`: Run ESLint
- `npm run ci`: Run continuous test mode with watching
- `npm test`: Run tests & generate coverage report

View File

@@ -1,58 +0,0 @@
export interface IFolderResponse {
data: Array<IFolderData>;
}
export interface IExtractionOptions {
extractTarget: string;
sourceFolder: string;
targetExtractionFolder: string;
paginationOptions: IPaginationOptions;
extractionMode: string;
}
export interface IPaginationOptions {
pageLimit: number;
page: number;
}
export interface IComicVineSearchMatch {
description: string;
id: number;
volumes: string;
}
export interface IFolderData {
name: string;
extension: string;
containedIn: string;
isFile: boolean;
isLink: boolean;
}
export interface IExplodedPathResponse {
exploded: Array<string>;
fileName: string;
}
export interface IComicBookCoverMetadata {
name: string;
path: string;
containedIn: string;
fileSize: string;
imageHash: string;
dimensions: {
width: string;
height: string;
};
}
export interface IExtractedComicBookCoverFile {
name: string;
path: string;
fileSize: number;
}
export interface IExtractComicBookCoverErrorResponse {
message: string;
errorCode: string;
data: string;
}

154
package-lock.json generated
View File

@@ -34,7 +34,6 @@
"socket.io": "^4.1.1", "socket.io": "^4.1.1",
"socket.io-stream": "^0.5.3", "socket.io-stream": "^0.5.3",
"typescript": "^3.8.3", "typescript": "^3.8.3",
"unrar": "github:cnboker/node-unrar",
"xml2js": "^0.4.23" "xml2js": "^0.4.23"
}, },
"devDependencies": { "devDependencies": {
@@ -48,7 +47,7 @@
"jest": "^25.1.0", "jest": "^25.1.0",
"jest-cli": "^25.1.0", "jest-cli": "^25.1.0",
"moleculer-repl": "^0.6.2", "moleculer-repl": "^0.6.2",
"threetwo-ui-typings": "^1.0.2-0", "threetwo-ui-typings": "^1.0.3",
"ts-jest": "^25.3.0", "ts-jest": "^25.3.0",
"ts-node": "^8.8.1" "ts-node": "^8.8.1"
}, },
@@ -1248,6 +1247,21 @@
"resolved": "https://registry.npmjs.org/@root/walk/-/walk-1.1.0.tgz", "resolved": "https://registry.npmjs.org/@root/walk/-/walk-1.1.0.tgz",
"integrity": "sha512-FfXPAta9u2dBuaXhPRawBcijNC9rmKVApmbi6lIZyg36VR/7L02ytxoY5K/14PJlHqiBUoYII73cTlekdKTUOw==" "integrity": "sha512-FfXPAta9u2dBuaXhPRawBcijNC9rmKVApmbi6lIZyg36VR/7L02ytxoY5K/14PJlHqiBUoYII73cTlekdKTUOw=="
}, },
"node_modules/@seald-io/binary-search-tree": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@seald-io/binary-search-tree/-/binary-search-tree-1.0.2.tgz",
"integrity": "sha512-+pYGvPFAk7wUR+ONMOlc6A+LUN4kOCFwyPLjyaeS7wVibADPHWYJNYsNtyIAwjF1AXQkuaXElnIc4XjKt55QZA=="
},
"node_modules/@seald-io/nedb": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@seald-io/nedb/-/nedb-2.0.4.tgz",
"integrity": "sha512-QMSMJemcCIVhbcwVg/oASV74Qudl6ex6c1U8IwckxIvFub1TwRQcchMva30qBUIrNGrLgKXM3c+lgwfdlGa55w==",
"dependencies": {
"@seald-io/binary-search-tree": "^1.0.2",
"async": "0.2.10",
"localforage": "^1.9.0"
}
},
"node_modules/@sinonjs/commons": { "node_modules/@sinonjs/commons": {
"version": "1.8.3", "version": "1.8.3",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
@@ -2218,14 +2232,6 @@
"tweetnacl": "^0.14.3" "tweetnacl": "^0.14.3"
} }
}, },
"node_modules/binary-search-tree": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz",
"integrity": "sha1-fbs7IQ/coIJFDa0jNMMErzm9x4Q=",
"dependencies": {
"underscore": "~1.4.4"
}
},
"node_modules/bl": { "node_modules/bl": {
"version": "2.2.1", "version": "2.2.1",
"resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz",
@@ -7402,9 +7408,9 @@
} }
}, },
"node_modules/localforage": { "node_modules/localforage": {
"version": "1.9.0", "version": "1.10.0",
"resolved": "https://registry.npmjs.org/localforage/-/localforage-1.9.0.tgz", "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz",
"integrity": "sha512-rR1oyNrKulpe+VM9cYmcFn6tsHuokyVHFaCM3+osEmxaHTbEk8oQu6eGDfS6DQLWi/N67XRmB8ECG37OES368g==", "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==",
"dependencies": { "dependencies": {
"lie": "3.1.1" "lie": "3.1.1"
} }
@@ -7816,6 +7822,7 @@
"version": "0.5.5", "version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"dependencies": { "dependencies": {
"minimist": "^1.2.5" "minimist": "^1.2.5"
}, },
@@ -7949,14 +7956,14 @@
} }
}, },
"node_modules/moleculer-db": { "node_modules/moleculer-db": {
"version": "0.8.14", "version": "0.8.15",
"resolved": "https://registry.npmjs.org/moleculer-db/-/moleculer-db-0.8.14.tgz", "resolved": "https://registry.npmjs.org/moleculer-db/-/moleculer-db-0.8.15.tgz",
"integrity": "sha512-nsODdYa/UwQ2weFbFsbfHvLuyqDCUWaVwDf7WOYYs/m4VhwC6g5sPiLBWjqIDJjLQA+Ftkbxh+4zditmherneQ==", "integrity": "sha512-OYc0yts6jPdemzZ/lvIZENDL1MhboRDGTZe8d/Vj8r9bEE7M0rFC3ZDei+F2Qremb8xvUUBixWJeVC+tpjsfOA==",
"dependencies": { "dependencies": {
"@seald-io/nedb": "^2.0.3",
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
"flat": "^5.0.2", "flat": "^5.0.2",
"lodash": "^4.17.21", "lodash": "^4.17.21"
"nedb": "^1.8.0"
}, },
"engines": { "engines": {
"node": ">= 8.x.x" "node": ">= 8.x.x"
@@ -8269,18 +8276,6 @@
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true "dev": true
}, },
"node_modules/nedb": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/nedb/-/nedb-1.8.0.tgz",
"integrity": "sha1-DjUCzYLABNU1WkPJ5VV3vXvZHYg=",
"dependencies": {
"async": "0.2.10",
"binary-search-tree": "0.2.5",
"localforage": "^1.3.0",
"mkdirp": "~0.5.1",
"underscore": "~1.4.4"
}
},
"node_modules/negotiator": { "node_modules/negotiator": {
"version": "0.6.2", "version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
@@ -8954,9 +8949,9 @@
} }
}, },
"node_modules/path-parse": { "node_modules/path-parse": {
"version": "1.0.6", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true "dev": true
}, },
"node_modules/path-to-regexp": { "node_modules/path-to-regexp": {
@@ -9888,6 +9883,7 @@
"version": "4.1.0", "version": "4.1.0",
"resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz",
"integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==",
"deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"@cnakazawa/watch": "^1.0.3", "@cnakazawa/watch": "^1.0.3",
@@ -11291,9 +11287,9 @@
"dev": true "dev": true
}, },
"node_modules/threetwo-ui-typings": { "node_modules/threetwo-ui-typings": {
"version": "1.0.2", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/threetwo-ui-typings/-/threetwo-ui-typings-1.0.2.tgz", "resolved": "https://registry.npmjs.org/threetwo-ui-typings/-/threetwo-ui-typings-1.0.3.tgz",
"integrity": "sha512-sK5cb/fApFKseQNgcnGmAnPNxDDXT+dQ/Blei1N4q0mduO3kZfJTnlMYaXjO4FDXLP+jkiwsv0bf7PXm0DgF7g==", "integrity": "sha512-whyTLLMsgDIR6jkrJrz58qiMG8mYXF5V8akBI0okCmsE2djsnVPaihvXcL8bZWH4/HktqC86iJs9F9oYaG/4Ig==",
"dev": true, "dev": true,
"dependencies": { "dependencies": {
"typescript": "^4.3.2" "typescript": "^4.3.2"
@@ -11687,11 +11683,6 @@
"url": "https://github.com/sponsors/ljharb" "url": "https://github.com/sponsors/ljharb"
} }
}, },
"node_modules/underscore": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
"integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
},
"node_modules/union-value": { "node_modules/union-value": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
@@ -11732,14 +11723,6 @@
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/unrar": {
"version": "0.1.7",
"resolved": "git+ssh://git@github.com/cnboker/node-unrar.git#5f07cf1672bea8ee23cf01d7c9a5f3451d687c09",
"license": "MIT",
"engines": {
"node": ">= 0.10.21"
}
},
"node_modules/unset-value": { "node_modules/unset-value": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",
@@ -13238,6 +13221,21 @@
"resolved": "https://registry.npmjs.org/@root/walk/-/walk-1.1.0.tgz", "resolved": "https://registry.npmjs.org/@root/walk/-/walk-1.1.0.tgz",
"integrity": "sha512-FfXPAta9u2dBuaXhPRawBcijNC9rmKVApmbi6lIZyg36VR/7L02ytxoY5K/14PJlHqiBUoYII73cTlekdKTUOw==" "integrity": "sha512-FfXPAta9u2dBuaXhPRawBcijNC9rmKVApmbi6lIZyg36VR/7L02ytxoY5K/14PJlHqiBUoYII73cTlekdKTUOw=="
}, },
"@seald-io/binary-search-tree": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/@seald-io/binary-search-tree/-/binary-search-tree-1.0.2.tgz",
"integrity": "sha512-+pYGvPFAk7wUR+ONMOlc6A+LUN4kOCFwyPLjyaeS7wVibADPHWYJNYsNtyIAwjF1AXQkuaXElnIc4XjKt55QZA=="
},
"@seald-io/nedb": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/@seald-io/nedb/-/nedb-2.0.4.tgz",
"integrity": "sha512-QMSMJemcCIVhbcwVg/oASV74Qudl6ex6c1U8IwckxIvFub1TwRQcchMva30qBUIrNGrLgKXM3c+lgwfdlGa55w==",
"requires": {
"@seald-io/binary-search-tree": "^1.0.2",
"async": "0.2.10",
"localforage": "^1.9.0"
}
},
"@sinonjs/commons": { "@sinonjs/commons": {
"version": "1.8.3", "version": "1.8.3",
"resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz",
@@ -14003,14 +14001,6 @@
"tweetnacl": "^0.14.3" "tweetnacl": "^0.14.3"
} }
}, },
"binary-search-tree": {
"version": "0.2.5",
"resolved": "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz",
"integrity": "sha1-fbs7IQ/coIJFDa0jNMMErzm9x4Q=",
"requires": {
"underscore": "~1.4.4"
}
},
"bl": { "bl": {
"version": "2.2.1", "version": "2.2.1",
"resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz",
@@ -18066,9 +18056,9 @@
} }
}, },
"localforage": { "localforage": {
"version": "1.9.0", "version": "1.10.0",
"resolved": "https://registry.npmjs.org/localforage/-/localforage-1.9.0.tgz", "resolved": "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz",
"integrity": "sha512-rR1oyNrKulpe+VM9cYmcFn6tsHuokyVHFaCM3+osEmxaHTbEk8oQu6eGDfS6DQLWi/N67XRmB8ECG37OES368g==", "integrity": "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg==",
"requires": { "requires": {
"lie": "3.1.1" "lie": "3.1.1"
} }
@@ -18399,6 +18389,7 @@
"version": "0.5.5", "version": "0.5.5",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
"integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
"dev": true,
"requires": { "requires": {
"minimist": "^1.2.5" "minimist": "^1.2.5"
} }
@@ -18428,14 +18419,14 @@
} }
}, },
"moleculer-db": { "moleculer-db": {
"version": "0.8.14", "version": "0.8.15",
"resolved": "https://registry.npmjs.org/moleculer-db/-/moleculer-db-0.8.14.tgz", "resolved": "https://registry.npmjs.org/moleculer-db/-/moleculer-db-0.8.15.tgz",
"integrity": "sha512-nsODdYa/UwQ2weFbFsbfHvLuyqDCUWaVwDf7WOYYs/m4VhwC6g5sPiLBWjqIDJjLQA+Ftkbxh+4zditmherneQ==", "integrity": "sha512-OYc0yts6jPdemzZ/lvIZENDL1MhboRDGTZe8d/Vj8r9bEE7M0rFC3ZDei+F2Qremb8xvUUBixWJeVC+tpjsfOA==",
"requires": { "requires": {
"@seald-io/nedb": "^2.0.3",
"bluebird": "^3.7.2", "bluebird": "^3.7.2",
"flat": "^5.0.2", "flat": "^5.0.2",
"lodash": "^4.17.21", "lodash": "^4.17.21"
"nedb": "^1.8.0"
} }
}, },
"moleculer-db-adapter-mongo": { "moleculer-db-adapter-mongo": {
@@ -18650,18 +18641,6 @@
"integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=",
"dev": true "dev": true
}, },
"nedb": {
"version": "1.8.0",
"resolved": "https://registry.npmjs.org/nedb/-/nedb-1.8.0.tgz",
"integrity": "sha1-DjUCzYLABNU1WkPJ5VV3vXvZHYg=",
"requires": {
"async": "0.2.10",
"binary-search-tree": "0.2.5",
"localforage": "^1.3.0",
"mkdirp": "~0.5.1",
"underscore": "~1.4.4"
}
},
"negotiator": { "negotiator": {
"version": "0.6.2", "version": "0.6.2",
"resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz",
@@ -19186,9 +19165,9 @@
"dev": true "dev": true
}, },
"path-parse": { "path-parse": {
"version": "1.0.6", "version": "1.0.7",
"resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
"integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
"dev": true "dev": true
}, },
"path-to-regexp": { "path-to-regexp": {
@@ -21059,9 +21038,9 @@
"dev": true "dev": true
}, },
"threetwo-ui-typings": { "threetwo-ui-typings": {
"version": "1.0.2", "version": "1.0.3",
"resolved": "https://registry.npmjs.org/threetwo-ui-typings/-/threetwo-ui-typings-1.0.2.tgz", "resolved": "https://registry.npmjs.org/threetwo-ui-typings/-/threetwo-ui-typings-1.0.3.tgz",
"integrity": "sha512-sK5cb/fApFKseQNgcnGmAnPNxDDXT+dQ/Blei1N4q0mduO3kZfJTnlMYaXjO4FDXLP+jkiwsv0bf7PXm0DgF7g==", "integrity": "sha512-whyTLLMsgDIR6jkrJrz58qiMG8mYXF5V8akBI0okCmsE2djsnVPaihvXcL8bZWH4/HktqC86iJs9F9oYaG/4Ig==",
"dev": true, "dev": true,
"requires": { "requires": {
"typescript": "^4.3.2" "typescript": "^4.3.2"
@@ -21369,11 +21348,6 @@
"which-boxed-primitive": "^1.0.2" "which-boxed-primitive": "^1.0.2"
} }
}, },
"underscore": {
"version": "1.4.4",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz",
"integrity": "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
},
"union-value": { "union-value": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz",
@@ -21404,10 +21378,6 @@
"resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz",
"integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=" "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw="
}, },
"unrar": {
"version": "git+ssh://git@github.com/cnboker/node-unrar.git#5f07cf1672bea8ee23cf01d7c9a5f3451d687c09",
"from": "unrar@github:cnboker/node-unrar"
},
"unset-value": { "unset-value": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz",

View File

@@ -27,7 +27,7 @@
"jest": "^25.1.0", "jest": "^25.1.0",
"jest-cli": "^25.1.0", "jest-cli": "^25.1.0",
"moleculer-repl": "^0.6.2", "moleculer-repl": "^0.6.2",
"threetwo-ui-typings": "^1.0.2-0", "threetwo-ui-typings": "^1.0.3",
"ts-jest": "^25.3.0", "ts-jest": "^25.3.0",
"ts-node": "^8.8.1" "ts-node": "^8.8.1"
}, },
@@ -59,7 +59,6 @@
"socket.io": "^4.1.1", "socket.io": "^4.1.1",
"socket.io-stream": "^0.5.3", "socket.io-stream": "^0.5.3",
"typescript": "^3.8.3", "typescript": "^3.8.3",
"unrar": "github:cnboker/node-unrar",
"xml2js": "^0.4.23" "xml2js": "^0.4.23"
}, },
"engines": { "engines": {

View File

@@ -7,7 +7,7 @@ import {
IExtractedComicBookCoverFile, IExtractedComicBookCoverFile,
IExtractionOptions, IExtractionOptions,
IFolderData, IFolderData,
} from "../interfaces/folder.interface"; } from "threetwo-ui-typings";
import { logger } from "./logger.utils"; import { logger } from "./logger.utils";
import { includes, remove, indexOf } from "lodash"; import { includes, remove, indexOf } from "lodash";

View File

@@ -555,6 +555,20 @@
"resolved" "https://registry.npmjs.org/@root/walk/-/walk-1.1.0.tgz" "resolved" "https://registry.npmjs.org/@root/walk/-/walk-1.1.0.tgz"
"version" "1.1.0" "version" "1.1.0"
"@seald-io/binary-search-tree@^1.0.2":
"integrity" "sha512-+pYGvPFAk7wUR+ONMOlc6A+LUN4kOCFwyPLjyaeS7wVibADPHWYJNYsNtyIAwjF1AXQkuaXElnIc4XjKt55QZA=="
"resolved" "https://registry.npmjs.org/@seald-io/binary-search-tree/-/binary-search-tree-1.0.2.tgz"
"version" "1.0.2"
"@seald-io/nedb@^2.0.3":
"integrity" "sha512-QMSMJemcCIVhbcwVg/oASV74Qudl6ex6c1U8IwckxIvFub1TwRQcchMva30qBUIrNGrLgKXM3c+lgwfdlGa55w=="
"resolved" "https://registry.npmjs.org/@seald-io/nedb/-/nedb-2.0.4.tgz"
"version" "2.0.4"
dependencies:
"@seald-io/binary-search-tree" "^1.0.2"
"async" "0.2.10"
"localforage" "^1.9.0"
"@sinonjs/commons@^1.7.0": "@sinonjs/commons@^1.7.0":
"integrity" "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==" "integrity" "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ=="
"resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz" "resolved" "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz"
@@ -1173,13 +1187,6 @@
dependencies: dependencies:
"tweetnacl" "^0.14.3" "tweetnacl" "^0.14.3"
"binary-search-tree@0.2.5":
"integrity" "sha1-fbs7IQ/coIJFDa0jNMMErzm9x4Q="
"resolved" "https://registry.npmjs.org/binary-search-tree/-/binary-search-tree-0.2.5.tgz"
"version" "0.2.5"
dependencies:
"underscore" "~1.4.4"
"bl@^2.2.1": "bl@^2.2.1":
"integrity" "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==" "integrity" "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g=="
"resolved" "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz" "resolved" "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz"
@@ -3840,10 +3847,10 @@
"pify" "^2.0.0" "pify" "^2.0.0"
"strip-bom" "^3.0.0" "strip-bom" "^3.0.0"
"localforage@^1.3.0": "localforage@^1.9.0":
"integrity" "sha512-rR1oyNrKulpe+VM9cYmcFn6tsHuokyVHFaCM3+osEmxaHTbEk8oQu6eGDfS6DQLWi/N67XRmB8ECG37OES368g==" "integrity" "sha512-14/H1aX7hzBBmmh7sGPd+AOMkkIrHM3Z1PAyGgZigA1H1p5O5ANnMyWzvpAETtG68/dC4pC0ncy3+PPGzXZHPg=="
"resolved" "https://registry.npmjs.org/localforage/-/localforage-1.9.0.tgz" "resolved" "https://registry.npmjs.org/localforage/-/localforage-1.10.0.tgz"
"version" "1.9.0" "version" "1.10.0"
dependencies: dependencies:
"lie" "3.1.1" "lie" "3.1.1"
@@ -4082,7 +4089,7 @@
"resolved" "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz" "resolved" "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz"
"version" "0.5.3" "version" "0.5.3"
"mkdirp@^0.5.1", "mkdirp@~0.5.1", "mkdirp@0.x": "mkdirp@^0.5.1", "mkdirp@0.x":
"integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==" "integrity" "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ=="
"resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz" "resolved" "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz"
"version" "0.5.5" "version" "0.5.5"
@@ -4107,14 +4114,14 @@
"lodash" "^4.17.20" "lodash" "^4.17.20"
"moleculer-db@^0.8.13": "moleculer-db@^0.8.13":
"integrity" "sha512-nsODdYa/UwQ2weFbFsbfHvLuyqDCUWaVwDf7WOYYs/m4VhwC6g5sPiLBWjqIDJjLQA+Ftkbxh+4zditmherneQ==" "integrity" "sha512-OYc0yts6jPdemzZ/lvIZENDL1MhboRDGTZe8d/Vj8r9bEE7M0rFC3ZDei+F2Qremb8xvUUBixWJeVC+tpjsfOA=="
"resolved" "https://registry.npmjs.org/moleculer-db/-/moleculer-db-0.8.14.tgz" "resolved" "https://registry.npmjs.org/moleculer-db/-/moleculer-db-0.8.15.tgz"
"version" "0.8.14" "version" "0.8.15"
dependencies: dependencies:
"@seald-io/nedb" "^2.0.3"
"bluebird" "^3.7.2" "bluebird" "^3.7.2"
"flat" "^5.0.2" "flat" "^5.0.2"
"lodash" "^4.17.21" "lodash" "^4.17.21"
"nedb" "^1.8.0"
"moleculer-repl@^0.6.2": "moleculer-repl@^0.6.2":
"integrity" "sha512-SxMwbWUzAkNZuMn3IFPUkl7gD1YOpKxT4ljBsz1ddafYd+iYi3ISxLuYjZAlz8dEHNbuTgkvMYyH4pzgkz2BGw==" "integrity" "sha512-SxMwbWUzAkNZuMn3IFPUkl7gD1YOpKxT4ljBsz1ddafYd+iYi3ISxLuYjZAlz8dEHNbuTgkvMYyH4pzgkz2BGw=="
@@ -4284,17 +4291,6 @@
"resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz" "resolved" "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
"version" "1.4.0" "version" "1.4.0"
"nedb@^1.8.0":
"integrity" "sha1-DjUCzYLABNU1WkPJ5VV3vXvZHYg="
"resolved" "https://registry.npmjs.org/nedb/-/nedb-1.8.0.tgz"
"version" "1.8.0"
dependencies:
"async" "0.2.10"
"binary-search-tree" "0.2.5"
"localforage" "^1.3.0"
"mkdirp" "~0.5.1"
"underscore" "~1.4.4"
"negotiator@0.6.2": "negotiator@0.6.2":
"integrity" "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" "integrity" "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw=="
"resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz" "resolved" "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz"
@@ -4702,9 +4698,9 @@
"version" "3.1.1" "version" "3.1.1"
"path-parse@^1.0.6": "path-parse@^1.0.6":
"integrity" "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==" "integrity" "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
"resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz" "resolved" "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
"version" "1.0.6" "version" "1.0.7"
"path-to-regexp@^3.1.0": "path-to-regexp@^3.1.0":
"integrity" "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA==" "integrity" "sha512-jczvQbCUS7XmS7o+y1aEO9OBVFeZBQ1MDSEqmO7xSoPgOPoowY/SxLpZ6Vh97/8qHZOteiCKb7gkG9gA2ZUxJA=="
@@ -5896,10 +5892,10 @@
"resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz" "resolved" "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
"version" "0.2.0" "version" "0.2.0"
"threetwo-ui-typings@^1.0.2-0": "threetwo-ui-typings@^1.0.3":
"integrity" "sha512-sK5cb/fApFKseQNgcnGmAnPNxDDXT+dQ/Blei1N4q0mduO3kZfJTnlMYaXjO4FDXLP+jkiwsv0bf7PXm0DgF7g==" "integrity" "sha512-whyTLLMsgDIR6jkrJrz58qiMG8mYXF5V8akBI0okCmsE2djsnVPaihvXcL8bZWH4/HktqC86iJs9F9oYaG/4Ig=="
"resolved" "https://registry.npmjs.org/threetwo-ui-typings/-/threetwo-ui-typings-1.0.2.tgz" "resolved" "https://registry.npmjs.org/threetwo-ui-typings/-/threetwo-ui-typings-1.0.3.tgz"
"version" "1.0.2" "version" "1.0.3"
dependencies: dependencies:
"typescript" "^4.3.2" "typescript" "^4.3.2"
@@ -6162,11 +6158,6 @@
"has-symbols" "^1.0.2" "has-symbols" "^1.0.2"
"which-boxed-primitive" "^1.0.2" "which-boxed-primitive" "^1.0.2"
"underscore@~1.4.4":
"integrity" "sha1-YaajIBBiKvoHljvzJSA88SI51gQ="
"resolved" "https://registry.npmjs.org/underscore/-/underscore-1.4.4.tgz"
"version" "1.4.4"
"union-value@^1.0.0": "union-value@^1.0.0":
"integrity" "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==" "integrity" "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg=="
"resolved" "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz" "resolved" "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz"
@@ -6187,10 +6178,6 @@
"resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz" "resolved" "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
"version" "1.0.0" "version" "1.0.0"
"unrar@github:cnboker/node-unrar":
"resolved" "git+ssh://git@github.com/cnboker/node-unrar.git#5f07cf1672bea8ee23cf01d7c9a5f3451d687c09"
"version" "0.1.7"
"unset-value@^1.0.0": "unset-value@^1.0.0":
"integrity" "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=" "integrity" "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk="
"resolved" "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz" "resolved" "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz"