{"version":3,"file":"idempotent-promise-handler.mjs","sources":["../../../../../../src/server/authenticate/helpers/idempotent-promise-handler.ts"],"sourcesContent":["export interface IdempotentHandlePromiseParams {\n  promiseFunction: () => Promise<any>;\n  identifier: string;\n}\n\nconst IDENTIFIER_TTL_MS = 60000;\n\nexport class IdempotentPromiseHandler {\n  protected identifiers: Map<string, number>;\n\n  constructor() {\n    this.identifiers = new Map<string, number>();\n  }\n\n  async handlePromise({\n    promiseFunction,\n    identifier,\n  }: IdempotentHandlePromiseParams): Promise<any> {\n    try {\n      if (this.isPromiseRunnable(identifier)) {\n        await promiseFunction();\n      }\n    } finally {\n      this.clearStaleIdentifiers();\n    }\n\n    return Promise.resolve();\n  }\n\n  private isPromiseRunnable(identifier: string) {\n    if (!this.identifiers.has(identifier)) {\n      this.identifiers.set(identifier, Date.now());\n      return true;\n    }\n    return false;\n  }\n\n  private async clearStaleIdentifiers() {\n    this.identifiers.forEach((date, identifier, map) => {\n      if (Date.now() - date > IDENTIFIER_TTL_MS) {\n        map.delete(identifier);\n      }\n    });\n  }\n}\n"],"names":[],"mappings":"AAKA,MAAM,iBAAiB,GAAG,KAAK;MAElB,wBAAwB,CAAA;AACzB,IAAA,WAAW;AAErB,IAAA,WAAA,GAAA;AACE,QAAA,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAkB;IAC9C;AAEA,IAAA,MAAM,aAAa,CAAC,EAClB,eAAe,EACf,UAAU,GACoB,EAAA;AAC9B,QAAA,IAAI;AACF,YAAA,IAAI,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,EAAE;gBACtC,MAAM,eAAe,EAAE;YACzB;QACF;gBAAU;YACR,IAAI,CAAC,qBAAqB,EAAE;QAC9B;AAEA,QAAA,OAAO,OAAO,CAAC,OAAO,EAAE;IAC1B;AAEQ,IAAA,iBAAiB,CAAC,UAAkB,EAAA;QAC1C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;AACrC,YAAA,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;AAC5C,YAAA,OAAO,IAAI;QACb;AACA,QAAA,OAAO,KAAK;IACd;AAEQ,IAAA,MAAM,qBAAqB,GAAA;AACjC,QAAA,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,KAAI;YACjD,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,iBAAiB,EAAE;AACzC,gBAAA,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;YACxB;AACF,QAAA,CAAC,CAAC;IACJ;AACD;;;;"}