{"version":3,"sources":["jsdelivr-header.js","/npm/@medusajs/modules-sdk@2.8.4/dist/medusa-app.js"],"names":[],"mappings":"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","file":"/npm/@medusajs/modules-sdk@2.8.4/dist/medusa-app.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/@medusajs/modules-sdk@2.8.4/dist/medusa-app.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.loadModules = loadModules;\nexports.MedusaApp = MedusaApp;\nexports.MedusaAppMigrateUp = MedusaAppMigrateUp;\nexports.MedusaAppMigrateDown = MedusaAppMigrateDown;\nexports.MedusaAppMigrateGenerate = MedusaAppMigrateGenerate;\nexports.MedusaAppGetLinksExecutionPlanner = MedusaAppGetLinksExecutionPlanner;\nconst utils_1 = require(\"@medusajs/utils\");\nconst awilix_1 = require(\"awilix\");\nconst link_1 = require(\"./link\");\nconst medusa_module_1 = require(\"./medusa-module\");\nconst remote_query_1 = require(\"./remote-query\");\nconst types_1 = require(\"./types\");\nconst LinkModulePackage = utils_1.MODULE_PACKAGE_NAMES[utils_1.Modules.LINK];\nasync function loadModules(args) {\n    const { modulesConfig, sharedContainer, sharedResourcesConfig, migrationOnly = false, loaderOnly = false, workerMode = \"shared\", } = args;\n    const allModules = {};\n    const modulesToLoad = [];\n    for (const moduleName of Object.keys(modulesConfig)) {\n        const mod = modulesConfig[moduleName];\n        let path;\n        let moduleExports = undefined;\n        let declaration = {};\n        let definition = undefined;\n        // TODO: We are keeping mod === false for backward compatibility for now\n        if (mod === false || ((0, utils_1.isObject)(mod) && \"disable\" in mod && mod.disable)) {\n            continue;\n        }\n        if ((0, utils_1.isObject)(mod)) {\n            const mod_ = mod;\n            path = mod_.resolve ?? utils_1.MODULE_PACKAGE_NAMES[moduleName];\n            definition = mod_.definition;\n            moduleExports = !(0, utils_1.isString)(mod_.resolve)\n                ? mod_.resolve\n                : undefined;\n            declaration = { ...mod };\n            delete declaration.definition;\n        }\n        else {\n            path = utils_1.MODULE_PACKAGE_NAMES[moduleName];\n        }\n        declaration.scope ??= types_1.MODULE_SCOPE.INTERNAL;\n        if (declaration.scope === types_1.MODULE_SCOPE.INTERNAL) {\n            declaration.options ??= {};\n            if (!declaration.options.database) {\n                declaration.options[utils_1.isSharedConnectionSymbol] = true;\n            }\n            declaration.options.database ??= {\n                ...sharedResourcesConfig?.database,\n            };\n            declaration.options.database.debug ??=\n                sharedResourcesConfig?.database?.debug;\n        }\n        modulesToLoad.push({\n            moduleKey: moduleName,\n            defaultPath: path,\n            declaration,\n            sharedContainer,\n            moduleDefinition: definition,\n            moduleExports,\n        });\n    }\n    const loaded = (await medusa_module_1.MedusaModule.bootstrapAll(modulesToLoad, {\n        migrationOnly,\n        loaderOnly,\n        workerMode,\n    }));\n    if (loaderOnly) {\n        return allModules;\n    }\n    for (const { moduleKey } of modulesToLoad) {\n        const service = loaded.find((loadedModule) => loadedModule[moduleKey])?.[moduleKey];\n        if (!service) {\n            throw new Error(`Module ${moduleKey} could not be loaded.`);\n        }\n        sharedContainer.register({\n            [service.__definition.key]: (0, awilix_1.asValue)(service),\n        });\n        if (allModules[moduleKey] && !Array.isArray(allModules[moduleKey])) {\n            allModules[moduleKey] = [];\n        }\n        if (allModules[moduleKey]) {\n            ;\n            allModules[moduleKey].push(service);\n        }\n        else {\n            allModules[moduleKey] = service;\n        }\n    }\n    return allModules;\n}\nasync function initializeLinks({ config, linkModules, injectedDependencies, moduleExports, }) {\n    try {\n        let resources = moduleExports;\n        if (!resources) {\n            const module = await (0, utils_1.dynamicImport)(LinkModulePackage);\n            if (\"discoveryPath\" in module) {\n                const reExportedLoadedModule = await (0, utils_1.dynamicImport)(module.discoveryPath);\n                resources = reExportedLoadedModule.default ?? reExportedLoadedModule;\n            }\n        }\n        const { initialize, getMigrationPlanner } = resources;\n        const linkResolution = await initialize(config, linkModules, injectedDependencies);\n        return {\n            remoteLink: new link_1.Link(),\n            linkResolution,\n            getMigrationPlanner,\n        };\n    }\n    catch (err) {\n        console.warn(\"Error initializing link modules.\", err);\n        return {\n            remoteLink: undefined,\n            linkResolution: undefined,\n            getMigrationPlanner: () => void 0,\n        };\n    }\n}\nfunction isMedusaModule(mod) {\n    return typeof mod?.initialize === \"function\";\n}\nfunction cleanAndMergeSchema(loadedSchema) {\n    const defaultMedusaSchema = `\n    scalar DateTime\n    scalar JSON\n  `;\n    const { schema: cleanedSchema, notFound } = utils_1.GraphQLUtils.cleanGraphQLSchema(defaultMedusaSchema + loadedSchema);\n    const mergedSchema = utils_1.GraphQLUtils.mergeTypeDefs(cleanedSchema);\n    return {\n        schema: utils_1.GraphQLUtils.makeExecutableSchema({ typeDefs: mergedSchema }),\n        notFound,\n    };\n}\nfunction getLoadedSchema() {\n    return medusa_module_1.MedusaModule.getAllJoinerConfigs()\n        .map((joinerConfig) => joinerConfig?.schema ?? \"\")\n        .join(\"\\n\");\n}\nfunction registerCustomJoinerConfigs(servicesConfig) {\n    for (const config of servicesConfig) {\n        if (!config.serviceName || config.isReadOnlyLink) {\n            continue;\n        }\n        medusa_module_1.MedusaModule.setJoinerConfig(config.serviceName, config);\n    }\n}\nasync function MedusaApp_({ sharedContainer, sharedResourcesConfig, servicesConfig, modulesConfigPath, modulesConfigFileName, modulesConfig, linkModules, remoteFetchData, injectedDependencies = {}, migrationOnly = false, loaderOnly = false, workerMode = \"shared\", } = {}) {\n    const sharedContainer_ = (0, utils_1.createMedusaContainer)({}, sharedContainer);\n    const onApplicationShutdown = async () => {\n        await (0, utils_1.promiseAll)([\n            medusa_module_1.MedusaModule.onApplicationShutdown(),\n            sharedContainer_.dispose(),\n        ]);\n    };\n    const onApplicationPrepareShutdown = async () => {\n        await (0, utils_1.promiseAll)([medusa_module_1.MedusaModule.onApplicationPrepareShutdown()]);\n    };\n    const onApplicationStart = async () => {\n        await medusa_module_1.MedusaModule.onApplicationStart();\n    };\n    const modules = modulesConfig ??\n        (await (0, utils_1.dynamicImport)(modulesConfigPath ??\n            process.cwd() + (modulesConfigFileName ?? \"/modules-config\"))).default;\n    const dbData = utils_1.ModulesSdkUtils.loadDatabaseConfig(\"medusa\", sharedResourcesConfig, true);\n    registerCustomJoinerConfigs(servicesConfig ?? []);\n    if (sharedResourcesConfig?.database?.connection &&\n        !injectedDependencies[utils_1.ContainerRegistrationKeys.PG_CONNECTION]) {\n        injectedDependencies[utils_1.ContainerRegistrationKeys.PG_CONNECTION] =\n            sharedResourcesConfig.database.connection;\n    }\n    else if (dbData.clientUrl &&\n        !injectedDependencies[utils_1.ContainerRegistrationKeys.PG_CONNECTION]) {\n        injectedDependencies[utils_1.ContainerRegistrationKeys.PG_CONNECTION] =\n            utils_1.ModulesSdkUtils.createPgConnection({\n                ...(sharedResourcesConfig?.database ?? {}),\n                ...dbData,\n            });\n    }\n    // remove the link module from the modules\n    const linkModule = modules[LinkModulePackage] ?? modules[utils_1.Modules.LINK];\n    delete modules[LinkModulePackage];\n    delete modules[utils_1.Modules.LINK];\n    let linkModuleOrOptions = {};\n    if ((0, utils_1.isObject)(linkModule)) {\n        linkModuleOrOptions = linkModule;\n    }\n    for (const injectedDependency of Object.keys(injectedDependencies)) {\n        sharedContainer_.register({\n            [injectedDependency]: (0, awilix_1.asValue)(injectedDependencies[injectedDependency]),\n        });\n    }\n    const allModules = await loadModules({\n        modulesConfig: modules,\n        sharedContainer: sharedContainer_,\n        sharedResourcesConfig: { database: dbData },\n        migrationOnly,\n        loaderOnly,\n        workerMode,\n    });\n    if (loaderOnly) {\n        async function query(...args) {\n            throw new Error(\"Querying not allowed in loaderOnly mode\");\n        }\n        query.graph = query;\n        query.gql = query;\n        return {\n            onApplicationShutdown,\n            onApplicationPrepareShutdown,\n            onApplicationStart,\n            modules: allModules,\n            link: undefined,\n            query: query,\n            runMigrations: async () => {\n                throw new Error(\"Migrations not allowed in loaderOnly mode\");\n            },\n            revertMigrations: async () => {\n                throw new Error(\"Revert migrations not allowed in loaderOnly mode\");\n            },\n            generateMigrations: async () => {\n                throw new Error(\"Generate migrations not allowed in loaderOnly mode\");\n            },\n            linkMigrationExecutionPlanner: () => {\n                throw new Error(\"Migrations planner is not avaibable in loaderOnly mode\");\n            },\n        };\n    }\n    // Share Event bus with link modules\n    injectedDependencies[utils_1.Modules.EVENT_BUS] = sharedContainer_.resolve(utils_1.Modules.EVENT_BUS, {\n        allowUnregistered: true,\n    });\n    linkModules ??= [];\n    if (!Array.isArray(linkModules)) {\n        linkModules = [linkModules];\n    }\n    linkModules.push(...medusa_module_1.MedusaModule.getCustomLinks());\n    const allLoadedJoinerConfigs = medusa_module_1.MedusaModule.getAllJoinerConfigs();\n    for (let linkIdx = 0; linkIdx < linkModules.length; linkIdx++) {\n        const customLink = linkModules[linkIdx];\n        if (typeof customLink === \"function\") {\n            linkModules[linkIdx] = customLink(allLoadedJoinerConfigs);\n        }\n    }\n    const { remoteLink, getMigrationPlanner } = await initializeLinks({\n        config: linkModuleOrOptions,\n        linkModules,\n        injectedDependencies,\n        moduleExports: isMedusaModule(linkModule) ? linkModule : undefined,\n    });\n    const loadedSchema = getLoadedSchema();\n    const { schema, notFound } = cleanAndMergeSchema(loadedSchema);\n    const entitiesMap = schema.getTypeMap();\n    const remoteQuery = new remote_query_1.RemoteQuery({\n        servicesConfig,\n        customRemoteFetchData: remoteFetchData,\n        entitiesMap,\n    });\n    const applyMigration = async ({ modulesNames, action = \"run\", }) => {\n        const moduleResolutions = modulesNames.map((moduleName) => {\n            return {\n                moduleName,\n                resolution: medusa_module_1.MedusaModule.getModuleResolutions(moduleName),\n            };\n        });\n        const missingModules = moduleResolutions\n            .filter(({ resolution }) => !resolution)\n            .map(({ moduleName }) => moduleName);\n        if (missingModules.length) {\n            const error = new utils_1.MedusaError(utils_1.MedusaError.Types.UNKNOWN_MODULES, `Cannot ${action} migrations for unknown module(s) ${missingModules.join(\",\")}`, utils_1.MedusaError.Codes.UNKNOWN_MODULES);\n            error[\"allModules\"] = Object.keys(allModules);\n            throw error;\n        }\n        for (const { resolution: moduleResolution } of moduleResolutions) {\n            if (!moduleResolution.options?.database &&\n                moduleResolution.moduleDeclaration?.scope === types_1.MODULE_SCOPE.INTERNAL) {\n                moduleResolution.options ??= {};\n                moduleResolution.options.database = {\n                    ...(sharedResourcesConfig?.database ?? {}),\n                };\n                moduleResolution.options.database.debug ??=\n                    sharedResourcesConfig?.database?.debug;\n            }\n            const migrationOptions = {\n                moduleKey: moduleResolution.definition.key,\n                modulePath: moduleResolution.resolutionPath,\n                container: sharedContainer,\n                options: moduleResolution.options,\n                moduleExports: moduleResolution.moduleExports,\n            };\n            if (action === \"revert\") {\n                await medusa_module_1.MedusaModule.migrateDown(migrationOptions);\n            }\n            else if (action === \"run\") {\n                await medusa_module_1.MedusaModule.migrateUp(migrationOptions);\n            }\n            else {\n                await medusa_module_1.MedusaModule.migrateGenerate(migrationOptions);\n            }\n        }\n    };\n    const runMigrations = async () => {\n        await applyMigration({\n            modulesNames: Object.keys(allModules),\n        });\n    };\n    const revertMigrations = async (modulesNames) => {\n        await applyMigration({\n            modulesNames,\n            action: \"revert\",\n        });\n    };\n    const generateMigrations = async (modulesNames) => {\n        await applyMigration({\n            modulesNames,\n            action: \"generate\",\n        });\n    };\n    const getMigrationPlannerFn = () => {\n        const options = \"scope\" in linkModuleOrOptions\n            ? { ...linkModuleOrOptions.options }\n            : {\n                ...linkModuleOrOptions,\n            };\n        options.database ??= {\n            ...sharedResourcesConfig?.database,\n        };\n        options.database.debug ??= sharedResourcesConfig?.database?.debug;\n        return getMigrationPlanner(options, linkModules);\n    };\n    const indexModule = sharedContainer_.resolve(utils_1.Modules.INDEX, {\n        allowUnregistered: true,\n    });\n    return {\n        onApplicationShutdown,\n        onApplicationPrepareShutdown,\n        onApplicationStart,\n        modules: allModules,\n        link: remoteLink,\n        query: (0, remote_query_1.createQuery)({\n            remoteQuery,\n            indexModule,\n        }), // TODO: rm any once we remove the old RemoteQueryFunction and rely on the Query object instead,\n        entitiesMap,\n        gqlSchema: schema,\n        notFound,\n        runMigrations,\n        revertMigrations,\n        generateMigrations,\n        linkMigrationExecutionPlanner: getMigrationPlannerFn,\n        sharedContainer: sharedContainer_,\n    };\n}\nasync function MedusaApp(options = {}) {\n    return await MedusaApp_(options);\n}\nasync function MedusaAppMigrateUp(options = {}) {\n    const migrationOnly = true;\n    const { runMigrations } = await MedusaApp_({\n        ...options,\n        migrationOnly,\n    });\n    await runMigrations().finally(medusa_module_1.MedusaModule.clearInstances);\n}\nasync function MedusaAppMigrateDown(moduleNames, options = {}) {\n    const migrationOnly = true;\n    const { revertMigrations } = await MedusaApp_({\n        ...options,\n        migrationOnly,\n    });\n    await revertMigrations(moduleNames).finally(medusa_module_1.MedusaModule.clearInstances);\n}\nasync function MedusaAppMigrateGenerate(moduleNames, options = {}) {\n    const migrationOnly = true;\n    const { generateMigrations } = await MedusaApp_({\n        ...options,\n        migrationOnly,\n    });\n    await generateMigrations(moduleNames).finally(medusa_module_1.MedusaModule.clearInstances);\n}\nasync function MedusaAppGetLinksExecutionPlanner(options = {}) {\n    const migrationOnly = true;\n    const { linkMigrationExecutionPlanner } = await MedusaApp_({\n        ...options,\n        migrationOnly,\n    });\n    return linkMigrationExecutionPlanner();\n}\n"]}