UNPKG

@yaagoub/decorators

Version:

Angular decorators

39 lines 6.33 kB
import { from, of, Observable } from 'rxjs'; import { catchError, switchMap } from "rxjs/operators"; export const responseHandlers = { json: { handle$: (res) => from(res.text()).pipe(switchMap(text => { try { return of(JSON.parse(text)); } catch { return of(text); } }), catchError(err => of({ error: "Failed to parse response", details: err?.message || err }))) }, text: { handle$: (res) => from(res.text()) }, blob: { handle$: (res) => from(res.blob()) }, arrayBuffer: { handle$: (res) => from(res.arrayBuffer()) }, formData: { handle$: (res) => from(res.formData()) }, stream: { handle$: (res) => { if (!res.body) { throw new Error("Response body is null, cannot create stream"); } return new Observable(subscriber => { subscriber.next(res.body); subscriber.complete(); }); } }, xml: { handle$: (res) => from(res.text()).pipe(switchMap(text => { const parser = typeof DOMParser !== 'undefined' ? new DOMParser() : new (require('xmldom').DOMParser)(); const xmlDoc = parser.parseFromString(text, "application/xml"); return of(xmlDoc); }), catchError(err => of({ error: "Failed to parse XML response", details: err?.message || err }))) }, }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2UtaGFuZGxlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2RlY29yYXRvcnMvc3JjL2h0dHAvaGVscGVycy9yZXNwb25zZS1oYW5kbGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUV2RCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRztJQUM5QixJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsQ0FBQyxHQUFhLEVBQUUsRUFBRSxDQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNuQixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDZixJQUFJLENBQUM7Z0JBQ0gsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUM7WUFBQyxNQUFNLENBQUM7Z0JBQ1AsT0FBTyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbEIsQ0FBQztRQUNILENBQUMsQ0FBQyxFQUNGLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUNmLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSwwQkFBMEIsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE9BQU8sSUFBSSxHQUFHLEVBQUUsQ0FBQyxDQUN4RSxDQUNGO0tBQ0o7SUFDRCxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN0RCxJQUFJLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUMsRUFBRTtJQUN0RCxXQUFXLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLENBQUMsRUFBRTtJQUNwRSxRQUFRLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFhLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLENBQUMsRUFBRTtJQUM5RCxNQUFNLEVBQUU7UUFDTixPQUFPLEVBQUUsQ0FBQyxHQUFhLEVBQUUsRUFBRTtZQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNkLE1BQU0sSUFBSSxLQUFLLENBQUMsNkNBQTZDLENBQUMsQ0FBQztZQUNqRSxDQUFDO1lBQ0QsT0FBTyxJQUFJLFVBQVUsQ0FBNkIsVUFBVSxDQUFDLEVBQUU7Z0JBQzdELFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUssQ0FBQyxDQUFDO2dCQUMzQixVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7WUFDeEIsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO0tBQ0Y7SUFDRCxHQUFHLEVBQUU7UUFDSCxPQUFPLEVBQUUsQ0FBQyxHQUFhLEVBQUUsRUFBRSxDQUN6QixJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUNuQixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDZixNQUFNLE1BQU0sR0FBRyxPQUFPLFNBQVMsS0FBSyxXQUFXO2dCQUMvQyxDQUFDLENBQUMsSUFBSSxTQUFTLEVBQUU7Z0JBQ2pCLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7WUFFdEMsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztZQUMvRCxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwQixDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FDZixFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsOEJBQThCLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxPQUFPLElBQUksR0FBRyxFQUFFLENBQUMsQ0FDNUUsQ0FDRjtLQUNKO0NBQ0YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGZyb20sIG9mLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzd2l0Y2hNYXAgfSBmcm9tIFwicnhqcy9vcGVyYXRvcnNcIjtcblxuZXhwb3J0IGNvbnN0IHJlc3BvbnNlSGFuZGxlcnMgPSB7XG4gIGpzb246IHtcbiAgICBoYW5kbGUkOiAocmVzOiBSZXNwb25zZSkgPT5cbiAgICAgIGZyb20ocmVzLnRleHQoKSkucGlwZShcbiAgICAgICAgc3dpdGNoTWFwKHRleHQgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICByZXR1cm4gb2YoSlNPTi5wYXJzZSh0ZXh0KSk7XG4gICAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgICByZXR1cm4gb2YodGV4dCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT5cbiAgICAgICAgICBvZih7IGVycm9yOiBcIkZhaWxlZCB0byBwYXJzZSByZXNwb25zZVwiLCBkZXRhaWxzOiBlcnI/Lm1lc3NhZ2UgfHwgZXJyIH0pXG4gICAgICAgIClcbiAgICAgIClcbiAgfSxcbiAgdGV4dDogeyBoYW5kbGUkOiAocmVzOiBSZXNwb25zZSkgPT4gZnJvbShyZXMudGV4dCgpKSB9LFxuICBibG9iOiB7IGhhbmRsZSQ6IChyZXM6IFJlc3BvbnNlKSA9PiBmcm9tKHJlcy5ibG9iKCkpIH0sXG4gIGFycmF5QnVmZmVyOiB7IGhhbmRsZSQ6IChyZXM6IFJlc3BvbnNlKSA9PiBmcm9tKHJlcy5hcnJheUJ1ZmZlcigpKSB9LFxuICBmb3JtRGF0YTogeyBoYW5kbGUkOiAocmVzOiBSZXNwb25zZSkgPT4gZnJvbShyZXMuZm9ybURhdGEoKSkgfSxcbiAgc3RyZWFtOiB7XG4gICAgaGFuZGxlJDogKHJlczogUmVzcG9uc2UpID0+IHtcbiAgICAgIGlmICghcmVzLmJvZHkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiUmVzcG9uc2UgYm9keSBpcyBudWxsLCBjYW5ub3QgY3JlYXRlIHN0cmVhbVwiKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXcgT2JzZXJ2YWJsZTxSZWFkYWJsZVN0cmVhbTxVaW50OEFycmF5Pj4oc3Vic2NyaWJlciA9PiB7XG4gICAgICAgIHN1YnNjcmliZXIubmV4dChyZXMuYm9keSEpO1xuICAgICAgICBzdWJzY3JpYmVyLmNvbXBsZXRlKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sXG4gIHhtbDoge1xuICAgIGhhbmRsZSQ6IChyZXM6IFJlc3BvbnNlKSA9PlxuICAgICAgZnJvbShyZXMudGV4dCgpKS5waXBlKFxuICAgICAgICBzd2l0Y2hNYXAodGV4dCA9PiB7XG4gICAgICAgICAgY29uc3QgcGFyc2VyID0gdHlwZW9mIERPTVBhcnNlciAhPT0gJ3VuZGVmaW5lZCdcbiAgICAgICAgICA/IG5ldyBET01QYXJzZXIoKVxuICAgICAgICAgIDogbmV3IChyZXF1aXJlKCd4bWxkb20nKS5ET01QYXJzZXIpKCk7XG5cbiAgICAgICAgICBjb25zdCB4bWxEb2MgPSBwYXJzZXIucGFyc2VGcm9tU3RyaW5nKHRleHQsIFwiYXBwbGljYXRpb24veG1sXCIpO1xuICAgICAgICAgIHJldHVybiBvZih4bWxEb2MpO1xuICAgICAgICB9KSxcbiAgICAgICAgY2F0Y2hFcnJvcihlcnIgPT5cbiAgICAgICAgICBvZih7IGVycm9yOiBcIkZhaWxlZCB0byBwYXJzZSBYTUwgcmVzcG9uc2VcIiwgZGV0YWlsczogZXJyPy5tZXNzYWdlIHx8IGVyciB9KVxuICAgICAgICApXG4gICAgICApXG4gIH0sXG59O1xuIl19