protected getConfigurationSettingsInternal()

in libraries/azure-app-configuration-importer/src/settingsImport/stringConfigurationSettingsSource.ts [62:119]


  protected getConfigurationSettingsInternal(data: string): Array<
    SetConfigurationSettingParam<string | FeatureFlagValue | SecretReferenceValue>
  > {
    let loadedData: any = {};
    // Checking string encoding format
    if (/^\uFEFF/.test(data)) {
      throw new ParseError(
        "Failed to parse data: An invalid encoding, UTF-8 with BOM, was detected. Please update encoding to UTF-8 without BOM."
      );
    }

    try {
      switch (this.options.format) {
        case ConfigurationFormat.Json: {
          loadedData = JSON.parse(stripJSONComments(data));
          break;
        }
        case ConfigurationFormat.Yaml: {
          const temp = jsyaml.load(data, { schema: jsyaml.JSON_SCHEMA });
          if (temp === undefined) {
            throw new ParseError(
              "Failed to parse data: Not a valid yaml format."
            );
          }
          else {
            loadedData = temp;
          }
          break;
        }
        case ConfigurationFormat.Properties: {
          loadedData = getProperties(data);
          break;
        }
        default: {
          throw new ArgumentError("Data Format provided is not supported. Supported values are: Json, Yaml and Properties.");
        }
      }
    }
    catch (e: any) {
      throw new ParseError(`Failed to parse data: ${e.message}`);
    }

    if (typeof loadedData !== "object") {
      throw new ParseError(
        `Type of data be parsed is ${typeof loadedData}, not a valid object type`
      );
    }

    let converter: ConfigurationSettingsConverter;
    if (this.options.profile === ConfigurationProfile.KvSet) {
      converter = new KvSetConfigurationSettingsConverter();
    }
    else {
      converter = new DefaultConfigurationSettingsConverter();
    }

    return converter.Convert(loadedData, this.options);
  }