Skip to content

Commit b25fef0

Browse files
authored
Use super.query (#29)
* Use super.query # Conflicts: # package.json # src/DatasourceWithAsyncBackend.ts # yarn.lock * update tests * pr comment
1 parent 2cedd2d commit b25fef0

File tree

4 files changed

+98
-73
lines changed

4 files changed

+98
-73
lines changed

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"author": "Grafana Labs <team@grafana.com> (https://grafana.com)",
2727
"license": "Apache-2.0",
2828
"dependencies": {
29+
"semver": "^7.6.3",
2930
"tslib": "^2.8.0"
3031
},
3132
"devDependencies": {
@@ -45,6 +46,7 @@
4546
"@types/jest": "29.5.14",
4647
"@types/react": "18.3.12",
4748
"@types/react-dom": "18.3.1",
49+
"@types/semver": "^7.5.8",
4850
"@typescript-eslint/eslint-plugin": "^8.12.0",
4951
"@typescript-eslint/parser": "^8.12.0",
5052
"esbuild": "^0.24.0",

src/DatasourceWithAsyncBackend.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -105,15 +105,15 @@ describe('DatasourceWithAsyncBackend', () => {
105105
expect(ds.doSingle).toHaveBeenCalledWith(defaultQuery2, defaultRequest);
106106
});
107107

108-
it('uses the datasource id for the request id', () => {
108+
it('uses the datasource uid for the request uid', () => {
109109
const ds = setupDatasourceWithAsyncBackend();
110110
expect(getRequestLooperMock).not.toHaveBeenCalled();
111111
ds.doSingle(defaultQuery, defaultRequest);
112112
expect(getRequestLooperMock).toHaveBeenCalledTimes(1);
113113
const expectedRequest = {
114114
...defaultRequest,
115115
targets: [defaultQuery],
116-
requestId: '12_100',
116+
requestId: 'test_100',
117117
};
118118
expect(getRequestLooperMock).toHaveBeenCalledWith(expectedRequest, expect.anything());
119119
});

src/DatasourceWithAsyncBackend.ts

Lines changed: 35 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import {
1515
} from '@grafana/runtime';
1616
import { merge, Observable, of } from 'rxjs';
1717
import { catchError, map } from 'rxjs/operators';
18+
import { lt } from 'semver';
1819
import { getRequestLooper } from './requestLooper';
1920

2021
export interface CustomMeta {
@@ -39,15 +40,15 @@ const isCustomMeta = (meta: unknown): meta is CustomMeta => {
3940

4041
export class DatasourceWithAsyncBackend<
4142
TQuery extends DataQuery = DataQuery,
42-
TOptions extends DataSourceJsonData = DataSourceJsonData,
43+
TOptions extends DataSourceJsonData = DataSourceJsonData
4344
> extends DataSourceWithBackend<TQuery, TOptions> {
4445
private runningQueries: { [hash: string]: RunningQueryInfo } = {};
4546
private requestCounter = 100;
46-
private requestIdPrefix: number;
47+
private requestIdPrefix: number | string;
4748

4849
constructor(instanceSettings: DataSourceInstanceSettings<TOptions>) {
4950
super(instanceSettings);
50-
this.requestIdPrefix = instanceSettings.id;
51+
this.requestIdPrefix = instanceSettings.uid ?? instanceSettings.id;
5152
}
5253

5354
query(request: DataQueryRequest<TQuery>): Observable<DataQueryResponse> {
@@ -118,48 +119,43 @@ export class DatasourceWithAsyncBackend<
118119
const query: TQuery & DataQueryMeta = {
119120
..._query,
120121
meta: { queryFlow: 'async' },
122+
intervalMs,
123+
maxDataPoints,
124+
// getRef optionally chained to support < v8.3.x of Grafana
125+
datasource: this?.getRef(),
126+
datasourceId: this.id,
127+
...this.applyTemplateVariables(_query, request.scopedVars),
121128
};
122129

123-
const data = {
124-
queries: [
125-
{
126-
...query,
127-
intervalMs,
128-
maxDataPoints,
129-
// getRef optionally chained to support < v8.3.x of Grafana
130-
datasource: this?.getRef(),
131-
datasourceId: this.id,
132-
...this.applyTemplateVariables(query, request.scopedVars),
133-
},
134-
],
135-
range: range,
136-
from: range.from.valueOf().toString(),
137-
to: range.to.valueOf().toString(),
138-
};
139-
140-
let headers = {};
130+
// Manually bypass the query cache for running queries if the caching service is not enabled.
131+
// The caching service handles bypassing the query cache automatically when it is enabled.
141132
const cachingDisabled = !config.featureToggles.awsAsyncQueryCaching;
142133
if (cachingDisabled && isRunning(status)) {
143-
// bypass query caching for Grafana Enterprise to
144-
// prevent an infinite loop
145-
headers = { 'X-Cache-Skip': true };
134+
const requestSkipQueryCacheUnsupported = lt(config.buildInfo.version, '10.2.3');
135+
if (requestSkipQueryCacheUnsupported) {
136+
return getBackendSrv()
137+
.fetch<BackendDataSourceResponse>({
138+
method: 'POST',
139+
url: '/api/ds/query',
140+
headers: { 'X-Cache-Skip': true },
141+
requestId,
142+
data: {
143+
queries: [query],
144+
range: range,
145+
from: range.from.valueOf().toString(),
146+
to: range.to.valueOf().toString(),
147+
},
148+
})
149+
.pipe(
150+
map((result) => ({ data: toDataQueryResponse(result).data })),
151+
catchError((err) => of(toDataQueryResponse(err)))
152+
);
153+
}
154+
155+
return super.query({ ...request, targets: [query], skipQueryCache: true });
146156
}
147-
const options = {
148-
method: 'POST',
149-
url: '/api/ds/query',
150-
data,
151-
requestId,
152-
headers,
153-
};
154157

155-
return getBackendSrv()
156-
.fetch<BackendDataSourceResponse>(options)
157-
.pipe(
158-
map((result) => ({ data: toDataQueryResponse(result).data })),
159-
catchError((err) => {
160-
return of(toDataQueryResponse(err));
161-
})
162-
);
158+
return super.query({ ...request, targets: [query] });
163159
},
164160

165161
/**

yarn.lock

Lines changed: 59 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,14 @@
409409
dependencies:
410410
regenerator-runtime "^0.13.11"
411411

412-
"@babel/runtime@^7.12.1", "@babel/runtime@^7.18.0", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.24.1", "@babel/runtime@^7.24.5", "@babel/runtime@^7.7.6":
412+
"@babel/runtime@^7.12.1", "@babel/runtime@^7.18.0", "@babel/runtime@^7.23.2":
413+
version "7.24.0"
414+
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.24.0.tgz#584c450063ffda59697021430cb47101b085951e"
415+
integrity sha512-Chk32uHMg6TnQdvw2e9IlqPpFX/6NLuK0Ys2PqLb7/gL5uFn9mXvK715FGLlOLQrcO4qIkNHkvPGktzzXexsFw==
416+
dependencies:
417+
regenerator-runtime "^0.14.0"
418+
419+
"@babel/runtime@^7.23.9", "@babel/runtime@^7.24.1", "@babel/runtime@^7.24.5", "@babel/runtime@^7.7.6":
413420
version "7.25.9"
414421
resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.25.9.tgz#65884fd6dc255a775402cc1d9811082918f4bf00"
415422
integrity sha512-4zpTHZ9Cm6L9L+uIqghQX8ZXg8HKFcjYO3qHoO8zTmRm6HQUJ8SSJ+KRvbMBZn0EGVlT4DRYeQ/6hjlyXBh+Kg==
@@ -2101,9 +2108,9 @@
21012108
integrity sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==
21022109

21032110
"@swc/helpers@^0.5.0":
2104-
version "0.5.13"
2105-
resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.13.tgz#33e63ff3cd0cade557672bd7888a39ce7d115a8c"
2106-
integrity sha512-UoKGxQ3r5kYI9dALKJapMmuK+1zWM/H17Z1+iwnNmzcJRnfFuevZs375TA5rW31pu4BS4NoSy1fRsexDXfWn5w==
2111+
version "0.5.6"
2112+
resolved "https://registry.yarnpkg.com/@swc/helpers/-/helpers-0.5.6.tgz#d16d8566b7aea2bef90d059757e2d77f48224160"
2113+
integrity sha512-aYX01Ke9hunpoCexYAgQucEpARGQ5w/cqHFrIR+e9gdKb1QWTsVJuTJ2ozQzIAxLyRQe/m+2RqzkyOOGiMKRQA==
21072114
dependencies:
21082115
tslib "^2.4.0"
21092116

@@ -2375,6 +2382,11 @@
23752382
resolved "https://registry.yarnpkg.com/@types/scheduler/-/scheduler-0.16.2.tgz#1a62f89525723dde24ba1b01b092bf5df8ad4d39"
23762383
integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
23772384

2385+
"@types/semver@^7.5.8":
2386+
version "7.5.8"
2387+
resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.5.8.tgz#8268a8c57a3e4abd25c165ecd36237db7948a55e"
2388+
integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
2389+
23782390
"@types/sizzle@*":
23792391
version "2.3.9"
23802392
resolved "https://registry.yarnpkg.com/@types/sizzle/-/sizzle-2.3.9.tgz#d4597dbd4618264c414d7429363e3f50acb66ea2"
@@ -2998,9 +3010,9 @@ cliui@^8.0.1:
29983010
wrap-ansi "^7.0.0"
29993011

30003012
clsx@^2.0.0:
3001-
version "2.1.1"
3002-
resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.1.tgz#eed397c9fd8bd882bfb18deab7102049a2f32999"
3003-
integrity sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==
3013+
version "2.1.0"
3014+
resolved "https://registry.yarnpkg.com/clsx/-/clsx-2.1.0.tgz#e851283bcb5c80ee7608db18487433f7b23f77cb"
3015+
integrity sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==
30043016

30053017
co@^4.6.0:
30063018
version "4.6.0"
@@ -3305,9 +3317,9 @@ d3-force@3:
33053317
integrity sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==
33063318

33073319
d3-geo@3:
3308-
version "3.1.1"
3309-
resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.1.tgz#6027cf51246f9b2ebd64f99e01dc7c3364033a4d"
3310-
integrity sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==
3320+
version "3.1.0"
3321+
resolved "https://registry.yarnpkg.com/d3-geo/-/d3-geo-3.1.0.tgz#74fd54e1f4cebd5185ac2039217a98d39b0a4c0e"
3322+
integrity sha512-JEo5HxXDdDYXCaWdwLRt79y7giK8SbhZJbFWXqbRTolCHFI5jRqteLzCsq51NKbUoX0PjBVSohxrx+NoOUujYA==
33113323
dependencies:
33123324
d3-array "2.5.0 - 3"
33133325

@@ -3344,9 +3356,9 @@ d3-random@3:
33443356
integrity sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==
33453357

33463358
d3-scale-chromatic@3:
3347-
version "3.1.0"
3348-
resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz#34c39da298b23c20e02f1a4b239bd0f22e7f1314"
3349-
integrity sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==
3359+
version "3.0.0"
3360+
resolved "https://registry.yarnpkg.com/d3-scale-chromatic/-/d3-scale-chromatic-3.0.0.tgz#15b4ceb8ca2bb0dcb6d1a641ee03d59c3b62376a"
3361+
integrity sha512-Lx9thtxAKrO2Pq6OO2Ua474opeziKr279P/TKZsMAhYyNDD3EnCffdbgeSYN5O7m2ByQsxtuP2CSDczNUIZ22g==
33503362
dependencies:
33513363
d3-color "1 - 3"
33523364
d3-interpolate "1 - 3"
@@ -4696,9 +4708,9 @@ hyphenate-style-name@^1.0.3:
46964708
integrity sha512-ygGZLjmXfPHj+ZWh6LwbC37l43MhfztxetbFCoYTM2VjkIUpeHgSNn7QIyVFj7YQ1Wl9Cbw5sholVJPzWvC2MQ==
46974709

46984710
i18next-browser-languagedetector@^7.0.2:
4699-
version "7.2.1"
4700-
resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.1.tgz#1968196d437b4c8db847410c7c33554f6c448f6f"
4701-
integrity sha512-h/pM34bcH6tbz8WgGXcmWauNpQupCGr25XPp9cZwZInR9XHSjIFDYp1SIok7zSPsTOMxdvuLyu86V+g2Kycnfw==
4711+
version "7.2.0"
4712+
resolved "https://registry.yarnpkg.com/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.0.tgz#de0321cba6881be37d82e20e4d6f05aa75f6e37f"
4713+
integrity sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==
47024714
dependencies:
47034715
"@babel/runtime" "^7.23.2"
47044716

@@ -6589,13 +6601,13 @@ rc-motion@^2.0.0, rc-motion@^2.0.1:
65896601
rc-util "^5.21.0"
65906602

65916603
rc-motion@^2.6.1:
6592-
version "2.9.3"
6593-
resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.3.tgz#b1bdaf816f1ccb3e4b3b0c531c3037a59286379e"
6594-
integrity sha512-rkW47ABVkic7WEB0EKJqzySpvDqwl60/tdkY7hWP7dYnh5pm0SzJpo54oW3TDUGXV5wfxXFmMkxrzRRbotQ0+w==
6604+
version "2.9.0"
6605+
resolved "https://registry.yarnpkg.com/rc-motion/-/rc-motion-2.9.0.tgz#9e18a1b8d61e528a97369cf9a7601e9b29205710"
6606+
integrity sha512-XIU2+xLkdIr1/h6ohPZXyPBMvOmuyFZQ/T0xnawz+Rh+gh4FINcnZmMT5UTIj6hgI0VLDjTaPeRd+smJeSPqiQ==
65956607
dependencies:
65966608
"@babel/runtime" "^7.11.1"
65976609
classnames "^2.2.1"
6598-
rc-util "^5.43.0"
6610+
rc-util "^5.21.0"
65996611

66006612
rc-overflow@^1.3.1:
66016613
version "1.3.2"
@@ -6713,7 +6725,15 @@ rc-util@^5.16.1, rc-util@^5.21.0, rc-util@^5.27.0:
67136725
"@babel/runtime" "^7.18.3"
67146726
react-is "^16.12.0"
67156727

6716-
rc-util@^5.24.4, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.38.1, rc-util@^5.43.0:
6728+
rc-util@^5.24.4, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0:
6729+
version "5.38.2"
6730+
resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.38.2.tgz#240da546b51ee838e616f7a2e3fcf62c753b0330"
6731+
integrity sha512-yRGRPKyi84H7NkRSP6FzEIYBdUt4ufdsmXUZ7qM2H5qoByPax70NnGPkfo36N+UKUnUBj2f2Q2eUbwYMuAsIOQ==
6732+
dependencies:
6733+
"@babel/runtime" "^7.18.3"
6734+
react-is "^18.2.0"
6735+
6736+
rc-util@^5.38.1:
67176737
version "5.43.0"
67186738
resolved "https://registry.yarnpkg.com/rc-util/-/rc-util-5.43.0.tgz#bba91fbef2c3e30ea2c236893746f3e9b05ecc4c"
67196739
integrity sha512-AzC7KKOXFqAdIBqdGWepL9Xn7cm3vnAmjlHqUnoQaTMZYhM4VlXGLkkHHxj/BZ7Td0+SOPKB4RGPboBVKT9htw==
@@ -6722,9 +6742,9 @@ rc-util@^5.24.4, rc-util@^5.36.0, rc-util@^5.37.0, rc-util@^5.38.0, rc-util@^5.3
67226742
react-is "^18.2.0"
67236743

67246744
rc-virtual-list@^3.5.1, rc-virtual-list@^3.5.2:
6725-
version "3.14.8"
6726-
resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.14.8.tgz#abf6e8809b7f5c955aa7f59c2a9d57443e9942fd"
6727-
integrity sha512-8D0KfzpRYi6YZvlOWIxiOm9BGt4Wf2hQyEaM6RXlDDiY2NhLheuYI+RA+7ZaZj1lq+XQqy3KHlaeeXQfzI5fGg==
6745+
version "3.11.4"
6746+
resolved "https://registry.yarnpkg.com/rc-virtual-list/-/rc-virtual-list-3.11.4.tgz#d0a8937843160b7b00d5586854290bf56d396af7"
6747+
integrity sha512-NbBi0fvyIu26gP69nQBiWgUMTPX3mr4FcuBQiVqagU0BnuX8WQkiivnMs105JROeuUIFczLrlgUhLQwTWV1XDA==
67286748
dependencies:
67296749
"@babel/runtime" "^7.20.0"
67306750
classnames "^2.2.6"
@@ -6821,7 +6841,7 @@ react-inlinesvg@3.0.2:
68216841
exenv "^1.2.2"
68226842
react-from-dom "^0.6.2"
68236843

6824-
react-is@18.2.0, react-is@^18.0.0:
6844+
react-is@18.2.0, react-is@^18.0.0, react-is@^18.2.0:
68256845
version "18.2.0"
68266846
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.2.0.tgz#199431eeaaa2e09f86427efbb4f1473edb47609b"
68276847
integrity sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==
@@ -6836,11 +6856,6 @@ react-is@^17.0.1:
68366856
resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0"
68376857
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
68386858

6839-
react-is@^18.2.0:
6840-
version "18.3.1"
6841-
resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e"
6842-
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
6843-
68446859
react-lifecycles-compat@^3.0.4:
68456860
version "3.0.4"
68466861
resolved "https://registry.yarnpkg.com/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz#4f1a273afdfc8f3488a8c516bfda78f872352362"
@@ -7267,7 +7282,7 @@ semver@^7.3.5:
72677282
dependencies:
72687283
lru-cache "^6.0.0"
72697284

7270-
semver@^7.5.3, semver@^7.6.0, semver@^7.6.3:
7285+
semver@^7.5.3, semver@^7.6.3:
72717286
version "7.6.3"
72727287
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.3.tgz#980f7b5550bc175fb4dc09403085627f9eb33143"
72737288
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
@@ -7279,6 +7294,13 @@ semver@^7.5.4:
72797294
dependencies:
72807295
lru-cache "^6.0.0"
72817296

7297+
semver@^7.6.0:
7298+
version "7.6.0"
7299+
resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d"
7300+
integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==
7301+
dependencies:
7302+
lru-cache "^6.0.0"
7303+
72827304
set-function-length@^1.2.1:
72837305
version "1.2.2"
72847306
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
@@ -7876,7 +7898,12 @@ tslib@2.7.0:
78767898
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.7.0.tgz#d9b40c5c40ab59e8738f297df3087bf1a2690c01"
78777899
integrity sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==
78787900

7879-
tslib@^2.1.0, tslib@^2.4.0, tslib@^2.6.2, tslib@^2.8.0:
7901+
tslib@^2.1.0, tslib@^2.4.0:
7902+
version "2.4.1"
7903+
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e"
7904+
integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==
7905+
7906+
tslib@^2.6.2, tslib@^2.8.0:
78807907
version "2.8.1"
78817908
resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
78827909
integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==

0 commit comments

Comments
 (0)