datauri
Advanced tools
Comparing version 2.0.0 to 3.0.0
42
index.js
@@ -1,34 +0,10 @@ | ||
'use strict'; | ||
const Api = require('./api'); | ||
const ENC_TYPE = configSize => configSize > 1 ? 'encode' : 'encodeSync'; | ||
class DataURI extends Api { | ||
constructor() { | ||
super(); | ||
const configSize = arguments.length; | ||
if (configSize) { | ||
this[ENC_TYPE(configSize)].apply(this, arguments); | ||
} | ||
} | ||
static promise(fileName) { | ||
const datauri = new DataURI(); | ||
return new Promise((resolve, reject) => { | ||
datauri.on('encoded', resolve) | ||
.on('error', reject) | ||
.encode(fileName); | ||
}); | ||
} | ||
static sync(fileName) { | ||
const datauri = new DataURI(fileName); | ||
return datauri.content; | ||
} | ||
"use strict"; | ||
var __importDefault = (this && this.__importDefault) || function (mod) { | ||
return (mod && mod.__esModule) ? mod : { "default": mod }; | ||
}; | ||
const parser_1 = __importDefault(require("./parser")); | ||
function DataURIASync(fileName, handler) { | ||
const parser = new parser_1.default(); | ||
return parser.encode(fileName, handler); | ||
} | ||
module.exports = DataURI; | ||
module.exports = DataURIASync; |
@@ -1,1 +0,1 @@ | ||
{"version":"2.0.0","maintainers":[{"name":"Helder Santana","email":"heldr@me.com","url":"http://heldr.com"},{"name":"Ruy Adorno","url":"http://ruyadorno.com"},{"name":"Caio Gondim","email":"me@caiogondim.com","url":"https://caiogondim.com"}],"repository":{"type":"git","url":"git://github.com/data-uri/datauri.git"},"engines":{"node":">= 4"},"keywords":["datauri","data uri","data","uri","data-uri","optimization","uri","optimize","inline","png","jpg","woff","base64"],"author":"Helder Santana","license":"MIT","name":"datauri","dependencies":{"image-size":"^0.7.3","mimer":"^1.0.0"},"description":"Create DataURI scheme easily"} | ||
{"version":"3.0.0","maintainers":[{"name":"Helder Santana","email":"heldr@me.com","url":"http://heldr.com"},{"name":"Ruy Adorno","url":"http://ruyadorno.com"},{"name":"Caio Gondim","email":"me@caiogondim.com","url":"https://caiogondim.com"}],"repository":{"type":"git","url":"git://github.com/data-uri/datauri.git"},"engines":{"node":">= 8"},"keywords":["datauri","data uri","data","uri","data-uri","optimization","uri","optimize","inline","png","jpg","woff","base64"],"author":"Helder Santana","license":"MIT","name":"datauri","dependencies":{"image-size":"0.8.3","mimer":"1.1.0"},"description":"Create DataURI scheme easily"} |
178
readme.md
@@ -15,67 +15,25 @@ <h1 align="center"> | ||
[![Build Status](https://travis-ci.org/data-uri/datauri.svg?branch=master)](http://travis-ci.org/data-uri/datauri) [![Coverage Status](https://coveralls.io/repos/data-uri/datauri/badge.svg?branch=master&service=github)](https://coveralls.io/github/data-uri/datauri?branch=master) [![Dependency Status](https://www.versioneye.com/user/projects/560b7b3f5a262f001e0007e2/badge.svg?style=flat)](https://www.versioneye.com/user/projects/560b7b3f5a262f001e0007e2) [![NPM version](http://img.shields.io/npm/dm/datauri.svg?style=flat)](https://www.npmjs.org/package/datauri) | ||
MODULE [![Build Status](https://travis-ci.org/data-uri/datauri.svg?branch=master)](http://travis-ci.org/data-uri/datauri) | ||
------- | ||
For Node 8+ compatibility: | ||
MODULE | ||
------- | ||
`npm install --save datauri` | ||
1. [From file path](#readable-stream) | ||
* [Asynchronous](#readable-stream) | ||
* [Readable Stream](#readable-stream) | ||
* [Promise](#promise-node-012-works-with-es2016-asyncawait) | ||
* [Callback](#callback) | ||
* [Synchronous](#synchronous-class) | ||
* [Class](#synchronous-class) | ||
* [Function](#synchronous-function) | ||
2. [From a Buffer](#from-a-buffer) | ||
3. [From a String](#from-a-string) | ||
4. [Method chaining](#method-chaining) | ||
5. [Task plugins using datauri](#tools-using-datauri) | ||
* [npm script](#npm-script) | ||
* [gulp](#gulp) | ||
* [grunt](#grunt) | ||
6. [Develop](#develop) | ||
7. [License](#license) | ||
8. [ChangeLog](https://github.com/data-uri/datauri/releases) | ||
9. [Tools using datauri](https://github.com/data-uri/datauri/blob/master/README.md#tools-using-datauri) | ||
### Getting started | ||
By default, datauri module returns a promise, which is resolved with `data:uri` string or rejected with file read error: | ||
### Readable Stream | ||
```js | ||
const Datauri = require('datauri'); | ||
const datauri = new Datauri(); | ||
const datauri = require('datauri'); | ||
datauri.pipe(process.stdout); | ||
datauri.encode('test/myfile.png'); | ||
``` | ||
const content = await datauri('test/myfile.png'); | ||
```js | ||
const Datauri = require('datauri'); | ||
const datauri = new Datauri(); | ||
datauri.on('encoded', content => console.log(content)); | ||
//=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."; | ||
datauri.on('error', err => console.log(err)); | ||
datauri.encode('test/myfile.png'); | ||
console.log(content) | ||
//=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." | ||
``` | ||
### Promise (works with es2016 async/await) | ||
### Callback style and meta data | ||
```js | ||
'use strict'; | ||
const datauri = require('datauri'); | ||
const DataURI = require('datauri').promise; | ||
// babelers: import { promise as DataURI } from 'datauri'; | ||
DataURI('test/myfile.png') | ||
.then(content => console.log(content)) | ||
//=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." | ||
.catch(err => { throw err; }); | ||
``` | ||
### Callback | ||
```js | ||
const DataURI = require('datauri'); | ||
const datauri = new DataURI(); | ||
datauri.encode('test/myfile.png', (err, content) => { | ||
datauri('test/myfile.png', (err, content, meta) => { | ||
if (err) { | ||
@@ -87,6 +45,6 @@ throw err; | ||
console.log(this.mimetype); //=> "image/png" | ||
console.log(this.base64); //=> "iVBORw0KGgoAAAANSUhEUgAA..." | ||
console.log(this.getCSS()); //=> "\n.case {\n background-image: url('data:image/png;base64,iVBORw..." | ||
console.log(this.getCSS({ | ||
console.log(meta.mimetype); //=> "image/png" | ||
console.log(meta.base64); //=> "iVBORw0KGgoAAAANSUhEUgAA..." | ||
console.log(meta.getCSS()); //=> "\n.case {\n background-image: url('data:image/png;base64,iVBORw..." | ||
console.log(meta.getCSS({ | ||
class: "myClass", | ||
@@ -97,56 +55,27 @@ width: true, | ||
}); | ||
``` | ||
### Synchronous calls | ||
### Synchronous Class | ||
If DataURI class is instanciated with a file path, the same will be processed synchronously. | ||
```js | ||
const Datauri = require('datauri'); | ||
let datauri = new Datauri('test/myfile.png'); | ||
const Datauri = require('datauri/sync'); | ||
const meta = Datauri('test/myfile.png'); | ||
console.log(datauri.content); //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." | ||
console.log(datauri.mimetype); //=> "image/png" | ||
console.log(datauri.base64); //=> "iVBORw0KGgoAAAANSUhEUgAA..." | ||
console.log(datauri.getCSS()); //=> "\n.case {\n background-image: url('data:image/png;base64,iVBORw..." | ||
console.log(datauri.getCSS("myClass")); //=> "\n.myClass {\n background-image: url('data:image/png;base64,iVBORw..." | ||
console.log(meta.content); //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." | ||
console.log(meta.mimetype); //=> "image/png" | ||
console.log(meta.base64); //=> "iVBORw0KGgoAAAANSUhEUgAA..." | ||
console.log(meta.getCSS()); //=> "\n.case {\n background-image: url('data:image/png;base64,iVBORw..." | ||
console.log(meta.getCSS("myClass")); //=> "\n.myClass {\n background-image: url('data:image/png;base64,iVBORw..." | ||
``` | ||
### Synchronous Function | ||
```js | ||
const Datauri = require('datauri').sync; | ||
console.log(Datauri('test/myfile.png')); //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." | ||
``` | ||
or for ES2015/6 lovers | ||
```js | ||
import { sync as DataURI } from 'datauri'; | ||
console.log(DataURI('test/myfile.png')); //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." | ||
``` | ||
### From a Buffer | ||
If you already have your file as a Buffer, use this. It's much faster than passing a string. | ||
If you already have a file Buffer, that's the way to go: | ||
```js | ||
const Datauri = require('datauri'), | ||
const datauri = new Datauri(); | ||
const DatauriParser = require('datauri/parser'); | ||
const parser = new DatauriParser(); | ||
//... | ||
const buffer = fs.readFileSync('./hello'); | ||
//... | ||
datauri.format('.png', buffer); | ||
console.log(datauri.content); //=> "data:image/png;base64,eGtjZA==" | ||
console.log(datauri.mimetype); //=> "image/png" | ||
console.log(datauri.base64); //=> "eGtjZA==" | ||
console.log(datauri.getCSS({ | ||
class: "myClass", | ||
width: true, | ||
height: true | ||
})); //=> adds image width and height and custom class name | ||
parser.format('.png', buffer); //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." | ||
``` | ||
@@ -156,36 +85,9 @@ | ||
```js | ||
const DataURI = require('datauri'); | ||
const datauri = new Datauri(); | ||
const DatauriParser = require('datauri/parser'); | ||
const parser = new DatauriParser(); | ||
datauri.format('.png', 'xkcd'); | ||
console.log(datauri.content); //=> "data:image/png;base64,eGtjZA==" | ||
console.log(datauri.mimetype); //=> "image/png" | ||
console.log(datauri.base64); //=> "eGtjZA==" | ||
console.log(datauri.getCSS({ | ||
class: "myClass", | ||
width: true, | ||
height: true | ||
})); //=> adds image width and height and custom class name | ||
parser.format('.png', 'xkcd'); //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." | ||
``` | ||
#### Method chaining | ||
```js | ||
//... | ||
datauri | ||
.on('encoded', content => { | ||
console.log(content); //=> "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..." | ||
console.log(this.mimetype); //=> "image/png" | ||
console.log(this.base64); //=> "iVBORw0KGgoAAAANSUhEUgAA..." | ||
console.log(this.getCSS()); //=> "\n.case {\n background-image: url('data:image/png;base64,iVBORw..." | ||
console.log(this.getCSS({ | ||
class: "myClass" | ||
}); //=> "\n.myClass {\n background-image: url('data:image/png;base64,iVBORw..." | ||
}) | ||
.on('error', err => console.error(err)) | ||
.encode('test/myfile.png'); | ||
``` | ||
DEVELOP | ||
Contribute | ||
------- | ||
@@ -203,9 +105,21 @@ | ||
## [ChangeLog](https://github.com/data-uri/datauri/releases) | ||
## Requirements | ||
Node.js 4+ | ||
Node.js 8+ | ||
Previous Node versions and deprecated features: | ||
`npm install --save datauri@2` | ||
docs: https://github.com/data-uri/datauri/blob/v2.0.0/docs/datauri.md | ||
## License | ||
MIT License | ||
(c) [Data-URI.js](http://github.com/data-uri) | ||
(c) [Data-URI.js](https://github.com/data-uri) | ||
(c) [Helder Santana](https://heldr.com) |
'use strict'; | ||
const TAB = ' '; | ||
const SIZE_PROPS = key => /(width|height|background\-size)/g.test(key); | ||
const PROP_VALUE = | ||
(size, key) => (key === 'background-size') ? | ||
const PROP_VALUE = (size, key) => (key === 'background-size') ? | ||
`${size.width}px ${size.height}px` | ||
:`${size[key]}px`; | ||
: `${size[key]}px`; | ||
const PROP_SIZE = (size, key) => `${TAB}${key}: ${PROP_VALUE(size, key)};`; | ||
const BASE_CSS = (data) => [ | ||
'', | ||
`.${data.class.replace(/\s+/gi, '_')} {`, | ||
`${TAB}background-image: url('${data.background}');` | ||
'', | ||
`.${data.class.replace(/\s+/gi, '_')} {`, | ||
`${TAB}background-image: url('${data.background}');` | ||
]; | ||
const SIZE = | ||
data => Object.keys(data).filter(SIZE_PROPS).map(PROP_SIZE.bind(null, data.dimensions)); | ||
const SIZE = data => Object.keys(data).filter(SIZE_PROPS).map(PROP_SIZE.bind(null, data.dimensions)); | ||
module.exports = data => BASE_CSS(data).concat(SIZE(data), ['}']).join('\n'); |
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
14
136
9052
121
2
+ Addedimage-size@0.8.3(transitive)
+ Addedinherits@2.0.4(transitive)
+ Addedmimer@1.1.0(transitive)
+ Addedqueue@6.0.1(transitive)
- Removedimage-size@0.7.5(transitive)
- Removedmimer@1.1.1(transitive)
Updatedimage-size@0.8.3
Updatedmimer@1.1.0