@dicebear/converter 5.0.0-alpha.21 → 5.0.0-alpha.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/core.js +24 -19
- package/lib/index.d.ts +1 -1
- package/lib/index.js +1 -1
- package/lib/node/core.js +15 -14
- package/lib/node/index.d.ts +2 -2
- package/lib/node/index.js +2 -2
- package/package.json +2 -2
package/lib/core.js
CHANGED
|
@@ -1,48 +1,51 @@
|
|
|
1
1
|
import { getMimeType } from './utils/mime-type.js';
|
|
2
2
|
import { ensureSize } from './utils/svg.js';
|
|
3
|
+
const encoder = new TextEncoder();
|
|
4
|
+
const decoder = new TextDecoder();
|
|
3
5
|
export const toFormat = function (svg, format, exif) {
|
|
4
6
|
return {
|
|
5
7
|
toDataUri: async () => {
|
|
6
|
-
return toDataUri(await
|
|
8
|
+
return toDataUri(await toArrayBuffer(svg, format, exif), format);
|
|
7
9
|
},
|
|
8
10
|
toFile: async (name) => {
|
|
9
|
-
return toFile(await
|
|
11
|
+
return toFile(await toArrayBuffer(svg, format, exif), format, name);
|
|
10
12
|
},
|
|
11
13
|
toArrayBuffer: async () => {
|
|
12
|
-
return (
|
|
14
|
+
return toArrayBuffer(svg, format, exif);
|
|
13
15
|
},
|
|
14
16
|
};
|
|
15
17
|
};
|
|
16
|
-
async function toDataUri(
|
|
17
|
-
if (
|
|
18
|
-
return `data
|
|
18
|
+
async function toDataUri(arrayBuffer, format) {
|
|
19
|
+
if (format === 'svg') {
|
|
20
|
+
return `data:${getMimeType('svg')};utf8,${encodeURIComponent(decoder.decode(arrayBuffer))}`;
|
|
19
21
|
}
|
|
20
22
|
else {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
23
|
+
let binary = '';
|
|
24
|
+
const bytes = new Uint8Array(arrayBuffer);
|
|
25
|
+
const len = bytes.byteLength;
|
|
26
|
+
for (let i = 0; i < len; i++) {
|
|
27
|
+
binary += String.fromCharCode(bytes[i]);
|
|
28
|
+
}
|
|
29
|
+
return `data:${getMimeType(format)};base64,${window.btoa(binary)}`;
|
|
27
30
|
}
|
|
28
31
|
}
|
|
29
|
-
async function toFile(
|
|
32
|
+
async function toFile(arrayBuffer, format, name) {
|
|
30
33
|
const link = document.createElement('a');
|
|
31
|
-
link.href = await toDataUri(
|
|
34
|
+
link.href = await toDataUri(arrayBuffer, format);
|
|
32
35
|
link.download = name;
|
|
33
36
|
link.click();
|
|
34
37
|
link.remove();
|
|
35
38
|
}
|
|
36
|
-
async function
|
|
39
|
+
async function toArrayBuffer(rawSvg, format, exif) {
|
|
37
40
|
if (exif) {
|
|
38
41
|
console.warn('The `exif` option is not supported in the browser version of `@dicebear/converter`.');
|
|
39
42
|
console.warn('Please use the node version of `@dicebear/converter` to generate images with exif data.');
|
|
40
43
|
}
|
|
41
44
|
if (format === 'svg') {
|
|
42
|
-
return
|
|
45
|
+
return encoder.encode(rawSvg);
|
|
43
46
|
}
|
|
44
47
|
let { svg, size } = ensureSize(rawSvg);
|
|
45
|
-
const
|
|
48
|
+
const svgArrayBuffer = encoder.encode(svg);
|
|
46
49
|
const canvas = document.createElement('canvas');
|
|
47
50
|
canvas.width = size;
|
|
48
51
|
canvas.height = size;
|
|
@@ -57,12 +60,14 @@ async function toBlob(rawSvg, format, exif) {
|
|
|
57
60
|
var img = document.createElement('img');
|
|
58
61
|
img.width = size;
|
|
59
62
|
img.height = size;
|
|
60
|
-
img.setAttribute('src', await toDataUri(
|
|
63
|
+
img.setAttribute('src', await toDataUri(svgArrayBuffer, 'svg'));
|
|
61
64
|
return new Promise((resolve, reject) => {
|
|
62
65
|
img.onload = () => {
|
|
63
66
|
context.drawImage(img, 0, 0, size, size);
|
|
64
67
|
canvas.toBlob((blob) => {
|
|
65
|
-
blob
|
|
68
|
+
blob
|
|
69
|
+
? resolve(blob.arrayBuffer())
|
|
70
|
+
: reject(new Error('Could not create blob'));
|
|
66
71
|
}, `image/${format}`);
|
|
67
72
|
};
|
|
68
73
|
img.onerror = (e) => reject(e);
|
package/lib/index.d.ts
CHANGED
package/lib/index.js
CHANGED
package/lib/node/core.js
CHANGED
|
@@ -1,40 +1,41 @@
|
|
|
1
1
|
import { promises as fs } from 'node:fs';
|
|
2
|
-
import { Blob } from 'node:buffer';
|
|
3
2
|
import { getMimeType } from '../utils/mime-type.js';
|
|
4
3
|
import { ensureSize } from '../utils/svg.js';
|
|
5
4
|
import * as tmp from 'tmp-promise';
|
|
6
5
|
import { ensurePackage } from '../utils/package-helper.js';
|
|
6
|
+
const encoder = new TextEncoder();
|
|
7
|
+
const decoder = new TextDecoder();
|
|
7
8
|
export const toFormat = function (svg, format, exif) {
|
|
8
9
|
return {
|
|
9
10
|
toDataUri: async () => {
|
|
10
|
-
return toDataUri(await
|
|
11
|
+
return toDataUri(await toArrayBuffer(svg, format, exif), format);
|
|
11
12
|
},
|
|
12
13
|
toFile: async (name) => {
|
|
13
|
-
return toFile(await
|
|
14
|
+
return toFile(await toArrayBuffer(svg, format, exif), name);
|
|
14
15
|
},
|
|
15
16
|
toArrayBuffer: async () => {
|
|
16
|
-
return (
|
|
17
|
+
return toArrayBuffer(svg, format, exif);
|
|
17
18
|
},
|
|
18
19
|
};
|
|
19
20
|
};
|
|
20
|
-
async function toDataUri(
|
|
21
|
-
if (
|
|
22
|
-
return `data:${
|
|
21
|
+
async function toDataUri(arrayBuffer, format) {
|
|
22
|
+
if (format === 'svg') {
|
|
23
|
+
return `data:${getMimeType(format)};utf8,${encodeURIComponent(decoder.decode(arrayBuffer))}`;
|
|
23
24
|
}
|
|
24
25
|
else {
|
|
25
|
-
const buffer = Buffer.from(
|
|
26
|
-
return `data
|
|
26
|
+
const buffer = Buffer.from(arrayBuffer);
|
|
27
|
+
return `data:${getMimeType(format)};base64,${buffer.toString('base64')}`;
|
|
27
28
|
}
|
|
28
29
|
}
|
|
29
|
-
async function toFile(
|
|
30
|
-
return fs.writeFile(name, Buffer.from(
|
|
30
|
+
async function toFile(arrayBuffer, name) {
|
|
31
|
+
return fs.writeFile(name, Buffer.from(arrayBuffer));
|
|
31
32
|
}
|
|
32
|
-
async function
|
|
33
|
+
async function toArrayBuffer(rawSvg, format, exif) {
|
|
33
34
|
if (format === 'svg') {
|
|
34
35
|
if (exif) {
|
|
35
36
|
console.warn('Exif is ignored when converting to svg.');
|
|
36
37
|
}
|
|
37
|
-
return
|
|
38
|
+
return encoder.encode(rawSvg);
|
|
38
39
|
}
|
|
39
40
|
await ensurePackage('@resvg/resvg-js', '1.4.0');
|
|
40
41
|
const { renderAsync } = await import('@resvg/resvg-js');
|
|
@@ -65,5 +66,5 @@ async function toBlob(rawSvg, format, exif) {
|
|
|
65
66
|
buffer = await fs.readFile(path);
|
|
66
67
|
});
|
|
67
68
|
}
|
|
68
|
-
return
|
|
69
|
+
return buffer.buffer;
|
|
69
70
|
}
|
package/lib/node/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* DiceBear
|
|
2
|
+
* DiceBear Converter (@dicebear/converter)
|
|
3
3
|
*
|
|
4
4
|
* Code licensed under MIT (https://github.com/dicebear/dicebear/blob/main/LICENSE)
|
|
5
5
|
* Copyright (c) 2022 Florian Körner
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export { toFormat } from './core.js';
|
|
8
8
|
export * from '../types.js';
|
package/lib/node/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/*!
|
|
2
|
-
* DiceBear
|
|
2
|
+
* DiceBear Converter (@dicebear/converter)
|
|
3
3
|
*
|
|
4
4
|
* Code licensed under MIT (https://github.com/dicebear/dicebear/blob/main/LICENSE)
|
|
5
5
|
* Copyright (c) 2022 Florian Körner
|
|
6
6
|
*/
|
|
7
|
-
export
|
|
7
|
+
export { toFormat } from './core.js';
|
|
8
8
|
export * from '../types.js';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dicebear/converter",
|
|
3
|
-
"version": "5.0.0-alpha.
|
|
3
|
+
"version": "5.0.0-alpha.26",
|
|
4
4
|
"description": "SVG Converter for DiceBear",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"dicebear"
|
|
@@ -53,5 +53,5 @@
|
|
|
53
53
|
"publishConfig": {
|
|
54
54
|
"access": "public"
|
|
55
55
|
},
|
|
56
|
-
"gitHead": "
|
|
56
|
+
"gitHead": "68a91a6c5fa46dd8317fe066803657ac0bf59f68"
|
|
57
57
|
}
|