import { HB } from '../hb'; import { Context } from '../pipeline/index'; import { InputTemplate, SubsetResult, Subsets } from '../interface'; import { createReporter, type BundleReporter } from '../templates/reporter'; import { type FontBaseTool } from '../subsetService/getFeatureQueryFromBuffer'; import { createCSS } from 'src/templates/css'; /** 全局 Context 的类型,用于在分步函数中定义类型 */ export type IContext = ReturnType; /** 创建全局 Context,任何一处都可以调用 */ export const createContext = (opt: InputTemplate) => new Context<{ input: InputTemplate; originFile: Uint8Array; ttfFile: Uint8Array; ttfBufferSize: number; hb: HB.Handle; subsetsToRun: number[][]; subsetResult: SubsetResult; face: HB.Face; blob: HB.Blob; subsets: Subsets; nameTable: Record; fontTool: FontBaseTool; bundleMessage: Partial; cssMessage: ReturnType; reporter: Awaited>; }>( { input: opt }, { log: { settings: { // minLevel: 6, prettyLogTimeZone: 'local', prettyLogTemplate: (true ? '' : '{{yyyy}}.{{mm}}.{{dd}} {{hh}}:{{MM}}:{{ss}} {{ms}}\t ') + '{{logLevelName}}\t', ...(opt?.logger?.settings ?? {}), }, }, }, );