{"version":3,"file":"index.mjs","sources":["../../../../src/strapi/providers/local-source/index.ts"],"sourcesContent":["import { Readable } from 'stream';\nimport { chain } from 'stream-chain';\nimport type { Core, Struct } from '@strapi/types';\n\nimport type { IMetadata, ISourceProvider, ProviderType } from '../../../../types';\nimport type { IDiagnosticReporter } from '../../../utils/diagnostic';\nimport { createEntitiesStream, createEntitiesTransformStream } from './entities';\nimport { createLinksStream } from './links';\nimport { createConfigurationStream } from './configuration';\nimport { createAssetsStream } from './assets';\nimport * as utils from '../../../utils';\nimport { assertValidStrapi } from '../../../utils/providers';\n\nexport interface ILocalStrapiSourceProviderOptions {\n getStrapi(): Core.Strapi | Promise; // return an initialized instance of Strapi\n\n autoDestroy?: boolean; // shut down the instance returned by getStrapi() at the end of the transfer\n}\n\nexport const createLocalStrapiSourceProvider = (options: ILocalStrapiSourceProviderOptions) => {\n return new LocalStrapiSourceProvider(options);\n};\n\nclass LocalStrapiSourceProvider implements ISourceProvider {\n name = 'source::local-strapi';\n\n type: ProviderType = 'source';\n\n options: ILocalStrapiSourceProviderOptions;\n\n strapi?: Core.Strapi;\n\n #diagnostics?: IDiagnosticReporter;\n\n constructor(options: ILocalStrapiSourceProviderOptions) {\n this.options = options;\n }\n\n async bootstrap(diagnostics?: IDiagnosticReporter): Promise {\n this.#diagnostics = diagnostics;\n this.strapi = await this.options.getStrapi();\n this.strapi.db.lifecycles.disable();\n }\n\n #reportInfo(message: string) {\n this.#diagnostics?.report({\n details: {\n createdAt: new Date(),\n message,\n origin: 'local-source-provider',\n },\n kind: 'info',\n });\n }\n\n /**\n * Reports an error to the diagnostic reporter.\n */\n #reportError(message: string, error: Error) {\n this.#diagnostics?.report({\n details: {\n createdAt: new Date(),\n message,\n error,\n severity: 'fatal',\n name: error.name,\n },\n kind: 'error',\n });\n }\n\n /**\n * Handles errors that occur in read streams.\n */\n #handleStreamError(streamType: string, err: Error) {\n const { message, stack } = err;\n const errorMessage = `[Data transfer] Error in ${streamType} read stream: ${message}`;\n const formattedError = {\n message: errorMessage,\n stack,\n timestamp: new Date().toISOString(),\n };\n\n this.strapi?.log.error(formattedError);\n this.#reportError(formattedError.message, err);\n }\n\n async close(): Promise {\n const { autoDestroy } = this.options;\n assertValidStrapi(this.strapi);\n this.strapi.db.lifecycles.enable();\n // Basically `!== false` but more deterministic\n if (autoDestroy === undefined || autoDestroy === true) {\n await this.strapi?.destroy();\n }\n }\n\n getMetadata(): IMetadata {\n this.#reportInfo('getting metadata');\n const strapiVersion = strapi.config.get('info.strapi');\n const createdAt = new Date().toISOString();\n\n return {\n createdAt,\n strapi: {\n version: strapiVersion,\n },\n };\n }\n\n async createEntitiesReadStream(): Promise {\n assertValidStrapi(this.strapi, 'Not able to stream entities');\n this.#reportInfo('creating entities read stream');\n return chain([\n // Entities stream\n createEntitiesStream(this.strapi),\n\n // Transform stream\n createEntitiesTransformStream(),\n ]);\n }\n\n createLinksReadStream(): Readable {\n assertValidStrapi(this.strapi, 'Not able to stream links');\n this.#reportInfo('creating links read stream');\n\n return createLinksStream(this.strapi);\n }\n\n createConfigurationReadStream(): Readable {\n assertValidStrapi(this.strapi, 'Not able to stream configuration');\n this.#reportInfo('creating configuration read stream');\n return createConfigurationStream(this.strapi);\n }\n\n getSchemas(): Record {\n assertValidStrapi(this.strapi, 'Not able to get Schemas');\n this.#reportInfo('getting schemas');\n const schemas = utils.schema.schemasToValidJSON({\n ...this.strapi.contentTypes,\n ...this.strapi.components,\n });\n\n return utils.schema.mapSchemasValues(schemas);\n }\n\n createSchemasReadStream(): Readable {\n return Readable.from(Object.values(this.getSchemas()));\n }\n\n createAssetsReadStream(): Readable {\n assertValidStrapi(this.strapi, 'Not able to stream assets');\n this.#reportInfo('creating assets read stream');\n\n const stream = createAssetsStream(this.strapi);\n stream.on('error', (err) => {\n this.#handleStreamError('assets', err);\n });\n\n return stream;\n }\n}\n\nexport type ILocalStrapiSourceProvider = InstanceType;\n"],"names":["createLocalStrapiSourceProvider","options","LocalStrapiSourceProvider","bootstrap","diagnostics","strapi","getStrapi","db","lifecycles","disable","close","autoDestroy","assertValidStrapi","enable","undefined","destroy","getMetadata","reportInfo","strapiVersion","config","get","createdAt","Date","toISOString","version","createEntitiesReadStream","chain","createEntitiesStream","createEntitiesTransformStream","createLinksReadStream","createLinksStream","createConfigurationReadStream","createConfigurationStream","getSchemas","schemas","utils","contentTypes","components","createSchemasReadStream","Readable","from","Object","values","createAssetsReadStream","stream","createAssetsStream","on","err","handleStreamError","constructor","name","type","message","report","details","origin","kind","error","severity","streamType","stack","errorMessage","formattedError","timestamp","log","reportError"],"mappings":"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"}