static getApiItems()

in src/explorer.ts [701:742]


  static getApiItems(mod: DiffResult<Mod>, specName: string, contextValue: string): PontChangeTreeItem[] {
    const modName = typeof mod.name === "string" ? mod.name : "";
    const localSpec = getSpecByName(alicloudAPIMessageService.pontManager.localPontSpecs, specName);
    const remoteSpec = getSpecByName(alicloudAPIMessageService.pontManager.remotePontSpecs, specName);

    return (mod?.interfaces || []).map((api: DiffResult<PontAPI>) => {
      const apiKey = modName ? `${mod.name}/${api.name}` : api.name;
      const localApi = localSpec?.apis?.[apiKey];
      const remoteApi = remoteSpec?.apis?.[apiKey];

      return {
        label: api.name,
        specName,
        modName,
        apiName: api.name,
        description: api.title || api.summary,
        tooltip: api.description || api.summary || api?.name,
        contextValue: contextValue + "API",
        collapsibleState: vscode.TreeItemCollapsibleState.None,
        schema: api,
        // resourceUri: vscode.Uri.parse(`pontx-changes://${contextValue}API/`),
        iconPath: api.deprecated
          ? vscode.Uri.joinPath(alicloudAPIMessageService.context.extensionUri, "resources/deprecated.svg")
          : vscode.Uri.joinPath(alicloudAPIMessageService.context.extensionUri, "resources/api-outline.svg"),
        command: {
          command: "alicloud.api.openDocument",
          title: "open",
          arguments: [
            {
              specName,
              modName,
              spec: localApi,
              remoteSpec: remoteApi,
              name: api.name,
              pageType: "changes",
              schemaType: "api",
            },
          ],
        },
      } as PontChangeTreeItem;
    });
  }