every-plugin
Version:
33 lines (31 loc) • 2.19 kB
JavaScript
const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
const require_module_federation_service = require('./module-federation.service.cjs');
const require_plugin_lifecycle_service = require('./plugin-lifecycle.service.cjs');
const require_secrets_service = require('./secrets.service.cjs');
const require_plugin_loader_service = require('./plugin-loader.service.cjs');
let effect = require("effect");
//#region src/runtime/services/plugin.service.ts
var PluginService = class PluginService extends effect.Effect.Service()("PluginService", { scoped: effect.Effect.gen(function* () {
const loader = yield* require_plugin_loader_service.PluginLoaderService;
const lifecycle = yield* require_plugin_lifecycle_service.PluginLifecycleService;
return {
loadPlugin: loader.loadPlugin,
instantiatePlugin: loader.instantiatePlugin,
initializePlugin: loader.initializePlugin,
shutdownPlugin: (plugin) => effect.Effect.gen(function* () {
yield* plugin.plugin.shutdown().pipe(effect.Effect.catchAll((error) => effect.Effect.logWarning(`Failed to shutdown plugin ${plugin.plugin.id}`, error)));
yield* effect.Scope.close(plugin.scope, effect.Exit.succeed(void 0));
yield* lifecycle.unregister(plugin);
}),
cleanup: lifecycle.cleanup
};
}) }) {
static Live = (registry, secrets, pluginMap = {}) => {
const contextLayer = effect.Layer.mergeAll(effect.Layer.succeed(require_plugin_loader_service.PluginRegistryTag, registry), effect.Layer.succeed(require_secrets_service.SecretsConfigTag, secrets), effect.Layer.succeed(require_plugin_loader_service.PluginMapTag, pluginMap));
const servicesLayer = effect.Layer.mergeAll(require_module_federation_service.ModuleFederationService.Default, require_secrets_service.SecretsService.Default, require_plugin_loader_service.RegistryService.Default, require_plugin_lifecycle_service.PluginLifecycleService.Default).pipe(effect.Layer.provide(contextLayer));
return PluginService.Default.pipe(effect.Layer.provide(require_plugin_loader_service.PluginLoaderService.Default), effect.Layer.provide(servicesLayer));
};
};
//#endregion
exports.PluginService = PluginService;
//# sourceMappingURL=plugin.service.cjs.map