@omnia/tooling-vue
Version:
Used to bundle and serve manifests web component that build on Vue framework.
44 lines (43 loc) • 1.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.defineTransformer = void 0;
const utils_1 = require("../utils");
function defineTransformer(name, ctor) {
if (typeof ctor != 'function') {
throw new utils_1.ErrorHMR('transformer constructor is not a function');
}
return (...args) => {
const transformer = ctor(...args);
if (transformer['then']) {
return transformer.then(config => {
if (!config) {
return;
}
validate(name, config.test, config.transform);
return {
name,
test: config.test,
transform: config.transform
};
});
}
validate(name, transformer.test, transformer.transform);
return {
name,
test: transformer.test,
transform: transformer.transform
};
};
}
exports.defineTransformer = defineTransformer;
function validate(name, test, transform) {
if (typeof name != 'string' || name.length == 0) {
throw new utils_1.ErrorHMR('transformer.name is empty or undefined');
}
if (typeof test != 'function') {
throw new utils_1.ErrorHMR('transformer.test is not a function');
}
if (typeof transform != 'function') {
throw new utils_1.ErrorHMR('transformer.transform is not a function');
}
}