media : background | watermark

This commit is contained in:
babayaga 2025-08-11 12:25:45 +02:00
parent e7faf3ea02
commit 207cb53f6f
202 changed files with 21279 additions and 815 deletions

6
packages/bot/.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
/node_modules
/coverage
*.log
.DS_Store
clear_history.sh
./tests/assets

3
packages/bot/.npmignore Normal file
View File

@ -0,0 +1,3 @@
docs
scripts
tests

365
packages/bot/.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,365 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Test Images : JPG - Resize - Percent",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"resize",
"--src='./tests/images/in/*.+(jpg)'",
"--dst='./tests/images/out/'",
"--percent=80",
"--debug=true"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
]
},
{
"type": "node",
"request": "launch",
"name": "Test Images : ARW - Resize",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"resize",
"--src='./tests/images/in/*.+(arw)'",
"--dst='./tests/images/out/'",
"--width=2000",
"--debug=true"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
]
},
{
"type": "node",
"request": "launch",
"name": "Test Images : JPG - Resize Inplace",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"resize",
"--src='./tests/images/in/*.+(jpg)'",
"--width=2000",
"--debug=true"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"outputCapture": "std"
},
{
"type": "node",
"request": "launch",
"name": "Test Images Glob : Resize Inplace ",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"resize",
"--alt=true",
"--src='./tests/images/in/*.+(jpg)'",
"--dst='./tests/images/in2/*.+(jpg)'",
"--width=2000",
"--minSize=1670016",
"--minWidth=1900",
"--debug=true"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"outputCapture": "std"
},
{
"type": "node",
"request": "launch",
"name": "Test Images : JPG - Resize - Percent - WebP",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"resize",
"--src='./tests/images/in/**/*.+(jpg)'",
"--dst='./tests/images/out/*.+(webp)'",
"--percent=80",
"--debug=true"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"outputCapture": "std"
},
{
"type": "node",
"request": "launch",
"name": "Test Images Convert : WebP -> Jpg",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"convert",
"--src='./tests/images/in_webp/*.+(webp)'",
"--dst='./tests/images/out_jpg/*.+(jpg)'",
"--debug=true"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
]
},
{
"type": "node",
"request": "launch",
"name": "Test Images Convert - Single : WebP -> Jpg",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"convert",
"--src='./tests/images/in_webp/DSC01177.webp'",
"--dst='./tests/images/out_jpg/DSC01177.jpg'",
"--debug=true"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
]
},
{
"type": "node",
"request": "launch",
"name": "Test Images Convert - Single - Expr : WebP -> Jpg",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"convert",
"--src='./tests/images/in_webp/DSC01177.webp'",
"--dst='${SRC_DIR}/${SRC_NAME}.+(jpg|png)'",
"--debug=true"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
]
},
{
"type": "node",
"request": "launch",
"name": "Test Images Resize - Alt - Single",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"resize",
"--alt=true",
"--percent=80",
"--src='./tests/images/in/DSC01177.JPG'",
"--dst='&{SRC_DIR}/&{SRC_NAME}_medium.+(jpg)'",
"--logLevel=debug"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
]
},
{
"type": "node",
"request": "launch",
"name": "Test Images Resize All Square - Glob",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"resize",
"--width=1000",
"--height=1000",
"--fit=contain",
"--src='./tests/images/in/**/*.+(jpg)'",
"--dst='./tests/images/out_square/.+(jpg|webp)'",
"--logLevel=debug"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"outputCapture": "std"
},
{
"type": "node",
"request": "launch",
"name": "Test Images Resize All Square - Default",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"resize",
"--width=1000",
"--height=1000",
"--fit=contain",
"--src='./tests/images/in/**/*.+(jpg)'",
"--_dst='${SRC_DIR}/${SRC_NAME}-thumb.webp'",
"--dst='./tests/images/out_square/${SRC_NAME}-thumb.png'",
"--logLevel=debug"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"outputCapture": "std"
},
{
"type": "node",
"request": "launch",
"name": "Test File with Glob",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"resize",
"--width=1000",
"--fit=contain",
"--alt=true",
"--src='./tests/images/in/DSC01301.JPG/**/*.+(&{IMAGES})'",
"--debug=true"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
]
},
{
"type": "node",
"request": "launch",
"name": "Test Resize Bazar",
"skipFiles": [
"<node_internals>/**"
],
"program2": "${workspaceFolder}\\main.js",
"program": "C:\\Users\\mc007\\AppData\\Roaming\\npm\\node_modules\\@plastichub\\osr-media\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"resize",
"--minWidth=1900",
"--width=1980",
"--fit=contain",
"--src='${OSR_ROOT}/pp-bazar/${YYYY}/${MM}/**/*.+(${IMAGES})'",
"--debug=true"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"outputCapture": "std"
},
{
"type": "node",
"request": "launch",
"name": "Test Watermark",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"program2": "C:\\Users\\mc007\\AppData\\Roaming\\npm\\node_modules\\@plastichub\\osr-media\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"watermark",
"--src='./tests/images/watermark-in/**/*.+(${IMAGES})'",
"--debug=true"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"outputCapture": "std"
},
{
"type": "node",
"request": "launch",
"name": "Test Video:Convert - MP4 -> MP3",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"video",
"convert",
"--src='./tests/assets/*.+(mp4)'",
"--dst='./tests/audio/${SRC_NAME}-audio.mp3'",
"--logLevel=debug"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"outputCapture": "std"
},
{
"type": "node",
"request": "launch",
"name": "Test Video:Convert - MP4 -> JPG",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"video",
"convert",
"--src='./tests/assets/*.+(mp4)'",
"--dst='./tests/video/${SRC_NAME}/${SRC_NAME}-%03d.jpg'",
"--fps=30",
"--logLevel=debug"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"outputCapture": "std"
},
{
"type": "node",
"request": "launch",
"name": "Test Video:JPG -> MP4",
"skipFiles": [
"<node_internals>/**"
],
"program": "${workspaceFolder}\\main.js",
"preLaunchTask": "tsc: build - tsconfig.json",
"args": [
"video",
"merge",
"--src='./tests/video/tt-1/*.jpg'",
"--dst='./tests/video/out/out.mp4'",
"--interval=1",
"--logLevel=debug"
],
"outFiles": [
"${workspaceFolder}/**/*.js"
],
"outputCapture": "std"
}
]
}

8
packages/bot/.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,8 @@
{
"cmake.configureOnOpen": false,
"cSpell.words": [
"novita",
"plastichub",
"Salamand"
]
}

9
packages/bot/LICENSE Normal file
View File

@ -0,0 +1,9 @@
Copyright (c) <year> <owner> All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

71
packages/bot/README.md Normal file
View File

@ -0,0 +1,71 @@
# OSR CAD Tools
This is a CLI(CommandLineInterface) toolset to convert media files
## Requirements
1. [Node-JS](https://nodejs.org/en/download/)
2. Optional: install [Git](https://git-scm.com/downloads) (Make sure you enable Linux tools on Windows console)
## Installation
```sh
git clone https://gitlab.com/plastichub/osr/osr-media.git
cd osr-media
npm i
```
or globally (recommended)
```
npm i @plastichub/osr-media -g
```
## Usage
Open a terminal and run this:
```sh
osr-media --help
```
See more in [./docs/Examples.md](./docs/Examples.md)
### Commands - Todos - 2D/Pictures
- [ ] web formats (https://sharp.pixelplumbing.com/api-constructor)
- [ ] vector formats: pdf|svg
- [ ] meta exchange (from JSON, to Exif)
### Commands - Todos - Pixels
- [ ] RAW formats
### Commands - Video
- [ ] sub titles ?
- [ ] ffmpg
- [ ] split
- [ ] merge
- [ ] server/transcode ?
## References
- [pixelmatch](https://github.com/mapbox/pixelmatch)
- [lib content](https://git.osr-plastic.org/osr-plastic/osr-lib-content)
- [image diff](https://www.npmjs.com/package/img-diff-js)
- [ARW spec](https://github.com/WeTransfer/format_parser/blob/master/lib/parsers/arw_parser.rb)
- [ARW format notes - wiki](http://fileformats.archiveteam.org/wiki/Sony_ARW)
- [RAW View - NodeJS](https://github.com/catdad/raw-viewer/releases)
- [DCRaw - Github](https://github.com/zfedoran/dcraw.js)
- [DCRaw Vendored - NPM](https://www.npmjs.com/package/dcraw-vendored-win32)
- [Exif Data Reader](https://github.com/mattiasw/ExifReader)
-
## AI Tools
- [Object Replace](https://novita.ai/product/replace-object)
## Video
- [https://github.com/fluent-ffmpeg/node-fluent-ffmpeg.git](https://github.com/fluent-ffmpeg/node-fluent-ffmpeg.git)

2
packages/bot/commands/audio.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export declare const defaultOptions: (yargs: CLI.Argv) => any;
export declare const register: (cli: CLI.Argv) => any;

View File

@ -0,0 +1,36 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.register = exports.defaultOptions = void 0;
const __1 = require("../");
const convert_1 = require("../lib/media/audio/convert");
const _cli_1 = require("../_cli");
const defaultOptions = (yargs) => {
return yargs.option('src', {
describe: 'FILE|FOLDER|GLOB',
demandOption: true
}).option('dst', {
describe: 'FILE|FOLDER|GLOB'
}).option('debug', {
default: false,
describe: 'Enable internal debug messages',
type: 'boolean'
}).option('alt', {
default: false,
describe: 'Use alternate tokenizer, & instead of $',
type: 'boolean'
});
};
exports.defaultOptions = defaultOptions;
let options = (yargs) => (0, exports.defaultOptions)(yargs);
const register = (cli) => {
return cli.command('video <verb>', 'Convert video', options, (argv) => {
(0, _cli_1.defaults)();
const options = (0, _cli_1.sanitizeVideo)(argv);
__1.logger.info("options " + argv.dst, options);
if (argv.verb = 'convert') {
return (0, convert_1.convert)(options);
}
});
};
exports.register = register;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXVkaW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29tbWFuZHMvYXVkaW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkJBQTRCO0FBQzVCLHdEQUFvRDtBQUVwRCxrQ0FBaUQ7QUFHMUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUM5QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ3ZCLFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsWUFBWSxFQUFFLElBQUk7S0FDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixRQUFRLEVBQUUsa0JBQWtCO0tBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsZ0NBQWdDO1FBQzFDLElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUseUNBQXlDO1FBQ25ELElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQWZZLFFBQUEsY0FBYyxrQkFlMUI7QUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFLENBQUMsSUFBQSxzQkFBYyxFQUFDLEtBQUssQ0FBQyxDQUFBO0FBRWpELE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBYSxFQUFFLEVBQUU7SUFDdEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBbUIsRUFBRSxFQUFFO1FBQ2pGLElBQUEsZUFBUSxHQUFFLENBQUE7UUFDVixNQUFNLE9BQU8sR0FBRyxJQUFBLG9CQUFhLEVBQUMsSUFBSSxDQUF5QixDQUFBO1FBQzNELFVBQU0sQ0FBQyxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDM0MsSUFBSSxJQUFJLENBQUMsSUFBSSxHQUFHLFNBQVMsRUFBRTtZQUN2QixPQUFPLElBQUEsaUJBQU8sRUFBQyxPQUFPLENBQUMsQ0FBQTtTQUMxQjtJQUNMLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBVFksUUFBQSxRQUFRLFlBU3BCIn0=

View File

@ -0,0 +1,10 @@
import * as CLI from 'yargs';
export declare const register: (cli: CLI.Argv) => CLI.Argv<{
input: string;
} & {
slugify: string;
} & {
debug: string;
} & {
dry: string;
}>;

View File

@ -0,0 +1,69 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.register = void 0;
const path = require("path");
const fs_1 = require("fs");
const fs_2 = require("../../lib/fs");
const __1 = require("../..");
const sanitize = require("sanitize-filename");
const filenamify = require('filenamify');
const slugify = require('slugify');
const defaultOptions = (yargs) => {
return yargs.option('input', {
default: './',
describe: 'The sources'
}).option('slugify', {
default: 'false',
describe: 'convert whitespaces to dashes, remove special ASCIs'
}).option('debug', {
default: 'false',
describe: 'debug messages'
}).option('dry', {
default: 'false',
describe: 'dry run, dont modify'
});
};
let options = (yargs) => defaultOptions(yargs);
const prep = (file) => {
const parts = path.parse(file);
const stats = (0, fs_1.lstatSync)(file);
if (stats.isFile()) {
console.log('p', parts);
// return parts.name.trim() + parts.ext.trim().split('.')[1].trim();
return filenamify(parts.name + parts.ext);
}
return prep;
};
// npm run build ; node ./build/main.js sanitize-filenames --input=.
const register = (cli) => {
return cli.command('sanitize-filename', 'Removes invalid chars in filenames', options, (argv) => __awaiter(void 0, void 0, void 0, function* () {
if (argv.help) {
return;
}
const _debug = argv.debug === 'true';
const _dry = argv.dry === 'true';
const src = path.resolve('' + argv.input);
_debug && __1.logger.info(`sanitize ${src}`);
if ((0, fs_1.existsSync)(src)) {
!_dry && sanitize(src);
if (argv.slugify === 'true') {
let _files = (0, fs_2.files)(src, '**/**').map(prep).map(slugify);
__1.logger.info('files', _files);
}
}
else {
_debug && __1.logger.error(`doesnt exists : ${src} `);
}
}));
};
exports.register = register;
//# sourceMappingURL=sanitize-filename.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"sanitize-filename.js","sourceRoot":"","sources":["../../src/commands/common/sanitize-filename.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,6BAA6B;AAC7B,2BAA2C;AAC3C,qCAAqC;AAErC,6BAA+B;AAE/B,MAAM,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;AACzC,MAAM,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;AAEnC,MAAM,cAAc,GAAG,CAAC,KAAe,EAAE,EAAE;IACvC,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;QACzB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,aAAa;KAC1B,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE;QACjB,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,qDAAqD;KAClE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE;QACf,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,gBAAgB;KAC7B,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;QACb,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,sBAAsB;KACnC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,IAAI,OAAO,GAAG,CAAC,KAAe,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAEzD,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,EAAE;IAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAA,cAAS,EAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;QAChB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAC,KAAK,CAAC,CAAC;QAC/B,2EAA2E;QACnE,OAAO,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;KAC7C;IACD,OAAO,IAAI,CAAC;AAChB,CAAC,CAAA;AAED,oEAAoE;AAC7D,MAAM,QAAQ,GAAG,CAAC,GAAa,EAAE,EAAE;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,oCAAoC,EAAE,OAAO,EAAE,CAAO,IAAmB,EAAE,EAAE;QACjH,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;SAAE;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,KAAM,MAAM,CAAC;QAClC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,IAAI,UAAM,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QACzC,IAAI,IAAA,eAAU,EAAC,GAAG,CAAC,EAAE;YAEjB,CAAC,IAAI,IAAI,QAAQ,CAAC,GAAG,CAAC,CAAC;YACvB,IAAI,IAAI,CAAC,OAAO,KAAK,MAAM,EAAE;gBACzB,IAAI,MAAM,GAAG,IAAA,UAAK,EAAC,GAAG,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACxD,UAAM,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;aAChC;SACJ;aAAM;YACH,MAAM,IAAI,UAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC,CAAC;SACrD;IACL,CAAC,CAAA,CAAC,CAAC;AACP,CAAC,CAAC;AAlBW,QAAA,QAAQ,YAkBnB"}

2
packages/bot/commands/convert.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export declare const defaultOptions: (yargs: CLI.Argv) => any;
export declare const register: (cli: CLI.Argv) => any;

View File

@ -0,0 +1,42 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.register = exports.defaultOptions = void 0;
const __1 = require("../");
const images_1 = require("../lib/media/images");
const _cli_1 = require("../_cli");
const defaultOptions = (yargs) => {
return yargs.option('src', {
describe: 'FILE|FOLDER|GLOB',
demandOption: true
}).option('dst', {
describe: 'FILE|FOLDER|GLOB'
}).option('debug', {
default: false,
describe: 'Enable internal debug messages',
type: 'boolean'
}).option('alt', {
default: false,
describe: 'Use alternate tokenizer, & instead of $',
type: 'boolean'
}).option('dry', {
default: false,
describe: 'Run without conversion',
type: 'boolean'
}).option('verbose', {
default: false,
describe: 'Show internal messages',
type: 'boolean'
});
};
exports.defaultOptions = defaultOptions;
let options = (yargs) => (0, exports.defaultOptions)(yargs);
const register = (cli) => {
return cli.command('convert', 'Convert files', options, (argv) => {
(0, _cli_1.defaults)();
const options = (0, _cli_1.sanitizeVideo)(argv);
options.debug && __1.logger.info("options " + argv.dst, options);
return (0, images_1.convert)(options);
});
};
exports.register = register;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tYW5kcy9jb252ZXJ0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJCQUE0QjtBQUU1QixnREFFNEI7QUFFNUIsa0NBSWdCO0FBT1QsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUM5QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ3ZCLFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsWUFBWSxFQUFFLElBQUk7S0FDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixRQUFRLEVBQUUsa0JBQWtCO0tBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsZ0NBQWdDO1FBQzFDLElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUseUNBQXlDO1FBQ25ELElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsd0JBQXdCO1FBQ2xDLElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLHdCQUF3QjtRQUNsQyxJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUE7QUFDTixDQUFDLENBQUE7QUF2QlksUUFBQSxjQUFjLGtCQXVCMUI7QUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFLENBQUMsSUFBQSxzQkFBYyxFQUFDLEtBQUssQ0FBQyxDQUFBO0FBRWpELE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBYSxFQUFFLEVBQUU7SUFDdEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLENBQUMsSUFBbUIsRUFBRSxFQUFFO1FBQzVFLElBQUEsZUFBUSxHQUFFLENBQUE7UUFDVixNQUFNLE9BQU8sR0FBRyxJQUFBLG9CQUFhLEVBQUMsSUFBSSxDQUFhLENBQUE7UUFDL0MsT0FBTyxDQUFDLEtBQUssSUFBSSxVQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzVELE9BQU8sSUFBQSxnQkFBTyxFQUFDLE9BQU8sQ0FBQyxDQUFBO0lBQzNCLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBUFksUUFBQSxRQUFRLFlBT3BCIn0=

1
packages/bot/commands/pdf2jpg.d.ts vendored Normal file
View File

@ -0,0 +1 @@
export declare const register: (cli: CLI.Argv) => any;

View File

@ -0,0 +1,53 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.register = void 0;
const __1 = require("../");
const path = require("path");
const index_1 = require("../lib/process/index");
const pMap = require("p-map");
const fg = require('fast-glob');
const defaultOptions = (yargs) => {
return yargs.option('input', {
default: './',
describe: 'The sources'
}).option('debug', {
default: 'false',
describe: 'Enable internal debug message'
});
};
let options = (yargs) => defaultOptions(yargs);
async function convertFiles(files) {
return pMap(files, (file) => {
const inParts = path.parse(file);
// magick convert leg.pdf -quality 100 -density 250 -trim -flatten -resize 200% -sharpen 0x1.0 leg.jpg
const promise = index_1.Helper.run(inParts.dir, 'convert', [
`"${inParts.base}[0]"`,
'-quality 80',
'-density 250',
'-trim',
'-flatten',
'-sharpen 0x1.0',
`"${inParts.name}.jpg"`
]);
return promise;
}, { concurrency: 1 });
}
// node ./build/main.js pdf2jpg --input=../drawings
const register = (cli) => {
return cli.command('pdf2jpg', '', options, async (argv) => {
if (argv.help) {
return;
}
const src = path.resolve('' + argv.input);
if (argv.debug) {
__1.logger.debug(`Begin convert PDF files${src}`);
}
const files = fg.sync('*.pdf|*.PDF', { dot: true, cwd: src, absolute: true });
await convertFiles(files);
if (argv.debug) {
__1.logger.debug(`Converted ${files.length} files`);
}
});
};
exports.register = register;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGRmMmpwZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tYW5kcy9wZGYyanBnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDJCQUE0QjtBQUM1Qiw2QkFBNEI7QUFDNUIsZ0RBQTZDO0FBQzdDLDhCQUE2QjtBQUU3QixNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUE7QUFFL0IsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ3pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLGFBQWE7S0FDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDZixPQUFPLEVBQUUsT0FBTztRQUNoQixRQUFRLEVBQUUsK0JBQStCO0tBQzVDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQztBQUVGLElBQUksT0FBTyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFekQsS0FBSyxVQUFVLFlBQVksQ0FBQyxLQUFLO0lBQzdCLE9BQU8sSUFBSSxDQUFDLEtBQUssRUFBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1FBQzVCLE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsc0dBQXNHO1FBQ3RHLE1BQU0sT0FBTyxHQUFHLGNBQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQ2pEO1lBQ0ksSUFBSSxPQUFPLENBQUMsSUFBSSxNQUFNO1lBQ3RCLGFBQWE7WUFDYixjQUFjO1lBQ2QsT0FBTztZQUNQLFVBQVU7WUFDVixnQkFBZ0I7WUFDaEIsSUFBSSxPQUFPLENBQUMsSUFBSSxPQUFPO1NBQzFCLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUMsRUFBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFFRCxtREFBbUQ7QUFDNUMsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUN0QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQW1CLEVBQUUsRUFBRTtRQUNyRSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFBRSxPQUFPO1NBQUU7UUFDMUIsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzFDLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNaLFVBQU0sQ0FBQyxLQUFLLENBQUMsMEJBQTBCLEdBQUcsRUFBRSxDQUFDLENBQUM7U0FDakQ7UUFDRCxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUM5RSxNQUFNLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMxQixJQUFJLElBQUksQ0FBQyxLQUFLLEVBQUU7WUFDWixVQUFNLENBQUMsS0FBSyxDQUFDLGFBQWEsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDLENBQUM7U0FDbkQ7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQWJZLFFBQUEsUUFBUSxZQWFwQiJ9

View File

@ -0,0 +1 @@
{"version":3,"file":"pdf2jpg.js","sourceRoot":"","sources":["../src/commands/pdf2jpg.ts"],"names":[],"mappings":";;;AACA,2BAA6B;AAC7B,6BAA6B;AAC7B,gDAA8C;AAC9C,qCAAqC;AAErC,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAEhC,MAAM,cAAc,GAAG,CAAC,KAAe,EAAE,EAAE;IACvC,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;QACzB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,aAAa;KAC1B,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE;QACf,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,+BAA+B;KAC5C,CAAC,CAAA;AACN,CAAC,CAAC;AAEF,IAAI,OAAO,GAAG,CAAC,KAAe,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAEzD,KAAK,UAAU,YAAY,CAAC,KAAK;IAC7B,OAAO,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,IAAS,EAAE,EAAE;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,sGAAsG;QACtG,MAAM,OAAO,GAAG,cAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EACjD;YACI,IAAI,OAAO,CAAC,IAAI,MAAM;YACtB,aAAa;YACb,cAAc;YACd,OAAO;YACP,UAAU;YACV,gBAAgB;YAChB,IAAI,OAAO,CAAC,IAAI,OAAO;SAC1B,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACnB,CAAC,EAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,mDAAmD;AAC5C,MAAM,QAAQ,GAAG,CAAC,GAAa,EAAE,EAAE;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAmB,EAAE,EAAE;QACrE,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;SAAE;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,UAAM,CAAC,KAAK,CAAC,0BAA0B,GAAG,EAAE,CAAC,CAAC;SACjD;QACD,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,UAAM,CAAC,KAAK,CAAC,aAAa,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;SACnD;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAbW,QAAA,QAAQ,YAanB"}

2
packages/bot/commands/resize.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export declare const defaultOptions: (yargs: CLI.Argv) => any;
export declare const register: (cli: CLI.Argv) => any;

View File

@ -0,0 +1,71 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.register = exports.defaultOptions = void 0;
const index_1 = require("../index");
const resize_1 = require("../lib/media/images/resize");
const _cli_1 = require("../_cli");
const defaultOptions = (yargs) => {
return yargs.option('src', {
describe: 'FILE|FOLDER|GLOB',
demandOption: true
}).option('dst', {
describe: 'FILE|FOLDER|GLOB'
}).option('debug', {
default: false,
describe: 'Enable internal debug messages',
type: 'boolean'
}).option('alt', {
default: false,
describe: 'Use alternate tokenizer, & instead of $',
type: 'boolean'
}).option('dry', {
default: false,
describe: 'Run without conversion',
type: 'boolean'
}).option('verbose', {
default: false,
describe: 'Show internal messages',
type: 'boolean'
}).option('percent', {
default: false,
describe: 'Resize image with percent',
type: 'number'
}).option('width', {
describe: 'Resize image with',
type: 'number'
}).option('height', {
describe: 'Resize image height',
type: 'number'
}).option('minHeight', {
describe: 'Resize image minimum height',
type: 'number'
}).option('minWidth', {
describe: 'Resize image minimum width',
type: 'number'
}).option('minSize', {
describe: 'Resize image size (bytes)',
type: 'number'
}).option('percent', {
describe: 'Resize image in percent (width)',
type: 'number'
}).option('logLevel', {
describe: 'Log level : warn, info, debug, error',
type: 'string',
default: 'info'
});
};
exports.defaultOptions = defaultOptions;
let options = (yargs) => (0, exports.defaultOptions)(yargs);
const register = (cli) => {
return cli.command('resize', 'Resizes files', options, async (argv) => {
(0, _cli_1.defaults)();
const options = (0, _cli_1.sanitize)(argv);
index_1.logger.setSettings({
minLevel: options.logLevel
});
index_1.logger.info("options " + argv.dst, options);
await (0, resize_1.resize)(options);
});
};
exports.register = register;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1hbmRzL3Jlc2l6ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSxvQ0FBaUM7QUFDakMsdURBRW1DO0FBRW5DLGtDQUdnQjtBQU1ULE1BQU0sY0FBYyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUU7SUFDOUMsT0FBTyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUN2QixRQUFRLEVBQUUsa0JBQWtCO1FBQzVCLFlBQVksRUFBRSxJQUFJO0tBQ3JCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsUUFBUSxFQUFFLGtCQUFrQjtLQUMvQixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNmLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLGdDQUFnQztRQUMxQyxJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLHlDQUF5QztRQUNuRCxJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNiLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLHdCQUF3QjtRQUNsQyxJQUFJLEVBQUUsU0FBUztLQUNsQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSx3QkFBd0I7UUFDbEMsSUFBSSxFQUFFLFNBQVM7S0FDbEIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUU7UUFDakIsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsMkJBQTJCO1FBQ3JDLElBQUksRUFBRSxRQUFRO0tBQ2pCLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2YsUUFBUSxFQUFFLG1CQUFtQjtRQUM3QixJQUFJLEVBQUUsUUFBUTtLQUNqQixDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNoQixRQUFRLEVBQUUscUJBQXFCO1FBQy9CLElBQUksRUFBRSxRQUFRO0tBQ2pCLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1FBQ25CLFFBQVEsRUFBRSw2QkFBNkI7UUFDdkMsSUFBSSxFQUFFLFFBQVE7S0FDakIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDbEIsUUFBUSxFQUFFLDRCQUE0QjtRQUN0QyxJQUFJLEVBQUUsUUFBUTtLQUNqQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNqQixRQUFRLEVBQUUsMkJBQTJCO1FBQ3JDLElBQUksRUFBRSxRQUFRO0tBQ2pCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ2pCLFFBQVEsRUFBRSxpQ0FBaUM7UUFDM0MsSUFBSSxFQUFFLFFBQVE7S0FDakIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDbEIsUUFBUSxFQUFFLHNDQUFzQztRQUNoRCxJQUFJLEVBQUUsUUFBUTtRQUNkLE9BQU8sRUFBRSxNQUFNO0tBQ2xCLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQWpEWSxRQUFBLGNBQWMsa0JBaUQxQjtBQUVELElBQUksT0FBTyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUUsQ0FBQyxJQUFBLHNCQUFjLEVBQUMsS0FBSyxDQUFDLENBQUE7QUFFakQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUN0QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsS0FBSyxFQUFFLElBQW1CLEVBQUUsRUFBRTtRQUNqRixJQUFBLGVBQVEsR0FBRSxDQUFBO1FBQ1YsTUFBTSxPQUFPLEdBQUcsSUFBQSxlQUFRLEVBQUMsSUFBSSxDQUFhLENBQUE7UUFDMUMsY0FBTSxDQUFDLFdBQVcsQ0FBQztZQUNmLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBZTtTQUNwQyxDQUFDLENBQUE7UUFDRixjQUFNLENBQUMsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQzNDLE1BQU0sSUFBQSxlQUFNLEVBQUMsT0FBTyxDQUFDLENBQUE7SUFDekIsQ0FBQyxDQUFDLENBQUE7QUFDTixDQUFDLENBQUE7QUFWWSxRQUFBLFFBQVEsWUFVcEIifQ==

1
packages/bot/commands/svg2jpg.d.ts vendored Normal file
View File

@ -0,0 +1 @@
export declare const register: (cli: CLI.Argv) => any;

View File

@ -0,0 +1,49 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.register = void 0;
const debug_1 = require("@plastichub/core/debug");
const path = require("path");
const index_1 = require("../lib/process/index");
const bluebird = require("bluebird");
const fg = require('fast-glob');
const defaultOptions = (yargs) => {
return yargs.option('input', {
default: './',
describe: 'The sources'
}).option('debug', {
default: 'false',
describe: 'Enable internal debug message'
});
};
let options = (yargs) => defaultOptions(yargs);
async function convertFiles(files) {
return bluebird.mapSeries(files, (file) => {
const inParts = path.parse(file);
const promise = index_1.Helper.run(inParts.dir, 'convert', [
`"${inParts.base}"`,
'-quality 40',
'-sharpen 0x1.0',
`"${inParts.name}.jpg"`
]);
return promise;
});
}
//node ./build/main.js svg2jpg --input=../tests/svg/
const register = (cli) => {
return cli.command('svg2jpg', '', options, async (argv) => {
if (argv.help) {
return;
}
const src = path.resolve('' + argv.input);
const files = fg.sync('*.svg|*.SVG', { dot: true, cwd: src, absolute: true });
if (argv.debug) {
(0, debug_1.debug)(`Begin convert SVG files at ${src} ${files}`);
}
await convertFiles(files);
if (argv.debug) {
(0, debug_1.debug)(`Converted ${files.length} files`);
}
});
};
exports.register = register;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ZnMmpwZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21tYW5kcy9zdmcyanBnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLGtEQUE4QztBQUM5Qyw2QkFBNkI7QUFDN0IsZ0RBQThDO0FBQzlDLHFDQUFxQztBQUVyQyxNQUFNLEVBQUUsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7QUFFaEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUN2QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ3pCLE9BQU8sRUFBRSxJQUFJO1FBQ2IsUUFBUSxFQUFFLGFBQWE7S0FDMUIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDZixPQUFPLEVBQUUsT0FBTztRQUNoQixRQUFRLEVBQUUsK0JBQStCO0tBQzVDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQztBQUVGLElBQUksT0FBTyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUUsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7QUFFekQsS0FBSyxVQUFVLFlBQVksQ0FBQyxLQUFLO0lBQzdCLE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxJQUFZLEVBQUUsRUFBRTtRQUM5QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pDLE1BQU0sT0FBTyxHQUFHLGNBQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxTQUFTLEVBQ2pEO1lBQ0ksSUFBSSxPQUFPLENBQUMsSUFBSSxHQUFHO1lBQ25CLGFBQWE7WUFDYixnQkFBZ0I7WUFDaEIsSUFBSSxPQUFPLENBQUMsSUFBSSxPQUFPO1NBQzFCLENBQUMsQ0FBQztRQUNILE9BQU8sT0FBTyxDQUFDO0lBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQztBQUNELG9EQUFvRDtBQUU3QyxNQUFNLFFBQVEsR0FBRyxDQUFDLEdBQWEsRUFBRSxFQUFFO0lBQ3RDLE9BQU8sR0FBRyxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBbUIsRUFBRSxFQUFFO1FBQ3JFLElBQUksSUFBSSxDQUFDLElBQUksRUFBRTtZQUFFLE9BQU87U0FBRTtRQUMxQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUUsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBQSxhQUFLLEVBQUMsOEJBQThCLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1NBQ3ZEO1FBQ0QsTUFBTSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDMUIsSUFBSSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQ1osSUFBQSxhQUFLLEVBQUMsYUFBYSxLQUFLLENBQUMsTUFBTSxRQUFRLENBQUMsQ0FBQztTQUM1QztJQUNMLENBQUMsQ0FBQyxDQUFDO0FBQ1AsQ0FBQyxDQUFDO0FBYlcsUUFBQSxRQUFRLFlBYW5CIn0=

View File

@ -0,0 +1 @@
{"version":3,"file":"svg2jpg.js","sourceRoot":"","sources":["../src/commands/svg2jpg.ts"],"names":[],"mappings":";;;AACA,kDAA8C;AAC9C,6BAA6B;AAC7B,gDAA8C;AAC9C,qCAAqC;AAErC,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAEhC,MAAM,cAAc,GAAG,CAAC,KAAe,EAAE,EAAE;IACvC,OAAO,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;QACzB,OAAO,EAAE,IAAI;QACb,QAAQ,EAAE,aAAa;KAC1B,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE;QACf,OAAO,EAAE,OAAO;QAChB,QAAQ,EAAE,+BAA+B;KAC5C,CAAC,CAAA;AACN,CAAC,CAAC;AAEF,IAAI,OAAO,GAAG,CAAC,KAAe,EAAE,EAAE,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;AAEzD,KAAK,UAAU,YAAY,CAAC,KAAK;IAC7B,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE;QAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,OAAO,GAAG,cAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EACjD;YACI,IAAI,OAAO,CAAC,IAAI,GAAG;YACnB,aAAa;YACb,gBAAgB;YAChB,IAAI,OAAO,CAAC,IAAI,OAAO;SAC1B,CAAC,CAAC;QACH,OAAO,OAAO,CAAC;IACnB,CAAC,CAAC,CAAC;AACP,CAAC;AACD,oDAAoD;AAE7C,MAAM,QAAQ,GAAG,CAAC,GAAa,EAAE,EAAE;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,IAAmB,EAAE,EAAE;QACrE,IAAI,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;SAAE;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9E,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAA,aAAK,EAAC,8BAA8B,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;SACvD;QACD,MAAM,YAAY,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAA,aAAK,EAAC,aAAa,KAAK,CAAC,MAAM,QAAQ,CAAC,CAAC;SAC5C;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAbW,QAAA,QAAQ,YAanB"}

2
packages/bot/commands/video.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export declare const defaultOptions: (yargs: CLI.Argv) => any;
export declare const register: (cli: CLI.Argv) => any;

View File

@ -0,0 +1,39 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.register = exports.defaultOptions = void 0;
const __1 = require("../");
const video_1 = require("../lib/media/video");
const _cli_1 = require("../_cli");
const defaultOptions = (yargs) => {
return yargs.option('src', {
describe: 'FILE|FOLDER|GLOB',
demandOption: true
}).option('dst', {
describe: 'FILE|FOLDER|GLOB'
}).option('debug', {
default: false,
describe: 'Enable internal debug messages',
type: 'boolean'
}).option('alt', {
default: false,
describe: 'Use alternate tokenizer, & instead of $',
type: 'boolean'
});
};
exports.defaultOptions = defaultOptions;
let options = (yargs) => (0, exports.defaultOptions)(yargs);
const register = (cli) => {
return cli.command('video <verb>', 'Convert video', options, async (argv) => {
(0, _cli_1.defaults)();
const options = (0, _cli_1.sanitizeVideo)(argv);
__1.logger.info("options " + argv.dst, options);
if (options.verb == 'convert') {
return (0, video_1.convert)(options);
}
if (options.verb == 'merge') {
return (0, video_1.merge)(options);
}
});
};
exports.register = register;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmlkZW8uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvY29tbWFuZHMvdmlkZW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EsMkJBQTRCO0FBQzVCLDhDQUFtRDtBQUNuRCxrQ0FBaUQ7QUFHMUMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxLQUFlLEVBQUUsRUFBRTtJQUM5QyxPQUFPLEtBQUssQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ3ZCLFFBQVEsRUFBRSxrQkFBa0I7UUFDNUIsWUFBWSxFQUFFLElBQUk7S0FDckIsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDYixRQUFRLEVBQUUsa0JBQWtCO0tBQy9CLENBQUMsQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsZ0NBQWdDO1FBQzFDLElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2IsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUseUNBQXlDO1FBQ25ELElBQUksRUFBRSxTQUFTO0tBQ2xCLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQWZZLFFBQUEsY0FBYyxrQkFlMUI7QUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFLENBQUMsSUFBQSxzQkFBYyxFQUFDLEtBQUssQ0FBQyxDQUFBO0FBRWpELE1BQU0sUUFBUSxHQUFHLENBQUMsR0FBYSxFQUFFLEVBQUU7SUFDdEMsT0FBTyxHQUFHLENBQUMsT0FBTyxDQUFDLGNBQWMsRUFBRSxlQUFlLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFtQixFQUFFLEVBQUU7UUFDdkYsSUFBQSxlQUFRLEdBQUUsQ0FBQTtRQUNWLE1BQU0sT0FBTyxHQUFHLElBQUEsb0JBQWEsRUFBQyxJQUFJLENBQXlCLENBQUE7UUFDM0QsVUFBTSxDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUMzQyxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksU0FBUyxFQUFFO1lBQzNCLE9BQU8sSUFBQSxlQUFPLEVBQUMsT0FBTyxDQUFDLENBQUE7U0FDMUI7UUFDRCxJQUFJLE9BQU8sQ0FBQyxJQUFJLElBQUksT0FBTyxFQUFFO1lBQ3pCLE9BQU8sSUFBQSxhQUFLLEVBQUMsT0FBTyxDQUFRLENBQUE7U0FDL0I7SUFDTCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMsQ0FBQTtBQVpZLFFBQUEsUUFBUSxZQVlwQiJ9

2
packages/bot/commands/watermark.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
export declare const defaultOptions: (yargs: CLI.Argv) => any;
export declare const register: (cli: CLI.Argv) => any;

View File

@ -0,0 +1,75 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.register = exports.defaultOptions = void 0;
const commons_1 = require("@polymech/commons");
const index_1 = require("../index");
const images_1 = require("../lib/media/images");
const _cli_1 = require("../_cli");
const defaultOptions = (yargs) => {
return yargs.option('src', {
describe: 'FILE|FOLDER|GLOB',
demandOption: true
}).option('dst', {
describe: 'FILE|FOLDER|GLOB'
}).option('debug', {
default: false,
describe: 'Enable internal debug messages',
type: 'boolean'
}).option('alt', {
default: false,
describe: 'Use alternate tokenizer, & instead of $',
type: 'boolean'
}).option('dry', {
default: false,
describe: 'Run without conversion',
type: 'boolean'
}).option('verbose', {
default: false,
describe: 'Show internal messages',
type: 'boolean'
}).option('percent', {
default: false,
describe: 'Resize image with percent',
type: 'number'
}).option('width', {
default: false,
describe: 'Resize image with',
type: 'number'
}).option('height', {
default: false,
describe: 'Resize image height',
type: 'number'
}).option('minHeight', {
describe: 'Resize image minimum height',
type: 'number'
}).option('minWidth', {
describe: 'Resize image minimum width',
type: 'number'
}).option('minSize', {
describe: 'Resize image size (bytes)',
type: 'number'
}).option('percent', {
describe: 'Resize image in percent (width)',
type: 'number'
}).option('key', {
describe: 'API Key',
type: 'string'
});
};
exports.defaultOptions = defaultOptions;
const options = (yargs) => (0, exports.defaultOptions)(yargs);
const register = (cli) => {
return cli.command('watermark', 'Remove watermark : FILE|GLOB', options, async (argv) => {
(0, _cli_1.defaults)();
const options = (0, _cli_1.sanitize)(argv);
const config = (0, commons_1.CONFIG_DEFAULT)();
if (!config.novita) {
index_1.logger.error("Novita key not found");
return;
}
options.debug && index_1.logger.info("Watermark Options " + argv.dst, options);
return (0, images_1.watermark)({ ...options, key: config.novita.key });
});
};
exports.register = register;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0ZXJtYXJrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbW1hbmRzL3dhdGVybWFyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwrQ0FBa0Q7QUFFbEQsb0NBQWlDO0FBQ2pDLGdEQUU0QjtBQUU1QixrQ0FHZ0I7QUFNVCxNQUFNLGNBQWMsR0FBRyxDQUFDLEtBQWUsRUFBRSxFQUFFO0lBQ2hELE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDekIsUUFBUSxFQUFFLGtCQUFrQjtRQUM1QixZQUFZLEVBQUUsSUFBSTtLQUNuQixDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRTtRQUNmLFFBQVEsRUFBRSxrQkFBa0I7S0FDN0IsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7UUFDakIsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsZ0NBQWdDO1FBQzFDLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUseUNBQXlDO1FBQ25ELElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFO1FBQ2YsT0FBTyxFQUFFLEtBQUs7UUFDZCxRQUFRLEVBQUUsd0JBQXdCO1FBQ2xDLElBQUksRUFBRSxTQUFTO0tBQ2hCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ25CLE9BQU8sRUFBRSxLQUFLO1FBQ2QsUUFBUSxFQUFFLHdCQUF3QjtRQUNsQyxJQUFJLEVBQUUsU0FBUztLQUNoQixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNuQixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSwyQkFBMkI7UUFDckMsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRTtRQUNqQixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSxtQkFBbUI7UUFDN0IsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtRQUNsQixPQUFPLEVBQUUsS0FBSztRQUNkLFFBQVEsRUFBRSxxQkFBcUI7UUFDL0IsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtRQUNyQixRQUFRLEVBQUUsNkJBQTZCO1FBQ3ZDLElBQUksRUFBRSxRQUFRO0tBQ2YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUU7UUFDcEIsUUFBUSxFQUFFLDRCQUE0QjtRQUN0QyxJQUFJLEVBQUUsUUFBUTtLQUNmLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1FBQ25CLFFBQVEsRUFBRSwyQkFBMkI7UUFDckMsSUFBSSxFQUFFLFFBQVE7S0FDZixDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtRQUNuQixRQUFRLEVBQUUsaUNBQWlDO1FBQzNDLElBQUksRUFBRSxRQUFRO0tBQ2YsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUU7UUFDZixRQUFRLEVBQUUsU0FBUztRQUNuQixJQUFJLEVBQUUsUUFBUTtLQUNmLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQWxEWSxRQUFBLGNBQWMsa0JBa0QxQjtBQUVELE1BQU0sT0FBTyxHQUFHLENBQUMsS0FBZSxFQUFFLEVBQUUsQ0FBQyxJQUFBLHNCQUFjLEVBQUMsS0FBSyxDQUFDLENBQUE7QUFFbkQsTUFBTSxRQUFRLEdBQUcsQ0FBQyxHQUFhLEVBQUUsRUFBRTtJQUN4QyxPQUFPLEdBQUcsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLDhCQUE4QixFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBbUIsRUFBRSxFQUFFO1FBQ3JHLElBQUEsZUFBUSxHQUFFLENBQUE7UUFDVixNQUFNLE9BQU8sR0FBRyxJQUFBLGVBQVEsRUFBQyxJQUFJLENBQWEsQ0FBQTtRQUMxQyxNQUFNLE1BQU0sR0FBUSxJQUFBLHdCQUFjLEdBQUUsQ0FBQTtRQUNwQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRTtZQUNsQixjQUFNLENBQUMsS0FBSyxDQUFDLHNCQUFzQixDQUFDLENBQUM7WUFDckMsT0FBTTtTQUNQO1FBQ0QsT0FBTyxDQUFDLEtBQUssSUFBSSxjQUFNLENBQUMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsT0FBTyxDQUFDLENBQUE7UUFDdEUsT0FBTyxJQUFBLGtCQUFTLEVBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFBO0lBQzFELENBQUMsQ0FBQyxDQUFBO0FBQ0osQ0FBQyxDQUFBO0FBWlksUUFBQSxRQUFRLFlBWXBCIn0=

1
packages/bot/dist-in/_cli.d.ts vendored Normal file
View File

@ -0,0 +1 @@
export declare const defaults: () => void;

View File

@ -0,0 +1,10 @@
export const defaults = () => {
const DefaultCommand = 'info';
if (process.argv.length === 2) {
process.argv.push(DefaultCommand);
}
process.on('unhandledRejection', (reason) => {
console.error('Unhandled rejection, reason: ', reason);
});
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiX2NsaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9fY2xpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUtBLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxHQUFHLEVBQUU7SUFDekIsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDO0lBQzlCLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDNUIsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUNELE9BQU8sQ0FBQyxFQUFFLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxNQUFjLEVBQUUsRUFBRTtRQUNoRCxPQUFPLENBQUMsS0FBSyxDQUFDLCtCQUErQixFQUFFLE1BQU0sQ0FBQyxDQUFBO0lBQzFELENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBIn0=

1
packages/bot/dist-in/cli.d.ts vendored Normal file
View File

@ -0,0 +1 @@
export declare const cli: any;

View File

@ -0,0 +1,4 @@
import yargs from 'yargs';
import { hideBin } from 'yargs/helpers';
export const cli = yargs(hideBin(process.argv));
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NsaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssTUFBTSxPQUFPLENBQUE7QUFDekIsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLGVBQWUsQ0FBQTtBQUV2QyxNQUFNLENBQUMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQSJ9

View File

@ -0,0 +1 @@
export declare function crawler(url: string, dst: any, prefix: any, options?: any): Promise<void>;

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
import * as CLI from 'yargs';
export declare const register: (cli: CLI.Argv) => any;

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,6 @@
export declare const bazar_root = "${OSR_ROOT}/pp-bazar/${YYYY}/${MM}";
export declare const bazar_root_path: (file?: string) => string;
export declare const regexEx: RegExp;
export declare const remo: (f: any) => any;
export declare const removeEmojis: (string: any) => any;
export declare const removeEmojisEx: (str: string) => string;

File diff suppressed because one or more lines are too long

5
packages/bot/dist-in/constants.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
export declare const GIT_REPO = "https://git.osr-plastic.org/osr-plastic/";
export declare const MODULE_NAME = "OSR-MEDIA";
export declare const PACKAGE_NAME = "osr-media";
export declare const ERR_PERM_RETRY_DELAY = 500;
export declare const ERR_PERM_RETRY_MAX = 5;

View File

@ -0,0 +1,6 @@
export const GIT_REPO = 'https://git.osr-plastic.org/osr-plastic/';
export const MODULE_NAME = `OSR-MEDIA`;
export const PACKAGE_NAME = 'osr-media';
export const ERR_PERM_RETRY_DELAY = 500;
export const ERR_PERM_RETRY_MAX = 5;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsMENBQTBDLENBQUE7QUFDbEUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLFdBQVcsQ0FBQztBQUN2QyxNQUFNLENBQUMsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDO0FBRXhDLE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUFHLEdBQUcsQ0FBQTtBQUN2QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxDQUFDLENBQUEifQ==

4
packages/bot/dist-in/index.d.ts vendored Normal file
View File

@ -0,0 +1,4 @@
export * from './constants.js';
export * from './types.js';
import { Logger, ILogObj } from 'tslog';
export declare const logger: Logger<ILogObj>;

View File

@ -0,0 +1,6 @@
export * from './constants.js';
export * from './types.js';
import { createLogger } from '@polymech/log';
import { MODULE_NAME } from './constants.js';
export const logger = createLogger(MODULE_NAME);
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQTtBQUM5QixjQUFjLFlBQVksQ0FBQTtBQUUxQixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUM1QyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsWUFBWSxDQUFDLFdBQVcsQ0FBK0IsQ0FBQSJ9

2
packages/bot/dist-in/main.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
#!/usr/bin/env node
export {};

View File

@ -0,0 +1,15 @@
#!/usr/bin/env node
import { defaults } from './_cli.js';
defaults();
import { cli } from './cli.js';
import { register as registerBazarDownload } from './commands/bazar/downloadBazar.js';
registerBazarDownload(cli);
const argv = cli.argv;
if (argv.h || argv.help) {
cli.showHelp();
process.exit();
}
else if (argv.v || argv.version) {
process.exit();
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFpbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFDQSxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBQUMsUUFBUSxFQUFFLENBQUE7QUFDaEQsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUM5QixPQUFPLEVBQUUsUUFBUSxJQUFJLHFCQUFxQixFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDckYscUJBQXFCLENBQUMsR0FBRyxDQUFDLENBQUE7QUFFMUIsTUFBTSxJQUFJLEdBQVEsR0FBRyxDQUFDLElBQUksQ0FBQztBQUUzQixJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ3RCLEdBQUcsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNmLE9BQU8sQ0FBQyxJQUFJLEVBQUUsQ0FBQztBQUNuQixDQUFDO0tBQU0sSUFBSSxJQUFJLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUNoQyxPQUFPLENBQUMsSUFBSSxFQUFFLENBQUM7QUFDbkIsQ0FBQyJ9

20
packages/bot/dist-in/types.d.ts vendored Normal file
View File

@ -0,0 +1,20 @@
import { PATH_INFO } from '@polymech/commons';
export type IOptions = {
alt?: boolean;
config?: any;
cwd?: string;
root?: string;
debug?: boolean;
verbose?: boolean;
dry?: boolean;
dst: string;
dstInfo?: PATH_INFO;
env?: string;
cache?: boolean;
src: string;
srcInfo?: PATH_INFO;
stdout?: boolean;
variables?: Record<string, string>;
key?: string;
logLevel?: string;
};

View File

@ -0,0 +1,2 @@
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9

1
packages/bot/fs_err Normal file
View File

@ -0,0 +1 @@
mock-png-data

View File

@ -0,0 +1,23 @@
[HKEY_CURRENT_USER\Software\Altap\Altap Salamander 4.0\User Menu\26]
"Item Name"="OSR-Media"
"Command"=""
"Arguments"=""
"Initial Directory"=""
"Execute Through Shell"=dword:00000000
"Close Shell Window"=dword:00000000
"Open Shell Window"=dword:00000000
"Icon"=""
"Type"=dword:00000001
"Show In Toolbar"=dword:00000001
[HKEY_CURRENT_USER\Software\Altap\Altap Salamander 4.0\User Menu\27]
"Item Name"="Resize-Images-1980"
"Command"="osr-media"
"Arguments"="resize --minWidth=1900 --width=1980 --alt=true --verbose=true --debug=true --src=\"$(FullName)/**/*.+(&{IMAGES})\""
"Initial Directory"="$(FullPath)"
"Execute Through Shell"=dword:00000001
"Close Shell Window"=dword:00000000
"Open Shell Window"=dword:00000001
"Icon"=""
"Type"=dword:00000000
"Show In Toolbar"=dword:00000001

14
packages/bot/lib/common/array.d.ts vendored Normal file
View File

@ -0,0 +1,14 @@
/**
* Return last element
* @private
* @param {(Array<any>)} array
* @returns object | undefined
*/
export declare const lastOf: (array: Array<any>) => any;
/**
* Return first element
* @private
* @param {(Array<any>)} array
* @returns object | undefined
*/
export declare const firstOf: (array: Array<any>) => any;

View File

@ -0,0 +1,20 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.firstOf = exports.lastOf = void 0;
/**
* Return last element
* @private
* @param {(Array<any>)} array
* @returns object | undefined
*/
const lastOf = (array) => array[array.length - 1];
exports.lastOf = lastOf;
/**
* Return first element
* @private
* @param {(Array<any>)} array
* @returns object | undefined
*/
const firstOf = (array) => array[0];
exports.firstOf = firstOf;
//# sourceMappingURL=array.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"array.js","sourceRoot":"","sources":["../../src/lib/common/array.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACI,MAAM,MAAM,GAAG,CAAC,KAAiB,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAAxD,QAAA,MAAM,UAAkD;AAErE;;;;;GAKG;AACI,MAAM,OAAO,GAAG,CAAC,KAAiB,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAA1C,QAAA,OAAO,WAAmC"}

50
packages/bot/lib/common/enums.d.ts vendored Normal file
View File

@ -0,0 +1,50 @@
export declare const EVENTS: {};
export declare enum COMMANDS {
RUN_FILE = "Run_File",
RUN_CLASS = "Run_Class",
RUN_APP_SERVER_CLASS = "Run_App_Server_Class",
RUN_APP_SERVER_CLASS_METHOD = "Run_App_Server_Class_Method",
RUN_APP_SERVER_COMPONENT_METHOD = "Run_App_Server_Component_Method",
CANCEL_APP_SERVER_COMPONENT_METHOD = "Cancel_App_Server_Component_Method",
ANSWER_APP_SERVER_COMPONENT_METHOD_INTERRUPT = "Answer_App_Server_Component_Method_Interrupt"
}
export declare enum LOGGING_SIGNAL {
}
export declare enum LOGGING_FLAGS {
/**
* No logging
* @constant
* @type int
*/
NONE = 0,
/**
* Log in the IDE's global console
* @constant
* @type int
*/
GLOBAL_CONSOLE = 1,
/**
* Log in the IDE's status bar
* @constant
* @type int
*/
STATUS_BAR = 2,
/**
* Create notification popup in the IDE
* @constant
* @type int
*/
POPUP = 4,
/**
* Log to file
* @constant
* @type int
*/
FILE = 8,
/**
* Log into the IDE's dev tool's console
* @constant
* @type int
*/
DEV_CONSOLE = 16
}

View File

@ -0,0 +1,59 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.LOGGING_FLAGS = exports.LOGGING_SIGNAL = exports.COMMANDS = exports.EVENTS = void 0;
exports.EVENTS = {};
var COMMANDS;
(function (COMMANDS) {
COMMANDS["RUN_FILE"] = "Run_File";
COMMANDS["RUN_CLASS"] = "Run_Class";
COMMANDS["RUN_APP_SERVER_CLASS"] = "Run_App_Server_Class";
COMMANDS["RUN_APP_SERVER_CLASS_METHOD"] = "Run_App_Server_Class_Method";
COMMANDS["RUN_APP_SERVER_COMPONENT_METHOD"] = "Run_App_Server_Component_Method";
COMMANDS["CANCEL_APP_SERVER_COMPONENT_METHOD"] = "Cancel_App_Server_Component_Method";
COMMANDS["ANSWER_APP_SERVER_COMPONENT_METHOD_INTERRUPT"] = "Answer_App_Server_Component_Method_Interrupt";
})(COMMANDS = exports.COMMANDS || (exports.COMMANDS = {}));
var LOGGING_SIGNAL;
(function (LOGGING_SIGNAL) {
})(LOGGING_SIGNAL = exports.LOGGING_SIGNAL || (exports.LOGGING_SIGNAL = {}));
;
var LOGGING_FLAGS;
(function (LOGGING_FLAGS) {
/**
* No logging
* @constant
* @type int
*/
LOGGING_FLAGS[LOGGING_FLAGS["NONE"] = 0] = "NONE";
/**
* Log in the IDE's global console
* @constant
* @type int
*/
LOGGING_FLAGS[LOGGING_FLAGS["GLOBAL_CONSOLE"] = 1] = "GLOBAL_CONSOLE";
/**
* Log in the IDE's status bar
* @constant
* @type int
*/
LOGGING_FLAGS[LOGGING_FLAGS["STATUS_BAR"] = 2] = "STATUS_BAR";
/**
* Create notification popup in the IDE
* @constant
* @type int
*/
LOGGING_FLAGS[LOGGING_FLAGS["POPUP"] = 4] = "POPUP";
/**
* Log to file
* @constant
* @type int
*/
LOGGING_FLAGS[LOGGING_FLAGS["FILE"] = 8] = "FILE";
/**
* Log into the IDE's dev tool's console
* @constant
* @type int
*/
LOGGING_FLAGS[LOGGING_FLAGS["DEV_CONSOLE"] = 16] = "DEV_CONSOLE";
})(LOGGING_FLAGS = exports.LOGGING_FLAGS || (exports.LOGGING_FLAGS = {}));
;
//# sourceMappingURL=enums.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"enums.js","sourceRoot":"","sources":["../../src/lib/common/enums.ts"],"names":[],"mappings":";;;AAAa,QAAA,MAAM,GAAG,EAErB,CAAC;AAEF,IAAY,QAQX;AARD,WAAY,QAAQ;IAChB,iCAAqB,CAAA;IACrB,mCAAuB,CAAA;IACvB,yDAA6C,CAAA;IAC7C,uEAA2D,CAAA;IAC3D,+EAAmE,CAAA;IACnE,qFAAyE,CAAA;IACzE,yGAA6F,CAAA;AACjG,CAAC,EARW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAQnB;AAED,IAAY,cACX;AADD,WAAY,cAAc;AAC1B,CAAC,EADW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QACzB;AAAA,CAAC;AAEF,IAAY,aAqCX;AArCD,WAAY,aAAa;IACrB;;;;OAIG;IACH,iDAAiB,CAAA;IACjB;;;;OAIG;IACH,qEAA2B,CAAA;IAC3B;;;;OAIG;IACH,6DAAuB,CAAA;IACvB;;;;OAIG;IACH,mDAAkB,CAAA;IAClB;;;;OAIG;IACH,iDAAiB,CAAA;IACjB;;;;OAIG;IACH,gEAAwB,CAAA;AAC5B,CAAC,EArCW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAqCxB;AAAA,CAAC"}

1
packages/bot/lib/common/platform.d.ts vendored Normal file
View File

@ -0,0 +1 @@
export declare const os: () => "linux" | "windows" | "osx" | "arm";

View File

@ -0,0 +1,18 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.os = void 0;
const os_1 = require("os");
const os = () => {
if ((0, os_1.platform)() === 'win32') {
return 'windows';
}
else if ((0, os_1.platform)() === 'darwin') {
return 'osx';
}
else if ((0, os_1.arch)() === 'arm') {
return 'arm';
}
return 'linux';
};
exports.os = os;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL2NvbW1vbi9wbGF0Zm9ybS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQkFBb0M7QUFFN0IsTUFBTSxFQUFFLEdBQUcsR0FBRyxFQUFFO0lBQ3JCLElBQUksSUFBQSxhQUFRLEdBQUUsS0FBSyxPQUFPLEVBQUU7UUFDMUIsT0FBTyxTQUFTLENBQUM7S0FDbEI7U0FBTSxJQUFJLElBQUEsYUFBUSxHQUFFLEtBQUssUUFBUSxFQUFFO1FBQ2xDLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7U0FBTSxJQUFJLElBQUEsU0FBSSxHQUFFLEtBQUssS0FBSyxFQUFFO1FBQzNCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQztBQUNqQixDQUFDLENBQUE7QUFUWSxRQUFBLEVBQUUsTUFTZCJ9

View File

@ -0,0 +1 @@
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/lib/common/platform.ts"],"names":[],"mappings":";;;AAAA,2BAAoC;AAE7B,MAAM,EAAE,GAAG,GAAG,EAAE;IACrB,IAAI,IAAA,aAAQ,GAAE,KAAK,OAAO,EAAE;QAC1B,OAAO,SAAS,CAAC;KAClB;SAAM,IAAI,IAAA,aAAQ,GAAE,KAAK,QAAQ,EAAE;QAClC,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,IAAA,SAAI,GAAE,KAAK,KAAK,EAAE;QAC3B,OAAO,KAAK,CAAC;KACd;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAA;AATY,QAAA,EAAE,MASd"}

105
packages/bot/lib/common/primitives.d.ts vendored Normal file
View File

@ -0,0 +1,105 @@
/**
* @returns whether the provided parameter is a JavaScript Array or not.
*/
export declare function isArray(array: any): array is any[];
/**
* @returns whether the provided parameter is a JavaScript String or not.
*/
export declare function isString(str: any): str is string;
/**
* @returns whether the provided parameter is a JavaScript Array and each element in the array is a string.
*/
export declare function isStringArray(value: any): value is string[];
/**
*
* @returns whether the provided parameter is of type `object` but **not**
* `null`, an `array`, a `regexp`, nor a `date`.
*/
export declare function isObject(obj: any): boolean;
/**
* In **contrast** to just checking `typeof` this will return `false` for `NaN`.
* @returns whether the provided parameter is a JavaScript Number or not.
*/
export declare function isNumber(obj: any): obj is number;
/**
* @returns whether the provided parameter is a JavaScript Boolean or not.
*/
export declare function isBoolean(obj: any): obj is boolean;
/**
* @returns whether the provided parameter is undefined.
*/
export declare function isUndefined(obj: any): boolean;
/**
* @returns whether the provided parameter is undefined or null.
*/
export declare function isUndefinedOrNull(obj: any): boolean;
/**
* @returns whether the provided parameter is an empty JavaScript Object or not.
*/
export declare function isEmptyObject(obj: any): obj is any;
/**
* @returns whether the provided parameter is a JavaScript Function or not.
*/
export declare function isFunction(obj: any): obj is Function;
/**
* @returns whether the provided parameters is are JavaScript Function or not.
*/
export declare function areFunctions(...objects: any[]): boolean;
export declare type TypeConstraint = string | Function;
export declare function validateConstraints(args: any[], constraints: TypeConstraint[]): void;
export declare function validateConstraint(arg: any, constraint: TypeConstraint): void;
/**
* Creates a new object of the provided class and will call the constructor with
* any additional argument supplied.
*/
export declare function create(ctor: Function, ...args: any[]): any;
export interface IFunction0<T> {
(): T;
}
export interface IFunction1<A1, T> {
(a1: A1): T;
}
export interface IFunction2<A1, A2, T> {
(a1: A1, a2: A2): T;
}
export interface IFunction3<A1, A2, A3, T> {
(a1: A1, a2: A2, a3: A3): T;
}
export interface IFunction4<A1, A2, A3, A4, T> {
(a1: A1, a2: A2, a3: A3, a4: A4): T;
}
export interface IFunction5<A1, A2, A3, A4, A5, T> {
(a1: A1, a2: A2, a3: A3, a4: A4, a5: A5): T;
}
export interface IFunction6<A1, A2, A3, A4, A5, A6, T> {
(a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6): T;
}
export interface IFunction7<A1, A2, A3, A4, A5, A6, A7, T> {
(a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7): T;
}
export interface IFunction8<A1, A2, A3, A4, A5, A6, A7, A8, T> {
(a1: A1, a2: A2, a3: A3, a4: A4, a5: A5, a6: A6, a7: A7, a8: A8): T;
}
export interface IAction0 extends IFunction0<void> {
}
export interface IAction1<A1> extends IFunction1<A1, void> {
}
export interface IAction2<A1, A2> extends IFunction2<A1, A2, void> {
}
export interface IAction3<A1, A2, A3> extends IFunction3<A1, A2, A3, void> {
}
export interface IAction4<A1, A2, A3, A4> extends IFunction4<A1, A2, A3, A4, void> {
}
export interface IAction5<A1, A2, A3, A4, A5> extends IFunction5<A1, A2, A3, A4, A5, void> {
}
export interface IAction6<A1, A2, A3, A4, A5, A6> extends IFunction6<A1, A2, A3, A4, A5, A6, void> {
}
export interface IAction7<A1, A2, A3, A4, A5, A6, A7> extends IFunction7<A1, A2, A3, A4, A5, A6, A7, void> {
}
export interface IAction8<A1, A2, A3, A4, A5, A6, A7, A8> extends IFunction8<A1, A2, A3, A4, A5, A6, A7, A8, void> {
}
export declare type NumberCallback = (index: number) => void;
export declare function count(to: number, callback: NumberCallback): void;
export declare function count(from: number, to: number, callback: NumberCallback): void;
export declare function countToArray(to: number): number[];
export declare function countToArray(from: number, to: number): number[];

View File

@ -0,0 +1,190 @@
/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved.
* Licensed under the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
'use strict';
Object.defineProperty(exports, "__esModule", { value: true });
exports.countToArray = exports.count = exports.create = exports.validateConstraint = exports.validateConstraints = exports.areFunctions = exports.isFunction = exports.isEmptyObject = exports.isUndefinedOrNull = exports.isUndefined = exports.isBoolean = exports.isNumber = exports.isObject = exports.isStringArray = exports.isString = exports.isArray = void 0;
const _typeof = {
number: 'number',
string: 'string',
undefined: 'undefined',
object: 'object',
function: 'function'
};
/**
* @returns whether the provided parameter is a JavaScript Array or not.
*/
function isArray(array) {
if (Array.isArray) {
return Array.isArray(array);
}
if (array && typeof (array.length) === _typeof.number && array.constructor === Array) {
return true;
}
return false;
}
exports.isArray = isArray;
/**
* @returns whether the provided parameter is a JavaScript String or not.
*/
function isString(str) {
if (typeof (str) === _typeof.string || str instanceof String) {
return true;
}
return false;
}
exports.isString = isString;
/**
* @returns whether the provided parameter is a JavaScript Array and each element in the array is a string.
*/
function isStringArray(value) {
return isArray(value) && value.every(elem => isString(elem));
}
exports.isStringArray = isStringArray;
/**
*
* @returns whether the provided parameter is of type `object` but **not**
* `null`, an `array`, a `regexp`, nor a `date`.
*/
function isObject(obj) {
// The method can't do a type cast since there are type (like strings) which
// are subclasses of any put not positvely matched by the function. Hence type
// narrowing results in wrong results.
return typeof obj === _typeof.object
&& obj !== null
&& !Array.isArray(obj)
&& !(obj instanceof RegExp)
&& !(obj instanceof Date);
}
exports.isObject = isObject;
/**
* In **contrast** to just checking `typeof` this will return `false` for `NaN`.
* @returns whether the provided parameter is a JavaScript Number or not.
*/
function isNumber(obj) {
if ((typeof (obj) === _typeof.number || obj instanceof Number) && !isNaN(obj)) {
return true;
}
return false;
}
exports.isNumber = isNumber;
/**
* @returns whether the provided parameter is a JavaScript Boolean or not.
*/
function isBoolean(obj) {
return obj === true || obj === false;
}
exports.isBoolean = isBoolean;
/**
* @returns whether the provided parameter is undefined.
*/
function isUndefined(obj) {
return typeof (obj) === _typeof.undefined;
}
exports.isUndefined = isUndefined;
/**
* @returns whether the provided parameter is undefined or null.
*/
function isUndefinedOrNull(obj) {
return isUndefined(obj) || obj === null;
}
exports.isUndefinedOrNull = isUndefinedOrNull;
const hasOwnProperty = Object.prototype.hasOwnProperty;
/**
* @returns whether the provided parameter is an empty JavaScript Object or not.
*/
function isEmptyObject(obj) {
if (!isObject(obj)) {
return false;
}
for (let key in obj) {
if (hasOwnProperty.call(obj, key)) {
return false;
}
}
return true;
}
exports.isEmptyObject = isEmptyObject;
/**
* @returns whether the provided parameter is a JavaScript Function or not.
*/
function isFunction(obj) {
return typeof obj === _typeof.function;
}
exports.isFunction = isFunction;
/**
* @returns whether the provided parameters is are JavaScript Function or not.
*/
function areFunctions(...objects) {
return objects && objects.length > 0 && objects.every(isFunction);
}
exports.areFunctions = areFunctions;
function validateConstraints(args, constraints) {
const len = Math.min(args.length, constraints.length);
for (let i = 0; i < len; i++) {
validateConstraint(args[i], constraints[i]);
}
}
exports.validateConstraints = validateConstraints;
function validateConstraint(arg, constraint) {
if (isString(constraint)) {
if (typeof arg !== constraint) {
throw new Error(`argument does not match constraint: typeof ${constraint}`);
}
}
else if (isFunction(constraint)) {
if (arg instanceof constraint) {
return;
}
if (arg && arg.constructor === constraint) {
return;
}
if (constraint.length === 1 && constraint.call(undefined, arg) === true) {
return;
}
throw new Error(`argument does not match one of these constraints: arg instanceof constraint, arg.constructor === constraint, nor constraint(arg) === true`);
}
}
exports.validateConstraint = validateConstraint;
/**
* Creates a new object of the provided class and will call the constructor with
* any additional argument supplied.
*/
function create(ctor, ...args) {
let obj = Object.create(ctor.prototype);
ctor.apply(obj, args);
return obj;
}
exports.create = create;
function count(fromOrTo, toOrCallback, callback) {
var from, to;
if (isNumber(toOrCallback)) {
from = fromOrTo;
to = toOrCallback;
}
else {
from = 0;
to = fromOrTo;
callback = toOrCallback;
}
var op = from <= to ? (i) => i + 1 : (i) => i - 1;
var cmp = from <= to ? (a, b) => a < b : (a, b) => a > b;
for (var i = from; cmp(i, to); i = op(i)) {
callback(i);
}
}
exports.count = count;
function countToArray(fromOrTo, to) {
var result = [];
var fn = (i) => result.push(i);
if (isUndefined(to)) {
count(fromOrTo, fn);
}
else {
count(fromOrTo, to, fn);
}
return result;
}
exports.countToArray = countToArray;
//# sourceMappingURL=primitives.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/lib/common/primitives.ts"],"names":[],"mappings":"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"}

76
packages/bot/lib/common/strings.d.ts vendored Normal file
View File

@ -0,0 +1,76 @@
/// <reference types="node" />
export declare const DefaultDelimiter: {
begin: string;
end: string;
};
export declare const hasFlag: (field: any, enumValue: any) => boolean;
export declare const hasFlagHex: (field: any, enumValue: any) => boolean;
export declare const disableFlag: (enumValue: any, field: any) => any;
/**
* The minimum location of high surrogates
*/
export declare const HIGH_SURROGATE_MIN = 55296;
/**
* The maximum location of high surrogates
*/
export declare const HIGH_SURROGATE_MAX = 56319;
/**
* The minimum location of low surrogates
*/
export declare const LOW_SURROGATE_MIN = 56320;
/**
* The maximum location of low surrogates
*/
export declare const LOW_SURROGATE_MAX = 57343;
export declare const capitalize: (word: any) => any;
export declare const getJson: (inData: any, validOnly: any, ommit: any) => any;
/**
* Escapes a string so that it can safely be passed to the RegExp constructor.
* @param text The string to be escaped
* @return The escaped string
*/
export declare function escapeRegExpEx(text: string): string;
/**
* Sanitizes a string to protect against tag injection.
* @param xml The string to be escaped
* @param forAttribute Whether to also escape ', ", and > in addition to < and &
* @return The escaped string
*/
export declare function escapeXml(xml: string, forAttribute?: boolean): string;
export declare function createUUID(): string;
export declare function escapeRegExp(str: string): string;
export declare function findOcurrences(expression: string, delimiters: IDelimiter): Array<string>;
export declare function multipleReplace(str: string, hash: any): string;
export declare function replaceAll(find: string, replace: string, str: string): string;
export interface IDelimiter {
begin: string;
end: string;
}
export declare function replace(str: string, needle: any | null, what: string | any, delimiters: IDelimiter): string;
export declare const substitute: (template: any, map: any) => any;
export declare type ByteBuffer = Uint16Array | Uint8Array | Buffer | number[];
export interface Codec {
encode(data: string): number[];
decode(data: ByteBuffer): string;
}
/**
* Provides facilities for encoding a string into an ASCII-encoded byte buffer and
* decoding an ASCII-encoded byte buffer into a string.
*/
export declare const ascii: Codec;
/**
* Provides facilities for encoding a string into a Base64-encoded byte buffer and
* decoding a Base64-encoded byte buffer into a string.
*/
export declare const base64: Codec;
/**
* Provides facilities for encoding a string into a hex-encoded byte buffer and
* decoding a hex-encoded byte buffer into a string.
*/
export declare const hex: Codec;
/**
* Provides facilities for encoding a string into a UTF-8-encoded byte buffer and
* decoding a UTF-8-encoded byte buffer into a string.
* Inspired by the work of: https://github.com/mathiasbynens/utf8.js
*/
export declare const utf8: Codec;

View File

@ -0,0 +1,443 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.utf8 = exports.hex = exports.base64 = exports.ascii = exports.substitute = exports.replace = exports.replaceAll = exports.multipleReplace = exports.findOcurrences = exports.escapeRegExp = exports.createUUID = exports.escapeXml = exports.escapeRegExpEx = exports.getJson = exports.capitalize = exports.LOW_SURROGATE_MAX = exports.LOW_SURROGATE_MIN = exports.HIGH_SURROGATE_MAX = exports.HIGH_SURROGATE_MIN = exports.disableFlag = exports.hasFlagHex = exports.hasFlag = exports.DefaultDelimiter = void 0;
const primitives_1 = require("./primitives");
const lodash_1 = require("lodash");
const escapeRegExpPattern = /[[\]{}()|\/\\^$.*+?]/g;
const escapeXmlPattern = /[&<]/g;
const escapeXmlForPattern = /[&<>'"]/g;
const escapeXmlMap = {
'&': '&amp;',
'<': '&lt;',
'>': '&gt;',
'"': '&quot;',
'\'': '&#39;'
};
exports.DefaultDelimiter = {
begin: '<%',
end: '%>'
};
const hasFlag = (field, enumValue) => {
//noinspection JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage
// tslint:disable-next-line:no-bitwise
return ((1 << enumValue) & field) ? true : false;
};
exports.hasFlag = hasFlag;
const hasFlagHex = (field, enumValue) => {
//noinspection JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage,JSBitwiseOperatorUsage
// tslint:disable-next-line:no-bitwise
return enumValue & field ? true : false;
};
exports.hasFlagHex = hasFlagHex;
const disableFlag = (enumValue, field) => {
enumValue &= ~(1 << field);
return enumValue;
};
exports.disableFlag = disableFlag;
/**
* The minimum location of high surrogates
*/
exports.HIGH_SURROGATE_MIN = 0xD800;
/**
* The maximum location of high surrogates
*/
exports.HIGH_SURROGATE_MAX = 0xDBFF;
/**
* The minimum location of low surrogates
*/
exports.LOW_SURROGATE_MIN = 0xDC00;
/**
* The maximum location of low surrogates
*/
exports.LOW_SURROGATE_MAX = 0xDFFF;
const BASE64_KEYSTR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
const capitalize = (word) => {
return word.substring(0, 1).toUpperCase() + word.substring(1);
};
exports.capitalize = capitalize;
const getJson = (inData, validOnly, ommit) => {
try {
return (0, lodash_1.isString)(inData) ? JSON.parse(inData) : validOnly === true ? null : inData;
}
catch (e) {
ommit !== false && console.error('error parsing json data ' + inData + ' error = ' + e);
}
return null;
};
exports.getJson = getJson;
/**
* Escapes a string so that it can safely be passed to the RegExp constructor.
* @param text The string to be escaped
* @return The escaped string
*/
function escapeRegExpEx(text) {
return !text ? text : text.replace(escapeRegExpPattern, '\\$&');
}
exports.escapeRegExpEx = escapeRegExpEx;
/**
* Sanitizes a string to protect against tag injection.
* @param xml The string to be escaped
* @param forAttribute Whether to also escape ', ", and > in addition to < and &
* @return The escaped string
*/
function escapeXml(xml, forAttribute = true) {
if (!xml) {
return xml;
}
const pattern = forAttribute ? escapeXmlForPattern : escapeXmlPattern;
return xml.replace(pattern, function (character) {
return escapeXmlMap[character];
});
}
exports.escapeXml = escapeXml;
function createUUID() {
const S4 = function () {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
};
return (S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4());
}
exports.createUUID = createUUID;
function escapeRegExp(str) {
const special = ['[', ']', '(', ')', '{', '}', '*', '+', '.', '|', '||'];
for (let n = 0; n < special.length; n++) {
str = str.replace(special[n], '\\' + special[n]);
}
return str;
}
exports.escapeRegExp = escapeRegExp;
;
function findOcurrences(expression, delimiters) {
// tslint:disable-next-line:no-object-literal-type-assertion
const d = {
begin: escapeRegExp(delimiters.begin),
end: escapeRegExp(delimiters.end)
};
return expression.match(new RegExp(d.begin + '([^' + d.end + ']*)' + d.end, 'g'));
}
exports.findOcurrences = findOcurrences;
;
function multipleReplace(str, hash) {
// to array
const a = [];
// tslint:disable-next-line:forin
for (let key in hash) {
a[a.length] = key;
}
return str.replace(new RegExp(a.join('\\b|\\b'), 'g'), function (m) {
return hash[m] || hash['\\' + m];
});
}
exports.multipleReplace = multipleReplace;
;
function replaceAll(find, replace, str) {
return str ? str.split(find).join(replace) : '';
}
exports.replaceAll = replaceAll;
;
function replace(str, needle, what, delimiters) {
if (!str) {
return '';
}
if (what && (0, primitives_1.isObject)(what) || (0, primitives_1.isArray)(what)) {
what = what;
if (!delimiters) {
// fast case
return multipleReplace(str, what);
}
const occurrence = findOcurrences(str, delimiters);
if (!occurrence) {
return str;
}
else {
for (let i = 0, j = occurrence.length; i < j; i++) {
const el = occurrence[i];
// strip off delimiters
let _variableName = replaceAll(delimiters.begin, '', el);
_variableName = replaceAll(delimiters.end, '', _variableName);
str = replaceAll(el, (what[_variableName]), str);
}
}
return str;
}
// fast case
return replaceAll(needle, what, str);
}
exports.replace = replace;
;
const substitute = (template, map) => {
const transform = (k) => k || '';
return template.replace(/\$\{([^\s\:\}]+)(?:\:([^\s\:\}]+))?\}/g, (match, key, format) => transform(map[key]).toString());
};
exports.substitute = substitute;
function decodeUtf8EncodedCodePoint(codePoint, validationRange = [0, Infinity], checkSurrogate) {
if (codePoint < validationRange[0] || codePoint > validationRange[1]) {
throw Error('Invalid continuation byte');
}
if (checkSurrogate && codePoint >= exports.HIGH_SURROGATE_MIN && codePoint <= exports.LOW_SURROGATE_MAX) {
throw Error('Surrogate is not a scalar value');
}
let encoded = '';
if (codePoint > 0xFFFF) {
codePoint -= 0x010000;
encoded += String.fromCharCode(codePoint >>> 0x10 & 0x03FF | exports.HIGH_SURROGATE_MIN);
codePoint = exports.LOW_SURROGATE_MIN | codePoint & 0x03FF;
}
encoded += String.fromCharCode(codePoint);
return encoded;
}
function validateUtf8EncodedCodePoint(codePoint) {
if ((codePoint & 0xC0) !== 0x80) {
throw Error('Invalid continuation byte');
}
}
/**
* Provides facilities for encoding a string into an ASCII-encoded byte buffer and
* decoding an ASCII-encoded byte buffer into a string.
*/
exports.ascii = {
/**
* Encodes a string into an ASCII-encoded byte buffer.
*
* @param data The text string to encode
*/
encode(data) {
if (data == null) {
return [];
}
const buffer = [];
for (let i = 0, length = data.length; i < length; i++) {
buffer[i] = data.charCodeAt(i);
}
return buffer;
},
/**
* Decodes an ASCII-encoded byte buffer into a string.
*
* @param data The byte buffer to decode
*/
decode(data) {
if (data == null) {
return '';
}
let decoded = '';
for (let i = 0, length = data.length; i < length; i++) {
decoded += String.fromCharCode(data[i]);
}
return decoded;
}
};
/**
* Provides facilities for encoding a string into a Base64-encoded byte buffer and
* decoding a Base64-encoded byte buffer into a string.
*/
exports.base64 = {
/**
* Encodes a Base64-encoded string into a Base64 byte buffer.
*
* @param data The Base64-encoded string to encode
*/
encode(data) {
if (data == null) {
return [];
}
const buffer = [];
let i = 0;
let length = data.length;
while (data[--length] === '=') { }
while (i < length) {
let encoded = BASE64_KEYSTR.indexOf(data[i++]) << 18;
if (i <= length) {
encoded |= BASE64_KEYSTR.indexOf(data[i++]) << 12;
}
if (i <= length) {
encoded |= BASE64_KEYSTR.indexOf(data[i++]) << 6;
}
if (i <= length) {
encoded |= BASE64_KEYSTR.indexOf(data[i++]);
}
buffer.push((encoded >>> 16) & 0xff);
buffer.push((encoded >>> 8) & 0xff);
buffer.push(encoded & 0xff);
}
while (buffer[buffer.length - 1] === 0) {
buffer.pop();
}
return buffer;
},
/**
* Decodes a Base64-encoded byte buffer into a Base64-encoded string.
*
* @param data The byte buffer to decode
*/
decode(data) {
if (data == null) {
return '';
}
let decoded = '';
let i = 0;
for (let length = data.length - (data.length % 3); i < length;) {
let encoded = data[i++] << 16 | data[i++] << 8 | data[i++];
decoded += BASE64_KEYSTR.charAt((encoded >>> 18) & 0x3F);
decoded += BASE64_KEYSTR.charAt((encoded >>> 12) & 0x3F);
decoded += BASE64_KEYSTR.charAt((encoded >>> 6) & 0x3F);
decoded += BASE64_KEYSTR.charAt(encoded & 0x3F);
}
if (data.length % 3 === 1) {
let encoded = data[i++] << 16;
decoded += BASE64_KEYSTR.charAt((encoded >>> 18) & 0x3f);
decoded += BASE64_KEYSTR.charAt((encoded >>> 12) & 0x3f);
decoded += '==';
}
else if (data.length % 3 === 2) {
let encoded = data[i++] << 16 | data[i++] << 8;
decoded += BASE64_KEYSTR.charAt((encoded >>> 18) & 0x3f);
decoded += BASE64_KEYSTR.charAt((encoded >>> 12) & 0x3f);
decoded += BASE64_KEYSTR.charAt((encoded >>> 6) & 0x3f);
decoded += '=';
}
return decoded;
}
};
/**
* Provides facilities for encoding a string into a hex-encoded byte buffer and
* decoding a hex-encoded byte buffer into a string.
*/
exports.hex = {
/**
* Encodes a string into a hex-encoded byte buffer.
*
* @param data The hex-encoded string to encode
*/
encode(data) {
if (data == null) {
return [];
}
const buffer = [];
for (let i = 0, length = data.length; i < length; i += 2) {
let encodedChar = parseInt(data.substr(i, 2), 16);
buffer.push(encodedChar);
}
return buffer;
},
/**
* Decodes a hex-encoded byte buffer into a hex-encoded string.
*
* @param data The byte buffer to decode
*/
decode(data) {
if (data == null) {
return '';
}
let decoded = '';
for (let i = 0, length = data.length; i < length; i++) {
decoded += data[i].toString(16).toUpperCase();
}
return decoded;
}
};
/**
* Provides facilities for encoding a string into a UTF-8-encoded byte buffer and
* decoding a UTF-8-encoded byte buffer into a string.
* Inspired by the work of: https://github.com/mathiasbynens/utf8.js
*/
exports.utf8 = {
/**
* Encodes a string into a UTF-8-encoded byte buffer.
*
* @param data The text string to encode
*/
encode(data) {
if (data == null) {
return [];
}
const buffer = [];
for (let i = 0, length = data.length; i < length; i++) {
let encodedChar = data.charCodeAt(i);
/**
* Surrogates
* http://en.wikipedia.org/wiki/Universal_Character_Set_characters
*/
if (encodedChar >= exports.HIGH_SURROGATE_MIN && encodedChar <= exports.HIGH_SURROGATE_MAX) {
let lowSurrogate = data.charCodeAt(i + 1);
if (lowSurrogate >= exports.LOW_SURROGATE_MIN && lowSurrogate <= exports.LOW_SURROGATE_MAX) {
encodedChar = 0x010000 + (encodedChar - exports.HIGH_SURROGATE_MIN) * 0x0400 + (lowSurrogate - exports.LOW_SURROGATE_MIN);
i++;
}
}
if (encodedChar < 0x80) {
buffer.push(encodedChar);
}
else {
if (encodedChar < 0x800) {
buffer.push(((encodedChar >> 0x06) & 0x1F) | 0xC0);
}
else if (encodedChar < 0x010000) {
if (encodedChar >= exports.HIGH_SURROGATE_MIN && encodedChar <= exports.LOW_SURROGATE_MAX) {
throw Error('Surrogate is not a scalar value');
}
buffer.push(((encodedChar >> 0x0C) & 0x0F) | 0xE0);
buffer.push(((encodedChar >> 0x06) & 0x3F) | 0x80);
}
else if (encodedChar < 0x200000) {
buffer.push(((encodedChar >> 0x12) & 0x07) | 0xF0);
buffer.push(((encodedChar >> 0x0C) & 0x3F) | 0x80);
buffer.push(((encodedChar >> 0x06) & 0x3F) | 0x80);
}
buffer.push((encodedChar & 0x3F) | 0x80);
}
}
return buffer;
},
/**
* Decodes a UTF-8-encoded byte buffer into a string.
*
* @param data The byte buffer to decode
*/
decode(data) {
if (data == null) {
return '';
}
let decoded = '';
for (let i = 0, length = data.length; i < length; i++) {
let byte1 = data[i] & 0xFF;
if ((byte1 & 0x80) === 0) {
decoded += decodeUtf8EncodedCodePoint(byte1);
}
else if ((byte1 & 0xE0) === 0xC0) {
let byte2 = data[++i] & 0xFF;
validateUtf8EncodedCodePoint(byte2);
byte2 = byte2 & 0x3F;
let encodedByte = ((byte1 & 0x1F) << 0x06) | byte2;
decoded += decodeUtf8EncodedCodePoint(encodedByte, [0x80, Infinity]);
}
else if ((byte1 & 0xF0) === 0xE0) {
let byte2 = data[++i] & 0xFF;
validateUtf8EncodedCodePoint(byte2);
byte2 = byte2 & 0x3F;
let byte3 = data[++i] & 0xFF;
validateUtf8EncodedCodePoint(byte3);
byte3 = byte3 & 0x3F;
let encodedByte = ((byte1 & 0x1F) << 0x0C) | (byte2 << 0x06) | byte3;
decoded += decodeUtf8EncodedCodePoint(encodedByte, [0x0800, Infinity], true);
}
else if ((byte1 & 0xF8) === 0xF0) {
let byte2 = data[++i] & 0xFF;
validateUtf8EncodedCodePoint(byte2);
byte2 = byte2 & 0x3F;
let byte3 = data[++i] & 0xFF;
validateUtf8EncodedCodePoint(byte3);
byte3 = byte3 & 0x3F;
let byte4 = data[++i] & 0xFF;
validateUtf8EncodedCodePoint(byte4);
byte4 = byte4 & 0x3F;
let encodedByte = ((byte1 & 0x1F) << 0x0C) | (byte2 << 0x0C) | (byte3 << 0x06) | byte4;
decoded += decodeUtf8EncodedCodePoint(encodedByte, [0x010000, 0x10FFFF]);
}
else {
validateUtf8EncodedCodePoint(byte1);
}
}
return decoded;
}
};
//# sourceMappingURL=strings.js.map

File diff suppressed because one or more lines are too long

31
packages/bot/lib/common/types.d.ts vendored Normal file
View File

@ -0,0 +1,31 @@
export * from './enums';
export interface Hash<T> {
[id: string]: T;
}
export interface List<T> {
[index: number]: T;
length: number;
}
/**
* Interface of the simple literal object with any string keys.
*/
export interface IObjectLiteral {
[key: string]: any;
}
/**
* Represents some Type of the Object.
*/
export declare type ObjectType<T> = {
new (): T;
} | (Function);
/**
* Same as Partial<T> but goes deeper and makes Partial<T> all its properties and sub-properties.
*/
export declare type DeepPartial<T> = {
[P in keyof T]?: DeepPartial<T[P]>;
};
export interface IDelimitter {
begin: string;
end: string;
}
export declare type JSONPathExpression = string;

View File

@ -0,0 +1,18 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
__exportStar(require("./enums"), exports);
//# sourceMappingURL=types.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lib/common/types.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB"}

8
packages/bot/lib/fs/index.d.ts vendored Normal file
View File

@ -0,0 +1,8 @@
export { sync as read } from '@plastichub/fs/read';
export { sync as exists } from '@plastichub/fs/exists';
export { sync as dir } from '@plastichub/fs/dir';
export { sync as write } from '@plastichub/fs/write';
export declare const files: (dir: any, glob: any) => [];
export declare const images: (source: any) => any[];
export declare const forward_slash: (path: any) => any;
export declare function resize_images(files: any): Promise<any>;

View File

@ -0,0 +1,57 @@
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.resize_images = exports.forward_slash = exports.images = exports.files = exports.write = exports.dir = exports.exists = exports.read = void 0;
const fg = require('fast-glob');
const path = require("path");
const bluebird = require("bluebird");
var read_1 = require("@plastichub/fs/read");
Object.defineProperty(exports, "read", { enumerable: true, get: function () { return read_1.sync; } });
var exists_1 = require("@plastichub/fs/exists");
Object.defineProperty(exports, "exists", { enumerable: true, get: function () { return exists_1.sync; } });
var dir_1 = require("@plastichub/fs/dir");
Object.defineProperty(exports, "dir", { enumerable: true, get: function () { return dir_1.sync; } });
var write_1 = require("@plastichub/fs/write");
Object.defineProperty(exports, "write", { enumerable: true, get: function () { return write_1.sync; } });
const index_1 = require("../process/index");
const IMAGES_GLOB = '*.+(JPG|jpg|png|PNG|gif)';
const files = (dir, glob) => fg.sync(glob, { dot: true, cwd: dir, absolute: true });
exports.files = files;
const images = (source) => (0, exports.files)(source, IMAGES_GLOB);
exports.images = images;
const forward_slash = (path) => {
const isExtendedLengthPath = /^\\\\\?\\/.test(path);
const hasNonAscii = /[^\u0000-\u0080]+/.test(path); // eslint-disable-line no-control-regex
if (isExtendedLengthPath || hasNonAscii) {
return path;
}
return path.replace(/\\/g, '/');
};
exports.forward_slash = forward_slash;
function resize_images(files) {
return __awaiter(this, void 0, void 0, function* () {
return bluebird.mapSeries(files, (file) => {
const inParts = path.parse(file);
const promise = index_1.Helper.run(inParts.dir, 'convert', [
`"${inParts.base}"`,
'-quality 70',
'-resize 1980',
'-sharpen 0x1.0',
`"${inParts.name}${inParts.ext}"`
]);
return promise;
});
});
}
exports.resize_images = resize_images;
const jekyllNop = "---\n#jekyll\n---\n";
const frontMatter = /^---[.\r\n]*---/;
//# sourceMappingURL=index.js.map

View File

@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/fs/index.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,MAAM,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAEhC,6BAA6B;AAC7B,qCAAqC;AAErC,4CAAmD;AAA1C,4FAAA,IAAI,OAAQ;AACrB,gDAAuD;AAA9C,gGAAA,IAAI,OAAU;AACvB,0CAAiD;AAAxC,0FAAA,IAAI,OAAO;AACpB,8CAAqD;AAA5C,8FAAA,IAAI,OAAS;AAGtB,4CAA0C;AAE1C,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAExC,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAO,CAAC;AAApF,QAAA,KAAK,SAA+E;AAC1F,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,IAAA,aAAK,EAAC,MAAM,EAAE,WAAW,CAAU,CAAC;AAAzD,QAAA,MAAM,UAAmD;AAG/D,MAAM,aAAa,GAAG,CAAC,IAAI,EAAE,EAAE;IACrC,MAAM,oBAAoB,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,uCAAuC;IAE3F,IAAI,oBAAoB,IAAI,WAAW,EAAE;QACxC,OAAO,IAAI,CAAC;KACZ;IAED,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACjC,CAAC,CAAC;AATW,QAAA,aAAa,iBASxB;AAEF,SAAsB,aAAa,CAAC,KAAK;;QACrC,OAAO,QAAQ,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE;YAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,cAAM,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,EAC7C;gBACI,IAAI,OAAO,CAAC,IAAI,GAAG;gBACnB,aAAa;gBACb,cAAc;gBACd,gBAAgB;gBAChB,IAAI,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,GAAG;aACpC,CAAC,CAAC;YACP,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC;CAAA;AAbD,sCAaC;AAED,MAAM,SAAS,GAAG,qBAAqB,CAAC;AACxC,MAAM,WAAW,GAAG,iBAAiB,CAAC"}

5
packages/bot/lib/index.d.ts vendored Normal file
View File

@ -0,0 +1,5 @@
/// <reference types="node" />
import { IResizeOptions } from '../types';
export declare const fileAsBuffer: (path: string) => Buffer;
export declare const targets: (f: string, options: IResizeOptions) => string[];
export declare const targetsNext: (f: string, options: IResizeOptions) => string[];

140
packages/bot/lib/index.js Normal file

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/lib/index.ts"],"names":[],"mappings":";;;AAAa,QAAA,CAAC,GAAG,CAAC,CAAC"}

View File

@ -0,0 +1,13 @@
import { IConvertVideoOptions } from '../../../types';
export declare const split: (src: string, dst: string, onNode: any, options: {
interval: number;
}) => Promise<void>;
export declare const CONVERTERS: {
'.mp3': (src: string, dst: string, onNode: any, options: {
interval: number;
}) => Promise<void>;
};
export declare const converter: (file: string) => any;
export declare const convertFile: (file: any, target: any, onNode: (data: any) => void, options: IConvertVideoOptions) => Promise<any>;
export declare function _convert(file: any, targets: string[], onNode: (data: any) => void, options: IConvertVideoOptions): Promise<any[]>;
export declare const convert: (options: IConvertVideoOptions) => Promise<void>;

View File

@ -0,0 +1,95 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.convert = exports._convert = exports.convertFile = exports.converter = exports.CONVERTERS = exports.split = void 0;
const path = require("path");
const pMap = require("p-map");
const commons_1 = require("@polymech/commons");
const exists_1 = require("@polymech/fs/exists");
const dir_1 = require("@polymech/fs/dir");
const lib_1 = require("@polymech/cache/lib");
const __1 = require("../../");
const __2 = require("../../..");
const constants_1 = require("../../../constants");
const ffmpeg_1 = require("../ffmpeg");
const FfmpegCommand = require('fluent-ffmpeg');
const extension = (file) => path.parse(file).ext;
const split = async (src, dst, onNode, options) => {
try {
const metadata = await (0, ffmpeg_1.meta)(src);
const duration = metadata.format.duration;
if (!duration) {
__2.logger.error('Unable to determine duration of the audio file.');
return;
}
let startTime = 0;
let segmentIndex = 1;
while (startTime < duration) {
const outputFile = `${dst}/segment_${segmentIndex}.mp3`;
await new Promise((resolve, reject) => {
const ff = new FfmpegCommand(src)
.setStartTime(startTime)
.setDuration(options.interval)
.output(outputFile)
.on('end', () => {
__2.logger.info(`Segment ${segmentIndex} finished.`);
resolve();
})
.on('error', (error) => {
__2.logger.error(`Error while processing segment ${segmentIndex}:`, error.message);
reject(error);
})
.run();
});
startTime += options.interval;
segmentIndex++;
}
}
catch (error) {
__2.logger.error('Error splitting audio file:', error);
}
};
exports.split = split;
exports.CONVERTERS = {
'.mp3': exports.split
};
const converter = (file) => exports.CONVERTERS[extension(file)];
exports.converter = converter;
const convertFile = async (file, target, onNode = () => { }, options) => {
const osr_cache = (0, commons_1.OSR_CACHE)();
const ca_options = JSON.parse(JSON.stringify({ ...options, target, skip: null }));
const cached = await (0, lib_1.get_cached)(file, ca_options, constants_1.MODULE_NAME);
const conv = (0, exports.converter)(target);
if (!conv) {
__2.logger.error(`No converter found for ${file}`);
return;
}
const dstParts = path.parse(target);
if (!(0, exists_1.sync)(dstParts.dir)) {
(0, dir_1.sync)(dstParts.dir);
}
const ret = await conv(file, target, onNode, options);
return ret;
};
exports.convertFile = convertFile;
async function _convert(file, targets, onNode = () => { }, options) {
return pMap(targets, (target) => {
options.verbose && __2.logger.debug(`Convert ${file} to ${target}`);
if (options.dry) {
return;
}
return (0, exports.convertFile)(file, target, onNode, options);
}, { concurrency: 1 });
}
exports._convert = _convert;
const convert = async (options) => {
let reports = [];
const onNode = (data) => { reports.push(data); };
options.verbose && __2.logger.info(`Convert ${options.srcInfo.FILES.length} files `);
await pMap(options.srcInfo.FILES, (f) => {
const outputs = (0, __1.targets)(f, options);
options.verbose && __2.logger.info(`Convert ${f} to `, outputs);
return _convert(f, outputs, onNode, options);
}, { concurrency: 1 });
};
exports.convert = convert;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbWVkaWEvYXVkaW8vY29udmVydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2QkFBNEI7QUFDNUIsOEJBQTZCO0FBQzdCLCtDQUE2QztBQUM3QyxnREFBb0Q7QUFDcEQsMENBQThDO0FBQzlDLDZDQUFnRDtBQUNoRCw4QkFBZ0M7QUFDaEMsZ0NBQWlDO0FBQ2pDLGtEQUFnRDtBQUdoRCxzQ0FBZ0M7QUFJaEMsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0FBRTlDLE1BQU0sU0FBUyxHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQTtBQUVqRCxNQUFNLEtBQUssR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEdBQVcsRUFBRSxNQUFNLEVBQUUsT0FBNkIsRUFBaUIsRUFBRTtJQUMxRyxJQUFJO1FBQ0EsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLGFBQUksRUFBQyxHQUFHLENBQUMsQ0FBQTtRQUNoQyxNQUFNLFFBQVEsR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQTtRQUN6QyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ1gsVUFBTSxDQUFDLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1lBQ2hFLE9BQU87U0FDVjtRQUVELElBQUksU0FBUyxHQUFHLENBQUMsQ0FBQTtRQUNqQixJQUFJLFlBQVksR0FBRyxDQUFDLENBQUE7UUFFcEIsT0FBTyxTQUFTLEdBQUcsUUFBUSxFQUFFO1lBQ3pCLE1BQU0sVUFBVSxHQUFHLEdBQUcsR0FBRyxZQUFZLFlBQVksTUFBTSxDQUFDO1lBRXhELE1BQU0sSUFBSSxPQUFPLENBQU8sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7Z0JBQ3hDLE1BQU0sRUFBRSxHQUFHLElBQUks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

2
packages/bot/lib/media/ffmpeg.d.ts vendored Normal file
View File

@ -0,0 +1,2 @@
import { FfprobeData } from 'fluent-ffmpeg';
export declare const meta: (src: string) => Promise<FfprobeData>;

View File

@ -0,0 +1,21 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.meta = void 0;
const FfmpegCommand = require('fluent-ffmpeg');
const meta = async (src) => {
return new Promise((resolve, reject) => {
const ff = new FfmpegCommand(src);
ff.ffprobe(src, (err, metadata) => {
if (err) {
//logger.error('Error retrieving metadata:', err)
reject(err);
}
else {
//logger.info('Successfully retrieved metadata.');
resolve(metadata);
}
});
});
};
exports.meta = meta;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmZtcGVnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9tZWRpYS9mZm1wZWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGVBQWUsQ0FBQyxDQUFBO0FBRXZDLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQXdCLEVBQUU7SUFDNUQsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNyQyxNQUFNLEVBQUUsR0FBRyxJQUFJLGFBQWEsQ0FBQyxHQUFHLENBQUMsQ0FBQTtRQUNqQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxRQUFRLEVBQUUsRUFBRTtZQUNoQyxJQUFJLEdBQUcsRUFBRTtnQkFDUCxpREFBaUQ7Z0JBQ2pELE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQzthQUNiO2lCQUFNO2dCQUNMLGtEQUFrRDtnQkFDbEQsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO2FBQ2xCO1FBQ0gsQ0FBQyxDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUMsQ0FBQTtBQWJVLFFBQUEsSUFBSSxRQWFkIn0=

View File

@ -0,0 +1,5 @@
import * as sharp from 'sharp';
import { IOptions, IResizeOptions } from '../../../types';
export declare const convertFile: (file: any, target: any, onNode: (data: any) => void, options: IResizeOptions) => Promise<sharp.OutputInfo>;
export declare function _convert(file: any, targets: string[], onNode: (data: any) => void, options: IOptions): Promise<any[]>;
export declare const convert: (options: IOptions) => Promise<void>;

View File

@ -0,0 +1,50 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.convert = exports._convert = exports.convertFile = void 0;
const path = require("path");
const bluebird = require("bluebird");
const pMap = require("p-map");
const sharp = require("sharp");
const index_1 = require("../../../index");
const commons_1 = require("@polymech/commons");
const exists_1 = require("@polymech/fs/exists");
const dir_1 = require("@polymech/fs/dir");
const lib_1 = require("@polymech/cache/lib");
const __1 = require("../../");
const constants_1 = require("../../../constants");
const convertFile = async (file, target, onNode = () => { }, options) => {
const osr_cache = (0, commons_1.OSR_CACHE)();
const ca_options = JSON.parse(JSON.stringify({ ...options, target, skip: null }));
const cached = await (0, lib_1.get_cached)(file, ca_options, constants_1.MODULE_NAME);
let image = sharp(file);
const srcParts = path.parse(file);
const dstParts = path.parse(target);
if (!(0, exists_1.sync)(dstParts.dir)) {
(0, dir_1.sync)(dstParts.dir);
}
let ret = await image.withMetadata().toFile(target);
return ret;
};
exports.convertFile = convertFile;
async function _convert(file, targets, onNode = () => { }, options) {
return pMap(targets, async (target) => {
index_1.logger.debug(`Convert ${file} to ${target}`);
if (options.dry) {
return bluebird.resolve();
}
return (0, exports.convertFile)(file, target, onNode, options);
}, { concurrency: 1 });
}
exports._convert = _convert;
const convert = async (options) => {
let reports = [];
const onNode = (data) => { reports.push(data); };
index_1.logger.info(`Convert ${options.srcInfo.FILES.length} files `);
await pMap(options.srcInfo.FILES, (f) => {
const outputs = (0, __1.targets)(f, options);
options.verbose && index_1.logger.info(`Convert ${f} to `, outputs);
return _convert(f, outputs, onNode, options);
}, { concurrency: 1 });
};
exports.convert = convert;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvbWVkaWEvaW1hZ2VzL2NvbnZlcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTRCO0FBQzVCLHFDQUFvQztBQUNwQyw4QkFBNkI7QUFDN0IsK0JBQThCO0FBQzlCLDBDQUF1QztBQUV2QywrQ0FBNkM7QUFDN0MsZ0RBQW9EO0FBQ3BELDBDQUE4QztBQUM5Qyw2Q0FFNEI7QUFFNUIsOEJBRWU7QUFFZixrREFFMkI7QUFFcEIsTUFBTSxXQUFXLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBOEIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQXVCLEVBQUUsRUFBRTtJQUNoSCxNQUFNLFNBQVMsR0FBRyxJQUFBLG1CQUFTLEdBQUUsQ0FBQTtJQUM3QixNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxHQUFHLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQTtJQUNqRixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsZ0JBQVUsRUFBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLHVCQUFXLENBQUMsQ0FBQTtJQUM5RCxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDdkIsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUNqQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ25DLElBQUcsQ0FBQyxJQUFBLGFBQU0sRUFBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUM7UUFDckIsSUFBQSxVQUFHLEVBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFBO0tBQ3BCO0lBQ0QsSUFBSSxHQUFHLEdBQUcsTUFBTSxLQUFLLENBQUMsWUFBWSxFQUFFLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFBO0lBQ25ELE9BQU8sR0FBRyxDQUFBO0FBQ2QsQ0FBQyxDQUFBO0FBWlksUUFBQSxXQUFXLGVBWXZCO0FBQ00sS0FBSyxVQUFVLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBaUIsRUFBRSxTQUE4QixHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsT0FBaUI7SUFDOUcsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsRUFBRTtRQUNsQyxjQUFNLENBQUMsS0FBSyxDQUFDLFdBQVcsSUFBSSxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDN0MsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDN0I7UUFDRCxPQUFPLElBQUEsbUJBQVcsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN0RCxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUMzQixDQUFDO0FBUkQsNEJBUUM7QUFFTSxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsT0FBaUIsRUFBRSxFQUFFO0lBQy9DLElBQUksT0FBTyxHQUFHLEVBQUUsQ0FBQTtJQUNoQixNQUFNLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQSxDQUFDLENBQUMsQ0FBQTtJQUMvQyxjQUFNLENBQUMsSUFBSSxDQUFDLFdBQVcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsTUFBTSxTQUFTLENBQUMsQ0FBQTtJQUM3RCxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1FBQ25DLE1BQU0sT0FBTyxHQUFHLElBQUEsV0FBTyxFQUFDLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUNuQyxPQUFPLENBQUMsT0FBTyxJQUFJLGNBQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtRQUMzRCxPQUFPLFFBQVEsQ0FBQyxDQUFDLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUNoRCxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUMxQixDQUFDLENBQUE7QUFUWSxRQUFBLE9BQU8sV0FTbkIifQ==

View File

@ -0,0 +1,33 @@
export * from './resize';
export * from './convert';
export * from './watermark';
import * as sharp from 'sharp';
import { IResizeOptions } from '../../..';
export declare const GLOB_BASIC = "png|jpg|tiff|jpeg|webp";
export declare const GLOB_MIN = "*.{png,jpg,jpeg,PNG,JPG,JPEG}";
export declare const files: (dir: any, glob: any) => any;
export declare const getFormats: (src: any, folder: any) => {
src: string;
dist: string;
format: string;
}[];
export declare const getThumbnailOptions: (src: any, format: any) => {
src: string;
dist: string;
format: any;
}[];
export declare const thumbnails: (options: IResizeOptions) => Promise<any>;
export declare const meta: (file: any) => Promise<sharp.Metadata>;
export declare const format: (formats: any, options?: {
cache: boolean;
png: boolean;
}) => Promise<sharp.Metadata[][]>;
export declare const getResizePatterns: (product: any, folder: any, percent?: number) => {
src: string;
dist: string;
percent: number;
}[];
export declare const resize: (patterns: any, options?: {
cache: boolean;
}) => Promise<void[][]>;
export declare const resizeSharp: (patterns: any) => Promise<sharp.Metadata[][]>;

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,6 @@
/// <reference types="node" />
import * as sharp from 'sharp';
export declare const fileAsBuffer: (path: string) => Buffer;
export declare const base64ToBuffer: (b64string: string) => Promise<Buffer>;
export declare const imageToBase64: (imagePath: string) => Promise<string>;
export declare const meta: (file: any, image: sharp.Sharp) => Promise<sharp.Metadata | null>;

View File

@ -0,0 +1,36 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.meta = exports.imageToBase64 = exports.base64ToBuffer = exports.fileAsBuffer = void 0;
const path = require("path");
const fs = require("fs");
const fs_1 = require("@polymech/fs");
const __1 = require("../../..");
const fileAsBuffer = (path) => (0, fs_1.sync)(path, 'buffer') || Buffer.from("-");
exports.fileAsBuffer = fileAsBuffer;
const base64ToBuffer = async (b64string) => Buffer.from(b64string, 'base64');
exports.base64ToBuffer = base64ToBuffer;
const imageToBase64 = async (imagePath) => {
try {
const imageBuffer = await fs.promises.readFile(imagePath);
const imageBase64 = imageBuffer.toString('base64');
const mimeType = path.extname(imagePath).slice(1);
const dataUri = `data:image/${mimeType};base64,${imageBase64}`;
return dataUri;
}
catch (error) {
throw new Error(`Failed to convert image to base64: ${error}`);
}
};
exports.imageToBase64 = imageToBase64;
const meta = (file, image) => {
return new Promise((resolve) => {
image.metadata().then((meta) => {
resolve(meta);
}).catch((e) => {
__1.logger.error(`Error creating meta data ${file}`);
resolve(null);
});
});
};
exports.meta = meta;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tZWRpYS9pbWFnZXMvbGliLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE0QjtBQUM1Qix5QkFBd0I7QUFFeEIscUNBQTJDO0FBQzNDLGdDQUFpQztBQUUxQixNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBRSxFQUFFLENBQUMsSUFBQSxTQUFJLEVBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBVyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUE7QUFBbkYsUUFBQSxZQUFZLGdCQUF1RTtBQUV6RixNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUUsU0FBaUIsRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsUUFBUSxDQUFDLENBQUE7QUFBOUUsUUFBQSxjQUFjLGtCQUFnRTtBQUVwRixNQUFNLGFBQWEsR0FBRyxLQUFLLEVBQUUsU0FBaUIsRUFBbUIsRUFBRTtJQUN0RSxJQUFJO1FBQ0EsTUFBTSxXQUFXLEdBQUcsTUFBTSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxRCxNQUFNLFdBQVcsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ25ELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ2xELE1BQU0sT0FBTyxHQUFHLGNBQWMsUUFBUSxXQUFXLFdBQVcsRUFBRSxDQUFDO1FBQy9ELE9BQU8sT0FBTyxDQUFDO0tBQ2xCO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0tBQ2xFO0FBQ0wsQ0FBQyxDQUFBO0FBVlksUUFBQSxhQUFhLGlCQVV6QjtBQUVNLE1BQU0sSUFBSSxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQWtCLEVBQWtDLEVBQUU7SUFDN0UsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFO1FBQzNCLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDakIsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDWCxVQUFNLENBQUMsS0FBSyxDQUFDLDRCQUE0QixJQUFJLEVBQUUsQ0FBQyxDQUFBO1lBQ2hELE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUNqQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFBO0FBVFksUUFBQSxJQUFJLFFBU2hCIn0=

View File

@ -0,0 +1,5 @@
import * as sharp from 'sharp';
import { IOptions, IResizeOptions } from '../../../index';
export declare const resizeFile: (source: string, target: string, onNode: (data: sharp.Sharp) => void, options: IResizeOptions) => Promise<sharp.Sharp | undefined>;
export declare const _resize: (file: any, targets: string[], onNode: (data: any) => void, options: IOptions) => Promise<(void | sharp.Sharp)[]>;
export declare const resize: (options: IResizeOptions) => Promise<any>;

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,2 @@
import { IOptions } from '../../../types';
export declare const watermark: (options: IOptions) => Promise<any>;

View File

@ -0,0 +1,52 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.watermark = void 0;
const bluebird = require("bluebird");
const bluebird_1 = require("bluebird");
const write_1 = require("@polymech/fs/write");
const index_1 = require("../../../index");
const lib_1 = require("./lib");
const novita_sdk_1 = require("novita-sdk");
const __1 = require("../../");
const removeWatermark = async (file, target, onNode = () => { }, options) => {
const novitaClient = new novita_sdk_1.NovitaSDK(options.key);
const params = {
image_file: await (0, lib_1.imageToBase64)(file)
//"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD",
};
try {
const wMark = await novitaClient.removeWatermark(params);
index_1.logger.info(`Watermark removed: ${file} to ${target}`);
(0, write_1.async)(target, (0, lib_1.base64ToBuffer)(wMark.image_file));
}
catch (error) {
index_1.logger.error(`Failed to remove watermark: ${error.msg}`);
}
};
const _watermark = async (file, targets, onNode = () => { }, options) => {
return bluebird_1.Promise.resolve(targets).map((target) => {
options.verbose && index_1.logger.debug(`Removing Watermark ${file} to ${target}`);
if (options.dry) {
return bluebird.resolve();
}
return removeWatermark(file, target, onNode, options);
}, { concurrency: 1 });
};
const watermark = async (options) => {
// reporting, stub
let reports = [];
const onNode = (data) => reports.push(data);
if (options.srcInfo) {
options.verbose && index_1.logger.info(`Convert ${options.srcInfo.FILES.length} files`);
return await bluebird_1.Promise.resolve(options.srcInfo.FILES).map((f) => {
const outputs = (0, __1.targets)(f, options);
options.verbose && index_1.logger.info(`Convert ${f} to `, outputs);
return _watermark(f, outputs, onNode, options);
}, { concurrency: 1 });
}
else {
options.debug && index_1.logger.error(`Invalid source info`);
}
};
exports.watermark = watermark;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2F0ZXJtYXJrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tZWRpYS9pbWFnZXMvd2F0ZXJtYXJrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUdBLHFDQUFvQztBQUNwQyx1Q0FBOEM7QUFLOUMsOENBQW1EO0FBS25ELDBDQUV1QjtBQU92QiwrQkFHYztBQU1kLDJDQUFzQztBQUN0Qyw4QkFBOEM7QUFFOUMsTUFBTSxlQUFlLEdBQUcsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsU0FBOEIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQXVCLEVBQUUsRUFBRTtJQUM3RyxNQUFNLFlBQVksR0FBRyxJQUFJLHNCQUFTLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0lBQy9DLE1BQU0sTUFBTSxHQUFHO1FBQ1gsVUFBVSxFQUFFLE1BQU0sSUFBQSxtQkFBYSxFQUFDLElBQUksQ0FBQztRQUNyQyx1REFBdUQ7S0FDMUQsQ0FBQTtJQUNELElBQUk7UUFDQSxNQUFNLEtBQUssR0FBRyxNQUFNLFlBQVksQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDeEQsY0FBTSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsSUFBSSxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDdEQsSUFBQSxhQUFLLEVBQUMsTUFBTSxFQUFDLElBQUEsb0JBQWMsRUFBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQTtLQUNqRDtJQUFDLE9BQU8sS0FBSyxFQUFFO1FBQ1osY0FBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUE7S0FDM0Q7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLFVBQVUsR0FBRyxLQUFLLEVBQUUsSUFBSSxFQUFFLE9BQWlCLEVBQUUsU0FBOEIsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLE9BQWlCLEVBQUUsRUFBRTtJQUM3RyxPQUFPLGtCQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1FBQzVDLE9BQU8sQ0FBQyxPQUFPLElBQUksY0FBTSxDQUFDLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUE7UUFDMUUsSUFBSSxPQUFPLENBQUMsR0FBRyxFQUFFO1lBQ2IsT0FBTyxRQUFRLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDNUI7UUFDRCxPQUFPLGVBQWUsQ0FBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMxRCxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUMxQixDQUFDLENBQUE7QUFFTSxNQUFNLFNBQVMsR0FBRyxLQUFLLEVBQUUsT0FBaUIsRUFBRSxFQUFFO0lBRWpELGtCQUFrQjtJQUNsQixJQUFJLE9BQU8sR0FBUSxFQUFFLENBQUE7SUFDckIsTUFBTSxNQUFNLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDaEQsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO1FBQ2pCLE9BQU8sQ0FBQyxPQUFPLElBQUksY0FBTSxDQUFDLElBQUksQ0FBQyxXQUFXLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDLENBQUE7UUFDL0UsT0FBTyxNQUFNLGtCQUFRLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDM0QsTUFBTSxPQUFPLEdBQUcsSUFBQSxXQUFPLEVBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQ25DLE9BQU8sQ0FBQyxPQUFPLElBQUksY0FBTSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1lBQzNELE9BQU8sVUFBVSxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFBO1FBQ2xELENBQUMsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFBO0tBQ3pCO1NBQU07UUFDSCxPQUFPLENBQUMsS0FBSyxJQUFJLGNBQU0sQ0FBQyxLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQTtLQUN2RDtBQUNMLENBQUMsQ0FBQTtBQWZZLFFBQUEsU0FBUyxhQWVyQiJ9

View File

@ -0,0 +1,23 @@
import { IConvertVideoOptions } from '../../../types';
import { E_AudioCodec, E_Codec, E_Format } from '../video';
export declare const frames: (src: any, dst: any, onNode: any, options?: {
fps: number;
}) => Promise<void>;
export declare const CONVERTERS: {
'.mp3': (inputPath: string, outputPath: string) => Promise<void>;
'.jpg': (src: any, dst: any, onNode: any, options?: {
fps: number;
}) => Promise<void>;
};
export declare const converter: (file: string) => any;
export declare const convertFile: (file: any, target: any, onNode: (data: any) => void, options: IConvertVideoOptions) => Promise<any>;
export declare function _convert(file: any, targets: string[], onNode: (data: any) => void, options: IConvertVideoOptions): Promise<any[]>;
export declare const convert: (options: IConvertVideoOptions) => Promise<void>;
export declare const merge: (options: IConvertVideoOptions) => Promise<unknown>;
export interface VideoOptions {
frameRate?: number;
videoCodec?: keyof typeof E_Codec;
audioCodec?: keyof typeof E_AudioCodec;
format?: keyof typeof E_Format;
}
export declare const createVideoFromImages: (src: string, target: any, onNode: any, audio: any, { frameRate, videoCodec, audioCodec, format, }: VideoOptions) => Promise<unknown>;

File diff suppressed because one or more lines are too long

133
packages/bot/lib/media/video/index.d.ts vendored Normal file
View File

@ -0,0 +1,133 @@
import { z } from 'zod';
export declare const GLOB_BASIC = "png|jpg|tiff|jpeg|webp";
export * from './resize';
export * from './convert';
export declare const E_Format: {
readonly MP4: "mp4";
readonly MKV: "mkv";
readonly MOV: "mov";
readonly AVI: "avi";
readonly FLV: "flv";
readonly WMV: "wmv";
readonly WEBM: "webm";
readonly MP3: "mp3";
readonly OGG: "ogg";
readonly WAV: "wav";
};
export declare const E_LogLevel: {
readonly QUIET: "quiet";
readonly PANIC: "panic";
readonly FATAL: "fatal";
readonly ERROR: "error";
readonly WARNING: "warning";
readonly INFO: "info";
readonly VERBOSE: "verbose";
readonly DEBUG: "debug";
readonly TRACE: "trace";
};
export declare const E_AudioCodec: {
readonly AAC: "aac";
readonly MP3: "mp3";
readonly VORBIS: "vorbis";
readonly FLAC: "flac";
readonly OPUS: "opus";
readonly WAV: "wav";
};
export declare const E_Codec: {
readonly LIBX264: "libx264";
readonly LIBX265: "libx265";
readonly LIBVP9: "libvpx-vp9";
readonly LIBAOM: "libaom-av1";
readonly LIBTHEORA: "libtheora";
readonly MPEG2VIDEO: "mpeg2video";
readonly COPY: "copy";
};
declare const ffmpegOptionsSchema: z.ZodObject<{
input: z.ZodString;
output: z.ZodString;
codec: z.ZodDefault<z.ZodOptional<z.ZodNativeEnum<{
readonly LIBX264: "libx264";
readonly LIBX265: "libx265";
readonly LIBVP9: "libvpx-vp9";
readonly LIBAOM: "libaom-av1";
readonly LIBTHEORA: "libtheora";
readonly MPEG2VIDEO: "mpeg2video";
readonly COPY: "copy";
}>>>;
bitrate: z.ZodOptional<z.ZodString>;
framerate: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
resolution: z.ZodOptional<z.ZodString>;
audioCodec: z.ZodDefault<z.ZodOptional<z.ZodNativeEnum<{
readonly AAC: "aac";
readonly MP3: "mp3";
readonly VORBIS: "vorbis";
readonly FLAC: "flac";
readonly OPUS: "opus";
readonly WAV: "wav";
}>>>;
audioBitrate: z.ZodOptional<z.ZodString>;
audioChannels: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
preset: z.ZodDefault<z.ZodOptional<z.ZodString>>;
crf: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
format: z.ZodDefault<z.ZodOptional<z.ZodNativeEnum<{
readonly MP4: "mp4";
readonly MKV: "mkv";
readonly MOV: "mov";
readonly AVI: "avi";
readonly FLV: "flv";
readonly WMV: "wmv";
readonly WEBM: "webm";
readonly MP3: "mp3";
readonly OGG: "ogg";
readonly WAV: "wav";
}>>>;
startTime: z.ZodOptional<z.ZodString>;
duration: z.ZodOptional<z.ZodString>;
overwrite: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
loglevel: z.ZodDefault<z.ZodOptional<z.ZodNativeEnum<{
readonly QUIET: "quiet";
readonly PANIC: "panic";
readonly FATAL: "fatal";
readonly ERROR: "error";
readonly WARNING: "warning";
readonly INFO: "info";
readonly VERBOSE: "verbose";
readonly DEBUG: "debug";
readonly TRACE: "trace";
}>>>;
}, "strip", z.ZodTypeAny, {
input?: string;
format?: "mp3" | "wav" | "mp4" | "mkv" | "mov" | "avi" | "flv" | "wmv" | "webm" | "ogg";
preset?: string;
duration?: string;
output?: string;
audioCodec?: "aac" | "mp3" | "vorbis" | "flac" | "opus" | "wav";
codec?: "copy" | "libx264" | "libx265" | "libvpx-vp9" | "libaom-av1" | "libtheora" | "mpeg2video";
bitrate?: string;
framerate?: number;
resolution?: string;
audioBitrate?: string;
audioChannels?: number;
crf?: number;
startTime?: string;
overwrite?: boolean;
loglevel?: "error" | "warning" | "info" | "debug" | "verbose" | "quiet" | "panic" | "fatal" | "trace";
}, {
input?: string;
format?: "mp3" | "wav" | "mp4" | "mkv" | "mov" | "avi" | "flv" | "wmv" | "webm" | "ogg";
preset?: string;
duration?: string;
output?: string;
audioCodec?: "aac" | "mp3" | "vorbis" | "flac" | "opus" | "wav";
codec?: "copy" | "libx264" | "libx265" | "libvpx-vp9" | "libaom-av1" | "libtheora" | "mpeg2video";
bitrate?: string;
framerate?: number;
resolution?: string;
audioBitrate?: string;
audioChannels?: number;
crf?: number;
startTime?: string;
overwrite?: boolean;
loglevel?: "error" | "warning" | "info" | "debug" | "verbose" | "quiet" | "panic" | "fatal" | "trace";
}>;
export type FFmpegOptions = z.infer<typeof ffmpegOptionsSchema>;

View File

@ -0,0 +1,85 @@
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.E_Codec = exports.E_AudioCodec = exports.E_LogLevel = exports.E_Format = exports.GLOB_BASIC = void 0;
const zod_1 = require("zod");
const FfmpegCommand = require('fluent-ffmpeg');
exports.GLOB_BASIC = 'png|jpg|tiff|jpeg|webp';
__exportStar(require("./resize"), exports);
__exportStar(require("./convert"), exports);
exports.E_Format = {
MP4: 'mp4',
MKV: 'mkv',
MOV: 'mov',
AVI: 'avi',
FLV: 'flv',
WMV: 'wmv',
WEBM: 'webm',
MP3: 'mp3',
OGG: 'ogg',
WAV: 'wav'
};
exports.E_LogLevel = {
QUIET: 'quiet',
PANIC: 'panic',
FATAL: 'fatal',
ERROR: 'error',
WARNING: 'warning',
INFO: 'info',
VERBOSE: 'verbose',
DEBUG: 'debug',
TRACE: 'trace'
};
exports.E_AudioCodec = {
AAC: 'aac',
MP3: 'mp3',
VORBIS: 'vorbis',
FLAC: 'flac',
OPUS: 'opus',
WAV: 'wav'
};
exports.E_Codec = {
LIBX264: 'libx264',
LIBX265: 'libx265',
LIBVP9: 'libvpx-vp9',
LIBAOM: 'libaom-av1',
LIBTHEORA: 'libtheora',
MPEG2VIDEO: 'mpeg2video',
COPY: 'copy'
};
const formatEnum = zod_1.z.nativeEnum(exports.E_Format);
const loglevelEnum = zod_1.z.nativeEnum(exports.E_LogLevel);
const audioCodecEnum = zod_1.z.nativeEnum(exports.E_AudioCodec);
const codecEnum = zod_1.z.nativeEnum(exports.E_Codec);
const ffmpegOptionsSchema = zod_1.z.object({
input: zod_1.z.string().describe("Path to the input file"),
output: zod_1.z.string().describe("Path to the output file"),
codec: codecEnum.optional().describe("Codec to be used for encoding (e.g., 'libx264', 'aac')").default(exports.E_Codec.LIBX264),
bitrate: zod_1.z.string().optional().describe("Bitrate for encoding (e.g., '500k', '2M')"),
framerate: zod_1.z.number().optional().describe("Frames per second (e.g., 30, 60)").default(30),
resolution: zod_1.z.string().optional().describe("Resolution of the output (e.g., '1920x1080', '1280x720')"),
audioCodec: audioCodecEnum.optional().describe("Audio codec to be used for encoding (e.g., 'aac', 'mp3')").default(exports.E_AudioCodec.AAC),
audioBitrate: zod_1.z.string().optional().describe("Bitrate for audio encoding (e.g., '128k', '256k')"),
audioChannels: zod_1.z.number().optional().describe("Number of audio channels (e.g., 1 for mono, 2 for stereo)").default(2),
preset: zod_1.z.string().optional().describe("Encoding preset to use for balancing speed and quality (e.g., 'ultrafast', 'medium', 'slow')").default('medium'),
crf: zod_1.z.number().optional().describe("Constant Rate Factor for controlling quality (lower values mean higher quality, range: 0-51)").default(23),
format: formatEnum.optional().describe("Container format for output file (e.g., 'mp4', 'mkv', 'mov')").default(exports.E_Format.MP4),
startTime: zod_1.z.string().optional().describe("Start time of the input file (e.g., '00:01:30' for 1 minute 30 seconds)"),
duration: zod_1.z.string().optional().describe("Duration of the output (e.g., '00:05:00' for 5 minutes)"),
overwrite: zod_1.z.boolean().optional().describe("Whether to overwrite the output file if it already exists").default(false),
loglevel: loglevelEnum.optional().describe("Logging level for ffmpeg output").default(exports.E_LogLevel.INFO),
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL21lZGlhL3ZpZGVvL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBRUEsNkJBQXVCO0FBRXZCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxlQUFlLENBQUMsQ0FBQTtBQUVqQyxRQUFBLFVBQVUsR0FBRyx3QkFBd0IsQ0FBQTtBQUNsRCwyQ0FBd0I7QUFDeEIsNENBQXlCO0FBRVosUUFBQSxRQUFRLEdBQUc7SUFDcEIsR0FBRyxFQUFFLEtBQUs7SUFDVixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLO0lBQ1YsR0FBRyxFQUFFLEtBQUs7SUFDVixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLO0lBQ1YsSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztJQUNWLEdBQUcsRUFBRSxLQUFLO0lBQ1YsR0FBRyxFQUFFLEtBQUs7Q0FDRixDQUFDO0FBRUUsUUFBQSxVQUFVLEdBQUc7SUFDeEIsS0FBSyxFQUFFLE9BQU87SUFDZCxLQUFLLEVBQUUsT0FBTztJQUNkLEtBQUssRUFBRSxPQUFPO0lBQ2QsS0FBSyxFQUFFLE9BQU87SUFDZCxPQUFPLEVBQUUsU0FBUztJQUNsQixJQUFJLEVBQUUsTUFBTTtJQUNaLE9BQU8sRUFBRSxTQUFTO0lBQ2xCLEtBQUssRUFBRSxPQUFPO0lBQ2QsS0FBSyxFQUFFLE9BQU87Q0FDTixDQUFDO0FBRUUsUUFBQSxZQUFZLEdBQUc7SUFDMUIsR0FBRyxFQUFFLEtBQUs7SUFDVixHQUFHLEVBQUUsS0FBSztJQUNWLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLElBQUksRUFBRSxNQUFNO0lBQ1osSUFBSSxFQUFFLE1BQU07SUFDWixHQUFHLEVBQUUsS0FBSztDQUNGLENBQUM7QUFFRSxRQUFBLE9BQU8sR0FBRztJQUNyQixPQUFPLEVBQUUsU0FBUztJQUNsQixP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

1
packages/bot/lib/media/video/lib.d.ts vendored Normal file
View File

@ -0,0 +1 @@
export {};

View File

@ -0,0 +1,3 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi9tZWRpYS92aWRlby9saWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9

View File

@ -0,0 +1,6 @@
import * as sharp from 'sharp';
import { IOptions, IResizeOptions } from '../../../types';
export declare const meta: (file: any, image: sharp.Sharp) => Promise<sharp.Metadata>;
export declare const resizeFile: (file: any, target: any, onNode: (data: any) => void, options: IResizeOptions) => Promise<sharp.Sharp>;
export declare const _resize: (file: any, targets: string[], onNode: (data: any) => void, options: IOptions) => Promise<any>;
export declare const resize: (options: IOptions) => Promise<void>;

File diff suppressed because one or more lines are too long

18
packages/bot/lib/process/index.d.ts vendored Normal file
View File

@ -0,0 +1,18 @@
export declare enum STATUS {
OK = 0,
ERROR = 1,
PENDING = 2
}
export declare class Process {
binary: string;
cwd: string;
args: string;
constructor(options?: any);
optionsToString(options: any): string;
optionsToArray(options: any): string[];
exec(command: string, options?: any, args?: any[]): Promise<any>;
}
export declare class Helper {
static run(cwd: any, command: string, gitArgs: string[]): Promise<any>;
static runBin(cwd: any, bin: any, command: string, gitArgs: string[]): Promise<any>;
}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/lib/process/index.ts"],"names":[],"mappings":"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"}

14562
packages/bot/package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

70
packages/bot/package.json Normal file
View File

@ -0,0 +1,70 @@
{
"name": "@polymech/media",
"version": "0.3.0",
"typings": "index.d.ts",
"publishConfig": {
"access": "public"
},
"bin": {
"pm-media": "dist-in/main.js"
},
"type": "module",
"exports": {
".": "./dist-in/index.js"
},
"dependencies": {
"@polymech/cache": "file:../cache",
"@polymech/commons": "file:../commons",
"@polymech/core": "file:../core",
"@polymech/fs": "file:../fs",
"@polymech/log": "file:../log",
"@types/fluent-ffmpeg": "^2.1.27",
"@types/node": "^24.0.10",
"apify": "^3.4.4",
"bluebird": "^3.7.2",
"crawlee": "^3.14.1",
"download": "^8.0.0",
"fast-glob": "^3.3.2",
"fluent-ffmpeg": "^2.1.3",
"glob": "^11.0.0",
"js-beautify": "^1.14.6",
"mupdf": "^1.3.3",
"normalize-url": "^8.0.2",
"p-map": "^7.0.3",
"puppeteer": "^24.16.0",
"slugify": "^1.6.6",
"ts-md5": "^2.0.1",
"tslog": "^4.9.3",
"typescript": "^5.8.3",
"yargs": "^18.0.0",
"zod": "^3.25.74"
},
"devDependencies": {
"@types/glob": "^8.1.0",
"@types/showdown": "^2.0.6",
"vitest": "^3.1.1"
},
"scripts": {
"test": "tsc; mocha --full-trace mocha \"spec/**/*.spec.js\"",
"test:pdf": "vitest run tests/pdf",
"test-with-coverage": "istanbul cover node_modules/.bin/_mocha -- 'spec/**/*.spec.js'",
"lint": "tslint --project=./tsconfig.json",
"build": "tsc -p .",
"dev": "tsc -p . --declaration -w",
"typings": "tsc --declaration",
"docs": "npx typedoc src/index.ts",
"dev-test-watch": "mocha-typescript-watch"
},
"homepage": "https://git.osr-plastic.org/osr-plastic/osr-media",
"repository": {
"type": "git",
"url": "://git.osr-plastic.org/osr-plastic/osr-media.git"
},
"engines": {
"node": ">= 14.0.0"
},
"license": "BSD-3-Clause",
"keywords": [
"typescript"
]
}

BIN
packages/bot/scripts/1.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
packages/bot/scripts/2.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 679 KiB

View File

@ -0,0 +1 @@
convert 1.jpg 2.jpg -append result-sprite.jpg

View File

@ -0,0 +1,85 @@
#!/bin/bash
# Bash script that generates film strip video preview using ffmpeg
# You can see live demo: http://jsfiddle.net/r6wz0nz6/2/
# Tutorial on Binpress.com: http://www.binpress.com/tutorial/generating-nice-movie-previews-with-ffmpeg/138
if [ -z "$1" ]; then
echo "usage: ./movie_preview.sh VIDEO [HEIGHT=120] [COLS=100] [ROWS=1] [OUTPUT]"
exit
fi
MOVIE=$1
# get video name without the path and extension
MOVIE_NAME=`basename $MOVIE`
OUT_DIR=`pwd`
HEIGHT=$2
COLS=$3
ROWS=$4
OUT_FILENAME=$5
if [ -z "$HEIGHT" ]; then
HEIGHT=120
fi
if [ -z "$COLS" ]; then
COLS=100
fi
if [ -z "$ROWS" ]; then
ROWS=1
fi
if [ -z "$OUT_FILENAME" ]; then
OUT_FILENAME=`echo ${MOVIE_NAME%.*}_preview.jpg`
fi
OUT_FILEPATH=`echo $OUT_DIR/$OUT_FILENAME`
TOTAL_IMAGES=`echo "$COLS*$ROWS" | bc`
# get total number of frames in the video
# ffprobe is fast but not 100% reliable. It might not detect number of frames correctly!
NB_FRAMES=`ffprobe -show_streams "$MOVIE" 2> /dev/null | grep nb_frames | head -n1 | sed 's/.*=//'`
# `-show-streams` Show all streams found in the video. Each video has usualy two streams (video and audio).
# `head -n1` We care only about the video stream which comes first.
# `sed 's/.*=//'` Grab everything after `=`.
if [ "$NB_FRAMES" = "N/A" ]; then
# as a fallback we'll use ffmpeg. This command basically copies this video to /dev/null and it counts
# frames in the process. It's slower (few seconds usually) than ffprobe but works everytime.
NB_FRAMES=`ffmpeg -nostats -i "$MOVIE" -vcodec copy -f rawvideo -y /dev/null 2>&1 | grep frame | awk '{split($0,a,"fps")}END{print a[1]}' | sed 's/.*= *//'`
# I know, that `awk` and `sed` parts look crazy but it has to be like this because ffmpeg can
# `-nostats` By default, `ffmpeg` prints progress information but that would be immediately caught by `grep`
# because it would contain word `frame` and therefore output of this entire command would be totally
# random. `-nostats` forces `ffmpeg` to print just the final result.
# `-i "$MOVIE"` Input file
# `-vcodec copy -f rawvideo` We don't want to do any reformating. Force `ffmpeg` to read and write the video as is.
# `-y /dev/null` Dump read video data. We just want it to count frames we don't care about the data.
# `awk ...` The line we're interested in has format might look like `frame= 42` or `frame=325`. Because of that
# extra space we can't just use `awk` to print the first column and we have to cut everything from the
# beggining of the line to the term `fps` (eg. `frame= 152`).
# `sed ...` Grab everything after `=` and ignore any spaces
fi
# calculate offset between two screenshots, drop the floating point part
NTH_FRAME=`echo "$NB_FRAMES/$TOTAL_IMAGES" | bc`
echo "capture every ${NTH_FRAME}th frame out of $NB_FRAMES frames"
# make sure output dir exists
mkdir -p $OUT_DIR
FFMPEG_CMD="ffmpeg -loglevel panic -i \"$MOVIE\" -y -frames 1 -q:v 1 -vf \"select=not(mod(n\,$NTH_FRAME)),scale=-1:${HEIGHT},tile=${COLS}x${ROWS}\" \"$OUT_FILEPATH\""
# `-loglevel panic` We dont want to see any output. You can remove this option if youre having any problem to see what went wrong
# `-i "$MOVIE"` Input file
# `-y` Override any existing output file
# `-frames 1` Tell `ffmpeg` that output from this command is just a single image (one frame).
# `-q:v 3` Output quality where `0` is the best.
# `-vf \"select=` That's where all the magic happens. Selector function for [video filter](https://trac.ffmpeg.org/wiki/FilteringGuide).
# # `not(mod(n\,58))` Select one frame every `58` frames [see the documentation](https://www.ffmpeg.org/ffmpeg-filters.html#Examples-34).
# # `scale=-1:120` Resize to fit `120px` height, width is adjusted automatically to keep correct aspect ration.
# # `tile=${COLS}x${ROWS}` Layout captured frames into this grid
# print enire command for debugging purposes
# echo $FFMPEG_CMD
echo $OUT_FILEPATH
eval $FFMPEG_CMD

Some files were not shown because too many files have changed in this diff Show More