diff --git a/docusaurus.config.ts b/docusaurus.config.ts index 1238042..f91e7f1 100644 --- a/docusaurus.config.ts +++ b/docusaurus.config.ts @@ -79,7 +79,8 @@ const config: Config = { }, ], 'docusaurus-plugin-sass', - './src/plugins/create-versions-json.ts' + './src/plugins/create-versions-json.ts', + './src/plugins/create-providers-json.ts' ], themes: ["docusaurus-theme-openapi-docs"], diff --git a/src/plugins/create-providers-json.ts b/src/plugins/create-providers-json.ts new file mode 100644 index 0000000..e3c01cb --- /dev/null +++ b/src/plugins/create-providers-json.ts @@ -0,0 +1,39 @@ +import fs from 'fs'; +import path from 'path'; +import { LoadContext, Plugin, PluginOptions } from '@docusaurus/types'; +import logger from '@docusaurus/logger'; +import Module from 'module'; + +const createProvidersJsonPlugin = (context: LoadContext, options: PluginOptions): Plugin => { + return { + name: 'docusaurus-plugin-create-providers-json', + + async postBuild({ outDir, routes, plugins }) { + const originalResolveFilename = Module._resolveFilename + + // This is a hack to allow us to import a custom module instead of the normal translation module + Module._resolveFilename = function (request, parent, isMain, options) { + if (request == '@docusaurus/Translate') { + request = path.resolve(__dirname, 'custom_modules', 'translate.ts'); + } + return originalResolveFilename.call(this, request, parent, isMain, options); + }; + + // Import the providers data + const { providersData } = await import('../data/providers'); + + // Restore the original resolve function + Module._resolveFilename = originalResolveFilename + + const providersFilePath = path.join(outDir, 'data/providers.json'); + + fs.mkdirSync(path.dirname(providersFilePath), { recursive: true }); + + fs.writeFileSync(providersFilePath, JSON.stringify(providersData, null, 2), 'utf-8'); + + logger.success(`Created providers.json file at ${providersFilePath}`); + } + }; +}; + +export default createProvidersJsonPlugin; \ No newline at end of file diff --git a/src/plugins/custom_modules/translate.ts b/src/plugins/custom_modules/translate.ts new file mode 100644 index 0000000..bc395c5 --- /dev/null +++ b/src/plugins/custom_modules/translate.ts @@ -0,0 +1,4 @@ +// This is a fake module that simulates @docusaurus/Translate +export function translate (data) { + return data.message +}