UNPKG

altair-graphql-core

Version:

Several of the core logic for altair graphql client

164 lines 6.99 kB
import { HTTP_HANDLER_ID, WEBSOCKET_HANDLER_ID, } from '../request/types'; import isElectron from '../utils/is_electron'; import { urlMap } from './urls'; const isTranslateMode = window.__ALTAIR_TRANSLATE__; const parseUrl = (url) => { try { return new URL(url); } catch (e) { return; } }; export class AltairConfig { constructor({ endpointURL, subscriptionsEndpoint, subscriptionsProtocol, initialQuery, initialHeaders, initialEnvironments, initialVariables, initialPreRequestScript, initialPostRequestScript = '', instanceStorageNamespace, initialSettings, persistedSettings, initialRequestHandlerId = HTTP_HANDLER_ID, initialRequestHandlerAdditionalParams = {}, initialSubscriptionRequestHandlerId = WEBSOCKET_HANDLER_ID, initialSubscriptionsPayload = {}, initialHttpMethod = 'POST', preserveState = true, initialWindows = [], disableAccount = false, initialAuthorization, } = {}) { this.useLocalSandboxUrl = false; this.donation = { url: 'https://opencollective.com/altair/donate', action_count_threshold: 50, }; this.ga = 'UA-41432833-6'; this.add_query_depth_limit = 3; this.tab_size = 2; this.max_windows = isElectron ? 50 : 15; this.default_language = isTranslateMode ? 'ach-UG' : 'en-US'; this.languages = { 'en-US': 'English', 'fr-FR': 'French', 'es-ES': 'Español', 'cs-CZ': 'Czech', 'de-DE': 'German', 'pt-BR': 'Brazilian', 'ru-RU': 'Russian', 'uk-UA': 'Ukrainian', 'zh-CN': 'Chinese Simplified', 'ja-JP': 'Japanese', 'sr-SP': 'Serbian', 'it-IT': 'Italian', 'pl-PL': 'Polish', 'ko-KR': 'Korean', 'ro-RO': 'Romanian', 'vi-VN': 'Vietnamese', }; this.query_history_depth = isElectron ? 100 : 15; this.disableLineNumbers = false; this.defaultTheme = 'system'; this.themes = ['light', 'dark', 'dracula', 'system']; this.isTranslateMode = isTranslateMode; this.isWebApp = window.__ALTAIR_WEB_APP__; this.initialData = { url: '', subscriptionsEndpoint: '', subscriptionsProtocol: '', query: '', variables: '', // Force type of header, since initial value inference is wrong headers: null, environments: {}, preRequestScript: '', postRequestScript: '', instanceStorageNamespace: 'altair_', settings: undefined, persistedSettings: undefined, initialSubscriptionRequestHandlerId: undefined, initialSubscriptionsPayload: {}, initialRequestHandlerId: HTTP_HANDLER_ID, initialRequestHandlerAdditionalParams: {}, initialHttpMethod: 'POST', preserveState: true, windows: [], disableAccount: false, initialAuthorization: undefined, }; this.initialData.url = window.__ALTAIR_ENDPOINT_URL__ ?? endpointURL ?? ''; this.initialData.subscriptionsEndpoint = window.__ALTAIR_SUBSCRIPTIONS_ENDPOINT__ ?? subscriptionsEndpoint ?? ''; this.initialData.subscriptionsProtocol = subscriptionsProtocol ?? ''; this.initialData.query = window.__ALTAIR_INITIAL_QUERY__ ?? initialQuery ?? ''; this.initialData.variables = window.__ALTAIR_INITIAL_VARIABLES__ ?? initialVariables ?? ''; this.initialData.headers = window.__ALTAIR_INITIAL_HEADERS__ ?? initialHeaders ?? ''; this.initialData.environments = initialEnvironments ?? {}; this.initialData.preRequestScript = window.__ALTAIR_INITIAL_PRE_REQUEST_SCRIPT__ ?? initialPreRequestScript ?? ''; this.initialData.postRequestScript = initialPostRequestScript; this.initialData.instanceStorageNamespace = window.__ALTAIR_INSTANCE_STORAGE_NAMESPACE__ ?? instanceStorageNamespace ?? 'altair_'; this.initialData.settings = initialSettings; this.initialData.persistedSettings = persistedSettings; this.initialData.initialSubscriptionRequestHandlerId = initialSubscriptionRequestHandlerId; this.initialData.initialSubscriptionsPayload = initialSubscriptionsPayload; this.initialData.initialRequestHandlerId = initialRequestHandlerId; this.initialData.initialRequestHandlerAdditionalParams = initialRequestHandlerAdditionalParams; this.initialData.initialHttpMethod = initialHttpMethod; this.initialData.preserveState = preserveState; this.initialData.windows = initialWindows; this.initialData.disableAccount = disableAccount; this.initialData.initialAuthorization = initialAuthorization; } getPossibleLocalSandBoxUrl() { // check document base url if (document.baseURI && parseUrl(document.baseURI)?.origin === window.location.origin) { // add iframe-sandbox path to base url if (document.baseURI.endsWith('/')) { return new URL(document.baseURI + 'iframe-sandbox/index.html'); } else { // remove the last part of the url return new URL(document.baseURI.slice(0, document.baseURI.lastIndexOf('/') + 1) + 'iframe-sandbox/index.html'); } } } async getLocalSandBoxUrl() { if (typeof this.localSandboxUrl === 'undefined') { this.localSandboxUrl = this.getPossibleLocalSandBoxUrl()?.href ?? ''; if (this.localSandboxUrl) { const res = await fetch(this.localSandboxUrl); if (res.ok) { this.useLocalSandboxUrl = true; } } } if (this.useLocalSandboxUrl) { return this.localSandboxUrl; } } getUrlConfig(environment = 'production') { return urlMap[environment]; } async getUrlConfigWithLocal(environment = 'production') { // Check for local sandbox url first const localSandboxUrl = await this.getLocalSandBoxUrl(); const urls = urlMap[environment]; if (localSandboxUrl) { urls.sandbox = localSandboxUrl; } return urls; } async getUrl(name, environment = 'production') { const urlConfig = await this.getUrlConfigWithLocal(environment); return urlConfig[name]; } } let config = new AltairConfig(); export const setAltairConfig = (_config) => { config = _config; }; export const getAltairConfig = () => { return config; }; window.getAltairConfig = getAltairConfig; //# sourceMappingURL=index.js.map