Skip to main content
Glama
combine.js1.8 kB
'use strict'; const format = require('./format'); /* * function cascade(formats) * Returns a function that invokes the `._format` function in-order * for the specified set of `formats`. In this manner we say that Formats * are "pipe-like", but not a pure pumpify implementation. Since there is no back * pressure we can remove all of the "readable" plumbing in Node streams. */ function cascade(formats) { if (!formats.every(isValidFormat)) { return; } return info => { let obj = info; for (let i = 0; i < formats.length; i++) { obj = formats[i].transform(obj, formats[i].options); if (!obj) { return false; } } return obj; }; } /* * function isValidFormat(format) * If the format does not define a `transform` function throw an error * with more detailed usage. */ function isValidFormat(fmt) { if (typeof fmt.transform !== 'function') { throw new Error([ 'No transform function found on format. Did you create a format instance?', 'const myFormat = format(formatFn);', 'const instance = myFormat();' ].join('\n')); } return true; } /* * function combine (info) * Returns a new instance of the combine Format which combines the specified * formats into a new format. This is similar to a pipe-chain in transform streams. * We choose to combine the prototypes this way because there is no back pressure in * an in-memory transform chain. */ module.exports = (...formats) => { const combinedFormat = format(cascade(formats)); const instance = combinedFormat(); instance.Format = combinedFormat.Format; return instance; }; // // Export the cascade method for use in cli and other // combined formats that should not be assumed to be // singletons. // module.exports.cascade = cascade;

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/PancrePal-xiaoyibao/get-biji-dev-by-gemini3pro'

If you have feedback or need assistance with the MCP directory API, please join our Discord server