UNPKG

@shopify/shopify-app-react-router

Version:

Shopify React Router - to simplify the building of Shopify Apps with React Router

1 lines 2.09 kB
{"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;;;;"}