UNPKG

parse

Version:
66 lines (64 loc) 1.68 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.polyfillFetch = polyfillFetch; /* istanbul ignore file */ // @ts-ignore function parseResponse(res) { let headers = res.header || {}; headers = Object.keys(headers).reduce((map, key) => { map[key.toLowerCase()] = headers[key]; return map; }, {}); return { status: res.statusCode, json: () => { if (typeof res.data === 'object') { return Promise.resolve(res.data); } let json = {}; try { json = JSON.parse(res.data); } catch (err) { console.error(err); } return Promise.resolve(json); }, headers: { keys: () => Object.keys(headers), get: n => headers[n.toLowerCase()], has: n => n.toLowerCase() in headers, entries: () => { const all = []; for (const key in headers) { if (headers[key]) { all.push([key, headers[key]]); } } return all; } } }; } function polyfillFetch() { const typedGlobal = global; if (typeof typedGlobal.fetch !== 'function') { typedGlobal.fetch = (url, options) => { const dataType = url.match(/\.(txt|json|html|txt|csv)/) ? 'text' : 'arraybuffer'; return new Promise((resolve, reject) => { // @ts-ignore wx.request({ url, method: options.method || 'GET', data: options.body, header: options.headers, dataType, responseType: dataType, success: response => resolve(parseResponse(response)), fail: error => reject(error) }); }); }; } }