async load()

in server/aws-lsp-identity/src/language-server/profiles/sharedConfigProfileStore.ts [31:92]


    async load(init?: SharedConfigInit): Promise<ProfileData> {
        const result: ProfileData = {
            profiles: [],
            ssoSessions: [],
        }

        const parsedIni = normalizeParsedIniData(
            await parseKnownFiles(this.getSharedConfigInit(init)).catch(reason => {
                this.observability.logging.log(`Unable to load shared config. ${reason}`)
                throw AwsError.wrap(reason, AwsErrorCodes.E_CANNOT_READ_SHARED_CONFIG)
            })
        )

        for (const [parsedSectionName, settings] of Object.entries(parsedIni)) {
            const sectionHeader = SectionHeader.fromParsedSectionName(parsedSectionName)
            switch (sectionHeader.type) {
                case IniSectionType.PROFILE:
                    result.profiles.push({
                        kinds: [
                            // As more profile kinds are added this will get more complex and need refactored
                            profileDuckTypers.SsoTokenProfile.eval(settings)
                                ? ProfileKind.SsoTokenProfile
                                : ProfileKind.Unknown,
                        ],
                        name: sectionHeader.name,
                        settings: {
                            // Only apply settings expected on Profile
                            region: settings.region,
                            sso_session: settings.sso_session,
                        },
                    })
                    break
                case IniSectionType.SSO_SESSION: {
                    if (!ssoSessionDuckTyper.eval(settings)) {
                        continue
                    }

                    const ssoSession: SsoSession = {
                        name: sectionHeader.name,
                        settings: {
                            // Only apply settings expected on SsoSession
                            sso_region: settings.sso_region!,
                            sso_start_url: settings.sso_start_url!,
                        },
                    }

                    if (settings.sso_registration_scopes) {
                        ssoSession.settings!.sso_registration_scopes = normalizeSettingList(
                            settings.sso_registration_scopes
                        )
                    }

                    result.ssoSessions.push(ssoSession)
                    break
                }
                // IniSectionType.SERVICES not currently supported
            }
        }

        this.observability.logging.log('Loaded shared config.')
        return result
    }