1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | const path_1 = __importDefault(require("path"));
|
6 | const fs_1 = __importDefault(require("fs"));
|
7 | const util_1 = __importDefault(require("util"));
|
8 | const mimer_1 = __importDefault(require("mimer"));
|
9 | const image_size_1 = require("image-size");
|
10 | const uri_1 = __importDefault(require("./template/uri"));
|
11 | const css_1 = __importDefault(require("./template/css"));
|
12 | const defaultCSSConfig = {};
|
13 | const readFile = util_1.default.promisify(fs_1.default.readFile);
|
14 | class DataURIParser {
|
15 | async encode(fileName, handler) {
|
16 | try {
|
17 | this.base64 = await readFile(fileName, { 'encoding': 'base64' });
|
18 | this.createMetadata(fileName);
|
19 | handler && handler(undefined, this.content, this);
|
20 | return this.content;
|
21 | }
|
22 | catch (err) {
|
23 | if (handler) {
|
24 | handler(err);
|
25 | return;
|
26 | }
|
27 | throw err;
|
28 | }
|
29 | }
|
30 | format(fileName, fileContent) {
|
31 | const fileBuffer = (fileContent instanceof Buffer) ? fileContent : Buffer.from(fileContent);
|
32 | this.base64 = fileBuffer.toString('base64');
|
33 | this.createMetadata(fileName);
|
34 | return this;
|
35 | }
|
36 | getCSS(config = defaultCSSConfig) {
|
37 | config = config || {};
|
38 | if (!this.content || !this.fileName) {
|
39 | throw new Error('Create a data-uri config using the method encodeSync');
|
40 | }
|
41 | config.class = config.class || path_1.default.basename(this.fileName, path_1.default.extname(this.fileName));
|
42 | if (config.width || config.height || config['background-size']) {
|
43 | config.dimensions = image_size_1.imageSize(this.fileName);
|
44 | }
|
45 | return css_1.default(Object.assign(Object.assign({}, config), { background: this.content }));
|
46 | }
|
47 | createMetadata(fileName) {
|
48 | this.fileName = fileName;
|
49 | this.mimetype = mimer_1.default(fileName);
|
50 | this.content = uri_1.default(this);
|
51 | return this;
|
52 | }
|
53 | }
|
54 | module.exports = DataURIParser;
|