29 lines
1.1 KiB
JavaScript
29 lines
1.1 KiB
JavaScript
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.validateServiceDefinition = validateServiceDefinition;
|
|
/**
|
|
* Confirm that a service definition is valid.
|
|
*
|
|
* @param service - The service definition to validate.
|
|
*
|
|
* @throws {TypeError} If the service definition is invalid.
|
|
*
|
|
* @experimental
|
|
*/
|
|
function validateServiceDefinition(service) {
|
|
if (typeof service.name !== "string" || !service.name) {
|
|
throw new TypeError("Service name must be a non-empty string");
|
|
}
|
|
const operationNames = new Set();
|
|
for (const [propName, operation] of Object.entries(service.operations)) {
|
|
const operationName = operation.name;
|
|
if (typeof operationName !== "string" || !operationName) {
|
|
throw new TypeError(`Operation name must be a non-empty string, for property '${propName}'`);
|
|
}
|
|
if (operationNames.has(operationName)) {
|
|
throw new TypeError(`Duplicate operation definition for name: '${operationName}'`);
|
|
}
|
|
operationNames.add(operationName);
|
|
}
|
|
}
|
|
//# sourceMappingURL=service-definition.js.map
|