diff --git a/docs/core/api/useDLE.md b/docs/core/api/useDLE.md
index 14fd3408d548..ef700f9dfe22 100644
--- a/docs/core/api/useDLE.md
+++ b/docs/core/api/useDLE.md
@@ -10,6 +10,7 @@ import PkgTabs from '@site/src/components/PkgTabs';
import GenericsTabs from '@site/src/components/GenericsTabs';
import ConditionalDependencies from '../shared/\_conditional_dependencies.mdx';
import TypeScriptEditor from '@site/src/components/TypeScriptEditor';
+import StackBlitz from '@site/src/components/StackBlitz';
useDLE() - [D]ata [L]oading [E]rror React State
@@ -309,3 +310,13 @@ export default function ArticleList({ page }: { page: string }) {
```
+
+### Github Reactions
+
+`useDLE()` allows us to declaratively fetch reactions on any issue page the moment we navigate to it. This allows
+us to not block the issues page from showing if the reactions are not completed loading.
+
+It's usually better to wrap cases like this in new [Suspense Boundaries](../getting-started/data-dependency.md#boundaries).
+However, our component library `ant design` does not allow this.
+
+
diff --git a/docs/core/api/useFetch.md b/docs/core/api/useFetch.md
index c758ec88f248..69838fd33c42 100644
--- a/docs/core/api/useFetch.md
+++ b/docs/core/api/useFetch.md
@@ -4,7 +4,6 @@ title: useFetch()
import GenericsTabs from '@site/src/components/GenericsTabs';
import ConditionalDependencies from '../shared/\_conditional_dependencies.mdx';
-import StackBlitz from '@site/src/components/StackBlitz';
useFetch() - Declarative fetch triggers for React
@@ -78,15 +77,3 @@ function useFetch<
```
-
-## Examples
-
-### Github Reactions
-
-`useFetch()` allows us to declaratively fetch reactions on any issue page the moment we navigate to it. This allows
-us to not block the issues page from showing if the reactions are not completed loading.
-
-It's usually better to wrap cases like this in new [Suspense Boundaries](../getting-started/data-dependency.md#boundaries).
-However, our component library `ant design` does not allow this.
-
-
diff --git a/examples/coin-app/package.json b/examples/coin-app/package.json
index 0be31a752540..2e3491997d17 100644
--- a/examples/coin-app/package.json
+++ b/examples/coin-app/package.json
@@ -29,6 +29,7 @@
"@linaria/core": "*",
"@linaria/react": "*",
"@linaria/shaker": "*",
+ "@types/d3": "^7",
"@types/react": "*",
"@types/react-dom": "*",
"react-refresh": "*",
@@ -45,6 +46,7 @@
"@data-client/react": "^0.11.0",
"@data-client/redux": "^0.11.0",
"@data-client/rest": "^0.11.0",
+ "d3": "^7.9.0",
"history": "*",
"react": "^18.2.0",
"react-dom": "^18.2.0",
diff --git a/examples/coin-app/src/pages/AssetDetail/AssetChart.tsx b/examples/coin-app/src/pages/AssetDetail/AssetChart.tsx
new file mode 100644
index 000000000000..bee28b5207f3
--- /dev/null
+++ b/examples/coin-app/src/pages/AssetDetail/AssetChart.tsx
@@ -0,0 +1,18 @@
+import { useDLE } from '@data-client/react';
+import { useMemo } from 'react';
+import { getCandles } from 'resources/Candles';
+
+import { formatPrice } from '../../components/formatPrice';
+
+export default function AssetChart({ product_id }: Props) {
+ const { data: candles, loading } = useDLE(getCandles, { product_id });
+ // Don't block page from loading
+ // TODO: put correct height item here
+ if (loading || !candles) return ;
+
+ return ;
+}
+
+interface Props {
+ product_id: string;
+}
diff --git a/examples/coin-app/src/pages/AssetDetail/index.tsx b/examples/coin-app/src/pages/AssetDetail/index.tsx
index 782138ade755..2f384c62e00d 100644
--- a/examples/coin-app/src/pages/AssetDetail/index.tsx
+++ b/examples/coin-app/src/pages/AssetDetail/index.tsx
@@ -1,6 +1,7 @@
import { useSuspense } from '@data-client/react';
import { CurrencyResource } from 'resources/Currency';
+import AssetChart from './AssetChart';
import AssetPrice from './AssetPrice';
import Stats from './Stats';
@@ -11,6 +12,7 @@ export default function AssetDetail({ id }: { id: string }) {
{currency.name}
+
>
);
}
diff --git a/examples/coin-app/src/resources/Candles.ts b/examples/coin-app/src/resources/Candles.ts
new file mode 100644
index 000000000000..dbb0d419d461
--- /dev/null
+++ b/examples/coin-app/src/resources/Candles.ts
@@ -0,0 +1,26 @@
+import { RestEndpoint } from '@data-client/rest';
+
+// docs: https://docs.cloud.coinbase.com/exchange/reference/exchangerestapi_getproductcandles
+export const getCandles = new RestEndpoint({
+ urlPrefix: 'https://api.exchange.coinbase.com',
+ path: '/products/:product_id/candles',
+ searchParams: {} as {
+ granularity?: 60 | 300 | 900 | 3600 | 21600 | 86400;
+ start?: string | number;
+ end?: string | number;
+ },
+ process(value: CandleTuple[]) {
+ return value.map(candle => ({
+ timestamp: candle[0],
+ price_open: candle[3],
+ }));
+ },
+});
+
+type CandleTuple = [
+ timestamp: number,
+ price_low: number,
+ price_high: number,
+ price_open: number,
+ price_close: number,
+];
diff --git a/examples/coin-app/src/resources/Product.ts b/examples/coin-app/src/resources/Product.ts
index fd9bb199a5d5..e63d3fc5cce9 100644
--- a/examples/coin-app/src/resources/Product.ts
+++ b/examples/coin-app/src/resources/Product.ts
@@ -43,12 +43,9 @@ export const queryProduct = new schema.Query(
product => product.quote_currency === quote_currency,
);
- sorted = sorted.sort((a, b) => {
+ return sorted.sort((a, b) => {
return b.stats.volume_30day - a.stats.volume_30day;
});
- const btc = sorted.find(product => product.base_currency === 'BTC');
- if (btc) sorted.unshift(btc);
- return sorted;
},
);
diff --git a/examples/coin-app/src/routing/routes.tsx b/examples/coin-app/src/routing/routes.tsx
index ec16c5871267..13c755691c35 100644
--- a/examples/coin-app/src/routing/routes.tsx
+++ b/examples/coin-app/src/routing/routes.tsx
@@ -1,5 +1,6 @@
import { Route } from '@anansi/router';
import { Controller } from '@data-client/react';
+import { getCandles } from 'resources/Candles';
import { CurrencyResource } from 'resources/Currency';
import { StatsResource } from 'resources/Stats';
import { getTicker } from 'resources/Ticker';
@@ -22,6 +23,7 @@ export const routes: Route[] = [
component: lazyPage('AssetDetail'),
async resolveData(controller, { id }) {
const product_id = `${id}-USD`;
+ controller.fetchIfStale(getCandles, { product_id });
await Promise.allSettled([
controller.fetchIfStale(getTicker, { product_id }),
controller.fetchIfStale(CurrencyResource.get, { id }),
diff --git a/examples/github-app/src/pages/IssueDetail/index.tsx b/examples/github-app/src/pages/IssueDetail/index.tsx
index 59fd9e25032e..aa2d41bcfb6f 100644
--- a/examples/github-app/src/pages/IssueDetail/index.tsx
+++ b/examples/github-app/src/pages/IssueDetail/index.tsx
@@ -1,5 +1,5 @@
import { Link } from '@anansi/router';
-import { useSuspense, useFetch, useCache } from '@data-client/react';
+import { useSuspense, useCache, useDLE } from '@data-client/react';
import { Card, Avatar, Popover } from 'antd';
import { Tag } from 'antd';
import Boundary from 'Boundary';
@@ -25,9 +25,10 @@ const { Meta } = Card;
function IssueDetail({ number, repo, owner }: Props) {
const params = { number, repo, owner };
- useFetch(ReactionResource.getList, params);
+ const {
+ data: { results: reactions },
+ } = useDLE(ReactionResource.getList, params);
const issue = useSuspense(IssueResource.get, params);
- const { results: reactions } = useCache(ReactionResource.getList, params);
const currentUser = useCache(UserResource.current);
const actions: JSX.Element[] = useMemo(() => {
diff --git a/website/sidebars-endpoint.json b/website/sidebars-endpoint.json
index ef2e2f3fa6a4..cadea4d0a40f 100644
--- a/website/sidebars-endpoint.json
+++ b/website/sidebars-endpoint.json
@@ -37,7 +37,7 @@
},
{
"type": "doc",
- "id": "api/Invalidate"
+ "id": "api/Query"
},
{
"type": "doc",
@@ -45,7 +45,7 @@
},
{
"type": "doc",
- "id": "api/Query"
+ "id": "api/Invalidate"
},
{
"type": "doc",
diff --git a/website/static/_headers b/website/static/_headers
new file mode 100644
index 000000000000..3895e305491f
--- /dev/null
+++ b/website/static/_headers
@@ -0,0 +1,10 @@
+# Cloudflare headers - https://developers.cloudflare.com/pages/configuration/headers/
+/img/client-logo.svg
+ Cross-Origin-Resource-Policy: cross-origin
+ Access-Control-Allow-Origin: *
+ Cross-Origin-Embedder-Policy: credentialless
+
+/img/cancel.svg
+ Cross-Origin-Resource-Policy: cross-origin
+ Access-Control-Allow-Origin: *
+ Cross-Origin-Embedder-Policy: credentialless
\ No newline at end of file
diff --git a/yarn.lock b/yarn.lock
index ac9e7726ec32..d0fc7f448396 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -6639,14 +6639,176 @@ __metadata:
languageName: node
linkType: hard
-"@types/d3-scale-chromatic@npm:^3.0.0":
+"@types/d3-array@npm:*":
+ version: 3.2.1
+ resolution: "@types/d3-array@npm:3.2.1"
+ checksum: 10c0/38bf2c778451f4b79ec81a2288cb4312fe3d6449ecdf562970cc339b60f280f31c93a024c7ff512607795e79d3beb0cbda123bb07010167bce32927f71364bca
+ languageName: node
+ linkType: hard
+
+"@types/d3-axis@npm:*":
+ version: 3.0.6
+ resolution: "@types/d3-axis@npm:3.0.6"
+ dependencies:
+ "@types/d3-selection": "npm:*"
+ checksum: 10c0/d756d42360261f44d8eefd0950c5bb0a4f67a46dd92069da3f723ac36a1e8cb2b9ce6347d836ef19d5b8aef725dbcf8fdbbd6cfbff676ca4b0642df2f78b599a
+ languageName: node
+ linkType: hard
+
+"@types/d3-brush@npm:*":
+ version: 3.0.6
+ resolution: "@types/d3-brush@npm:3.0.6"
+ dependencies:
+ "@types/d3-selection": "npm:*"
+ checksum: 10c0/fd6e2ac7657a354f269f6b9c58451ffae9d01b89ccb1eb6367fd36d635d2f1990967215ab498e0c0679ff269429c57fad6a2958b68f4d45bc9f81d81672edc01
+ languageName: node
+ linkType: hard
+
+"@types/d3-chord@npm:*":
+ version: 3.0.6
+ resolution: "@types/d3-chord@npm:3.0.6"
+ checksum: 10c0/c5a25eb5389db01e63faec0c5c2ec7cc41c494e9b3201630b494c4e862a60f1aa83fabbc33a829e7e1403941e3c30d206c741559b14406ac2a4239cfdf4b4c17
+ languageName: node
+ linkType: hard
+
+"@types/d3-color@npm:*":
+ version: 3.1.3
+ resolution: "@types/d3-color@npm:3.1.3"
+ checksum: 10c0/65eb0487de606eb5ad81735a9a5b3142d30bc5ea801ed9b14b77cb14c9b909f718c059f13af341264ee189acf171508053342142bdf99338667cea26a2d8d6ae
+ languageName: node
+ linkType: hard
+
+"@types/d3-contour@npm:*":
+ version: 3.0.6
+ resolution: "@types/d3-contour@npm:3.0.6"
+ dependencies:
+ "@types/d3-array": "npm:*"
+ "@types/geojson": "npm:*"
+ checksum: 10c0/e7d83e94719af4576ceb5ac7f277c5806f83ba6c3631744ae391cffc3641f09dfa279470b83053cd0b2acd6784e8749c71141d05bdffa63ca58ffb5b31a0f27c
+ languageName: node
+ linkType: hard
+
+"@types/d3-delaunay@npm:*":
+ version: 6.0.4
+ resolution: "@types/d3-delaunay@npm:6.0.4"
+ checksum: 10c0/d154a8864f08c4ea23ecb9bdabcef1c406a25baa8895f0cb08a0ed2799de0d360e597552532ce7086ff0cdffa8f3563f9109d18f0191459d32bb620a36939123
+ languageName: node
+ linkType: hard
+
+"@types/d3-dispatch@npm:*":
+ version: 3.0.6
+ resolution: "@types/d3-dispatch@npm:3.0.6"
+ checksum: 10c0/405eb7d0ec139fbf72fa6a43b0f3ca8a1f913bb2cb38f607827e63fca8d4393f021f32f3b96b33c93ddbd37789453a0b3624f14f504add5308fd9aec8a46dda0
+ languageName: node
+ linkType: hard
+
+"@types/d3-drag@npm:*":
+ version: 3.0.7
+ resolution: "@types/d3-drag@npm:3.0.7"
+ dependencies:
+ "@types/d3-selection": "npm:*"
+ checksum: 10c0/65e29fa32a87c72d26c44b5e2df3bf15af21cd128386bcc05bcacca255927c0397d0cd7e6062aed5f0abd623490544a9d061c195f5ed9f018fe0b698d99c079d
+ languageName: node
+ linkType: hard
+
+"@types/d3-dsv@npm:*":
+ version: 3.0.7
+ resolution: "@types/d3-dsv@npm:3.0.7"
+ checksum: 10c0/c0f01da862465594c8a28278b51c850af3b4239cc22b14fd1a19d7a98f93d94efa477bf59d8071beb285dca45bf614630811451e18e7c52add3a0abfee0a1871
+ languageName: node
+ linkType: hard
+
+"@types/d3-ease@npm:*":
+ version: 3.0.2
+ resolution: "@types/d3-ease@npm:3.0.2"
+ checksum: 10c0/aff5a1e572a937ee9bff6465225d7ba27d5e0c976bd9eacdac2e6f10700a7cb0c9ea2597aff6b43a6ed850a3210030870238894a77ec73e309b4a9d0333f099c
+ languageName: node
+ linkType: hard
+
+"@types/d3-fetch@npm:*":
+ version: 3.0.7
+ resolution: "@types/d3-fetch@npm:3.0.7"
+ dependencies:
+ "@types/d3-dsv": "npm:*"
+ checksum: 10c0/3d147efa52a26da1a5d40d4d73e6cebaaa964463c378068062999b93ea3731b27cc429104c21ecbba98c6090e58ef13429db6399238c5e3500162fb3015697a0
+ languageName: node
+ linkType: hard
+
+"@types/d3-force@npm:*":
+ version: 3.0.9
+ resolution: "@types/d3-force@npm:3.0.9"
+ checksum: 10c0/6d791a48ea570daaada6df93af8c877d58e6b940b3ab4515cde08ed6ed1d4e8e59fd8407efe37a1b3f5fe95867fe83a2974c4314a7924dc19860a5e955c26211
+ languageName: node
+ linkType: hard
+
+"@types/d3-format@npm:*":
+ version: 3.0.4
+ resolution: "@types/d3-format@npm:3.0.4"
+ checksum: 10c0/3ac1600bf9061a59a228998f7cd3f29e85cbf522997671ba18d4d84d10a2a1aff4f95aceb143fa9960501c3ec351e113fc75884e6a504ace44dc1744083035ee
+ languageName: node
+ linkType: hard
+
+"@types/d3-geo@npm:*":
+ version: 3.1.0
+ resolution: "@types/d3-geo@npm:3.1.0"
+ dependencies:
+ "@types/geojson": "npm:*"
+ checksum: 10c0/3745a93439038bb5b0b38facf435f7079812921d46406f5d38deaee59e90084ff742443c7ea0a8446df81a0d81eaf622fe7068cf4117a544bd4aa3b2dc182f88
+ languageName: node
+ linkType: hard
+
+"@types/d3-hierarchy@npm:*":
+ version: 3.1.7
+ resolution: "@types/d3-hierarchy@npm:3.1.7"
+ checksum: 10c0/873711737d6b8e7b6f1dda0bcd21294a48f75024909ae510c5d2c21fad2e72032e0958def4d9f68319d3aaac298ad09c49807f8bfc87a145a82693b5208613c7
+ languageName: node
+ linkType: hard
+
+"@types/d3-interpolate@npm:*":
+ version: 3.0.4
+ resolution: "@types/d3-interpolate@npm:3.0.4"
+ dependencies:
+ "@types/d3-color": "npm:*"
+ checksum: 10c0/066ebb8da570b518dd332df6b12ae3b1eaa0a7f4f0c702e3c57f812cf529cc3500ec2aac8dc094f31897790346c6b1ebd8cd7a077176727f4860c2b181a65ca4
+ languageName: node
+ linkType: hard
+
+"@types/d3-path@npm:*":
+ version: 3.1.0
+ resolution: "@types/d3-path@npm:3.1.0"
+ checksum: 10c0/85e8b3aa968a60a5b33198ade06ae7ffedcf9a22d86f24859ff58e014b053ccb7141ec163b78d547bc8215bb12bb54171c666057ab6156912814005b686afb31
+ languageName: node
+ linkType: hard
+
+"@types/d3-polygon@npm:*":
+ version: 3.0.2
+ resolution: "@types/d3-polygon@npm:3.0.2"
+ checksum: 10c0/f46307bb32b6c2aef8c7624500e0f9b518de8f227ccc10170b869dc43e4c542560f6c8d62e9f087fac45e198d6e4b623e579c0422e34c85baf56717456d3f439
+ languageName: node
+ linkType: hard
+
+"@types/d3-quadtree@npm:*":
+ version: 3.0.6
+ resolution: "@types/d3-quadtree@npm:3.0.6"
+ checksum: 10c0/7eaa0a4d404adc856971c9285e1c4ab17e9135ea669d847d6db7e0066126a28ac751864e7ce99c65d526e130f56754a2e437a1617877098b3bdcc3ef23a23616
+ languageName: node
+ linkType: hard
+
+"@types/d3-random@npm:*":
+ version: 3.0.3
+ resolution: "@types/d3-random@npm:3.0.3"
+ checksum: 10c0/5f4fea40080cd6d4adfee05183d00374e73a10c530276a6455348983dda341003a251def28565a27c25d9cf5296a33e870e397c9d91ff83fb7495a21c96b6882
+ languageName: node
+ linkType: hard
+
+"@types/d3-scale-chromatic@npm:*, @types/d3-scale-chromatic@npm:^3.0.0":
version: 3.0.3
resolution: "@types/d3-scale-chromatic@npm:3.0.3"
checksum: 10c0/2f48c6f370edba485b57b73573884ded71914222a4580140ff87ee96e1d55ccd05b1d457f726e234a31269b803270ac95d5554229ab6c43c7e4a9894e20dd490
languageName: node
linkType: hard
-"@types/d3-scale@npm:^4.0.3":
+"@types/d3-scale@npm:*, @types/d3-scale@npm:^4.0.3":
version: 4.0.8
resolution: "@types/d3-scale@npm:4.0.8"
dependencies:
@@ -6655,6 +6817,29 @@ __metadata:
languageName: node
linkType: hard
+"@types/d3-selection@npm:*":
+ version: 3.0.10
+ resolution: "@types/d3-selection@npm:3.0.10"
+ checksum: 10c0/de1f99ab186a08999bf394a645fd76911add1b02316270d4c07616c8383903a2b068d7e02b73b6a99a1f26bb49a2e99ef4b55a5d2ddfa165f6f3c53144897920
+ languageName: node
+ linkType: hard
+
+"@types/d3-shape@npm:*":
+ version: 3.1.6
+ resolution: "@types/d3-shape@npm:3.1.6"
+ dependencies:
+ "@types/d3-path": "npm:*"
+ checksum: 10c0/0625715925d3c7ed3d44ce998b42c993f063c31605b6e4a8046c4be0fe724e2d214fc83e86d04f429a30a6e1f439053e92b0d9e59e1180c3a5327b4a6e79fa0a
+ languageName: node
+ linkType: hard
+
+"@types/d3-time-format@npm:*":
+ version: 4.0.3
+ resolution: "@types/d3-time-format@npm:4.0.3"
+ checksum: 10c0/9ef5e8e2b96b94799b821eed5d61a3d432c7903247966d8ad951b8ce5797fe46554b425cb7888fa5bf604b4663c369d7628c0328ffe80892156671c58d1a7f90
+ languageName: node
+ linkType: hard
+
"@types/d3-time@npm:*":
version: 3.0.3
resolution: "@types/d3-time@npm:3.0.3"
@@ -6662,6 +6847,70 @@ __metadata:
languageName: node
linkType: hard
+"@types/d3-timer@npm:*":
+ version: 3.0.2
+ resolution: "@types/d3-timer@npm:3.0.2"
+ checksum: 10c0/c644dd9571fcc62b1aa12c03bcad40571553020feeb5811f1d8a937ac1e65b8a04b759b4873aef610e28b8714ac71c9885a4d6c127a048d95118f7e5b506d9e1
+ languageName: node
+ linkType: hard
+
+"@types/d3-transition@npm:*":
+ version: 3.0.8
+ resolution: "@types/d3-transition@npm:3.0.8"
+ dependencies:
+ "@types/d3-selection": "npm:*"
+ checksum: 10c0/feba7845bd1e1d49e38b0d55562e01e90bfbcf0a56fbe0de4279c12e43a687032d22ed559629c0412145d25d61e4e53ddfef34c89c6bf043d48b6c2cd3a929dc
+ languageName: node
+ linkType: hard
+
+"@types/d3-zoom@npm:*":
+ version: 3.0.8
+ resolution: "@types/d3-zoom@npm:3.0.8"
+ dependencies:
+ "@types/d3-interpolate": "npm:*"
+ "@types/d3-selection": "npm:*"
+ checksum: 10c0/1dbdbcafddcae12efb5beb6948546963f29599e18bc7f2a91fb69cc617c2299a65354f2d47e282dfb86fec0968406cd4fb7f76ba2d2fb67baa8e8d146eb4a547
+ languageName: node
+ linkType: hard
+
+"@types/d3@npm:^7":
+ version: 7.4.3
+ resolution: "@types/d3@npm:7.4.3"
+ dependencies:
+ "@types/d3-array": "npm:*"
+ "@types/d3-axis": "npm:*"
+ "@types/d3-brush": "npm:*"
+ "@types/d3-chord": "npm:*"
+ "@types/d3-color": "npm:*"
+ "@types/d3-contour": "npm:*"
+ "@types/d3-delaunay": "npm:*"
+ "@types/d3-dispatch": "npm:*"
+ "@types/d3-drag": "npm:*"
+ "@types/d3-dsv": "npm:*"
+ "@types/d3-ease": "npm:*"
+ "@types/d3-fetch": "npm:*"
+ "@types/d3-force": "npm:*"
+ "@types/d3-format": "npm:*"
+ "@types/d3-geo": "npm:*"
+ "@types/d3-hierarchy": "npm:*"
+ "@types/d3-interpolate": "npm:*"
+ "@types/d3-path": "npm:*"
+ "@types/d3-polygon": "npm:*"
+ "@types/d3-quadtree": "npm:*"
+ "@types/d3-random": "npm:*"
+ "@types/d3-scale": "npm:*"
+ "@types/d3-scale-chromatic": "npm:*"
+ "@types/d3-selection": "npm:*"
+ "@types/d3-shape": "npm:*"
+ "@types/d3-time": "npm:*"
+ "@types/d3-time-format": "npm:*"
+ "@types/d3-timer": "npm:*"
+ "@types/d3-transition": "npm:*"
+ "@types/d3-zoom": "npm:*"
+ checksum: 10c0/a9c6d65b13ef3b42c87f2a89ea63a6d5640221869f97d0657b0cb2f1dac96a0f164bf5605643c0794e0de3aa2bf05df198519aaf15d24ca135eb0e8bd8a9d879
+ languageName: node
+ linkType: hard
+
"@types/debug@npm:^4.0.0":
version: 4.1.8
resolution: "@types/debug@npm:4.1.8"
@@ -6752,6 +7001,13 @@ __metadata:
languageName: node
linkType: hard
+"@types/geojson@npm:*":
+ version: 7946.0.14
+ resolution: "@types/geojson@npm:7946.0.14"
+ checksum: 10c0/54f3997708fa2970c03eeb31f7e4540a0eb6387b15e9f8a60513a1409c23cafec8d618525404573468b59c6fecbfd053724b3327f7fca416729c26271d799f55
+ languageName: node
+ linkType: hard
+
"@types/glob@npm:^7.1.1":
version: 7.2.0
resolution: "@types/glob@npm:7.2.0"
@@ -10371,8 +10627,10 @@ __metadata:
"@linaria/core": "npm:*"
"@linaria/react": "npm:*"
"@linaria/shaker": "npm:*"
+ "@types/d3": "npm:^7"
"@types/react": "npm:*"
"@types/react-dom": "npm:*"
+ d3: "npm:^7.9.0"
history: "npm:*"
react: "npm:^18.2.0"
react-dom: "npm:^18.2.0"
@@ -12035,6 +12293,44 @@ __metadata:
languageName: node
linkType: hard
+"d3@npm:^7.9.0":
+ version: 7.9.0
+ resolution: "d3@npm:7.9.0"
+ dependencies:
+ d3-array: "npm:3"
+ d3-axis: "npm:3"
+ d3-brush: "npm:3"
+ d3-chord: "npm:3"
+ d3-color: "npm:3"
+ d3-contour: "npm:4"
+ d3-delaunay: "npm:6"
+ d3-dispatch: "npm:3"
+ d3-drag: "npm:3"
+ d3-dsv: "npm:3"
+ d3-ease: "npm:3"
+ d3-fetch: "npm:3"
+ d3-force: "npm:3"
+ d3-format: "npm:3"
+ d3-geo: "npm:3"
+ d3-hierarchy: "npm:3"
+ d3-interpolate: "npm:3"
+ d3-path: "npm:3"
+ d3-polygon: "npm:3"
+ d3-quadtree: "npm:3"
+ d3-random: "npm:3"
+ d3-scale: "npm:4"
+ d3-scale-chromatic: "npm:3"
+ d3-selection: "npm:3"
+ d3-shape: "npm:3"
+ d3-time: "npm:3"
+ d3-time-format: "npm:4"
+ d3-timer: "npm:3"
+ d3-transition: "npm:3"
+ d3-zoom: "npm:3"
+ checksum: 10c0/3dd9c08c73cfaa69c70c49e603c85e049c3904664d9c79a1a52a0f52795828a1ff23592dc9a7b2257e711d68a615472a13103c212032f38e016d609796e087e8
+ languageName: node
+ linkType: hard
+
"dagre-d3-es@npm:7.0.10":
version: 7.0.10
resolution: "dagre-d3-es@npm:7.0.10"