{"version":3,"file":"task-timing.mjs","sources":["../../src/task-timing.ts"],"sourcesContent":["import type { ExecutionTask } from '@/types';\nimport { getDebug } from '@midscene/shared/logger';\n\nconst debugTiming = getDebug('task-timing');\n\ntype ExecutionTaskTiming = NonNullable<ExecutionTask['timing']>;\n\ntype NumericTimingField = {\n  [K in keyof ExecutionTaskTiming]-?: ExecutionTaskTiming[K] extends\n    | number\n    | undefined\n    ? K\n    : never;\n}[keyof ExecutionTaskTiming];\n\nexport type TimingSettableField = Exclude<\n  NumericTimingField,\n  'start' | 'end' | 'cost'\n>;\n\nexport function setTimingFieldOnce(\n  timing: ExecutionTaskTiming | undefined,\n  field: TimingSettableField,\n): void {\n  if (!timing) {\n    debugTiming(`[warning] timing object missing, skip set. field=${field}`);\n    return;\n  }\n\n  const value = Date.now();\n  const existingValue = timing[field];\n  if (existingValue !== undefined) {\n    debugTiming(\n      `[warning] duplicate timing field set ignored. field=${field}, existing=${existingValue}, incoming=${value}`,\n    );\n    return;\n  }\n\n  timing[field] = value;\n}\n"],"names":["debugTiming","getDebug","setTimingFieldOnce","timing","field","value","Date","existingValue","undefined"],"mappings":";AAGA,MAAMA,cAAcC,SAAS;AAiBtB,SAASC,mBACdC,MAAuC,EACvCC,KAA0B;IAE1B,IAAI,CAACD,QAAQ,YACXH,YAAY,CAAC,iDAAiD,EAAEI,OAAO;IAIzE,MAAMC,QAAQC,KAAK,GAAG;IACtB,MAAMC,gBAAgBJ,MAAM,CAACC,MAAM;IACnC,IAAIG,AAAkBC,WAAlBD,eAA6B,YAC/BP,YACE,CAAC,oDAAoD,EAAEI,MAAM,WAAW,EAAEG,cAAc,WAAW,EAAEF,OAAO;IAKhHF,MAAM,CAACC,MAAM,GAAGC;AAClB"}