@realfavicongenerator/image-adapter-node 0.2.7 → 0.3.1

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.
@@ -0,0 +1,2 @@
1
+ import { ImageAdapter } from '@realfavicongenerator/generate-favicon';
2
+ export declare const getNodeImageAdapter: () => Promise<ImageAdapter>;
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.getNodeImageAdapter = void 0;
16
+ const svg_js_1 = require("@svgdotjs/svg.js");
17
+ const sharp_1 = __importDefault(require("sharp"));
18
+ const dataUrlToBuffer = (dataUrl) => __awaiter(void 0, void 0, void 0, function* () {
19
+ return new Promise((resolve, reject) => {
20
+ const base64 = dataUrl.split(',')[1];
21
+ const buffer = Buffer.from(base64, 'base64');
22
+ resolve(buffer);
23
+ });
24
+ });
25
+ const getNodeImageAdapter = () => __awaiter(void 0, void 0, void 0, function* () {
26
+ const { createSVGWindow } = yield import('svgdom');
27
+ return {
28
+ createSvg: () => {
29
+ const window = createSVGWindow();
30
+ const document = window.document;
31
+ (0, svg_js_1.registerWindow)(window, document);
32
+ return (0, svg_js_1.SVG)(document.documentElement);
33
+ },
34
+ convertSvgToPng: (svg) => __awaiter(void 0, void 0, void 0, function* () {
35
+ return new Promise((resolve, reject) => {
36
+ const svgString = svg.svg();
37
+ const svgBuffer = Buffer.from(svgString);
38
+ (0, sharp_1.default)(svgBuffer)
39
+ .png()
40
+ .toBuffer((err, buffer, info) => {
41
+ if (err) {
42
+ reject(err);
43
+ }
44
+ else {
45
+ resolve(buffer);
46
+ }
47
+ });
48
+ });
49
+ }),
50
+ getImageSize: (dataUrl) => __awaiter(void 0, void 0, void 0, function* () {
51
+ const buffer = yield dataUrlToBuffer(dataUrl);
52
+ return new Promise((resolve, reject) => {
53
+ (0, sharp_1.default)(buffer)
54
+ .metadata()
55
+ .then(metadata => {
56
+ const width = metadata.width;
57
+ const height = metadata.height;
58
+ if (width === undefined || height === undefined) {
59
+ reject('Failed to get image metadata');
60
+ }
61
+ else {
62
+ resolve({ width, height });
63
+ }
64
+ })
65
+ .catch(err => {
66
+ reject(err);
67
+ });
68
+ });
69
+ }),
70
+ getImageData: (dataUrl, widthHeight) => __awaiter(void 0, void 0, void 0, function* () {
71
+ const buffer = yield dataUrlToBuffer(dataUrl);
72
+ return new Promise((resolve, reject) => {
73
+ (0, sharp_1.default)(buffer)
74
+ .resize(widthHeight, widthHeight)
75
+ .raw()
76
+ .toBuffer((err, data, info) => {
77
+ if (err) {
78
+ reject(err);
79
+ }
80
+ else {
81
+ resolve(data);
82
+ }
83
+ });
84
+ });
85
+ })
86
+ };
87
+ });
88
+ exports.getNodeImageAdapter = getNodeImageAdapter;
package/dist/index.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- import { ImageAdapter } from "@realfavicongenerator/generate-favicon";
2
- export declare const getNodeImageAdapter: () => Promise<ImageAdapter>;
1
+ export { getNodeImageAdapter } from './adapter';
2
+ export { loadAndConvertToSvg } from './load';
package/dist/index.js CHANGED
@@ -1,88 +1,7 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
2
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.getNodeImageAdapter = void 0;
16
- const svg_js_1 = require("@svgdotjs/svg.js");
17
- const sharp_1 = __importDefault(require("sharp"));
18
- const dataUrlToBuffer = (dataUrl) => __awaiter(void 0, void 0, void 0, function* () {
19
- return new Promise((resolve, reject) => {
20
- const base64 = dataUrl.split(',')[1];
21
- const buffer = Buffer.from(base64, 'base64');
22
- resolve(buffer);
23
- });
24
- });
25
- const getNodeImageAdapter = () => __awaiter(void 0, void 0, void 0, function* () {
26
- const { createSVGWindow } = yield import('svgdom');
27
- return {
28
- createSvg: () => {
29
- const window = createSVGWindow();
30
- const document = window.document;
31
- (0, svg_js_1.registerWindow)(window, document);
32
- return (0, svg_js_1.SVG)(document.documentElement);
33
- },
34
- convertSvgToPng: (svg) => __awaiter(void 0, void 0, void 0, function* () {
35
- return new Promise((resolve, reject) => {
36
- const svgString = svg.svg();
37
- const svgBuffer = Buffer.from(svgString);
38
- (0, sharp_1.default)(svgBuffer)
39
- .png()
40
- .toBuffer((err, buffer, info) => {
41
- if (err) {
42
- reject(err);
43
- }
44
- else {
45
- resolve(buffer);
46
- }
47
- });
48
- });
49
- }),
50
- getImageSize: (dataUrl) => __awaiter(void 0, void 0, void 0, function* () {
51
- const buffer = yield dataUrlToBuffer(dataUrl);
52
- return new Promise((resolve, reject) => {
53
- (0, sharp_1.default)(buffer)
54
- .metadata()
55
- .then(metadata => {
56
- const width = metadata.width;
57
- const height = metadata.height;
58
- if (width === undefined || height === undefined) {
59
- reject('Failed to get image metadata');
60
- }
61
- else {
62
- resolve({ width, height });
63
- }
64
- })
65
- .catch(err => {
66
- reject(err);
67
- });
68
- });
69
- }),
70
- getImageData: (dataUrl, widthHeight) => __awaiter(void 0, void 0, void 0, function* () {
71
- const buffer = yield dataUrlToBuffer(dataUrl);
72
- return new Promise((resolve, reject) => {
73
- (0, sharp_1.default)(buffer)
74
- .resize(widthHeight, widthHeight)
75
- .raw()
76
- .toBuffer((err, data, info) => {
77
- if (err) {
78
- reject(err);
79
- }
80
- else {
81
- resolve(data);
82
- }
83
- });
84
- });
85
- })
86
- };
87
- });
88
- exports.getNodeImageAdapter = getNodeImageAdapter;
3
+ exports.loadAndConvertToSvg = exports.getNodeImageAdapter = void 0;
4
+ var adapter_1 = require("./adapter");
5
+ Object.defineProperty(exports, "getNodeImageAdapter", { enumerable: true, get: function () { return adapter_1.getNodeImageAdapter; } });
6
+ var load_1 = require("./load");
7
+ Object.defineProperty(exports, "loadAndConvertToSvg", { enumerable: true, get: function () { return load_1.loadAndConvertToSvg; } });
package/dist/load.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ import { Svg } from "@svgdotjs/svg.js";
2
+ export declare const loadAndConvertToSvg: (imagePath: string) => Promise<Svg>;
package/dist/load.js ADDED
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.loadAndConvertToSvg = void 0;
16
+ const promises_1 = __importDefault(require("fs/promises"));
17
+ const generate_favicon_1 = require("@realfavicongenerator/generate-favicon");
18
+ const adapter_1 = require("./adapter");
19
+ const loadAndConvertToSvg = (imagePath) => __awaiter(void 0, void 0, void 0, function* () {
20
+ const imageAdapter = yield (0, adapter_1.getNodeImageAdapter)();
21
+ if (imagePath.endsWith('.svg')) {
22
+ const content = yield promises_1.default.readFile(imagePath, 'utf8');
23
+ return (0, generate_favicon_1.stringToSvg)(content, imageAdapter);
24
+ }
25
+ else {
26
+ const content = yield promises_1.default.readFile(imagePath);
27
+ const dataUrl = `data:image/${imagePath.split('.').pop()};base64,${content.toString('base64')}`;
28
+ return (0, generate_favicon_1.dataUrlToSvg)(dataUrl, imageAdapter);
29
+ }
30
+ });
31
+ exports.loadAndConvertToSvg = loadAndConvertToSvg;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@realfavicongenerator/image-adapter-node",
3
- "version": "0.2.7",
3
+ "version": "0.3.1",
4
4
  "description": "Image adapter for Node",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -31,10 +31,10 @@
31
31
  "typescript": "^5.4.3"
32
32
  },
33
33
  "dependencies": {
34
- "@realfavicongenerator/generate-favicon": "^0.2.7",
34
+ "@realfavicongenerator/generate-favicon": "^0.3.1",
35
35
  "@svgdotjs/svg.js": "^3.2.0",
36
36
  "sharp": "^0.32.6",
37
37
  "svgdom": "^0.1.19"
38
38
  },
39
- "gitHead": "8410b2a139341b904e7693c0787007e985e9cae8"
39
+ "gitHead": "66e3e3836a33095c8ea2ad1430bc44a71dc6111d"
40
40
  }
package/src/adapter.ts ADDED
@@ -0,0 +1,74 @@
1
+ import { ImageAdapter } from '@realfavicongenerator/generate-favicon';
2
+ import { SVG, Svg, registerWindow } from '@svgdotjs/svg.js';
3
+ import sharp from 'sharp';
4
+
5
+ const dataUrlToBuffer = async (dataUrl: string): Promise<Buffer> => {
6
+ return new Promise((resolve, reject) => {
7
+ const base64 = dataUrl.split(',')[1];
8
+ const buffer = Buffer.from(base64, 'base64');
9
+ resolve(buffer);
10
+ });
11
+ }
12
+
13
+ export const getNodeImageAdapter = async (): Promise<ImageAdapter> => {
14
+ const { createSVGWindow } = await import('svgdom');
15
+
16
+ return {
17
+ createSvg: () => {
18
+ const window = createSVGWindow();
19
+ const document = window.document
20
+ registerWindow(window, document);
21
+ return SVG(document.documentElement) as Svg;
22
+ },
23
+ convertSvgToPng: async (svg: Svg) => {
24
+ return new Promise((resolve, reject) => {
25
+ const svgString = svg.svg();
26
+ const svgBuffer = Buffer.from(svgString);
27
+
28
+ sharp(svgBuffer)
29
+ .png()
30
+ .toBuffer((err, buffer, info) => {
31
+ if (err) {
32
+ reject(err);
33
+ } else {
34
+ resolve(buffer);
35
+ }
36
+ });
37
+ });
38
+ },
39
+ getImageSize: async (dataUrl: string) => {
40
+ const buffer = await dataUrlToBuffer(dataUrl);
41
+ return new Promise((resolve, reject) => {
42
+ sharp(buffer)
43
+ .metadata()
44
+ .then(metadata => {
45
+ const width = metadata.width;
46
+ const height = metadata.height;
47
+ if (width === undefined || height === undefined) {
48
+ reject('Failed to get image metadata');
49
+ } else {
50
+ resolve({ width, height });
51
+ }
52
+ })
53
+ .catch(err => {
54
+ reject(err);
55
+ });
56
+ });
57
+ },
58
+ getImageData: async (dataUrl: string, widthHeight: number) => {
59
+ const buffer = await dataUrlToBuffer(dataUrl);
60
+ return new Promise((resolve, reject) => {
61
+ sharp(buffer)
62
+ .resize(widthHeight, widthHeight)
63
+ .raw()
64
+ .toBuffer((err, data, info) => {
65
+ if (err) {
66
+ reject(err);
67
+ } else {
68
+ resolve(data);
69
+ }
70
+ });
71
+ });
72
+ }
73
+ }
74
+ };
package/src/index.ts CHANGED
@@ -1,74 +1,3 @@
1
- import { SVG, Svg, registerWindow } from "@svgdotjs/svg.js";
2
- import { ImageAdapter } from "@realfavicongenerator/generate-favicon";
3
- import sharp from "sharp";
4
1
 
5
- const dataUrlToBuffer = async (dataUrl: string): Promise<Buffer> => {
6
- return new Promise((resolve, reject) => {
7
- const base64 = dataUrl.split(',')[1];
8
- const buffer = Buffer.from(base64, 'base64');
9
- resolve(buffer);
10
- });
11
- }
12
-
13
- export const getNodeImageAdapter = async (): Promise<ImageAdapter> => {
14
- const { createSVGWindow } = await import('svgdom');
15
-
16
- return {
17
- createSvg: () => {
18
- const window = createSVGWindow();
19
- const document = window.document
20
- registerWindow(window, document);
21
- return SVG(document.documentElement) as Svg;
22
- },
23
- convertSvgToPng: async (svg: Svg) => {
24
- return new Promise((resolve, reject) => {
25
- const svgString = svg.svg();
26
- const svgBuffer = Buffer.from(svgString);
27
-
28
- sharp(svgBuffer)
29
- .png()
30
- .toBuffer((err, buffer, info) => {
31
- if (err) {
32
- reject(err);
33
- } else {
34
- resolve(buffer);
35
- }
36
- });
37
- });
38
- },
39
- getImageSize: async (dataUrl: string) => {
40
- const buffer = await dataUrlToBuffer(dataUrl);
41
- return new Promise((resolve, reject) => {
42
- sharp(buffer)
43
- .metadata()
44
- .then(metadata => {
45
- const width = metadata.width;
46
- const height = metadata.height;
47
- if (width === undefined || height === undefined) {
48
- reject('Failed to get image metadata');
49
- } else {
50
- resolve({ width, height });
51
- }
52
- })
53
- .catch(err => {
54
- reject(err);
55
- });
56
- });
57
- },
58
- getImageData: async (dataUrl: string, widthHeight: number) => {
59
- const buffer = await dataUrlToBuffer(dataUrl);
60
- return new Promise((resolve, reject) => {
61
- sharp(buffer)
62
- .resize(widthHeight, widthHeight)
63
- .raw()
64
- .toBuffer((err, data, info) => {
65
- if (err) {
66
- reject(err);
67
- } else {
68
- resolve(data);
69
- }
70
- });
71
- });
72
- }
73
- }
74
- };
2
+ export { getNodeImageAdapter } from './adapter';
3
+ export { loadAndConvertToSvg } from './load';
package/src/load.ts ADDED
@@ -0,0 +1,16 @@
1
+ import fs from 'fs/promises'
2
+ import { Svg } from "@svgdotjs/svg.js";
3
+ import { dataUrlToSvg, stringToSvg } from '@realfavicongenerator/generate-favicon';
4
+ import { getNodeImageAdapter } from './adapter';
5
+
6
+ export const loadAndConvertToSvg = async (imagePath: string): Promise<Svg> => {
7
+ const imageAdapter = await getNodeImageAdapter();
8
+ if (imagePath.endsWith('.svg')) {
9
+ const content = await fs.readFile(imagePath, 'utf8');
10
+ return stringToSvg(content, imageAdapter);
11
+ } else {
12
+ const content = await fs.readFile(imagePath);
13
+ const dataUrl = `data:image/${imagePath.split('.').pop()};base64,${content.toString('base64')}`;
14
+ return dataUrlToSvg(dataUrl, imageAdapter);
15
+ }
16
+ };