UNPKG

2.13 kBJavaScriptView Raw
1"use strict";
2var __importDefault = (this && this.__importDefault) || function (mod) {
3 return (mod && mod.__esModule) ? mod : { "default": mod };
4};
5const path_1 = __importDefault(require("path"));
6const fs_1 = __importDefault(require("fs"));
7const util_1 = __importDefault(require("util"));
8const mimer_1 = __importDefault(require("mimer"));
9const image_size_1 = require("image-size");
10const uri_1 = __importDefault(require("./template/uri"));
11const css_1 = __importDefault(require("./template/css"));
12const defaultCSSConfig = {};
13const readFile = util_1.default.promisify(fs_1.default.readFile);
14class 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}
54module.exports = DataURIParser;