@vendure/core
Version:
A modern, headless ecommerce framework
78 lines • 3.35 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PLUGIN_METADATA = void 0;
exports.getEntitiesFromPlugins = getEntitiesFromPlugins;
exports.getModuleMetadata = getModuleMetadata;
exports.getPluginAPIExtensions = getPluginAPIExtensions;
exports.getPluginDashboardExtensions = getPluginDashboardExtensions;
exports.getCompatibility = getCompatibility;
exports.getConfigurationFunction = getConfigurationFunction;
exports.graphQLResolversFor = graphQLResolversFor;
exports.isDynamicModule = isDynamicModule;
const constants_1 = require("@nestjs/common/constants");
const shared_utils_1 = require("@vendure/common/lib/shared-utils");
exports.PLUGIN_METADATA = {
CONFIGURATION: 'configuration',
SHOP_API_EXTENSIONS: 'shopApiExtensions',
ADMIN_API_EXTENSIONS: 'adminApiExtensions',
ENTITIES: 'entities',
COMPATIBILITY: 'compatibility',
DASHBOARD: 'dashboard',
};
function getEntitiesFromPlugins(plugins) {
if (!plugins) {
return [];
}
return plugins
.map(p => reflectMetadata(p, exports.PLUGIN_METADATA.ENTITIES))
.reduce((all, entities) => {
const resolvedEntities = typeof entities === 'function' ? entities() : (entities !== null && entities !== void 0 ? entities : []);
return [...all, ...resolvedEntities];
}, []);
}
function getModuleMetadata(module) {
return {
controllers: Reflect.getMetadata(constants_1.MODULE_METADATA.CONTROLLERS, module) || [],
providers: Reflect.getMetadata(constants_1.MODULE_METADATA.PROVIDERS, module) || [],
imports: Reflect.getMetadata(constants_1.MODULE_METADATA.IMPORTS, module) || [],
exports: Reflect.getMetadata(constants_1.MODULE_METADATA.EXPORTS, module) || [],
};
}
function getPluginAPIExtensions(plugins, apiType) {
const extensions = apiType === 'shop'
? plugins.map(p => reflectMetadata(p, exports.PLUGIN_METADATA.SHOP_API_EXTENSIONS))
: plugins.map(p => reflectMetadata(p, exports.PLUGIN_METADATA.ADMIN_API_EXTENSIONS));
return extensions.filter(shared_utils_1.notNullOrUndefined);
}
function getPluginDashboardExtensions(plugins) {
return plugins.map(p => reflectMetadata(p, exports.PLUGIN_METADATA.DASHBOARD)).filter(shared_utils_1.notNullOrUndefined);
}
function getCompatibility(plugin) {
return reflectMetadata(plugin, exports.PLUGIN_METADATA.COMPATIBILITY);
}
function getConfigurationFunction(plugin) {
return reflectMetadata(plugin, exports.PLUGIN_METADATA.CONFIGURATION);
}
function graphQLResolversFor(plugin, apiType) {
var _a;
const apiExtensions = apiType === 'shop'
? reflectMetadata(plugin, exports.PLUGIN_METADATA.SHOP_API_EXTENSIONS)
: reflectMetadata(plugin, exports.PLUGIN_METADATA.ADMIN_API_EXTENSIONS);
return apiExtensions
? typeof apiExtensions.resolvers === 'function'
? apiExtensions.resolvers()
: ((_a = apiExtensions.resolvers) !== null && _a !== void 0 ? _a : [])
: [];
}
function reflectMetadata(metatype, metadataKey) {
if (isDynamicModule(metatype)) {
return Reflect.getMetadata(metadataKey, metatype.module);
}
else {
return Reflect.getMetadata(metadataKey, metatype);
}
}
function isDynamicModule(input) {
return !!input.module;
}
//# sourceMappingURL=plugin-metadata.js.map