everything-dev
Version:
A consolidated product package for building Module Federation apps with oRPC APIs.
30 lines (28 loc) • 1.2 kB
JavaScript
const require_contract = require('../contract.cjs');
const require_contract_meta = require('../contract.meta.cjs');
//#region src/cli/catalog.ts
function splitCamelCase(value) {
return value.replace(/([a-z0-9])([A-Z])/g, "$1 $2").split(/\s+/).map((part) => part.trim()).filter(Boolean).map((part) => part.toLowerCase());
}
const commandCatalog = Object.entries(require_contract.bosContract).map(([key, procedure]) => {
const meta = require_contract_meta.cliCommandMeta[key] ?? { summary: splitCamelCase(String(key)).join(" ") };
return {
key,
commandPath: meta.commandPath ?? splitCamelCase(String(key)),
summary: meta.summary,
meta,
procedure
};
});
function findCommandDescriptor(args) {
const sorted = [...commandCatalog].sort((a, b) => b.commandPath.length - a.commandPath.length);
for (const descriptor of sorted) if (args.slice(0, descriptor.commandPath.length).map((part) => part.toLowerCase()).join(" ") === descriptor.commandPath.join(" ")) return {
descriptor,
consumed: descriptor.commandPath.length
};
return null;
}
//#endregion
exports.commandCatalog = commandCatalog;
exports.findCommandDescriptor = findCommandDescriptor;
//# sourceMappingURL=catalog.cjs.map