Files
apollo/ssr/index.js
T
Guillaume Chau b67878e52a chore: eslint fix
2019-06-20 07:58:22 +02:00

33 lines
985 B
JavaScript

const serializeJs = require('serialize-javascript')
exports.serializeStates = function (apolloProvider, options = {}) {
const state = exports.getStates(apolloProvider, options)
return options.useUnsafeSerializer
? JSON.stringify(state)
: serializeJs(state)
}
exports.getStates = function (apolloProvider, options = {}) {
const finalOptions = Object.assign({}, {
exportNamespace: '',
}, options)
const states = {}
for (const key in apolloProvider.clients) {
const client = apolloProvider.clients[key]
const state = client.cache.extract()
states[`${finalOptions.exportNamespace}${key}`] = state
}
return states
}
exports.exportStates = function (apolloProvider, options) {
const finalOptions = Object.assign({}, {
globalName: '__APOLLO_STATE__',
attachTo: 'window',
useUnsafeSerializer: false,
}, options)
return `${finalOptions.attachTo}.${finalOptions.globalName} = ${exports.serializeStates(apolloProvider, options)};`
}