function getInjectUrls()

in packages/lowcode-plugin-inject/src/utils.tsx [56:105]


function getInjectUrls(resourceType, type = 'url', injectOptions?: InjectOptions): Promise<any> {
  const filter = (_urls) => {
    if (injectOptions?.filter) {
      _urls = _urls.filter(url => injectOptions.filter(url));
    }
    if (!resourceType) {
      return type === 'url' ? _urls.map(item => item.url || item) : _urls;
    }
    const filteredUrls = _urls.filter((item) => {
      if (typeof item === 'string') {
        return item.indexOf(`name=@ali/${resourceType}-`) >= 0;
      }
      if (item.type) {
        return typeMap[resourceType].indexOf(item.type) >= 0;
      }
      return false;
    })
    return type === 'url' ? filteredUrls.map(item => item.url || item) : filteredUrls;
  };

  return new Promise((resolve) => {
    if (!urlCache) {
      const urlParams = queryString.parse(window.location.search);
      let urls = urlParams[queryFlag] || [];
      urls = Array.isArray(urls) ? urls : [urls];

      const { type, injects } = window.injectConfig || {};
      if (type === 'auto' || urlParams[injectTypeFlag] === 'auto' || urlParams[debugFlag] !== undefined) {
        fetchJsonp(`http://${injectServerHost}:8899/apis/injectInfo`).then(res => res.json()).then((data) => {
          urls = envFilter(data.content);
          urlCache = urls;
          resolve(filter(urlCache));
        }).catch((err) => {
          urlCache = [];
          resolve([]);
          console.error(err);
        });
      } else if (type === 'custom' && injects) {
        urls = urls.concat(injects);
        urlCache = urls;
        resolve(filter(urlCache));
      } else {
        urlCache = urls;
        resolve(filter(urlCache));
      }
    } else {
      resolve(filter(urlCache));
    }
  });
}