From c65346d8ddaa8b65fac3d4e87dbc8b20189784b8 Mon Sep 17 00:00:00 2001 From: Cory LaViska Date: Fri, 16 Oct 2020 09:16:43 -0400 Subject: [PATCH] Move request logic to separate file --- src/components/include/include.tsx | 27 ++------------------------- src/components/include/request.ts | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 25 deletions(-) create mode 100644 src/components/include/request.ts diff --git a/src/components/include/include.tsx b/src/components/include/include.tsx index 455ecaeac..62453835f 100644 --- a/src/components/include/include.tsx +++ b/src/components/include/include.tsx @@ -1,12 +1,5 @@ import { Component, Element, Event, EventEmitter, Prop, State, Watch, h } from '@stencil/core'; - -export interface IncludeFile { - ok: boolean; - status: number; - html: string; -} - -const includeFiles = new Map>(); +import { requestInclude } from './request'; /** * @since 2.0 @@ -44,25 +37,9 @@ export class Include { this.loadSource(); } - async requestFile(src: string) { - if (includeFiles.has(src)) { - return includeFiles.get(src); - } else { - const request = fetch(src, { mode: this.mode }).then(async response => { - return { - ok: response.ok, - status: response.status, - html: await response.text() - }; - }); - includeFiles.set(src, request); - return request; - } - } - async loadSource() { const src = this.src; - const file = await this.requestFile(src); + const file = await requestInclude(src, this.mode); // If the src changed since the request started do nothing, otherwise we risk overwriting a subsequent response if (src !== this.src) { diff --git a/src/components/include/request.ts b/src/components/include/request.ts new file mode 100644 index 000000000..5e8075a0d --- /dev/null +++ b/src/components/include/request.ts @@ -0,0 +1,23 @@ +interface IncludeFile { + ok: boolean; + status: number; + html: string; +} + +const includeFiles = new Map>(); + +export const requestInclude = async (src: string, mode: 'cors' | 'no-cors' | 'same-origin' = 'cors') => { + if (includeFiles.has(src)) { + return includeFiles.get(src); + } else { + const request = fetch(src, { mode: mode }).then(async response => { + return { + ok: response.ok, + status: response.status, + html: await response.text() + }; + }); + includeFiles.set(src, request); + return request; + } +};