import { Effects, ExpectedExports } from "../types" import { createUtils } from "../util" import { once } from "../util/once" import { CreatedAction } from "./createAction" export function setupActions( ...createdActions: CreatedAction[] ) { const myActions = once(() => { const actions: Record> = {} for (const action of createdActions) { actions[action.myMetaData.id] = action } return actions }) return { get actions() { return myActions() }, async actionsMetadata({ effects }: { effects: Effects }) { const utils = createUtils(effects) return Promise.all( createdActions.map((x) => x.ActionMetadata({ effects, utils })), ) }, } satisfies { actions: ExpectedExports.actions actionsMetadata: ExpectedExports.actionsMetadata } }