@@ -14,7 +14,7 @@ import { SchemaParser } from '../parser/SchemaParser';
1414import { createResultDir , addDirectory , addFile } from '../utils/resultHelper' ;
1515
1616import { createModuleBuilder } from './ModuleBuilder' ;
17- import { ProjectPreProcessor , ProjectPostProcessor } from '../types/core' ;
17+ import { ProjectPreProcessor , ProjectPostProcessor , IContextData } from '../types/core' ;
1818import { CodeGeneratorError } from '../types/error' ;
1919
2020interface IModuleInfo {
@@ -36,6 +36,10 @@ export interface ProjectBuilderInitOptions {
3636 projectPreProcessors ?: ProjectPreProcessor [ ] ;
3737 /** 项目级别的后置处理器 */
3838 projectPostProcessors ?: ProjectPostProcessor [ ] ;
39+ /** 是否处于严格模式 */
40+ inStrictMode ?: boolean ;
41+ /** 一些额外的上下文数据 */
42+ extraContextData ?: Record < string , unknown > ;
3943}
4044
4145export class ProjectBuilder implements IProjectBuilder {
@@ -57,20 +61,30 @@ export class ProjectBuilder implements IProjectBuilder {
5761 /** 项目级别的后置处理器 */
5862 private projectPostProcessors : ProjectPostProcessor [ ] ;
5963
64+ /** 是否处于严格模式 */
65+ public readonly inStrictMode : boolean ;
66+
67+ /** 一些额外的上下文数据 */
68+ public readonly extraContextData : IContextData ;
69+
6070 constructor ( {
6171 template,
6272 plugins,
6373 postProcessors,
6474 schemaParser = new SchemaParser ( ) ,
6575 projectPreProcessors = [ ] ,
6676 projectPostProcessors = [ ] ,
77+ inStrictMode = false ,
78+ extraContextData = { } ,
6779 } : ProjectBuilderInitOptions ) {
6880 this . template = template ;
6981 this . plugins = plugins ;
7082 this . postProcessors = postProcessors ;
7183 this . schemaParser = schemaParser ;
7284 this . projectPreProcessors = projectPreProcessors ;
7385 this . projectPostProcessors = projectPostProcessors ;
86+ this . inStrictMode = inStrictMode ;
87+ this . extraContextData = extraContextData ;
7488 }
7589
7690 async generateProject ( originalSchema : ProjectSchema | string ) : Promise < ResultDir > {
@@ -264,6 +278,10 @@ export class ProjectBuilder implements IProjectBuilder {
264278 builders [ pluginName ] = createModuleBuilder ( {
265279 plugins : this . plugins [ pluginName ] ,
266280 postProcessors : this . postProcessors ,
281+ contextData : {
282+ inStrictMode : this . inStrictMode ,
283+ ...this . extraContextData ,
284+ } ,
267285 ...options ,
268286 } ) ;
269287 }
0 commit comments