public async Import()

in libraries/azure-app-configuration-importer/src/appConfigurationImporter.ts [48:112]


  public async Import(
    configSettingsSource: ConfigurationSettingsSource,
    timeout: number,
    strict = false,
    progressCallback?: (progress: ImportProgress) => unknown,
    importMode?: ImportMode,
    dryRun?: boolean
  ) {
    if (importMode == undefined) {
      importMode = ImportMode.IgnoreMatch;
    }
    if (dryRun == undefined) {
      dryRun = false;
    }
    this.validateImportMode(importMode);

    const configSettings = await configSettingsSource.GetConfigurationSettings();

    const configurationSettingToDelete: ConfigurationSetting<string>[] = [];
    const srcKeyLabelLookUp: KeyLabelLookup = {};
    
    configSettings.forEach((config: SetConfigurationSettingParam<string | FeatureFlagValue | SecretReferenceValue>) => {
      if (!srcKeyLabelLookUp[config.key]) {
        srcKeyLabelLookUp[config.key] = {};
      }
      srcKeyLabelLookUp[config.key][config.label || ""] = true;
    });

    // generate correlationRequestId for operations in the same activity
    const customCorrelationRequestId: string = uuidv4();
    const customHeadersOption: OperationOptions = {
      requestOptions: {
        customHeaders: {
          [Constants.CorrelationRequestIdHeader]: customCorrelationRequestId
        }
      }
    };

    if (strict || importMode == ImportMode.IgnoreMatch) {
      for await (const existing of this.configurationClient.listConfigurationSettings({...configSettingsSource.FilterOptions, ...customHeadersOption})) {

        const isKeyLabelPresent: boolean = srcKeyLabelLookUp[existing.key] && srcKeyLabelLookUp[existing.key][existing.label || ""];
        
        if (strict && !isKeyLabelPresent) {
          configurationSettingToDelete.push(existing);
        }
       
        if (importMode == ImportMode.IgnoreMatch) {
          const incoming = configSettings.find(configSetting => configSetting.key == existing.key && 
            configSetting.label == existing.label);
           
          if (incoming && isConfigSettingEqual(incoming, existing)) {
            configSettings.splice(configSettings.indexOf(incoming), 1);
          }
        }
      }
    }
   
    if (dryRun) {
      this.printUpdatesToConsole(configSettings, configurationSettingToDelete);
    }
    else {
      await this.applyUpdatesToServer(configSettings, configurationSettingToDelete, timeout, customHeadersOption, progressCallback);
    }
  }