UNPKG

@jackdbd/eleventy-plugin-text-to-speech

Version:
63 lines 2.56 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.cloudStorageWriter = exports.selfHostWriter = void 0; const node_fs_1 = __importDefault(require("node:fs")); const node_path_1 = __importDefault(require("node:path")); const node_stream_1 = __importDefault(require("node:stream")); const node_util_1 = __importDefault(require("node:util")); const debug_1 = __importDefault(require("debug")); const debug = (0, debug_1.default)('eleventy-plugin-text-to-speech/writers'); const writeFile = node_util_1.default.promisify(node_fs_1.default.writeFile); const selfHostedHref = async ({ assetName, buffer, hrefBase, outputBase }) => { const filepath = node_path_1.default.join(outputBase, assetName); debug(`write ${filepath}`); await writeFile(filepath, buffer, { encoding: 'utf8' }); const href = `${hrefBase}/${assetName}`; const message = `${assetName} hosted at ${href} (filepath: ${filepath})`; debug(message); return { filepath, href, message }; }; const cloudStorageHostedHref = ({ assetName, buffer, bucketName, storage }) => { const bucket = storage.bucket(bucketName); const file = bucket.file(assetName); const href = file.publicUrl(); const uri = file.cloudStorageURI; debug(`upload ${assetName} to Cloud Storage bucket ${bucketName}`); return new Promise((resolve) => { // a PassThrough stream is a Duplex stream const d = new node_stream_1.default.PassThrough(); const destination = file.createWriteStream(); d.write(buffer); d.pipe(destination); d.on('end', () => { const message = `${assetName} hosted at ${href} (Cloud Storage URI: ${uri})`; debug(message); return resolve({ href, message, uri }); }); d.end(); }); }; const selfHostWriter = ({ hrefBase, outputBase }) => { return { write: async (config) => { return await selfHostedHref({ ...config, hrefBase, outputBase }); } }; }; exports.selfHostWriter = selfHostWriter; const cloudStorageWriter = ({ bucketName, storage }) => { return { write: async (config) => { return await cloudStorageHostedHref({ ...config, bucketName, storage }); } }; }; exports.cloudStorageWriter = cloudStorageWriter; //# sourceMappingURL=writers.js.map