Skip to content

Commit 6f89203

Browse files
committed
fix: fix renderTmpl.utils context
1 parent 537ebdd commit 6f89203

File tree

2 files changed

+47
-12
lines changed

2 files changed

+47
-12
lines changed

index.d.ts

+8
Original file line numberDiff line numberDiff line change
@@ -718,6 +718,14 @@ export interface GenerateApiConfiguration {
718718
typeName?: string,
719719
formattersMap?: Record<MAIN_SCHEMA_TYPES, (content: ModelType) => string>,
720720
) => ModelType;
721+
safeAddNullToType: (
722+
schema: { type: string; nullable?: boolean; "x-nullable"?: boolean },
723+
type: unknown,
724+
) => string;
725+
isNeedToAddNull: (
726+
schema: { type: string; nullable?: boolean; "x-nullable"?: boolean },
727+
type: unknown,
728+
) => boolean;
721729
formatters: Record<
722730
MAIN_SCHEMA_TYPES,
723731
(content: string | object | string[] | object[]) => string

src/code-gen-process.js

+39-12
Original file line numberDiff line numberDiff line change
@@ -204,32 +204,59 @@ class CodeGenProcess {
204204
}
205205

206206
getRenderTemplateData = () => {
207+
const { schemaParserFabric } = this;
208+
const { schemaFormatters } = schemaParserFabric;
207209
return {
208210
utils: {
209211
Ts: this.config.Ts,
210212
formatDescription:
211-
this.schemaParserFabric.schemaFormatters.formatDescription,
213+
schemaParserFabric.schemaFormatters.formatDescription.bind(
214+
schemaFormatters,
215+
),
212216
internalCase: internalCase,
213217
classNameCase: pascalCase,
214218
pascalCase: pascalCase,
215-
getInlineParseContent: this.schemaParserFabric.getInlineParseContent,
216-
getParseContent: this.schemaParserFabric.getParseContent,
217-
getComponentByRef: this.schemaComponentsMap.get,
218-
parseSchema: this.schemaParserFabric.parseSchema,
219-
checkAndAddNull: this.schemaParserFabric.schemaUtils.safeAddNullToType,
219+
getInlineParseContent:
220+
schemaParserFabric.getInlineParseContent.bind(schemaParserFabric),
221+
getParseContent:
222+
schemaParserFabric.getParseContent.bind(schemaParserFabric),
223+
getComponentByRef: this.schemaComponentsMap.get.bind(
224+
this.schemaComponentsMap,
225+
),
226+
parseSchema: schemaParserFabric.parseSchema.bind(schemaParserFabric),
227+
checkAndAddNull: schemaParserFabric.schemaUtils.safeAddNullToType.bind(
228+
schemaParserFabric.schemaUtils,
229+
),
220230
safeAddNullToType:
221-
this.schemaParserFabric.schemaUtils.safeAddNullToType,
231+
schemaParserFabric.schemaUtils.safeAddNullToType.bind(
232+
schemaParserFabric.schemaUtils,
233+
),
222234
isNeedToAddNull:
223-
this.schemaParserFabric.schemaUtils.isNullMissingInType,
224-
inlineExtraFormatters: this.schemaParserFabric.schemaFormatters.inline,
225-
formatters: this.schemaParserFabric.schemaFormatters.base,
226-
formatModelName: this.typeNameFormatter.format,
235+
schemaParserFabric.schemaUtils.isNullMissingInType.bind(
236+
schemaParserFabric.schemaUtils,
237+
),
238+
inlineExtraFormatters: Object.keys(schemaFormatters.inline).reduce(
239+
(prev, each) => {
240+
return (prev[each] =
241+
schemaFormatters.inline[each].bind(schemaFormatters));
242+
},
243+
{},
244+
),
245+
formatters: Object.keys(schemaFormatters.base).reduce((prev, each) => {
246+
return (prev[each] =
247+
schemaFormatters.base[each].bind(schemaFormatters));
248+
}, {}),
249+
formatModelName: this.typeNameFormatter.format.bind(
250+
this.typeNameFormatter,
251+
),
227252
fmtToJSDocLine: function fmtToJSDocLine(line, { eol = true }) {
228253
return ` * ${line}${eol ? "\n" : ""}`;
229254
},
230255
NameResolver: NameResolver,
231256
_,
232-
require: this.templatesWorker.requireFnFromTemplate,
257+
require: this.templatesWorker.requireFnFromTemplate.bind(
258+
this.templatesWorker,
259+
),
233260
},
234261
config: this.config,
235262
};

0 commit comments

Comments
 (0)