{
  "version": 3,
  "sources": ["../../../../src/packages/plugin-commands-completion/complete.ts"],
  "sourcesContent": ["import type { CompletionItem } from '@pnpm/tabtab';\nimport type { CompletionFunc } from '../command/index.ts';\nimport { findWorkspaceDir } from '../find-workspace-dir/index.ts';\nimport {\n  findWorkspacePackages,\n  type Project,\n} from '../workspace.find-packages/index.ts';\nimport { readWorkspaceManifest } from '../workspace.read-manifest/index.ts';\nimport { getOptionCompletions } from './getOptionType.ts';\nimport { optionTypesToCompletions } from './optionTypesToCompletions.ts';\n\nexport async function complete(\n  ctx: {\n    cliOptionsTypesByCommandName: Record<string, () => Record<string, unknown>>;\n    completionByCommandName: Record<string, CompletionFunc>;\n    initialCompletion: () => CompletionItem[];\n    shorthandsByCommandName: Record<string, Record<string, string | string[]>>;\n    universalOptionsTypes: Record<string, unknown>;\n    universalShorthands: Record<string, string>;\n  },\n  input: {\n    params: string[];\n    cmd: string | null;\n    currentTypedWordType: 'option' | 'value' | null;\n    lastOption: string | null;\n    options: Record<string, unknown>;\n  }\n): Promise<CompletionItem[]> {\n  if (typeof input.options.version !== 'undefined') {\n    return [];\n  }\n\n  const optionTypes = {\n    ...ctx.universalOptionsTypes,\n    ...((input.cmd !== null &&\n      ctx.cliOptionsTypesByCommandName[input.cmd]?.()) ??\n      {}),\n  };\n\n  // Autocompleting option values\n  if (input.currentTypedWordType !== 'option') {\n    if (input.lastOption === '--filter') {\n      const workspaceDir =\n        (await findWorkspaceDir(process.cwd())) ?? process.cwd();\n\n      const workspaceManifest = await readWorkspaceManifest(workspaceDir);\n\n      const allProjects = await findWorkspacePackages(workspaceDir, {\n        patterns: workspaceManifest?.packages,\n        supportedArchitectures: {\n          os: ['current'],\n          cpu: ['current'],\n          libc: ['current'],\n        },\n      });\n\n      return allProjects\n        .map(({ manifest }: Project): { name: string } => {\n          return { name: manifest.name };\n        })\n        .filter(\n          (item: {\n            name: string;\n          }): item is CompletionItem => {\n            return !!item.name;\n          }\n        );\n    }\n\n    if (input.lastOption !== null) {\n      const optionCompletions = getOptionCompletions(\n        optionTypes,\n        {\n          ...ctx.universalShorthands,\n          ...(input.cmd !== null ? ctx.shorthandsByCommandName[input.cmd] : {}),\n        },\n        input.lastOption\n      );\n\n      if (optionCompletions !== undefined) {\n        return optionCompletions.map((name) => ({ name }));\n      }\n    }\n  }\n\n  let completions: CompletionItem[] = [];\n\n  if (input.currentTypedWordType !== 'option') {\n    if (\n      input.cmd === null ||\n      (input.currentTypedWordType === 'value' &&\n        !ctx.completionByCommandName[input.cmd])\n    ) {\n      completions = ctx.initialCompletion();\n    } else if (ctx.completionByCommandName[input.cmd]) {\n      try {\n        completions =\n          (await ctx.completionByCommandName[input.cmd]?.(\n            input.options,\n            input.params\n          )) ?? [];\n      } catch {\n        // Ignore\n      }\n    }\n  }\n\n  if (input.currentTypedWordType === 'value') {\n    return completions;\n  }\n\n  if (input.cmd === null) {\n    return [\n      ...completions,\n      ...optionTypesToCompletions(optionTypes),\n      { name: '--version' },\n    ];\n  }\n\n  return [\n    ...completions,\n    ...optionTypesToCompletions(optionTypes as any), // eslint-disable-line\n  ];\n}\n"],
  "mappings": "AAEA,SAAS,wBAAwB;AACjC;AAAA,EACE;AAAA,OAEK;AACP,SAAS,6BAA6B;AACtC,SAAS,4BAA4B;AACrC,SAAS,gCAAgC;AAEzC,eAAsB,SACpB,KAQA,OAO2B;AAC3B,MAAI,OAAO,MAAM,QAAQ,YAAY,aAAa;AAChD,WAAO,CAAC;AAAA,EACV;AAEA,QAAM,cAAc;AAAA,IAClB,GAAG,IAAI;AAAA,IACP,IAAK,MAAM,QAAQ,QACjB,IAAI,6BAA6B,MAAM,GAAG,IAAI,MAC9C,CAAC;AAAA,EACL;AAGA,MAAI,MAAM,yBAAyB,UAAU;AAC3C,QAAI,MAAM,eAAe,YAAY;AACnC,YAAM,eACH,MAAM,iBAAiB,QAAQ,IAAI,CAAC,KAAM,QAAQ,IAAI;AAEzD,YAAM,oBAAoB,MAAM,sBAAsB,YAAY;AAElE,YAAM,cAAc,MAAM,sBAAsB,cAAc;AAAA,QAC5D,UAAU,mBAAmB;AAAA,QAC7B,wBAAwB;AAAA,UACtB,IAAI,CAAC,SAAS;AAAA,UACd,KAAK,CAAC,SAAS;AAAA,UACf,MAAM,CAAC,SAAS;AAAA,QAClB;AAAA,MACF,CAAC;AAED,aAAO,YACJ,IAAI,CAAC,EAAE,SAAS,MAAiC;AAChD,eAAO,EAAE,MAAM,SAAS,KAAK;AAAA,MAC/B,CAAC,EACA;AAAA,QACC,CAAC,SAE6B;AAC5B,iBAAO,CAAC,CAAC,KAAK;AAAA,QAChB;AAAA,MACF;AAAA,IACJ;AAEA,QAAI,MAAM,eAAe,MAAM;AAC7B,YAAM,oBAAoB;AAAA,QACxB;AAAA,QACA;AAAA,UACE,GAAG,IAAI;AAAA,UACP,GAAI,MAAM,QAAQ,OAAO,IAAI,wBAAwB,MAAM,GAAG,IAAI,CAAC;AAAA,QACrE;AAAA,QACA,MAAM;AAAA,MACR;AAEA,UAAI,sBAAsB,QAAW;AACnC,eAAO,kBAAkB,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE;AAAA,MACnD;AAAA,IACF;AAAA,EACF;AAEA,MAAI,cAAgC,CAAC;AAErC,MAAI,MAAM,yBAAyB,UAAU;AAC3C,QACE,MAAM,QAAQ,QACb,MAAM,yBAAyB,WAC9B,CAAC,IAAI,wBAAwB,MAAM,GAAG,GACxC;AACA,oBAAc,IAAI,kBAAkB;AAAA,IACtC,WAAW,IAAI,wBAAwB,MAAM,GAAG,GAAG;AACjD,UAAI;AACF,sBACG,MAAM,IAAI,wBAAwB,MAAM,GAAG;AAAA,UAC1C,MAAM;AAAA,UACN,MAAM;AAAA,QACR,KAAM,CAAC;AAAA,MACX,QAAQ;AAAA,MAER;AAAA,IACF;AAAA,EACF;AAEA,MAAI,MAAM,yBAAyB,SAAS;AAC1C,WAAO;AAAA,EACT;AAEA,MAAI,MAAM,QAAQ,MAAM;AACtB,WAAO;AAAA,MACL,GAAG;AAAA,MACH,GAAG,yBAAyB,WAAW;AAAA,MACvC,EAAE,MAAM,YAAY;AAAA,IACtB;AAAA,EACF;AAEA,SAAO;AAAA,IACL,GAAG;AAAA,IACH,GAAG,yBAAyB,WAAkB;AAAA;AAAA,EAChD;AACF;",
  "names": []
}
