MCPcopy
hub / github.com/subquery/subql / prepareInputFragments

Function prepareInputFragments

packages/cli/src/controller/generate-controller.ts:239–291  ·  view source on GitHub ↗
(
  type: 'event' | 'function',
  rawInput: string | undefined,
  availableFragments: Record<string, T>,
  abiName: string,
  prompt: Prompt | null
)

Source from the content-addressed store, hash-verified

237
238// Selected fragments
239export async function prepareInputFragments<T extends ConstructorFragment | Fragment>(
240 type: 'event' | 'function',
241 rawInput: string | undefined,
242 availableFragments: Record<string, T>,
243 abiName: string,
244 prompt: Prompt | null
245): Promise<Record<string, T>> {
246 if (!rawInput) {
247 if (!prompt) {
248 // No items selected or
249 return {};
250 }
251
252 const selected = await prompt({
253 message: `Select ${type}`,
254 type: 'string',
255 options: Object.keys(availableFragments),
256 multiple: true,
257 });
258
259 return Object.entries(availableFragments)
260 .filter(([key]) => selected.includes(key))
261 .reduce(
262 (acc, [key, value]) => {
263 acc[key as string] = value;
264 return acc;
265 },
266 {} as Record<string, T>
267 );
268 }
269
270 if (rawInput === '*') {
271 return availableFragments;
272 }
273
274 const selectedFragments: Record<string, T> = {};
275 rawInput.split(',').forEach((input) => {
276 const casedInput = input.trim().toLowerCase();
277 const matchFragment = Object.entries(availableFragments).find((entry) => {
278 const [key, value] = entry;
279 if (casedInput === availableFragments[key].name.toLowerCase()) {
280 selectedFragments[key] = availableFragments[key];
281 return value;
282 }
283 });
284
285 if (!matchFragment) {
286 throw new Error(`'${input}' is not a valid ${type} on ${abiName}`);
287 }
288 });
289
290 return selectedFragments;
291}
292function filterExistingFragments<T extends Fragment | ConstructorFragment>(
293 fragments: Record<string, T>,
294 existingMethods: string[]

Callers 3

generateAdapterFunction · 0.90

Calls 1

findMethod · 0.65

Tested by

no test coverage detected