333
schangxiang@126.com
2025-09-19 18966e02fb573c7e2bb0c6426ed792b38b910940
1
{"version":3,"sources":["../browser/src/util/PromiseUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH;IAAA;IA2DA,CAAC;IAzDG;;OAEG;IACI,mBAAM,GAAb,UAAc,KAAU;QACpB,IAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,OAAe,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;QACtC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED;;;OAGG;IACI,yBAAY,GAAnB,UAAoB,MAAW;QAC3B,IAAI,MAAM,YAAY,OAAO,IAAK,MAAc,CAAC,WAAW,CAAC;YACzD,OAAQ,MAAc,CAAC,WAAW,CAAC,CAAC;QAExC,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;OAGG;IACI,0BAAa,GAApB,UAA2B,UAAe,EAAE,QAAiC;QACzE,IAAM,OAAO,GAAQ,EAAE,CAAC;QACxB,OAAO,UAAU,CAAC,MAAM,CAAC,UAAC,OAAO,EAAE,IAAI;YACnC,OAAO,OAAO,CAAC,IAAI,CAAC;gBAChB,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,UAAA,MAAM;gBACV,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;QACP,CAAC,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC;YACvB,OAAO,OAAO,CAAC;QACnB,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACI,mBAAM,GAAb,UAAc,QAAwB;QAClC,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAA,CAAC,IAAI,OAAA,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAA,CAAC,IAAI,OAAA,CAAC;YAC/D,KAAK,EAAE,WAAW;YAClB,KAAK,EAAE,CAAC;SACX,CAAC,EAHgE,CAGhE,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC;YACN,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,CAAC;SACZ,CAAC,EAHO,CAGP,CAAC,EANkC,CAMlC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAC,OAAc;YACtB,IAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,KAAK,KAAK,UAAU,EAA3B,CAA2B,CAAC,CAAC;YACrE,IAAI,QAAQ;gBACR,OAAO,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE3C,OAAO,OAAO,CAAC,GAAG,CAAC,UAAA,MAAM,IAAI,OAAA,MAAM,CAAC,KAAK,EAAZ,CAAY,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;IACP,CAAC;IAEL,mBAAC;AAAD,CA3DA,AA2DC,IAAA","file":"PromiseUtils.js","sourcesContent":["/**\n * Utils to help to work with Promise objects.\n */\nexport class PromiseUtils {\n\n    /**\n     * Creates a new promise with resolved value used for lazy relations.\n     */\n    static create(value: any) {\n        const promise = Promise.resolve(value);\n        (promise as any)[\"__value__\"] = value;\n        return promise;\n    }\n\n    /**\n     * If given value is a promise created by \"create\" method this method gets its value.\n     * If given value is not a promise then given value is returned back.\n     */\n    static extractValue(object: any) {\n        if (object instanceof Promise && (object as any)[\"__value__\"])\n            return (object as any)[\"__value__\"];\n\n        return object;\n    }\n\n    /**\n     * Runs given callback that returns promise for each item in the given collection in order.\n     * Operations executed after each other, right after previous promise being resolved.\n     */\n    static runInSequence<T, U>(collection: T[], callback: (item: T) => Promise<U>): Promise<U[]> {\n        const results: U[] = [];\n        return collection.reduce((promise, item) => {\n            return promise.then(() => {\n                return callback(item);\n            }).then(result => {\n                results.push(result);\n            });\n        }, Promise.resolve()).then(() => {\n            return results;\n        });\n    }\n\n    /**\n     * Returns a promise that is fulfilled with an array of promise state snapshots,\n     * but only after all the original promises have settled, i.e. become either fulfilled or rejected.\n     */\n    static settle(promises: Promise<any>[]) {\n        return Promise.all(promises.map(p => Promise.resolve(p).then(v => ({\n            state: \"fulfilled\",\n            value: v,\n        }), r => ({\n            state: \"rejected\",\n            reason: r,\n        })))).then((results: any[]): any => {\n            const rejected = results.find(result => result.state === \"rejected\");\n            if (rejected)\n                return Promise.reject(rejected.reason);\n\n            return results.map(result => result.value);\n        });\n    }\n\n}"],"sourceRoot":".."}