@rytass/cms-base-nestjs-module
Version:
Rytass Content Management System NestJS Base Module
109 lines (106 loc) • 3.43 kB
JavaScript
import { CMS_BASE_MODULE_OPTIONS, MULTIPLE_LANGUAGE_MODE, MULTIPLE_CATEGORY_PARENT_MODE, CIRCULAR_CATEGORY_MODE, SIGNATURE_LEVELS, PROVIDE_ARTICLE_ENTITY, PROVIDE_ARTICLE_VERSION_ENTITY, PROVIDE_ARTICLE_VERSION_CONTENT_ENTITY, PROVIDE_CATEGORY_ENTITY, PROVIDE_CATEGORY_MULTI_LANGUAGE_NAME_ENTITY, PROVIDE_SIGNATURE_LEVEL_ENTITY, FULL_TEXT_SEARCH_MODE, DRAFT_MODE, AUTO_RELEASE_AFTER_APPROVED } from '../typings/cms-base-providers.js';
import { DEFAULT_SIGNATURE_LEVEL } from './default-signature-level.js';
const OptionProviders = [
{
provide: MULTIPLE_LANGUAGE_MODE,
useFactory: (options)=>options?.multipleLanguageMode ?? false,
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: MULTIPLE_CATEGORY_PARENT_MODE,
useFactory: (options)=>options?.allowMultipleParentCategories ?? false,
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: CIRCULAR_CATEGORY_MODE,
useFactory: (options)=>options?.allowCircularCategories ?? false,
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: SIGNATURE_LEVELS,
useFactory: (options)=>options?.signatureLevels ?? [
DEFAULT_SIGNATURE_LEVEL
],
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: PROVIDE_ARTICLE_ENTITY,
useFactory: (options)=>options?.articleEntity ?? null,
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: PROVIDE_ARTICLE_VERSION_ENTITY,
useFactory: (options)=>options?.articleVersionEntity ?? null,
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: PROVIDE_ARTICLE_VERSION_CONTENT_ENTITY,
useFactory: (options)=>options?.articleVersionContentEntity ?? null,
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: PROVIDE_CATEGORY_ENTITY,
useFactory: (options)=>options?.categoryEntity ?? null,
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: PROVIDE_CATEGORY_MULTI_LANGUAGE_NAME_ENTITY,
useFactory: (options)=>options?.categoryMultiLanguageNameEntity ?? null,
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: PROVIDE_SIGNATURE_LEVEL_ENTITY,
useFactory: (options)=>options?.signatureLevelEntity ?? null,
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: FULL_TEXT_SEARCH_MODE,
useFactory: async (options)=>{
if (!options?.fullTextSearchMode) return false;
try {
await import('@node-rs/jieba');
return true;
} catch (_ex) {
throw new Error('Full Text Search Mode requires @node-rs/jieba module, please install it first.');
}
},
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: DRAFT_MODE,
useFactory: (options)=>options?.enableDraftMode ?? true,
inject: [
CMS_BASE_MODULE_OPTIONS
]
},
{
provide: AUTO_RELEASE_AFTER_APPROVED,
useFactory: (options)=>options?.autoReleaseWhenLatestSignatureApproved ?? false,
inject: [
CMS_BASE_MODULE_OPTIONS
]
}
];
export { OptionProviders };