@jackdbd/eleventy-plugin-text-to-speech
Version:
Eleventy plugin for the Google Cloud Text-to-Speech API
63 lines • 2.56 kB
JavaScript
;
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