Process
fzfから渡ってきた値を最終的に実行するためのオブジェクト
型定義は
code:type/process.ts
type Process = {
name: string
key: string
execute: (lines: ConvertedLines) => void | Promise<void>
}
code:process.ts
type SingleLineConsumer = {
consume: (line: string) => Promise<void>
kind: "single"
}
type BulkLineConsumer = {
consume: (lines: Array<string>) => Promise<void>
kind: "bulk"
}
type LineConsumer = SingleLineConsumer | BulkLineConsumer
type Process = {
name: string
key: string
execute: (lines: ConvertedLines) => void | Promise<void>
}
type CreateProcess = (processesName: ProcessesName) => (expectKey: string, lineConsumer: LineConsumer) => Process
const createProcess: CreateProcess = (lineConsumer) => ({
execute: async (lines) => {
if (lineConsumer.kind === "single") {
for (const line of lines) {
await lineConsumer.consume(line)
}
} else {
await lineConsumer.consume(lines)
}
}
})
createProcess の引数LineConsumerに渡す値は SingleLineConsumer と BulkLineConsumer の2種類がある line 毎に実行する SingleLineConsumer
lines をまとめて受け取って実行する BulkLineConsumer