@scalar/api-client 2.19.3 → 2.20.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +54 -0
- package/dist/style.css +1 -1
- package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts +0 -9
- package/dist/v2/blocks/operation-block/OperationBlock.vue.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/OperationBlock.vue.js +126 -67
- package/dist/v2/blocks/operation-block/components/Header.vue.d.ts +6 -0
- package/dist/v2/blocks/operation-block/components/Header.vue.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/components/Header.vue.js +2 -2
- package/dist/v2/blocks/operation-block/components/Header.vue2.js +25 -24
- package/dist/v2/blocks/operation-block/helpers/build-request-cookie-header.d.ts +1 -1
- package/dist/v2/blocks/operation-block/helpers/build-request-cookie-header.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/helpers/build-request-cookie-header.js +1 -1
- package/dist/v2/blocks/operation-block/helpers/build-request.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/helpers/build-request.js +44 -41
- package/dist/v2/blocks/operation-block/helpers/har-to-fetch-request.d.ts +42 -0
- package/dist/v2/blocks/operation-block/helpers/har-to-fetch-request.d.ts.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/har-to-fetch-request.js +31 -0
- package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.d.ts +66 -0
- package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.d.ts.map +1 -0
- package/dist/v2/blocks/operation-block/helpers/har-to-fetch-response.js +43 -0
- package/dist/v2/blocks/operation-block/helpers/send-request.d.ts +1 -0
- package/dist/v2/blocks/operation-block/helpers/send-request.d.ts.map +1 -1
- package/dist/v2/blocks/operation-block/helpers/send-request.js +40 -38
- package/dist/v2/blocks/request-block/RequestBlock.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/RequestBlock.vue.js +2 -2
- package/dist/v2/blocks/request-block/RequestBlock.vue2.js +34 -33
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts +3 -1
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/components/RequestTableRow.vue.js +28 -28
- package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.d.ts.map +1 -1
- package/dist/v2/blocks/request-block/helpers/create-parameter-handlers.js +31 -22
- package/dist/v2/blocks/request-block/helpers/get-default-headers.js +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts +6 -0
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue.js +2 -2
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBar.vue2.js +24 -23
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.d.ts +2 -3
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.d.ts.map +1 -1
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue.js +2 -2
- package/dist/v2/blocks/scalar-address-bar-block/components/AddressBarHistory.vue2.js +20 -20
- package/dist/v2/components/data-table/DataTableCheckbox.vue.js +2 -2
- package/dist/v2/components/sidebar/Sidebar.vue.d.ts +5 -0
- package/dist/v2/components/sidebar/Sidebar.vue.d.ts.map +1 -1
- package/dist/v2/components/sidebar/Sidebar.vue.js +60 -54
- package/dist/v2/features/app/app-events.d.ts.map +1 -1
- package/dist/v2/features/app/app-events.js +53 -42
- package/dist/v2/features/app/app-state.d.ts.map +1 -1
- package/dist/v2/features/app/app-state.js +72 -72
- package/dist/v2/features/app/components/AppSidebar.vue.d.ts.map +1 -1
- package/dist/v2/features/app/components/AppSidebar.vue.js +1 -1
- package/dist/v2/features/app/components/AppSidebar.vue2.js +84 -76
- package/dist/v2/features/collection/DocumentCollection.vue.d.ts.map +1 -1
- package/dist/v2/features/collection/DocumentCollection.vue.js +82 -43
- package/dist/v2/features/operation/Operation.vue.d.ts.map +1 -1
- package/dist/v2/features/operation/Operation.vue.js +2 -3
- package/dist/v2/features/operation/helpers/combine-params.d.ts +2 -2
- package/dist/v2/features/operation/helpers/combine-params.d.ts.map +1 -1
- package/dist/v2/features/operation/helpers/combine-params.js +11 -10
- package/dist/v2/workspace-events.d.ts.map +1 -1
- package/dist/v2/workspace-events.js +12 -6
- package/dist/views/Request/ResponseSection/ResponseEmpty.vue2.js +1 -1
- package/package.json +11 -11
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { HarRequest } from '@scalar/snippetz';
|
|
2
|
+
type HarToFetchRequestProps = {
|
|
3
|
+
/** The HAR Request object to convert */
|
|
4
|
+
harRequest: HarRequest;
|
|
5
|
+
};
|
|
6
|
+
/**
|
|
7
|
+
* Converts a HAR (HTTP Archive) Request to a Fetch API Request object.
|
|
8
|
+
*
|
|
9
|
+
* This function is the reverse of fetchRequestToHar - it takes a HAR request
|
|
10
|
+
* and converts it into a standard JavaScript Fetch API Request object.
|
|
11
|
+
*
|
|
12
|
+
* The conversion handles:
|
|
13
|
+
* - Request method and URL reconstruction
|
|
14
|
+
* - Headers reconstruction from HAR headers array
|
|
15
|
+
* - Cookies conversion to Cookie header
|
|
16
|
+
* - Form data (params) conversion to FormData or URLSearchParams
|
|
17
|
+
* - Body decoding
|
|
18
|
+
* - Content-Type and other header restoration
|
|
19
|
+
* - Query parameters (already embedded in the URL)
|
|
20
|
+
*
|
|
21
|
+
* Use cases:
|
|
22
|
+
* - Replaying recorded HTTP requests
|
|
23
|
+
* - Creating mock requests from HAR files
|
|
24
|
+
* - Testing with fixtures
|
|
25
|
+
* - Request caching and restoration
|
|
26
|
+
* - Re-executing historical API calls
|
|
27
|
+
*
|
|
28
|
+
* Note: The Fetch API Request object does not support setting the HTTP version,
|
|
29
|
+
* so that information from the HAR is not preserved in the returned Request.
|
|
30
|
+
* Query parameters are expected to be already part of the URL in the HAR.
|
|
31
|
+
*
|
|
32
|
+
* @see https://w3c.github.io/web-performance/specs/HAR/Overview.html
|
|
33
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Request
|
|
34
|
+
*
|
|
35
|
+
* @example
|
|
36
|
+
* const harRequest = { method: 'POST', url: 'https://api.example.com', ... }
|
|
37
|
+
* const request = harToFetchRequest({ harRequest })
|
|
38
|
+
* const response = await fetch(request)
|
|
39
|
+
*/
|
|
40
|
+
export declare const harToFetchRequest: ({ harRequest }: HarToFetchRequestProps) => Request;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=har-to-fetch-request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"har-to-fetch-request.d.ts","sourceRoot":"","sources":["../../../../../src/v2/blocks/operation-block/helpers/har-to-fetch-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAElD,KAAK,sBAAsB,GAAG;IAC5B,wCAAwC;IACxC,UAAU,EAAE,UAAU,CAAA;CACvB,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,iBAAiB,GAAI,gBAAgB,sBAAsB,KAAG,OAS1E,CAAA"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
const l = ({ harRequest: e }) => {
|
|
2
|
+
const n = s(e), o = d(e.postData);
|
|
3
|
+
return new Request(e.url, {
|
|
4
|
+
method: e.method,
|
|
5
|
+
headers: n,
|
|
6
|
+
body: o
|
|
7
|
+
});
|
|
8
|
+
}, s = (e) => {
|
|
9
|
+
const n = new Headers();
|
|
10
|
+
if (e.headers.forEach(({ name: o, value: t }) => {
|
|
11
|
+
n.append(o, t);
|
|
12
|
+
}), e.cookies?.length) {
|
|
13
|
+
const o = e.cookies.map(({ name: t, value: r }) => `${t}=${r}`).join("; ");
|
|
14
|
+
n.append("Cookie", o);
|
|
15
|
+
}
|
|
16
|
+
return n;
|
|
17
|
+
}, d = (e) => {
|
|
18
|
+
if (!e)
|
|
19
|
+
return null;
|
|
20
|
+
const { params: n, text: o, mimeType: t } = e;
|
|
21
|
+
if (n?.length) {
|
|
22
|
+
const c = t?.includes("multipart/form-data") ? new FormData() : new URLSearchParams();
|
|
23
|
+
return n.forEach(({ name: a, value: i }) => {
|
|
24
|
+
c.append(a, i || "");
|
|
25
|
+
}), c;
|
|
26
|
+
}
|
|
27
|
+
return o ? new TextEncoder().encode(o) : null;
|
|
28
|
+
};
|
|
29
|
+
export {
|
|
30
|
+
l as harToFetchRequest
|
|
31
|
+
};
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { HttpMethod } from '@scalar/helpers/http/http-methods';
|
|
2
|
+
import type { HarResponse } from '@scalar/snippetz';
|
|
3
|
+
import type { ResponseInstance } from '../../../../v2/blocks/operation-block/helpers/send-request.js';
|
|
4
|
+
type HarToFetchResponseProps = {
|
|
5
|
+
/** The HAR Response object to convert */
|
|
6
|
+
harResponse: HarResponse;
|
|
7
|
+
/** Optional URL to set on the Response object */
|
|
8
|
+
url?: string;
|
|
9
|
+
/** The HTTP method used for the request */
|
|
10
|
+
method: HttpMethod;
|
|
11
|
+
/** The request path */
|
|
12
|
+
path: string;
|
|
13
|
+
/** Time in ms the request took */
|
|
14
|
+
duration?: number;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Converts a HAR (HTTP Archive) Response back to a ResponseInstance object.
|
|
18
|
+
*
|
|
19
|
+
* This function is the reverse of fetchResponseToHar - it takes a HAR response
|
|
20
|
+
* and converts it back into a ResponseInstance object that includes both the
|
|
21
|
+
* standard Fetch API Response properties and additional metadata.
|
|
22
|
+
*
|
|
23
|
+
* The conversion handles:
|
|
24
|
+
* - Status code and status text restoration
|
|
25
|
+
* - Headers reconstruction from HAR headers array
|
|
26
|
+
* - Body decoding
|
|
27
|
+
* - Content-Type and other header restoration
|
|
28
|
+
* - URL property setting (if provided)
|
|
29
|
+
* - Cookie header detection
|
|
30
|
+
* - Duration tracking
|
|
31
|
+
* - Response size calculation in bytes
|
|
32
|
+
*
|
|
33
|
+
* Body Handling:
|
|
34
|
+
* - Plain text (no encoding): Text-based responses under 1MB from fetchResponseToHar
|
|
35
|
+
* - Base64 encoded: Binary or legacy data (note: new HAR files won't contain binary data)
|
|
36
|
+
* - Empty: Streaming responses, large responses (>1MB), or responses without bodies
|
|
37
|
+
*
|
|
38
|
+
* Use cases:
|
|
39
|
+
* - Replaying recorded HTTP responses
|
|
40
|
+
* - Creating mock responses from HAR files
|
|
41
|
+
* - Testing with fixtures
|
|
42
|
+
* - Response caching and restoration
|
|
43
|
+
*
|
|
44
|
+
* Note: The Fetch API Response object does not support setting the HTTP version,
|
|
45
|
+
* so that information from the HAR is not preserved in the returned Response.
|
|
46
|
+
* The URL property is set using Object.defineProperty since it is read-only
|
|
47
|
+
* in the standard Response constructor.
|
|
48
|
+
*
|
|
49
|
+
* @see https://w3c.github.io/web-performance/specs/HAR/Overview.html
|
|
50
|
+
* @see https://developer.mozilla.org/en-US/docs/Web/API/Response
|
|
51
|
+
*
|
|
52
|
+
* @example
|
|
53
|
+
* const harResponse = { status: 200, statusText: 'OK', ... }
|
|
54
|
+
* const response = harToFetchResponse({
|
|
55
|
+
* harResponse,
|
|
56
|
+
* url: 'https://api.example.com',
|
|
57
|
+
* method: 'GET',
|
|
58
|
+
* path: '/users',
|
|
59
|
+
* duration: 250
|
|
60
|
+
* })
|
|
61
|
+
* console.log(response.url) // 'https://api.example.com'
|
|
62
|
+
* console.log(response.duration) // 250
|
|
63
|
+
*/
|
|
64
|
+
export declare const harToFetchResponse: ({ harResponse, url, method, path, duration, }: HarToFetchResponseProps) => ResponseInstance;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=har-to-fetch-response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"har-to-fetch-response.d.ts","sourceRoot":"","sources":["../../../../../src/v2/blocks/operation-block/helpers/har-to-fetch-response.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAGnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kDAAkD,CAAA;AAExF,KAAK,uBAAuB,GAAG;IAC7B,yCAAyC;IACzC,WAAW,EAAE,WAAW,CAAA;IACxB,iDAAiD;IACjD,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,2CAA2C;IAC3C,MAAM,EAAE,UAAU,CAAA;IAClB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAA;IACZ,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA;AAWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,eAAO,MAAM,kBAAkB,GAAI,+CAMhC,uBAAuB,KAAG,gBAwB5B,CAAA"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { getCookieHeaderKeys as i } from "./get-cookie-header-keys.js";
|
|
2
|
+
const l = ({
|
|
3
|
+
harResponse: t,
|
|
4
|
+
url: e = "",
|
|
5
|
+
method: n,
|
|
6
|
+
path: s,
|
|
7
|
+
duration: r = 0
|
|
8
|
+
}) => {
|
|
9
|
+
const o = b(t), { body: d, data: a, size: c } = x(t), u = i(o);
|
|
10
|
+
return {
|
|
11
|
+
...new Response(d, {
|
|
12
|
+
status: t.status,
|
|
13
|
+
statusText: t.statusText,
|
|
14
|
+
headers: o
|
|
15
|
+
}),
|
|
16
|
+
headers: Object.fromEntries(o.entries()),
|
|
17
|
+
cookieHeaderKeys: u,
|
|
18
|
+
duration: r,
|
|
19
|
+
status: t.status,
|
|
20
|
+
statusText: t.statusText,
|
|
21
|
+
method: n,
|
|
22
|
+
path: s,
|
|
23
|
+
data: a,
|
|
24
|
+
size: c,
|
|
25
|
+
url: e
|
|
26
|
+
};
|
|
27
|
+
}, b = (t) => {
|
|
28
|
+
const e = new Headers();
|
|
29
|
+
return t.headers.forEach(({ name: n, value: s }) => {
|
|
30
|
+
e.append(n, s);
|
|
31
|
+
}), e;
|
|
32
|
+
}, x = (t) => {
|
|
33
|
+
if (!t.content.text)
|
|
34
|
+
return { body: null, data: "", size: 0 };
|
|
35
|
+
const { text: e, encoding: n } = t.content;
|
|
36
|
+
if (n)
|
|
37
|
+
return { body: null, data: e, size: e.length };
|
|
38
|
+
const s = new TextEncoder().encode(e).buffer;
|
|
39
|
+
return { body: s, data: e, size: s.byteLength };
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
l as harToFetchResponse
|
|
43
|
+
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"send-request.d.ts","sourceRoot":"","sources":["../../../../../src/v2/blocks/operation-block/helpers/send-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8DAA8D,CAAA;AAEnG,OAAO,EAAU,KAAK,aAAa,EAAkB,MAAM,eAAe,CAAA;AAE1E,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,sBAAsB,CAAA;AAKrE,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG;IACzD,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,0BAA0B;IAC1B,MAAM,EAAE,UAAU,CAAA;IAClB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,CACE;IACE,wBAAwB;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAA;CACb,GACD;IACE,qDAAqD;IACrD,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAA;CAChD,CACJ,CAAA;AAKH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,GAAU,gDAK/B;IACD,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,eAAe,CAAA;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,OAAO,CACT,aAAa,CAAC;IACZ,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"send-request.d.ts","sourceRoot":"","sources":["../../../../../src/v2/blocks/operation-block/helpers/send-request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAEnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8DAA8D,CAAA;AAEnG,OAAO,EAAU,KAAK,aAAa,EAAkB,MAAM,eAAe,CAAA;AAE1E,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,sBAAsB,CAAA;AAKrE,0DAA0D;AAC1D,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG;IACzD,iEAAiE;IACjE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAA;IAChB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAA;IACd,+BAA+B;IAC/B,UAAU,EAAE,MAAM,CAAA;IAClB,0BAA0B;IAC1B,MAAM,EAAE,UAAU,CAAA;IAClB,uBAAuB;IACvB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,CACE;IACE,wBAAwB;IACxB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;IACnB,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAA;CACb,GACD;IACE,qDAAqD;IACrD,MAAM,EAAE,2BAA2B,CAAC,UAAU,CAAC,CAAA;CAChD,CACJ,CAAA;AAKH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,WAAW,GAAU,gDAK/B;IACD,YAAY,EAAE,OAAO,CAAA;IACrB,SAAS,EAAE,eAAe,CAAA;IAC1B,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,OAAO,EAAE,OAAO,CAAA;CACjB,KAAG,OAAO,CACT,aAAa,CAAC;IACZ,QAAQ,EAAE,gBAAgB,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,gBAAgB,EAAE,QAAQ,CAAA;CAC3B,CAAC,CA0DH,CAAA"}
|
|
@@ -6,47 +6,47 @@ import { decodeBuffer as D } from "./decode-buffer.js";
|
|
|
6
6
|
import { getCookieHeaderKeys as T } from "./get-cookie-header-keys.js";
|
|
7
7
|
const E = [204, 205, 304], v = async ({
|
|
8
8
|
isUsingProxy: t,
|
|
9
|
-
operation:
|
|
10
|
-
request:
|
|
11
|
-
plugins:
|
|
9
|
+
operation: n,
|
|
10
|
+
request: p,
|
|
11
|
+
plugins: r
|
|
12
12
|
}) => {
|
|
13
13
|
try {
|
|
14
|
-
const { request: s } = await f({ request:
|
|
14
|
+
const { request: s } = await f({ request: p }, "beforeRequest", r), l = Date.now(), e = await fetch(s.clone()), a = Date.now(), c = a - l, d = e.headers.get("content-type"), o = x(e.headers, t), u = new URL(e.url), m = u.pathname + u.search, i = e.statusText || S[e.status]?.name || "", h = s.method, R = E.includes(e.status);
|
|
15
15
|
return d?.startsWith("text/event-stream") && e.body ? H({
|
|
16
16
|
response: e,
|
|
17
17
|
modifiedRequest: s,
|
|
18
|
-
operation:
|
|
19
|
-
plugins:
|
|
18
|
+
operation: n,
|
|
19
|
+
plugins: r,
|
|
20
20
|
endTime: a,
|
|
21
21
|
duration: c,
|
|
22
22
|
responseHeaders: o,
|
|
23
|
-
statusText:
|
|
24
|
-
method:
|
|
25
|
-
fullPath:
|
|
26
|
-
}) :
|
|
23
|
+
statusText: i,
|
|
24
|
+
method: h,
|
|
25
|
+
fullPath: m
|
|
26
|
+
}) : g({
|
|
27
27
|
response: e,
|
|
28
28
|
modifiedRequest: s,
|
|
29
|
-
operation:
|
|
30
|
-
plugins:
|
|
29
|
+
operation: n,
|
|
30
|
+
plugins: r,
|
|
31
31
|
endTime: a,
|
|
32
32
|
duration: c,
|
|
33
33
|
responseHeaders: o,
|
|
34
|
-
statusText:
|
|
35
|
-
method:
|
|
36
|
-
fullPath:
|
|
34
|
+
statusText: i,
|
|
35
|
+
method: h,
|
|
36
|
+
fullPath: m,
|
|
37
37
|
contentType: d,
|
|
38
|
-
shouldSkipBody:
|
|
38
|
+
shouldSkipBody: R
|
|
39
39
|
});
|
|
40
40
|
} catch (s) {
|
|
41
41
|
return [b(s, q.REQUEST_FAILED), null];
|
|
42
42
|
}
|
|
43
43
|
}, H = async ({
|
|
44
44
|
response: t,
|
|
45
|
-
modifiedRequest:
|
|
46
|
-
operation:
|
|
47
|
-
plugins:
|
|
45
|
+
modifiedRequest: n,
|
|
46
|
+
operation: p,
|
|
47
|
+
plugins: r,
|
|
48
48
|
endTime: s,
|
|
49
|
-
duration:
|
|
49
|
+
duration: l,
|
|
50
50
|
responseHeaders: e,
|
|
51
51
|
statusText: a,
|
|
52
52
|
method: c,
|
|
@@ -57,31 +57,32 @@ const E = [204, 205, 304], v = async ({
|
|
|
57
57
|
statusText: a,
|
|
58
58
|
headers: t.headers
|
|
59
59
|
});
|
|
60
|
-
await f({ response: o, request:
|
|
60
|
+
await f({ response: o, request: n, operation: p }, "responseReceived", r);
|
|
61
61
|
const u = T(o.headers);
|
|
62
62
|
return [
|
|
63
63
|
null,
|
|
64
64
|
{
|
|
65
65
|
timestamp: s,
|
|
66
|
-
request:
|
|
66
|
+
request: n,
|
|
67
67
|
response: {
|
|
68
68
|
...o,
|
|
69
69
|
headers: e,
|
|
70
70
|
cookieHeaderKeys: u,
|
|
71
71
|
reader: t.body.getReader(),
|
|
72
|
-
duration:
|
|
72
|
+
duration: l,
|
|
73
73
|
method: c,
|
|
74
74
|
path: d
|
|
75
|
-
}
|
|
75
|
+
},
|
|
76
|
+
originalResponse: o.clone()
|
|
76
77
|
}
|
|
77
78
|
];
|
|
78
|
-
},
|
|
79
|
+
}, g = async ({
|
|
79
80
|
response: t,
|
|
80
|
-
modifiedRequest:
|
|
81
|
-
operation:
|
|
82
|
-
plugins:
|
|
81
|
+
modifiedRequest: n,
|
|
82
|
+
operation: p,
|
|
83
|
+
plugins: r,
|
|
83
84
|
endTime: s,
|
|
84
|
-
duration:
|
|
85
|
+
duration: l,
|
|
85
86
|
responseHeaders: e,
|
|
86
87
|
statusText: a,
|
|
87
88
|
method: c,
|
|
@@ -89,29 +90,30 @@ const E = [204, 205, 304], v = async ({
|
|
|
89
90
|
contentType: o,
|
|
90
91
|
shouldSkipBody: u
|
|
91
92
|
}) => {
|
|
92
|
-
const
|
|
93
|
+
const i = await t.clone().arrayBuffer(), R = D(i, o ?? "text/plain;charset=UTF-8"), y = new Response(u ? null : i, {
|
|
93
94
|
status: t.status,
|
|
94
95
|
statusText: a,
|
|
95
96
|
headers: t.headers
|
|
96
97
|
});
|
|
97
|
-
await f({ response:
|
|
98
|
-
const w = T(
|
|
98
|
+
await f({ response: y, request: n, operation: p }, "responseReceived", r);
|
|
99
|
+
const w = T(y.headers);
|
|
99
100
|
return [
|
|
100
101
|
null,
|
|
101
102
|
{
|
|
102
103
|
timestamp: s,
|
|
103
|
-
request:
|
|
104
|
+
request: n,
|
|
104
105
|
response: {
|
|
105
|
-
...
|
|
106
|
+
...y,
|
|
106
107
|
headers: e,
|
|
107
108
|
cookieHeaderKeys: w,
|
|
108
|
-
data:
|
|
109
|
-
size:
|
|
110
|
-
duration:
|
|
109
|
+
data: R,
|
|
110
|
+
size: i.byteLength,
|
|
111
|
+
duration: l,
|
|
111
112
|
method: c,
|
|
112
113
|
status: t.status,
|
|
113
114
|
path: d
|
|
114
|
-
}
|
|
115
|
+
},
|
|
116
|
+
originalResponse: t.clone()
|
|
115
117
|
}
|
|
116
118
|
];
|
|
117
119
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestBlock.vue.d.ts","sourceRoot":"","sources":["../../../../src/v2/blocks/request-block/RequestBlock.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RequestBlock.vue.d.ts","sourceRoot":"","sources":["../../../../src/v2/blocks/request-block/RequestBlock.vue"],"names":[],"mappings":"AAuiBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mCAAmC,CAAA;AAEnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AACpE,OAAO,KAAK,EAEV,QAAQ,EACR,iBAAiB,EAClB,MAAM,gCAAgC,CAAA;AAGvC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2EAA2E,CAAA;AACnH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qEAAqE,CAAA;AACxG,OAAO,KAAK,EACV,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,YAAY,EACb,MAAM,8DAA8D,CAAA;AAKrE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAI3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AAW1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAA;AAWxD,MAAM,MAAM,oBAAoB,GAAG,aAAa,GAAG;IACjD,QAAQ,EAAE,UAAU,GAAG,WAAW,CAAA;CACnC,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,gBAAgB,EAAE,eAAe,CAAC,4BAA4B,CAAC,CAAA;IAC/D,QAAQ,EAAE,QAAQ,CAAA;IAClB,aAAa,EAAE,iBAAiB,EAAE,CAAA;IAClC,WAAW,EAAE,kBAAkB,CAAA;IAC/B,QAAQ,EAAE,iBAAiB,CAAA;IAC3B,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,YAAY,CAAA;IACpB,MAAM,EAAE,UAAU,CAAA;IAClB,SAAS,EAAE,eAAe,CAAA;IAC1B,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,QAAQ,EAAE,MAAM,CAAA;IAChB,oBAAoB,EAAE,eAAe,CAAC,UAAU,CAAC,CAAA;IACjD,eAAe,EAAE,WAAW,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAA;IAC9E,cAAc,EAAE,cAAc,CAAC,WAAW,CAAC,CAAC,yBAAyB,CAAC,CAAA;IACtE,uBAAuB,EAAE,oBAAoB,EAAE,CAAA;IAC/C,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,aAAa,EAAE,oBAAoB,EAAE,CAAA;CACtC,CAAC;;AAmqBF,wBAMG"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import o from "./RequestBlock.vue2.js";
|
|
2
2
|
/* empty css */
|
|
3
3
|
import t from "../../../_virtual/_plugin-vue_export-helper.js";
|
|
4
|
-
const
|
|
4
|
+
const e = /* @__PURE__ */ t(o, [["__scopeId", "data-v-8c6cdddb"]]);
|
|
5
5
|
export {
|
|
6
|
-
|
|
6
|
+
e as default
|
|
7
7
|
};
|
|
@@ -9,8 +9,8 @@ import le from "../../../components/ViewLayout/ViewLayoutSection.vue.js";
|
|
|
9
9
|
import { filterGlobalCookie as ne } from "../operation-block/helpers/filter-global-cookies.js";
|
|
10
10
|
import { getExample as oe } from "../operation-block/helpers/get-example.js";
|
|
11
11
|
import { getResolvedUrl as re } from "../operation-block/helpers/get-resolved-url.js";
|
|
12
|
-
import
|
|
13
|
-
import
|
|
12
|
+
import ie from "./components/RequestBody.vue.js";
|
|
13
|
+
import ue from "./components/RequestCodeSnippet.vue.js";
|
|
14
14
|
import k from "./components/RequestParams.vue.js";
|
|
15
15
|
import { createParameterHandlers as S } from "./helpers/create-parameter-handlers.js";
|
|
16
16
|
import { getDefaultHeaders as se } from "./helpers/get-default-headers.js";
|
|
@@ -60,7 +60,8 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
60
60
|
description: t.description,
|
|
61
61
|
schema: me(t),
|
|
62
62
|
isRequired: t.required,
|
|
63
|
-
isDisabled: de(t, a)
|
|
63
|
+
isDisabled: de(t, a),
|
|
64
|
+
originalParameter: t
|
|
64
65
|
};
|
|
65
66
|
}
|
|
66
67
|
)
|
|
@@ -112,10 +113,10 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
112
113
|
isReadonly: !0,
|
|
113
114
|
isDisabled: a[l.name.toLowerCase()] ?? !1
|
|
114
115
|
})) ?? [];
|
|
115
|
-
}),
|
|
116
|
+
}), H = n(() => [
|
|
116
117
|
...P.value ?? [],
|
|
117
118
|
...o.value.cookie ?? []
|
|
118
|
-
]),
|
|
119
|
+
]), i = z("All"), T = [
|
|
119
120
|
"Auth",
|
|
120
121
|
"Variables",
|
|
121
122
|
"Cookies",
|
|
@@ -130,20 +131,20 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
130
131
|
Headers: s(),
|
|
131
132
|
Query: s(),
|
|
132
133
|
Body: s()
|
|
133
|
-
},
|
|
134
|
+
}, O = n(() => {
|
|
134
135
|
const t = /* @__PURE__ */ new Set(["All", ...T]);
|
|
135
|
-
return o.value.path?.length || t.delete("Variables"), w(e.method) || t.delete("Body"),
|
|
136
|
-
}),
|
|
136
|
+
return o.value.path?.length || t.delete("Variables"), w(e.method) || t.delete("Body"), U.value && t.delete("Auth"), [...t];
|
|
137
|
+
}), u = n(
|
|
137
138
|
() => Object.fromEntries(
|
|
138
|
-
|
|
139
|
+
O.value.map((t) => [t, $[t]])
|
|
139
140
|
)
|
|
140
|
-
),
|
|
141
|
+
), U = n(
|
|
141
142
|
() => e.layout === "modal" && !e.operation.security && !Object.keys(e.securitySchemes ?? {}).length
|
|
142
|
-
), L = n(() => e.operation.summary ? e.operation.summary : e.path.replace(ee.PROTOCOL, "") || "Request Name"), h = (t) =>
|
|
143
|
+
), L = n(() => e.operation.summary ? e.operation.summary : e.path.replace(ee.PROTOCOL, "") || "Request Name"), h = (t) => i.value === "All" || i.value === t;
|
|
143
144
|
X(
|
|
144
145
|
() => e.method,
|
|
145
146
|
(t) => {
|
|
146
|
-
|
|
147
|
+
i.value === "Body" && !w(t) && (i.value = "All");
|
|
147
148
|
}
|
|
148
149
|
);
|
|
149
150
|
const F = (t) => {
|
|
@@ -157,7 +158,7 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
157
158
|
context: o.value.path ?? []
|
|
158
159
|
}),
|
|
159
160
|
cookie: S("cookie", e.eventBus, r.value, {
|
|
160
|
-
context:
|
|
161
|
+
context: H.value ?? [],
|
|
161
162
|
globalParameters: P.value.length
|
|
162
163
|
}),
|
|
163
164
|
header: S("header", e.eventBus, r.value, {
|
|
@@ -202,7 +203,7 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
202
203
|
debounceKey: l
|
|
203
204
|
}
|
|
204
205
|
);
|
|
205
|
-
},
|
|
206
|
+
}, p = s();
|
|
206
207
|
return (t, a) => (d(), C(le, {
|
|
207
208
|
"aria-label": `Request: ${e.operation.summary}`
|
|
208
209
|
}, {
|
|
@@ -211,11 +212,11 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
211
212
|
e.layout !== "modal" ? (d(), x("label", {
|
|
212
213
|
key: 0,
|
|
213
214
|
class: "pointer-events-auto absolute top-0 left-0 h-full w-full cursor-text opacity-0",
|
|
214
|
-
for: v(
|
|
215
|
+
for: v(p)
|
|
215
216
|
}, null, 8, ye)) : E("", !0),
|
|
216
217
|
e.layout !== "modal" ? (d(), x("input", {
|
|
217
218
|
key: 1,
|
|
218
|
-
id: v(
|
|
219
|
+
id: v(p),
|
|
219
220
|
class: "text-c-1 group-hover-input pointer-events-auto relative z-10 -ml-0.5 h-8 w-full rounded pl-1.25 has-[:focus-visible]:outline md:-ml-1.25",
|
|
220
221
|
placeholder: L.value,
|
|
221
222
|
value: e.operation.summary,
|
|
@@ -223,20 +224,20 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
223
224
|
}, null, 40, he)) : (d(), x("span", fe, Z(e.operation.summary), 1))
|
|
224
225
|
]),
|
|
225
226
|
m(ae, {
|
|
226
|
-
modelValue:
|
|
227
|
-
"onUpdate:modelValue": a[0] || (a[0] = (l) =>
|
|
228
|
-
filterIds:
|
|
229
|
-
filters:
|
|
227
|
+
modelValue: i.value,
|
|
228
|
+
"onUpdate:modelValue": a[0] || (a[0] = (l) => i.value = l),
|
|
229
|
+
filterIds: u.value,
|
|
230
|
+
filters: O.value
|
|
230
231
|
}, null, 8, ["modelValue", "filterIds", "filters"])
|
|
231
232
|
]),
|
|
232
233
|
default: q(() => [
|
|
233
234
|
K("div", {
|
|
234
|
-
id:
|
|
235
|
+
id: u.value.All,
|
|
235
236
|
class: "request-section-content custom-scroll relative flex flex-1 flex-col",
|
|
236
|
-
role:
|
|
237
|
+
role: i.value === "All" ? "tabpanel" : "none"
|
|
237
238
|
}, [
|
|
238
239
|
c(m(v(ce), {
|
|
239
|
-
id:
|
|
240
|
+
id: u.value.Auth,
|
|
240
241
|
environment: e.environment,
|
|
241
242
|
eventBus: e.eventBus,
|
|
242
243
|
meta: e.authMeta,
|
|
@@ -248,10 +249,10 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
248
249
|
server: e.server,
|
|
249
250
|
title: "Authentication"
|
|
250
251
|
}, null, 8, ["id", "environment", "eventBus", "meta", "proxyUrl", "securityRequirements", "securitySchemes", "selectedSecurity", "selectedSecuritySchemes", "server"]), [
|
|
251
|
-
[y, h("Auth") && !
|
|
252
|
+
[y, h("Auth") && !U.value]
|
|
252
253
|
]),
|
|
253
254
|
c(m(k, B({
|
|
254
|
-
id:
|
|
255
|
+
id: u.value.Variables,
|
|
255
256
|
environment: e.environment,
|
|
256
257
|
eventBus: e.eventBus,
|
|
257
258
|
exampleKey: e.exampleKey,
|
|
@@ -262,18 +263,18 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
262
263
|
[y, h("Variables") && o.value.path?.length]
|
|
263
264
|
]),
|
|
264
265
|
c(m(k, B({
|
|
265
|
-
id:
|
|
266
|
+
id: u.value.Cookies,
|
|
266
267
|
environment: e.environment,
|
|
267
268
|
eventBus: e.eventBus,
|
|
268
269
|
exampleKey: e.exampleKey,
|
|
269
|
-
rows:
|
|
270
|
+
rows: H.value ?? [],
|
|
270
271
|
showAddRowPlaceholder: !0,
|
|
271
272
|
title: "Cookies"
|
|
272
273
|
}, b(f.value.cookie)), null, 16, ["id", "environment", "eventBus", "exampleKey", "rows"]), [
|
|
273
274
|
[y, h("Cookies")]
|
|
274
275
|
]),
|
|
275
276
|
c(m(k, B({
|
|
276
|
-
id:
|
|
277
|
+
id: u.value.Headers,
|
|
277
278
|
environment: e.environment,
|
|
278
279
|
eventBus: e.eventBus,
|
|
279
280
|
exampleKey: e.exampleKey,
|
|
@@ -283,7 +284,7 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
283
284
|
[y, h("Headers")]
|
|
284
285
|
]),
|
|
285
286
|
c(m(k, B({
|
|
286
|
-
id:
|
|
287
|
+
id: u.value.Query,
|
|
287
288
|
environment: e.environment,
|
|
288
289
|
eventBus: e.eventBus,
|
|
289
290
|
exampleKey: e.exampleKey,
|
|
@@ -292,8 +293,8 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
292
293
|
}, b(f.value.query)), null, 16, ["id", "environment", "eventBus", "exampleKey", "rows"]), [
|
|
293
294
|
[y, h("Query")]
|
|
294
295
|
]),
|
|
295
|
-
c(m(
|
|
296
|
-
id:
|
|
296
|
+
c(m(ie, {
|
|
297
|
+
id: u.value.Body,
|
|
297
298
|
environment: e.environment,
|
|
298
299
|
exampleKey: e.exampleKey,
|
|
299
300
|
requestBody: v(R)(e.operation.requestBody),
|
|
@@ -315,7 +316,7 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
315
316
|
_: 2
|
|
316
317
|
}, 1024))), 128)),
|
|
317
318
|
a[1] || (a[1] = K("div", { class: "flex flex-grow" }, null, -1)),
|
|
318
|
-
c(m(
|
|
319
|
+
c(m(ue, {
|
|
319
320
|
clientOptions: e.clientOptions,
|
|
320
321
|
eventBus: e.eventBus,
|
|
321
322
|
globalCookies: e.globalCookies,
|
|
@@ -328,7 +329,7 @@ const ve = { class: "group pointer-events-none flex flex-1 items-center gap-1 lg
|
|
|
328
329
|
selectedContentType: v(R)(e.operation.requestBody)?.["x-scalar-selected-content-type"]?.[e.exampleKey],
|
|
329
330
|
selectedServer: e.server ?? void 0
|
|
330
331
|
}, null, 8, ["clientOptions", "eventBus", "globalCookies", "method", "operation", "path", "securitySchemes", "selectedClient", "selectedContentType", "selectedServer"]), [
|
|
331
|
-
[y,
|
|
332
|
+
[y, i.value === "All"]
|
|
332
333
|
])
|
|
333
334
|
], 8, xe)
|
|
334
335
|
]),
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { XScalarEnvironment } from '@scalar/workspace-store/schemas/extensions/document/x-scalar-environments';
|
|
2
|
-
import type { SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document';
|
|
2
|
+
import type { ParameterObject, SchemaObject } from '@scalar/workspace-store/schemas/v3.1/strict/openapi-document';
|
|
3
3
|
export type TableRow = {
|
|
4
4
|
/** The parameter or field name/key */
|
|
5
5
|
name: string;
|
|
@@ -22,6 +22,8 @@ export type TableRow = {
|
|
|
22
22
|
isReadonly?: boolean;
|
|
23
23
|
/** Whether the parameter is overridden later on */
|
|
24
24
|
isOverridden?: boolean;
|
|
25
|
+
/** Track the original parameter so we can update it */
|
|
26
|
+
originalParameter?: ParameterObject;
|
|
25
27
|
};
|
|
26
28
|
type __VLS_Props = {
|
|
27
29
|
data: TableRow;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RequestTableRow.vue.d.ts","sourceRoot":"","sources":["../../../../../src/v2/blocks/request-block/components/RequestTableRow.vue"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RequestTableRow.vue.d.ts","sourceRoot":"","sources":["../../../../../src/v2/blocks/request-block/components/RequestTableRow.vue"],"names":[],"mappings":"AAyRA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2EAA2E,CAAA;AACnH,OAAO,KAAK,EACV,eAAe,EACf,YAAY,EACb,MAAM,8DAA8D,CAAA;AAcrE,MAAM,MAAM,QAAQ,GAAG;IACrB,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAA;IACZ,0DAA0D;IAC1D,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAAA;IAC3B,6CAA6C;IAC7C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,iDAAiD;IACjD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,wEAAwE;IACxE,MAAM,CAAC,EAAE,YAAY,CAAA;IACrB,wCAAwC;IACxC,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,mDAAmD;IACnD,YAAY,CAAC,EAAE,OAAO,CAAA;IACtB,uDAAuD;IACvD,iBAAiB,CAAC,EAAE,eAAe,CAAA;CACpC,CAAA;AAED,KAAK,WAAW,GAAG;IACjB,IAAI,EAAE,QAAQ,CAAA;IACd,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,kBAAkB,CAAA;IAC/B,gBAAgB,CAAC,EAAE,OAAO,CAAA;CAC3B,CAAC;;;;;;;cAYmB,MAAM;eAAS,MAAM,GAAG,IAAI;oBAAc,OAAO;;;;;;;;cAAjD,MAAM;eAAS,MAAM,GAAG,IAAI;oBAAc,OAAO;;;AAghBtE,wBAOG"}
|