Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
return Cmd.run(data)
}
export function emit(
subtype: 'event' | 'effect',
fullName: string,
runner: (ctx: any) => any,
) {
return Cmd.emit({subtype, fullName, runner})
}
export function update(store: Ref) {
return Cmd.update({store})
}
export class StepBox {
depth: number = 0
mod: 'seq' | 'par' = 'seq'
/*::;+*/ prime = Step.seq([])
current = this.prime
modeSeq(): StepBox<'seq'> {
if (this.mod === 'par') {
const {prime} = this
const next = Step.seq([])
prime.data.push(next)
this.current = next
}
this.mod = 'seq'
return /*::toSeq(*/ this /*::)*/
}
modePar(): StepBox<'par'> {
if (this.mod === 'seq') {
const {prime} = this
const next = Step.multi([])
prime.data.push(next)event(args: {fullName: string, runner: Function}): GraphiteMeta {
const unit = Cmd.emit({
subtype: 'event',
fullName: args.fullName,
runner: args.runner,
})
const cmd = Step.single(unit)
const nextSteps = Step.multi([])
const stepFull = Step.seq([cmd, nextSteps])
const graphite = {next: nextSteps, seq: stepFull}
return graphite
},
prependEvent(args: {|modeSeq(): StepBox<'seq'> {
if (this.mod === 'par') {
const {prime} = this
const next = Step.seq([])
prime.data.push(next)
this.current = next
}
this.mod = 'seq'
return /*::toSeq(*/ this /*::)*/
}
modePar(): StepBox<'par'> {parentGraphite: GraphiteMeta,
|}): GraphiteMeta {
const {fn, graphite, parentGraphite} = args
const unitCompute = Cmd.compute({
reduce(_, newValue, ctx): mixed {
return fn(newValue)
},
})
const unitFilter = Cmd.filter({
filter(result, ctx: TypeDef<'emitCtx', 'ctx'>): boolean {
return result !== undefined
},
})
const cmdCompute = Step.single(unitCompute)
const cmdFilter = Step.single(unitFilter)
const stepFull = Step.seq([cmdCompute, cmdFilter, graphite.seq])
parentGraphite.next.data.push(stepFull)
return graphite
},
}