Skip to content

Commit

Permalink
update deps and remove geckodriver deps
Browse files Browse the repository at this point in the history
  • Loading branch information
bouzuya committed Feb 11, 2023
1 parent 233ba09 commit 508783d
Show file tree
Hide file tree
Showing 4 changed files with 154 additions and 399 deletions.
42 changes: 25 additions & 17 deletions index.ts
@@ -1,7 +1,7 @@
import fs from 'fs';
import fs from 'node:fs';
import http from 'node:http';
import { Builder } from 'selenium-webdriver';
import firefox from 'selenium-webdriver/firefox';
import http from 'http';

interface Options {
height: number;
Expand All @@ -10,14 +10,12 @@ interface Options {
width: number;
}

const getPNG = (pngDataUrl: string): Buffer => {
const pngEncoded = pngDataUrl.substring('data:image/png;base64,'.length);
const png = Buffer.from(pngEncoded, 'base64');
return png;
const getPNG = (pngDataUrl: string): string => {
return pngDataUrl.substring('data:image/png;base64,'.length);
};

// data:image/png;base64,...
const getPNGDataURL = async (
const getPNGDataURL = (
svgDataUrl: string,
width: number,
height: number
Expand Down Expand Up @@ -50,13 +48,19 @@ const getPNGDataURL = async (
!pngDataUrl.startsWith('data:image/png;base64,')
) throw new Error('unknown format');
return pngDataUrl;
}).then((v) => {
if (typeof v === 'undefined') {
throw new Error();
} else {
return v;
}
});
};

// data:image/svg+xml;base64,...
const getSVGDataURL = async (svg: string): Promise<string> => {
const svgEncoded = Buffer.from(svg, 'utf8').toString('base64');
return 'data:image/svg+xml;base64,' + svgEncoded;
return await Promise.resolve('data:image/svg+xml;base64,' + svgEncoded);
};

const parseOptions = (): Options => {
Expand All @@ -71,22 +75,26 @@ const parseOptions = (): Options => {
return { height, pngPath, svgPath, width };
};

const runServer = <T>(
callback: (port: number) => Promise<T>
): Promise<T> => {
const runServer = (
callback: (port: number) => Promise<string>
): Promise<string | undefined> => {
return new Promise((resolve, reject) => {
const server = http.createServer((_, res) => res.end());
const close = (v?: T): void => {
const close = (v?: string): void => {
server.close((error) => {
if (typeof error !== 'undefined') reject(error);
else resolve(v);
});
};
server.listen(() => {
const port = (server.address() as any).port;
Promise.resolve()
.then(() => callback(port))
.then((v) => close(v), () => close());
const address = server.address();
if (typeof address === 'string') {
return close();
} else if (address === null) {
return close();
} else {
return callback(address.port).then((v) => close(v), () => close());
}
});
});
};
Expand All @@ -99,7 +107,7 @@ const main = async (): Promise<void> => {
svgDataUrl, options.width, options.height
);
const png = getPNG(pngDataUrl);
fs.writeFileSync(options.pngPath, png, { encoding: 'buffer' });
fs.writeFileSync(options.pngPath, png, { encoding: 'base64' });
};

main();
6 changes: 6 additions & 0 deletions install-geckodriver.sh
@@ -0,0 +1,6 @@
#!/bin/sh

url='https://github.com/mozilla/geckodriver/releases/download/v0.32.2/geckodriver-v0.32.2-macos.tar.gz'
curl --location --silent "${url}" | tar -xz
mv geckodriver ./node_modules/.bin/

0 comments on commit 508783d

Please sign in to comment.