Path: blob/main/tests/smoke/build-ts-extension/src/test-engine.ts
6442 views
import type {1ExecutionEngineDiscovery,2ExecutionEngineInstance,3QuartoAPI,4EngineProjectContext,5MappedString,6ExecutionTarget,7ExecuteOptions,8ExecuteResult,9DependenciesOptions,10DependenciesResult,11PostProcessOptions,12PartitionedMarkdown,13} from "@quarto/types";14import { extname } from "path";1516let quarto: QuartoAPI;1718const testEngineDiscovery: ExecutionEngineDiscovery = {19init: (quartoAPI: QuartoAPI) => {20quarto = quartoAPI;21},2223name: "test",2425defaultExt: ".qmd",2627defaultYaml: () => ["engine: test"],2829defaultContent: () => ["# Test Engine Document", "", "This is a test."],3031validExtensions: () => [".qmd"],3233claimsFile: (_file: string, _ext: string) => false,3435claimsLanguage: (language: string) => language === "test",3637canFreeze: false,3839generatesFigures: false,4041launch: (context: EngineProjectContext): ExecutionEngineInstance => {42return {43name: "test",44canFreeze: false,4546markdownForFile: async (file: string): Promise<MappedString> => {47return quarto.mappedString.fromFile(file);48},4950target: async (51file: string,52_quiet?: boolean,53markdown?: MappedString,54): Promise<ExecutionTarget | undefined> => {55if (!markdown) {56markdown = await quarto.mappedString.fromFile(file);57}58const metadata = quarto.markdownRegex.extractYaml(markdown.value);59return {60source: file,61input: file,62markdown,63metadata,64};65},6667partitionedMarkdown: async (68file: string,69): Promise<PartitionedMarkdown> => {70const markdown = await quarto.mappedString.fromFile(file);71return quarto.markdownRegex.partition(markdown.value);72},7374execute: async (options: ExecuteOptions): Promise<ExecuteResult> => {75// Simple passthrough - no actual execution76// Use extname to ensure it gets bundled77const _ext = extname(options.target.input);78return {79markdown: options.target.markdown.value,80supporting: [],81filters: [],82};83},8485dependencies: async (86_options: DependenciesOptions,87): Promise<DependenciesResult> => {88return {89includes: {},90};91},9293postprocess: async (_options: PostProcessOptions): Promise<void> => {94// No post-processing needed95},96};97},98};99100export default testEngineDiscovery;101102103