UNPKG

@servable/tools

Version:

Servable tools is a utility that builds a protocol's manifest and documents it.

63 lines (50 loc) 1.54 kB
import protocolInClassClassSchema from './protocolInClassClassSchema.js' import adaptProtocolPayload from '../../../../lib/adaptProtocolPayload.js' import extractProtocolProtocols from './extractProtocolsProtocols.js' import cleanProtocols from '../../../../lib/cleanProtocols.js' export default async ({ protocol, classSchema, protocolFactory, instancesPathId }) => { const { className } = classSchema //#TODO: protocol.loader let protocolsPayloads = await protocol.loader.classProtocols({ className, withProtocolsProtocols: false }) if (!protocolsPayloads || !protocolsPayloads.length) { return { classSchema } } protocolsPayloads = protocolsPayloads.map(adaptProtocolPayload) if (!protocolsPayloads || !protocolsPayloads.length) { return { classSchema } } let protocolsProtocols = await extractProtocolProtocols({ protocolsPayloads, protocolFactory, instancesPathId }) protocolsPayloads = cleanProtocols([...protocolsPayloads, ...protocolsProtocols]) let _classSchema = { ...classSchema } for (var i in protocolsPayloads) { const protocolPayload = protocolsPayloads[i] const protocol = await protocolFactory({ protocolPayload, instancesPathId }) _classSchema = await protocolInClassClassSchema({ protocol, classSchema: _classSchema, }) } //#TODO: protocol.loader const _class = await protocol.loader.getClass({ className }) return { classSchema: _classSchema, protocolsPayloads, _class } }