@strapi/data-transfer
Version:
Data transfer capabilities for Strapi
48 lines (44 loc) • 1.59 kB
JavaScript
;
var stream = require('stream');
var streamChain = require('stream-chain');
var fp = require('lodash/fp');
var projectSettingsLogos = require('../../utils/project-settings-logos.js');
/**
* Create a readable stream that export the Strapi app configuration
*/ const createConfigurationStream = (strapi)=>{
return stream.Readable.from(async function* configurationGenerator() {
// Core Store
const coreStoreStream = streamChain.chain([
strapi.db.queryBuilder('strapi::core-store').stream(),
(data)=>fp.set('value', JSON.parse(data.value), data),
wrapConfigurationItem('core-store')
]);
// Webhook
const webhooksStream = streamChain.chain([
strapi.db.queryBuilder('strapi::webhook').stream(),
wrapConfigurationItem('webhook')
]);
const streams = [
coreStoreStream,
webhooksStream
];
for (const stream of streams){
for await (const item of stream){
if (item.type === 'core-store') {
yield {
...item,
value: await projectSettingsLogos.enrichProjectSettingsForExport(strapi, item.value)
};
continue;
}
yield item;
}
}
}());
};
const wrapConfigurationItem = (type)=>(value)=>({
type,
value
});
exports.createConfigurationStream = createConfigurationStream;
//# sourceMappingURL=configuration.js.map