async function getAssetsWithNotSpecifiedRequiredParameters()

in src/helpers/openZeppelinHelper.ts [135:167]


async function getAssetsWithNotSpecifiedRequiredParameters() {
  const currentOZVersion = await tryGetCurrentOpenZeppelinVersionAsync();
  const manifest = await createManifestAsync(currentOZVersion);
  const manifestAssets = manifest.getAssets();
  const currentAssets = await OpenZeppelinService.getAllDownloadedAssetsAsync();

  return currentAssets.reduce((assets, asset) => {
    const manifestAsset = manifestAssets.find((assetFromManifest) => assetFromManifest.id === asset.id);
    if (manifestAsset && !!manifestAsset.requiredParameters) {
      if (!!asset.requiredParameters) {
        for (const [contractName, contractParameters] of Object.entries(asset.requiredParameters)) {
          const manifestContractParameters = manifestAsset.requiredParameters[contractName];
          if (manifestContractParameters) {
            for (const parameter of contractParameters) {
              if (parameter.value === undefined) {
                const param = manifestContractParameters.find((manifestContractParameter) =>
                  manifestContractParameter.name === parameter.name &&
                  manifestContractParameter.type === parameter.type);
                if (param) {
                  assets.push(asset);
                  return assets;
                }
              }
            }
          }
        }
      } else {
        assets.push(JSON.parse(JSON.stringify(manifestAsset)));
      }
    }
    return assets;
  }, [] as IOZAsset[]);
}