MCPcopy Create free account
hub / github.com/Snapchat/Valdi / doEmitFile

Method doEmitFile

compiler/companion/src/Workspace.ts:231–279  ·  view source on GitHub ↗
(
    fileName: string,
    cancellationToken: ts.CancellationToken | undefined,
    customTransformers: ts.CustomTransformers | undefined,
  )

Source from the content-addressed store, hash-verified

229 }
230
231 doEmitFile(
232 fileName: string,
233 cancellationToken: ts.CancellationToken | undefined,
234 customTransformers: ts.CustomTransformers | undefined,
235 ): EmitResult {
236 const openedFile = this.getOpenedFile(fileName);
237 const program = openedFile.workspaceProject.program;
238
239 let resolvedCustomTransformers: ts.CustomTransformers = {
240 before: [],
241 };
242
243 if (Workspace.requiresTSXProcessor(fileName)) {
244 const jsxProcessor = new JSXProcessor(this.logger);
245 resolvedCustomTransformers.before!.push(
246 ...jsxProcessor.makeTransformers(openedFile.workspaceProject.typeChecker),
247 );
248 }
249
250 // Wrap console.log/warn/error/info/debug calls in runtime.isLoggingEnabled guards.
251 // This is safe in dev builds because runtime.isLoggingEnabled is always true.
252 resolvedCustomTransformers.before!.push(createConsoleLogTransformer());
253
254 // Annotate variable-arg require() calls with /* @valdi-dynamic */ for web.
255 // Runs on all platforms — only adds a comment, no behavior change.
256 // On web: PrependWebJsProcessor converts annotated requires to moduleLoader.load().
257 // On native: minifier strips the comment.
258 resolvedCustomTransformers.before!.push(createWebRequireTransformer());
259
260 resolvedCustomTransformers = mergeCustomTransformers(resolvedCustomTransformers, customTransformers);
261
262 const output: EmitResult = { entries: [], emitted: false };
263 const programResult = program.emit(
264 openedFile.sourceFile,
265 (fileName: string, text: string, writeByteOrderMark: boolean) => {
266 output.entries.push({
267 fileName,
268 content: text,
269 });
270 },
271 cancellationToken,
272 undefined,
273 resolvedCustomTransformers,
274 );
275
276 output.emitted = !programResult.emitSkipped;
277
278 return output;
279 }
280
281 async emitFile(fileName: string): Promise<EmitResult> {
282 return this.doEmitFile(fileName, undefined, undefined);

Callers 2

emitFileMethod · 0.95
compileFileFunction · 0.80

Calls 7

getOpenedFileMethod · 0.95
makeTransformersMethod · 0.95
mergeCustomTransformersFunction · 0.85
requiresTSXProcessorMethod · 0.80
pushMethod · 0.45

Tested by

no test coverage detected