{"version":3,"sources":["asynciterable/generatetime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAEjC,MAAM,yBAA2C,SAAQ,cAAuB;IAO9E,YACE,YAAoB,EACpB,SAAwD,EACxD,OAAoD,EACpD,cAA6D,EAC7D,YAAyD;QAEzD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,MAAM,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;YACrF,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,MAAM,MAAM,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;SACrC;IACH,CAAC;CACF;AAED,MAAM,UAAU,YAAY,CAC1B,YAAoB,EACpB,SAAwD,EACxD,OAAoD,EACpD,cAA6D,EAC7D,YAAyD;IAEzD,OAAO,IAAI,yBAAyB,CAClC,YAAY,EACZ,SAAS,EACT,OAAO,EACP,cAAc,EACd,YAAY,CACb,CAAC;AACJ,CAAC","file":"generatetime.js","sourcesContent":["import { AsyncIterableX } from './asynciterablex';\nimport { sleep } from './_sleep';\n\nclass GenerateTimeAsyncIterable<TState, TResult> extends AsyncIterableX<TResult> {\n  private _initialState: TState;\n  private _condition: (value: TState) => boolean | Promise<boolean>;\n  private _iterate: (value: TState) => TState | Promise<TState>;\n  private _resultSelector: (value: TState) => TResult | Promise<TResult>;\n  private _timeSelector: (value: TState) => number | Promise<number>;\n\n  constructor(\n    initialState: TState,\n    condition: (value: TState) => boolean | Promise<boolean>,\n    iterate: (value: TState) => TState | Promise<TState>,\n    resultSelector: (value: TState) => TResult | Promise<TResult>,\n    timeSelector: (value: TState) => number | Promise<number>\n  ) {\n    super();\n    this._initialState = initialState;\n    this._condition = condition;\n    this._iterate = iterate;\n    this._resultSelector = resultSelector;\n    this._timeSelector = timeSelector;\n  }\n\n  async *[Symbol.asyncIterator]() {\n    for (let i = this._initialState; await this._condition(i); i = await this._iterate(i)) {\n      const time = await this._timeSelector(i);\n      await sleep(time);\n      yield await this._resultSelector(i);\n    }\n  }\n}\n\nexport function generateTime<TState, TResult>(\n  initialState: TState,\n  condition: (value: TState) => boolean | Promise<boolean>,\n  iterate: (value: TState) => TState | Promise<TState>,\n  resultSelector: (value: TState) => TResult | Promise<TResult>,\n  timeSelector: (value: TState) => number | Promise<number>\n): AsyncIterableX<TResult> {\n  return new GenerateTimeAsyncIterable<TState, TResult>(\n    initialState,\n    condition,\n    iterate,\n    resultSelector,\n    timeSelector\n  );\n}\n"]}