@jackdbd/eleventy-plugin-text-to-speech
Version:
Eleventy plugin for the Google Cloud Text-to-Speech API
44 lines • 2.47 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.options = void 0;
const joi_1 = __importDefault(require("joi"));
const constants_js_1 = require("./constants.js");
const serviceAccountJsonKeyFilename = joi_1.default.string()
.min(1)
.pattern(new RegExp('^.*\\.json$'));
const audioEncoding = joi_1.default.string().valid('ALAW', 'AUDIO_ENCODING_UNSPECIFIED', 'LINEAR16', 'MP3', 'MULAW', 'OGG_OPUS');
const audioEncodings = joi_1.default.array().items(audioEncoding).unique();
const audioSelfHost = joi_1.default.object().instance(URL);
// https://cloud.google.com/storage/docs/naming-buckets
const cloudStorageBucketName = joi_1.default.string().min(3).max(63);
const audioCloudStorageHost = joi_1.default.object().keys({
bucketName: cloudStorageBucketName.required(),
keyFilename: serviceAccountJsonKeyFilename
});
const audioHost = joi_1.default.alternatives().try(audioSelfHost, audioCloudStorageHost);
const cssSelector = joi_1.default.string().min(1);
const cssSelectors = joi_1.default.array().items(cssSelector).unique();
const regex = joi_1.default.object().instance(RegExp);
// 5 characters for the language code (e.g. en-US)
const voice = joi_1.default.string().min(6);
const xPathExpression = joi_1.default.string().min(1);
const xPathExpressions = joi_1.default.array().items(xPathExpression).unique();
const rule = joi_1.default.object().keys({
regex: regex.default(constants_js_1.DEFAULT_REGEX),
cssSelectors: cssSelectors.default(constants_js_1.DEFAULT_CSS_SELECTORS),
xPathExpressions: xPathExpressions.default(constants_js_1.DEFAULT_XPATH_EXPRESSIONS)
});
exports.options = joi_1.default.object().keys({
audioEncodings: audioEncodings.default(constants_js_1.DEFAULT.audioEncodings),
audioHost: audioHost.required(),
cacheExpiration: joi_1.default.string().min(1).default(constants_js_1.DEFAULT.cacheExpiration),
collectionName: joi_1.default.string().min(1).default(constants_js_1.DEFAULT.collectionName),
keyFilename: serviceAccountJsonKeyFilename,
rules: joi_1.default.array().items(rule).default(constants_js_1.DEFAULT.rules),
transformName: joi_1.default.string().min(1).default(constants_js_1.DEFAULT.transformName),
voice: voice.default(constants_js_1.DEFAULT.voiceName)
});
//# sourceMappingURL=schemas.js.map