From 73d4e222f6113333c2aea9f5c5757469f35f7c83 Mon Sep 17 00:00:00 2001 From: Goffert van Gool Date: Wed, 12 May 2021 15:21:18 +0200 Subject: [PATCH] Update public API of ajax & refactor package (#1371) feat(ajax): align / break public API Co-authored-by: Ahmet Yesil --- .changeset/rude-frogs-run.md | 13 + docs/docs/tools/ajax/features.md | 99 ++-- docs/docs/tools/ajax/overview.md | 20 +- packages/ajax/index.js | 19 +- packages/ajax/src/{AjaxClient.js => Ajax.js} | 39 +- ...xClientFetchError.js => AjaxFetchError.js} | 2 +- packages/ajax/src/ajax.js | 14 - .../src/{interceptors-cache.js => cache.js} | 134 +---- .../src/interceptors/acceptLanguageHeader.js | 16 + .../src/interceptors/cacheInterceptors.js | 137 +++++ packages/ajax/src/interceptors/index.js | 3 + .../xsrfHeader.js} | 19 +- packages/ajax/src/typedef.js | 2 +- .../test/{AjaxClient.test.js => Ajax.test.js} | 82 +-- packages/ajax/test/ajax.test.js | 14 - packages/ajax/test/index.test.js | 35 ++ packages/ajax/test/interceptors-cache.test.js | 521 ----------------- packages/ajax/test/interceptors.test.js | 542 +++++++++++++++++- packages/ajax/types/types.d.ts | 6 +- 19 files changed, 885 insertions(+), 832 deletions(-) create mode 100644 .changeset/rude-frogs-run.md rename packages/ajax/src/{AjaxClient.js => Ajax.js} (85%) rename packages/ajax/src/{AjaxClientFetchError.js => AjaxFetchError.js} (81%) delete mode 100644 packages/ajax/src/ajax.js rename packages/ajax/src/{interceptors-cache.js => cache.js} (55%) create mode 100644 packages/ajax/src/interceptors/acceptLanguageHeader.js create mode 100644 packages/ajax/src/interceptors/cacheInterceptors.js create mode 100644 packages/ajax/src/interceptors/index.js rename packages/ajax/src/{interceptors.js => interceptors/xsrfHeader.js} (60%) rename packages/ajax/test/{AjaxClient.test.js => Ajax.test.js} (81%) delete mode 100644 packages/ajax/test/ajax.test.js create mode 100644 packages/ajax/test/index.test.js delete mode 100644 packages/ajax/test/interceptors-cache.test.js diff --git a/.changeset/rude-frogs-run.md b/.changeset/rude-frogs-run.md new file mode 100644 index 000000000..bb0a6dc6d --- /dev/null +++ b/.changeset/rude-frogs-run.md @@ -0,0 +1,13 @@ +--- +'@lion/ajax': minor +--- + +**BREAKING** public API changes: + +- `AjaxClient` is now `Ajax` +- `AjaxClientFetchError` is now `AjaxFetchError` +- `request` and `requestJson` methods of `Ajax` class are renamed as `fetch` and `fetchJson` respectively +- `getCookie` and `validateOptions` is not part of the public API any more +- Removed the `setAjax` +- `createXSRFRequestInterceptor` renamed as `createXsrfRequestInterceptor` +- Exporting `createCacheInterceptors` instead of `cacheRequestInterceptorFactory` and `cacheResponseInterceptorFactory` diff --git a/docs/docs/tools/ajax/features.md b/docs/docs/tools/ajax/features.md index 4e3a81364..efac229c6 100644 --- a/docs/docs/tools/ajax/features.md +++ b/docs/docs/tools/ajax/features.md @@ -3,12 +3,7 @@ ```js script import { html } from '@lion/core'; import { renderLitAsNode } from '@lion/helpers'; -import { - ajax, - AjaxClient, - cacheRequestInterceptorFactory, - cacheResponseInterceptorFactory, -} from '@lion/ajax'; +import { ajax, createCacheInterceptors } from '@lion/ajax'; import '@lion/helpers/define'; const getCacheIdentifier = () => { @@ -25,8 +20,13 @@ const cacheOptions = { timeToLive: 1000 * 60 * 10, // 10 minutes }; -ajax.addRequestInterceptor(cacheRequestInterceptorFactory(getCacheIdentifier, cacheOptions)); -ajax.addResponseInterceptor(cacheResponseInterceptorFactory(getCacheIdentifier, cacheOptions)); +const [cacheRequestInterceptor, cacheResponseInterceptor] = createCacheInterceptors( + getCacheIdentifier, + cacheOptions, +); + +ajax.addRequestInterceptor(cacheRequestInterceptor); +ajax.addResponseInterceptor(cacheResponseInterceptor); ``` ## GET request @@ -34,14 +34,16 @@ ajax.addResponseInterceptor(cacheResponseInterceptorFactory(getCacheIdentifier, ```js preview-story export const getRequest = () => { const actionLogger = renderLitAsNode(html``); + const fetchHandler = name => { ajax - .request(`../assets/${name}.json`) + .fetch(`../assets/${name}.json`) .then(response => response.json()) .then(result => { actionLogger.log(JSON.stringify(result, null, 2)); }); }; + return html`