@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 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 toBlob(svg, format, exif));
8
+ return toDataUri(await toArrayBuffer(svg, format, exif), format);
7
9
  },
8
10
  toFile: async (name) => {
9
- return toFile(await toBlob(svg, format, exif), name);
11
+ return toFile(await toArrayBuffer(svg, format, exif), format, name);
10
12
  },
11
13
  toArrayBuffer: async () => {
12
- return (await toBlob(svg, format, exif)).arrayBuffer();
14
+ return toArrayBuffer(svg, format, exif);
13
15
  },
14
16
  };
15
17
  };
16
- async function toDataUri(blob) {
17
- if (blob.type === getMimeType('svg')) {
18
- return `data:image/svg+xml;utf8,${encodeURIComponent(await blob.text())}`;
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
- return new Promise((resolve, reject) => {
22
- const reader = new FileReader();
23
- reader.readAsDataURL(blob);
24
- reader.onload = () => resolve(reader.result);
25
- reader.onerror = (e) => reject(e);
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(blob, name) {
32
+ async function toFile(arrayBuffer, format, name) {
30
33
  const link = document.createElement('a');
31
- link.href = await toDataUri(blob);
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 toBlob(rawSvg, format, exif) {
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 new Blob([rawSvg], { type: getMimeType('svg') });
45
+ return encoder.encode(rawSvg);
43
46
  }
44
47
  let { svg, size } = ensureSize(rawSvg);
45
- const svgBlob = new Blob([svg], { type: getMimeType('svg') });
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(svgBlob));
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 ? resolve(blob) : reject(new Error('Could not create 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
@@ -4,5 +4,5 @@
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 * from './core.js';
7
+ export { toFormat } from './core.js';
8
8
  export * from './types.js';
package/lib/index.js CHANGED
@@ -4,5 +4,5 @@
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 * from './core.js';
7
+ export { toFormat } from './core.js';
8
8
  export * from './types.js';
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 toBlob(svg, format, exif));
11
+ return toDataUri(await toArrayBuffer(svg, format, exif), format);
11
12
  },
12
13
  toFile: async (name) => {
13
- return toFile(await toBlob(svg, format, exif), name);
14
+ return toFile(await toArrayBuffer(svg, format, exif), name);
14
15
  },
15
16
  toArrayBuffer: async () => {
16
- return (await toBlob(svg, format, exif)).arrayBuffer();
17
+ return toArrayBuffer(svg, format, exif);
17
18
  },
18
19
  };
19
20
  };
20
- async function toDataUri(blob) {
21
- if (blob.type === getMimeType('svg')) {
22
- return `data:${blob.type};utf8,${encodeURIComponent(await blob.text())}`;
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(await blob.arrayBuffer());
26
- return `data:image/${blob.type};base64,${buffer.toString('base64')}`;
26
+ const buffer = Buffer.from(arrayBuffer);
27
+ return `data:${getMimeType(format)};base64,${buffer.toString('base64')}`;
27
28
  }
28
29
  }
29
- async function toFile(blob, name) {
30
- return fs.writeFile(name, Buffer.from(await blob.arrayBuffer()));
30
+ async function toFile(arrayBuffer, name) {
31
+ return fs.writeFile(name, Buffer.from(arrayBuffer));
31
32
  }
32
- async function toBlob(rawSvg, format, exif) {
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 new Blob([rawSvg], { type: getMimeType('svg') });
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 new Blob([buffer], { type: getMimeType(format) });
69
+ return buffer.buffer;
69
70
  }
@@ -1,8 +1,8 @@
1
1
  /*!
2
- * DiceBear Convert (@dicebear/converter)
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 * from './core.js';
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 Convert (@dicebear/converter)
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 * from './core.js';
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.21",
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": "40b7190a19ba3c6c355178f1ae6c422229634e06"
56
+ "gitHead": "68a91a6c5fa46dd8317fe066803657ac0bf59f68"
57
57
  }