Skip to content

Commit

Permalink
[base] Add ability to use experimental API version (localStorage flag)
Browse files Browse the repository at this point in the history
  • Loading branch information
rexxars committed Oct 6, 2020
1 parent 67c5525 commit 4c602ce
Showing 1 changed file with 24 additions and 2 deletions.
26 changes: 24 additions & 2 deletions packages/@sanity/base/src/client/index.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import config from 'config:sanity'
import configureClient from 'part:@sanity/base/configure-client?'
import sanityClient from '@sanity/client'
import sanityClient, {SanityClient} from '@sanity/client'

const deprecationMessage = `[deprecation] The Sanity client is now exposed in CommonJS format.
Expand All @@ -15,7 +15,29 @@ const fallbackConfig = {projectId: 'UNSPECIFIED', dataset: 'UNSPECIFIED'}
const apiConfig = {...fallbackConfig, ...config.api, withCredentials: true, useCdn: false}
const client = sanityClient(apiConfig)

const configuredClient = configureClient ? configureClient(sanityClient(apiConfig)) : client
const configuredClient = experimental(
configureClient ? configureClient(sanityClient(apiConfig)) : client
)

function experimental(original: SanityClient): SanityClient {
let useExperimental = false
try {
useExperimental = Boolean(window.localStorage.vx)
} catch (err) {
// nah
}

if (!useExperimental) {
return original
}

;[original.clientConfig as any, original.observable.clientConfig as any].forEach(cfg => {
cfg.url = cfg.url.replace(/\/v1$/, '/vX')
cfg.cdnUrl = cfg.cdnUrl.replace(/\/v1$/, '/vX')
})

return original
}

// Warn when people use `.default`
Object.defineProperty(configuredClient, 'default', {
Expand Down

0 comments on commit 4c602ce

Please sign in to comment.