curaflow/node_modules/nexus-rpc/lib/service/service-definition.js

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