fix(config): add options defined during runtime (#9845)

Refs #9844
This commit is contained in:
Oliwia Rogala
2024-04-18 16:40:04 +02:00
committed by GitHub
parent bcd7388a2d
commit 60670d1bbd
4 changed files with 24 additions and 3 deletions

View File

@@ -15,7 +15,7 @@ const defaultOptions = Object.freeze({
maxDisplayedTags: -1,
filter: false,
validatorUrl: "https://validator.swagger.io/validator",
oauth2RedirectUrl: `${window.location.protocol}//${window.location.host}${window.location.pathname.substring(0, window.location.pathname.lastIndexOf("/"))}/oauth2-redirect.html`,
oauth2RedirectUrl: undefined,
persistAuthorization: false,
configs: {},
custom: {},

View File

@@ -3,5 +3,6 @@ export { default as storeOptionsFactorization } from "./factorization/store"
export { default as optionsFromQuery } from "./sources/query"
export { default as optionsFromURL } from "./sources/url"
export { default as optionsFromSystem } from "./sources/system"
export { default as optionsFromRuntime } from "./sources/runtime"
export { default as defaultOptions } from "./defaults"
export { default as mergeOptions } from "./merge"

View File

@@ -0,0 +1,18 @@
/**
* @prettier
*
* Receives options at runtime.
*/
/* eslint-disable no-undef */
const optionsFromRuntime = () => () => {
const options = {}
if (globalThis.location) {
options.oauth2RedirectUrl = `${globalThis.location.protocol}//${globalThis.location.host}${globalThis.location.pathname.substring(0, globalThis.location.pathname.lastIndexOf("/"))}/oauth2-redirect.html`
}
return options
}
export default optionsFromRuntime

View File

@@ -34,6 +34,7 @@ import {
optionsFromQuery,
optionsFromURL,
optionsFromSystem,
optionsFromRuntime,
mergeOptions,
inlinePluginOptionsFactorization,
storeOptionsFactorization
@@ -42,7 +43,8 @@ import {
export default function SwaggerUI(userOptions) {
const queryOptions = optionsFromQuery()(userOptions)
let mergedOptions = mergeOptions({}, defaultOptions, userOptions, queryOptions)
const runtimeOptions = optionsFromRuntime()()
let mergedOptions = mergeOptions({}, defaultOptions, runtimeOptions, userOptions, queryOptions)
const storeOptions = storeOptionsFactorization(mergedOptions)
const InlinePlugin = inlinePluginOptionsFactorization(mergedOptions)
@@ -57,7 +59,7 @@ export default function SwaggerUI(userOptions) {
.then((urlOptions) => {
const urlOptionsFailedToFetch = urlOptions === null
mergedOptions = mergeOptions({}, defaultOptions, systemOptions, userOptions, urlOptions, queryOptions)
mergedOptions = mergeOptions({}, defaultOptions, runtimeOptions, systemOptions, userOptions, urlOptions, queryOptions)
store.setConfigs(mergedOptions)
system.configsActions.loaded()