process()

in src/processors/NormalizationProcessor.js [17:103]


  process(specs, metadata) {
    const APISpecs = specs.api_specs;

    let seenWords: string[] = [];
    for (const clsName in APISpecs) {
      seenWords = seenWords.concat(
        codeGenNameConventions.parsePascalName(clsName),
      );
      const APIClsSpec = APISpecs[clsName];
      for (const index in APIClsSpec.apis) {
        const APISpec = APIClsSpec.apis[index];
        if (APISpec.return) {
          seenWords = seenWords.concat(
            codeGenNameConventions.parsePascalName(APISpec.return),
          );
        }
      }
    }
    codeGenNameConventions.initDecodeDictionary(seenWords);

    for (const clsName in APISpecs) {
      const APIClsSpec = APISpecs[clsName];
      for (const index in APIClsSpec.apis) {
        const APISpec = APIClsSpec.apis[index];
        const name = APISpec.name;
        if (!name) {
          const method = APISpec.method;
          const parts = codeGenNameConventions.parseEndpointName(
            APISpec.endpoint,
            codeGenNameConventions.parsePascalName(APISpec.return),
            clsName,
          );

          if (APISpec.endpoint === 'insights') {
            if (APISpec.method === 'GET') {
              APISpec.name = 'get_insights';
            } else if (APISpec.method === 'POST') {
              APISpec.name = 'get_insights_async';
            }
          } else {
            if (method === 'GET') {
              parts.unshift('get');
            } else if (method === 'POST') {
              parts.unshift('create');
              // Hack for Business node because it has /adaccount and /adaccounts
              if (clsName != 'Business' || APISpec.endpoint != 'adaccounts') {
                parts[parts.length - 1] = pluralize(parts[parts.length - 1], 1);
              }
            } else if (method === 'DELETE') {
              parts.unshift('delete');
            } else {
              throw Error('invalid edge method: ' + method);
            }
            APISpec.name = parts.join('_');
          }
        }

        const params = APISpec.params || [];
        for (const index in params) {
          const paramSpec = params[index];
          paramSpec.api_name = paramSpec.name;
        }
      }

      for (const index in APIClsSpec.fields) {
        const fieldSpec = APIClsSpec.fields[index];
        fieldSpec.api_name = fieldSpec.name;
        // Add field that is normalized and has an underscore.
        const fieldName = fieldSpec.name.split('.').join('_');
        fieldSpec['api_name:underscore_excluding_digit_suffix'] = isNaN(
          fieldName.charAt(0),
        )
          ? fieldName
          : 'value_' + fieldName;
      }
    }

    const enumMetadataMap = specs.enumMetadataMap;
    for (const index in enumMetadataMap) {
      const metadata = enumMetadataMap[index];
      if (!APISpecs[metadata.node]) {
        metadata.node = null;
      }
    }

    return specs;
  },