fetch.js 1.4 KB

12345678910111213141516171819202122232425262728
  1. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  2. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  3. return new (P || (P = Promise))(function (resolve, reject) {
  4. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  5. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  6. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  7. step((generator = generator.apply(thisArg, _arguments || [])).next());
  8. });
  9. };
  10. import { dsvFormat, autoType as d3AutoType } from 'd3-dsv';
  11. import { identity } from '../utils/helper';
  12. export const Fetch = (options) => {
  13. const { value, format = value.split('.').pop(), delimiter = ',', autoType = true, } = options;
  14. return () => __awaiter(void 0, void 0, void 0, function* () {
  15. const response = yield fetch(value);
  16. if (format === 'csv') {
  17. // @see: https://github.com/d3/d3-dsv#dsv_parse
  18. const str = yield response.text();
  19. return dsvFormat(delimiter).parse(str, autoType ? d3AutoType : identity);
  20. }
  21. else if (format === 'json') {
  22. return yield response.json();
  23. }
  24. throw new Error(`Unknown format: ${format}.`);
  25. });
  26. };
  27. Fetch.props = {};
  28. //# sourceMappingURL=fetch.js.map