zudoku 0.1.1-dev.44 → 0.1.1-dev.46
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/dist/lib/components/Select.d.ts +13 -0
- package/dist/lib/components/Select.js +27 -0
- package/dist/lib/components/Select.js.map +1 -0
- package/dist/lib/plugins/api-key/CreateApiKey.js +37 -0
- package/dist/lib/plugins/api-key/CreateApiKey.js.map +1 -0
- package/dist/lib/plugins/api-key/SettingsApiKeys.js +1 -1
- package/dist/lib/plugins/api-key/SettingsApiKeys.js.map +1 -1
- package/dist/lib/plugins/api-key/index.d.ts +1 -1
- package/dist/lib/plugins/api-key/index.js +1 -1
- package/dist/lib/plugins/api-key/index.js.map +1 -1
- package/dist/lib/plugins/openapi/OperationListItem.js +2 -22
- package/dist/lib/plugins/openapi/OperationListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/ParameterListItem.js +1 -1
- package/dist/lib/plugins/openapi/ParameterListItem.js.map +1 -1
- package/dist/lib/plugins/openapi/SchemaListView.d.ts +7 -0
- package/dist/lib/plugins/openapi/SchemaListView.js +43 -0
- package/dist/lib/plugins/openapi/SchemaListView.js.map +1 -0
- package/lib/{Spinner-Zry2k_pD.js → Spinner-DEkC7JSn.js} +2090 -1986
- package/lib/zudoku.components.js +507 -608
- package/lib/zudoku.plugins.js +15051 -12558
- package/package.json +3 -2
- package/src/app/main.css +1 -0
- package/src/lib/components/Select.tsx +157 -0
- package/src/lib/plugins/api-key/{CreateApiKeys.tsx → CreateApiKey.tsx} +43 -27
- package/src/lib/plugins/api-key/SettingsApiKeys.tsx +10 -9
- package/src/lib/plugins/api-key/index.tsx +2 -2
- package/src/lib/plugins/openapi/OperationListItem.tsx +7 -121
- package/src/lib/plugins/openapi/ParameterListItem.tsx +1 -1
- package/src/lib/plugins/openapi/SchemaListView.tsx +229 -0
- package/dist/lib/plugins/api-key/CreateApiKeys.js +0 -37
- package/dist/lib/plugins/api-key/CreateApiKeys.js.map +0 -1
- /package/dist/lib/plugins/api-key/{CreateApiKeys.d.ts → CreateApiKey.d.ts} +0 -0
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
3
|
+
declare const Select: React.FC<SelectPrimitive.SelectProps>;
|
|
4
|
+
declare const SelectGroup: React.ForwardRefExoticComponent<SelectPrimitive.SelectGroupProps & React.RefAttributes<HTMLDivElement>>;
|
|
5
|
+
declare const SelectValue: React.ForwardRefExoticComponent<SelectPrimitive.SelectValueProps & React.RefAttributes<HTMLSpanElement>>;
|
|
6
|
+
declare const SelectTrigger: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectTriggerProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
7
|
+
declare const SelectScrollUpButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollUpButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
8
|
+
declare const SelectScrollDownButton: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectScrollDownButtonProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
9
|
+
declare const SelectContent: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectContentProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
10
|
+
declare const SelectLabel: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectLabelProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
11
|
+
declare const SelectItem: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectItemProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
12
|
+
declare const SelectSeparator: React.ForwardRefExoticComponent<Omit<SelectPrimitive.SelectSeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
13
|
+
export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, };
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
4
|
+
import { Check, ChevronDown, ChevronUp } from "lucide-react";
|
|
5
|
+
import { cn } from "../util/cn.js";
|
|
6
|
+
const Select = SelectPrimitive.Root;
|
|
7
|
+
const SelectGroup = SelectPrimitive.Group;
|
|
8
|
+
const SelectValue = SelectPrimitive.Value;
|
|
9
|
+
const SelectTrigger = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(SelectPrimitive.Trigger, { ref: ref, className: cn("flex h-10 w-full items-center justify-between rounded-md border border-input bg-background px-3 py-2 text-sm ring-offset-background placeholder:text-muted-foreground focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 [&>span]:line-clamp-1", className), ...props, children: [children, _jsx(SelectPrimitive.Icon, { asChild: true, children: _jsx(ChevronDown, { className: "h-4 w-4 opacity-50" }) })] })));
|
|
10
|
+
SelectTrigger.displayName = SelectPrimitive.Trigger.displayName;
|
|
11
|
+
const SelectScrollUpButton = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.ScrollUpButton, { ref: ref, className: cn("flex cursor-default items-center justify-center py-1", className), ...props, children: _jsx(ChevronUp, { className: "h-4 w-4" }) })));
|
|
12
|
+
SelectScrollUpButton.displayName = SelectPrimitive.ScrollUpButton.displayName;
|
|
13
|
+
const SelectScrollDownButton = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.ScrollDownButton, { ref: ref, className: cn("flex cursor-default items-center justify-center py-1", className), ...props, children: _jsx(ChevronDown, { className: "h-4 w-4" }) })));
|
|
14
|
+
SelectScrollDownButton.displayName =
|
|
15
|
+
SelectPrimitive.ScrollDownButton.displayName;
|
|
16
|
+
const SelectContent = React.forwardRef(({ className, children, position = "popper", ...props }, ref) => (_jsx(SelectPrimitive.Portal, { children: _jsxs(SelectPrimitive.Content, { ref: ref, className: cn("relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border bg-popover text-popover-foreground shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2", position === "popper" &&
|
|
17
|
+
"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", className), position: position, ...props, children: [_jsx(SelectScrollUpButton, {}), _jsx(SelectPrimitive.Viewport, { className: cn("p-1", position === "popper" &&
|
|
18
|
+
"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"), children: children }), _jsx(SelectScrollDownButton, {})] }) })));
|
|
19
|
+
SelectContent.displayName = SelectPrimitive.Content.displayName;
|
|
20
|
+
const SelectLabel = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.Label, { ref: ref, className: cn("py-1.5 pl-8 pr-2 text-sm font-semibold", className), ...props })));
|
|
21
|
+
SelectLabel.displayName = SelectPrimitive.Label.displayName;
|
|
22
|
+
const SelectItem = React.forwardRef(({ className, children, ...props }, ref) => (_jsxs(SelectPrimitive.Item, { ref: ref, className: cn("relative flex w-full cursor-default select-none items-center rounded-sm py-1.5 pl-8 pr-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className), ...props, children: [_jsx("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: _jsx(SelectPrimitive.ItemIndicator, { children: _jsx(Check, { className: "h-4 w-4" }) }) }), _jsx(SelectPrimitive.ItemText, { children: children })] })));
|
|
23
|
+
SelectItem.displayName = SelectPrimitive.Item.displayName;
|
|
24
|
+
const SelectSeparator = React.forwardRef(({ className, ...props }, ref) => (_jsx(SelectPrimitive.Separator, { ref: ref, className: cn("-mx-1 my-1 h-px bg-muted", className), ...props })));
|
|
25
|
+
SelectSeparator.displayName = SelectPrimitive.Separator.displayName;
|
|
26
|
+
export { Select, SelectGroup, SelectValue, SelectTrigger, SelectContent, SelectLabel, SelectItem, SelectSeparator, SelectScrollUpButton, SelectScrollDownButton, };
|
|
27
|
+
//# sourceMappingURL=Select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.js","sourceRoot":"","sources":["../../../src/lib/components/Select.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useDevPortal } from "../../components/context/DevPortalProvider.js";
|
|
3
|
+
import { useMutation } from "@tanstack/react-query";
|
|
4
|
+
import { Button } from "../../ui/Button.js";
|
|
5
|
+
import { Input } from "../../components/Input.js";
|
|
6
|
+
import { Link, useNavigate } from "react-router-dom";
|
|
7
|
+
import { useForm } from "react-hook-form";
|
|
8
|
+
import { Select, SelectContent, SelectGroup, SelectItem, SelectTrigger, SelectValue, } from "../../components/Select.js";
|
|
9
|
+
export const CreateApiKey = ({ options, service, }) => {
|
|
10
|
+
const context = useDevPortal();
|
|
11
|
+
const navigate = useNavigate();
|
|
12
|
+
const form = useForm({
|
|
13
|
+
defaultValues: {
|
|
14
|
+
expiresOn: "30",
|
|
15
|
+
},
|
|
16
|
+
});
|
|
17
|
+
const createKeyMutation = useMutation({
|
|
18
|
+
mutationFn: ({ description, expiresOn }) => {
|
|
19
|
+
if (!service.createKey) {
|
|
20
|
+
throw new Error("deleteKey not implemented");
|
|
21
|
+
}
|
|
22
|
+
const expiresOnDate = expiresOn !== "never" ? addDaysToDate(Number(expiresOn)) : undefined;
|
|
23
|
+
return service.createKey({ description: description, expiresOn: expiresOnDate }, context);
|
|
24
|
+
},
|
|
25
|
+
onSuccess: () => navigate("/settings/api-keys/"),
|
|
26
|
+
});
|
|
27
|
+
if (!service.createKey) {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
return (_jsxs("div", { className: "max-w-screen-lg pt-[--padding-content-top] pb-[--padding-content-bottom]", children: [_jsx("div", { className: "flex justify-between mb-4 border-b border-border pb-1", children: _jsx("h1", { className: "font-medium text-2xl", children: "New API Key" }) }), _jsx("form", { onSubmit: form.handleSubmit((data) => createKeyMutation.mutate(data)), children: _jsxs("div", { className: "flex gap-2 flex-col", children: ["Note", _jsx(Input, { ...form.register("description") }), "Expiration", _jsxs(Select, { onValueChange: (value) => form.setValue("expiresOn", value), defaultValue: form.getValues("expiresOn"), children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, {}) }), _jsx(SelectContent, { children: _jsxs(SelectGroup, { children: [[7, 30, 60, 90].map((option) => (_jsxs(SelectItem, { value: String(option), children: [option, " days"] }, option))), _jsx(SelectItem, { value: "never", children: "Never" })] }) })] }), _jsxs("div", { className: "flex gap-2", children: [_jsx(Button, { children: "Generate Key" }), _jsx(Button, { variant: "outline", asChild: true, children: _jsx(Link, { to: "/settings/api-keys/", children: "Cancel" }) })] })] }) })] }));
|
|
31
|
+
};
|
|
32
|
+
const addDaysToDate = (days) => {
|
|
33
|
+
const date = new Date();
|
|
34
|
+
date.setDate(date.getDate() + days);
|
|
35
|
+
return date.toISOString();
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=CreateApiKey.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateApiKey.js","sourceRoot":"","sources":["../../../../src/lib/plugins/api-key/CreateApiKey.tsx"],"names":[],"mappings":"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"}
|
|
@@ -24,7 +24,7 @@ export const SettingsApiKeys = ({ options, service, }) => {
|
|
|
24
24
|
void queryClient.invalidateQueries({ queryKey: ["api-keys"] });
|
|
25
25
|
},
|
|
26
26
|
});
|
|
27
|
-
return (_jsxs("div", { className: "max-w-screen-lg pt-[--padding-content-top] pb-[--padding-content-bottom]", children: [_jsxs("div", { className: "flex justify-between mb-4 border-b border-border pb-
|
|
27
|
+
return (_jsxs("div", { className: "max-w-screen-lg pt-[--padding-content-top] pb-[--padding-content-bottom]", children: [_jsxs("div", { className: "flex justify-between mb-4 border-b border-border pb-3", children: [_jsx("h1", { className: "font-medium text-2xl", children: "API Keys" }), service.createKey && (_jsx(Button, { asChild: true, children: _jsx(Link, { to: "/settings/api-keys/new", children: "Create API Key" }) }))] }), _jsx(Card, { children: _jsx("ul", { className: "grid grid-cols-[min-content_1fr_min-content] ", children: data?.map((key) => (_jsxs("li", { className: "border-b border-border p-5 grid grid-cols-subgrid col-span-full gap-2 items-center", children: [_jsxs("div", { className: "flex flex-col gap-1 text-sm", children: [key.description ?? key.id, key.createdOn && (_jsxs("div", { className: "text-muted-foreground", children: ["Created on ", new Date(key.createdOn).toLocaleString()] })), key.expiresOn && (_jsxs("div", { className: "text-muted-foreground", children: ["Expires on ", new Date(key.expiresOn).toLocaleString()] }))] }), _jsx("div", { className: "items-center flex justify-center", children: _jsx(RevealApiKey, { apiKey: key.key }) }), _jsxs("div", { className: "flex gap-2", children: [service.rollKey && (_jsx(Button, { size: "icon", children: _jsx(RotateCwIcon, { size: 16 }) })), service.deleteKey && (_jsx(Button, { variant: "ghost", size: "icon", onClick: () => {
|
|
28
28
|
if (!confirm("Do you want to delete this key?")) {
|
|
29
29
|
return;
|
|
30
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsApiKeys.js","sourceRoot":"","sources":["../../../../src/lib/plugins/api-key/SettingsApiKeys.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAE7E,OAAO,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,OAAO,EACP,OAAO,GAIR,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC;QAChC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QACvC,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,WAAW,CAAC;QACpC,UAAU,EAAE,CAAC,EAAU,EAAE,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,OAAO,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CACL,eAAK,SAAS,EAAC,0EAA0E,aACvF,eAAK,SAAS,EAAC,uDAAuD,aACpE,aAAI,SAAS,EAAC,sBAAsB,yBAAc,EACjD,OAAO,CAAC,SAAS,IAAI,CACpB,KAAC,MAAM,IAAC,OAAO,kBACb,KAAC,IAAI,IAAC,EAAE,EAAC,wBAAwB,+BAAsB,GAChD,CACV,IACG,EAEN,KAAC,IAAI,cACH,aAAI,SAAS,EAAC,+CAA+C,YAC1D,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAClB,cACE,SAAS,EAAC,oFAAoF,aAG9F,eAAK,SAAS,EAAC,6BAA6B,aACzC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,EAAE,EACzB,GAAG,CAAC,SAAS,
|
|
1
|
+
{"version":3,"file":"SettingsApiKeys.js","sourceRoot":"","sources":["../../../../src/lib/plugins/api-key/SettingsApiKeys.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,+CAA+C,CAAC;AAE7E,OAAO,EACL,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC5E,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEjC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,EAC9B,OAAO,EACP,OAAO,GAIR,EAAE,EAAE;IACH,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC;QAChC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;QACvC,QAAQ,EAAE,CAAC,UAAU,CAAC;KACvB,CAAC,CAAC;IAEH,MAAM,iBAAiB,GAAG,WAAW,CAAC;QACpC,UAAU,EAAE,CAAC,EAAU,EAAE,EAAE;YACzB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;gBACvB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC/C,CAAC;YAED,OAAO,OAAO,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QACxC,CAAC;QACD,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,WAAW,CAAC,iBAAiB,CAAC,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC;KACF,CAAC,CAAC;IAEH,OAAO,CACL,eAAK,SAAS,EAAC,0EAA0E,aACvF,eAAK,SAAS,EAAC,uDAAuD,aACpE,aAAI,SAAS,EAAC,sBAAsB,yBAAc,EACjD,OAAO,CAAC,SAAS,IAAI,CACpB,KAAC,MAAM,IAAC,OAAO,kBACb,KAAC,IAAI,IAAC,EAAE,EAAC,wBAAwB,+BAAsB,GAChD,CACV,IACG,EAEN,KAAC,IAAI,cACH,aAAI,SAAS,EAAC,+CAA+C,YAC1D,IAAI,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAClB,cACE,SAAS,EAAC,oFAAoF,aAG9F,eAAK,SAAS,EAAC,6BAA6B,aACzC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC,EAAE,EACzB,GAAG,CAAC,SAAS,IAAI,CAChB,eAAK,SAAS,EAAC,uBAAuB,4BACxB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,IAChD,CACP,EACA,GAAG,CAAC,SAAS,IAAI,CAChB,eAAK,SAAS,EAAC,uBAAuB,4BACxB,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,cAAc,EAAE,IAChD,CACP,IACG,EACN,cAAK,SAAS,EAAC,kCAAkC,YAC/C,KAAC,YAAY,IAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAI,GAC7B,EACN,eAAK,SAAS,EAAC,YAAY,aACxB,OAAO,CAAC,OAAO,IAAI,CAClB,KAAC,MAAM,IAAC,IAAI,EAAC,MAAM,YACjB,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,GAAI,GACnB,CACV,EACA,OAAO,CAAC,SAAS,IAAI,CACpB,KAAC,MAAM,IACL,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,MAAM,EACX,OAAO,EAAE,GAAG,EAAE;4CACZ,IAAI,CAAC,OAAO,CAAC,iCAAiC,CAAC,EAAE,CAAC;gDAChD,OAAO;4CACT,CAAC;4CAED,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wCACnC,CAAC,EACD,QAAQ,EAAE,iBAAiB,CAAC,SAAS,YAErC,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,GAAI,GAChB,CACV,IACG,KAxCD,GAAG,CAAC,EAAE,CAyCR,CACN,CAAC,GACC,GACA,IACH,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,EAAE,MAAM,EAAsB,EAAE,EAAE;IACtD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEhD,OAAO,CACL,eAAK,SAAS,EAAC,iCAAiC,aAC9C,eAAM,SAAS,EAAC,yEAAyE,YACtF,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GACzC,EACP,KAAC,MAAM,IACL,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,EAC3C,IAAI,EAAC,MAAM,YAEV,QAAQ,CAAC,CAAC,CAAC,KAAC,UAAU,IAAC,IAAI,EAAE,EAAE,GAAI,CAAC,CAAC,CAAC,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,GAAI,GACrD,IACL,CACP,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -12,7 +12,7 @@ export type ApiKeyService = {
|
|
|
12
12
|
getUsage?: (apiKeys: string[], context: DevPortalContext) => Promise<void>;
|
|
13
13
|
createKey?: (apiKey: {
|
|
14
14
|
description: string;
|
|
15
|
-
|
|
15
|
+
expiresOn?: string;
|
|
16
16
|
}, context: DevPortalContext) => Promise<void>;
|
|
17
17
|
};
|
|
18
18
|
export type GetApiKeysOptions = ApiKeyService | {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { SettingsApiKeys } from "./SettingsApiKeys.js";
|
|
3
|
-
import { CreateApiKey } from "./
|
|
3
|
+
import { CreateApiKey } from "./CreateApiKey.js";
|
|
4
4
|
const DEFAULT_API_KEY_ENDPOINT = "https://zudoku-rewiringamerica-main-ef9c9c0.d2.zuplo.dev";
|
|
5
5
|
const createDefaultHandler = (endpoint) => {
|
|
6
6
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/plugins/api-key/index.tsx"],"names":[],"mappings":";AAKA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/plugins/api-key/index.tsx"],"names":[],"mappings":"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"}
|
|
@@ -6,33 +6,13 @@ import { OperationsFragment } from "./OperationList.js";
|
|
|
6
6
|
import { ParameterList } from "./ParameterList.js";
|
|
7
7
|
import { Sidecar } from "./Sidecar.js";
|
|
8
8
|
import { useFragment } from "./graphql/index.js";
|
|
9
|
-
import { useState } from "react";
|
|
10
|
-
import { cn } from "../../util/cn.js";
|
|
11
9
|
import { Tabs, TabsContent, TabsList, TabsTrigger } from "../../ui/Tabs.js";
|
|
10
|
+
import { SchemaListView } from "./SchemaListView.js";
|
|
12
11
|
export const PARAM_GROUPS = ["path", "query", "header", "cookie"];
|
|
13
12
|
export const OperationListItem = ({ operationFragment, }) => {
|
|
14
13
|
const operation = useFragment(OperationsFragment, operationFragment);
|
|
15
14
|
const groupedParameters = groupBy(operation?.parameters ?? [], "in");
|
|
16
15
|
const first = operation.responses.find((re) => re.statusCode === "200");
|
|
17
|
-
return (_jsxs("div", { className: "grid grid-cols-2 gap-8 items-start border-b-2 mb-16 pb-16 border-border", children: [_jsxs("div", { className: ProseClasses, children: [_jsx(Heading, { level: 2, className: "mt-0", id: operation.slug, registerSidebarAnchor: true, children: operation.summary }), operation.description && _jsx(Markdown, { content: operation.description }), operation.parameters && operation.parameters.length > 0 && (_jsx("div", { className: "mt-4", children: PARAM_GROUPS.flatMap((group) => groupedParameters?.[group]?.length ? (_jsx(ParameterList, { id: operation.slug, groupedParameters: groupedParameters, group: group }, group)) : ([])) })), _jsx(Heading, { level: 3, className: "capitalize", children: "Responses" }), _jsxs(Tabs, { defaultValue: `${first?.statusCode}${first?.description}`, children: [_jsx(TabsList, { children: operation.responses.map((response) => (
|
|
18
|
-
};
|
|
19
|
-
const ViewSchema = ({ name, schema, level = 0, collapsible = false, }) => {
|
|
20
|
-
const [open, setOpen] = useState(!collapsible);
|
|
21
|
-
const properties = Object.entries(schema.properties ?? {});
|
|
22
|
-
const additionalProperties = typeof schema.additionalProperties === "object"
|
|
23
|
-
? Object.entries(schema.additionalProperties)
|
|
24
|
-
: [];
|
|
25
|
-
return (_jsxs("div", { className: cn("not-prose", level > 0 && "border border-border rounded text-sm"), onClick: collapsible
|
|
26
|
-
? () => {
|
|
27
|
-
setOpen((open) => !open);
|
|
28
|
-
}
|
|
29
|
-
: undefined, children: [(schema.title ?? name) && (_jsx("div", { className: "ml-2 my-1 font-bold", children: schema.title ?? name })), level === 0 && _jsx("p", { children: "schema.description" }), _jsx("ul", { children: open &&
|
|
30
|
-
properties
|
|
31
|
-
.concat(additionalProperties)
|
|
32
|
-
.map(([propertyName, property]) => (_jsxs("div", { className: cn(level > 0 ? "py-2" : "py-4", "px-2 border-t border-border bg-border/20 hover:bg-border/30 flex gap-1 flex-col", property.deprecated && "opacity-50"), children: [_jsxs("div", { className: "flex items-center gap-2 relative", children: [_jsxs("code", { children: [propertyName, " ", property.title] }), property.type && (_jsx("span", { className: "text-sm text-muted-foreground", children: property.type })), property.deprecated && (_jsx("span", { className: "text-sm text-muted-foreground", children: "Deprecated" })), !schema.required?.includes(propertyName) &&
|
|
33
|
-
!property.required && (_jsx("span", { className: "py-px px-1.5 font-medium text-xs border border-border rounded-lg", children: "optional" }))] }), property.description && (_jsx(Markdown, { content: property.description, className: "prose text-sm prose-p:my-1 leading-normal line-clamp-4" })), property.enum && (_jsxs("span", { className: "text-sm text-muted-foreground flex gap-1 flex-wrap items-center", children: [_jsx("span", { children: "Possible values" }), property.enum
|
|
34
|
-
.filter((value) => value)
|
|
35
|
-
.map((value) => (_jsx("span", { className: "font-mono text-xs border-border border bg-muted rounded px-1", children: value }, value)))] })), property.type === "object" && (_jsx("div", { className: "mt-2.5", children: _jsx(ViewSchema, { schema: property, level: level + 1 }) })), property.type === "array" &&
|
|
36
|
-
property.items.type === "object" && (_jsx("div", { className: "mt-2.5", children: _jsx(ViewSchema, { schema: property.items, level: level + 1 }) }))] }, propertyName))) })] }));
|
|
16
|
+
return (_jsxs("div", { className: "grid grid-cols-2 gap-8 items-start border-b-2 mb-16 pb-16 border-border", children: [_jsxs("div", { className: ProseClasses, children: [_jsx(Heading, { level: 2, className: "mt-0", id: operation.slug, registerSidebarAnchor: true, children: operation.summary }), operation.description && _jsx(Markdown, { content: operation.description }), operation.parameters && operation.parameters.length > 0 && (_jsx("div", { className: "mt-4", children: PARAM_GROUPS.flatMap((group) => groupedParameters?.[group]?.length ? (_jsx(ParameterList, { id: operation.slug, groupedParameters: groupedParameters, group: group }, group)) : ([])) })), _jsx(Heading, { level: 3, className: "capitalize", children: "Responses" }), _jsxs(Tabs, { defaultValue: `${first?.statusCode}${first?.description}`, children: [_jsx(TabsList, { children: operation.responses.map((response) => (_jsx(TabsTrigger, { value: response.statusCode + response.description, title: response.description, children: response.statusCode }, response.statusCode))) }), _jsx("ul", { className: "list-none m-0 px-0 overflow-hidden", children: operation.responses.map((response) => (_jsx(TabsContent, { value: response.statusCode + response.description, children: _jsx(SchemaListView, { schema: response.content?.at(0)?.schema, name: "" }) }, response.statusCode))) })] })] }), _jsx(Sidecar, { operation: operation })] }, operation.operationId));
|
|
37
17
|
};
|
|
38
18
|
//# sourceMappingURL=OperationListItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OperationListItem.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/OperationListItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AACtD,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAgB,WAAW,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"OperationListItem.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/OperationListItem.tsx"],"names":[],"mappings":"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"}
|
|
@@ -9,5 +9,5 @@ const getParameterSchema = (parameter) => {
|
|
|
9
9
|
type: "string",
|
|
10
10
|
};
|
|
11
11
|
};
|
|
12
|
-
export const ParameterListItem = ({ parameter, group, id, }) => (_jsxs("li", { className: "not-prose px-2 py-4 border-t border-border bg-border/20", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("code", { children: group === "path" ? (_jsx(ColorizedParam, { name: parameter.name, backgroundOpacity: "15%", className: "px-1", slug: id + "-" + parameter.name.toLocaleLowerCase() })) : (parameter.name) }), parameter.required && (_jsx("span", { className: "py-px px-1.5 font-medium text-xs bg-primary/75 text-muted rounded-lg", children: "required" })), getParameterSchema(parameter).type && (_jsx("span", { className: "text-xs text-muted-foreground", children: getParameterSchema(parameter).type }))] }), parameter.description && (_jsx(Markdown, { content: parameter.description, className: "text-sm prose-p:my-1" }))] }));
|
|
12
|
+
export const ParameterListItem = ({ parameter, group, id, }) => (_jsxs("li", { className: "not-prose px-2 py-4 border-t border-border bg-border/20 text-sm flex flex-col gap-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("code", { children: group === "path" ? (_jsx(ColorizedParam, { name: parameter.name, backgroundOpacity: "15%", className: "px-1", slug: id + "-" + parameter.name.toLocaleLowerCase() })) : (parameter.name) }), parameter.required && (_jsx("span", { className: "py-px px-1.5 font-medium text-xs bg-primary/75 text-muted rounded-lg", children: "required" })), getParameterSchema(parameter).type && (_jsx("span", { className: "text-xs text-muted-foreground", children: getParameterSchema(parameter).type }))] }), parameter.description && (_jsx(Markdown, { content: parameter.description, className: "text-sm prose-p:my-1" }))] }));
|
|
13
13
|
//# sourceMappingURL=ParameterListItem.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ParameterListItem.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/ParameterListItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,MAAM,kBAAkB,GAAG,CACzB,SAAkC,EACpB,EAAE;IAChB,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,OAAO;QACL,IAAI,EAAE,QAAQ;KACf,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,KAAK,EACL,EAAE,GAKH,EAAE,EAAE,CAAC,CACJ,cAAI,SAAS,EAAC,
|
|
1
|
+
{"version":3,"file":"ParameterListItem.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/ParameterListItem.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,MAAM,kBAAkB,GAAG,CACzB,SAAkC,EACpB,EAAE;IAChB,IAAI,SAAS,CAAC,MAAM,IAAI,IAAI,IAAI,OAAO,SAAS,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACrE,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IACD,OAAO;QACL,IAAI,EAAE,QAAQ;KACf,CAAC;AACJ,CAAC,CAAC;AAMF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,EAChC,SAAS,EACT,KAAK,EACL,EAAE,GAKH,EAAE,EAAE,CAAC,CACJ,cAAI,SAAS,EAAC,qFAAqF,aACjG,eAAK,SAAS,EAAC,yBAAyB,aACtC,yBACG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAClB,KAAC,cAAc,IACb,IAAI,EAAE,SAAS,CAAC,IAAI,EACpB,iBAAiB,EAAC,KAAK,EACvB,SAAS,EAAC,MAAM,EAChB,IAAI,EAAE,EAAE,GAAG,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,iBAAiB,EAAE,GACnD,CACH,CAAC,CAAC,CAAC,CACF,SAAS,CAAC,IAAI,CACf,GACI,EACN,SAAS,CAAC,QAAQ,IAAI,CACrB,eAAM,SAAS,EAAC,sEAAsE,yBAE/E,CACR,EACA,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,IAAI,CACrC,eAAM,SAAS,EAAC,+BAA+B,YAC5C,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,GAC9B,CACR,IACG,EACL,SAAS,CAAC,WAAW,IAAI,CACxB,KAAC,QAAQ,IACP,OAAO,EAAE,SAAS,CAAC,WAAW,EAC9B,SAAS,EAAC,sBAAsB,GAChC,CACH,IACE,CACN,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SchemaObject } from "../../oas/parser/index.js";
|
|
2
|
+
export declare const SchemaListView: ({ name, schema, level, defaultOpen, }: {
|
|
3
|
+
level?: number;
|
|
4
|
+
defaultOpen?: boolean;
|
|
5
|
+
name?: string;
|
|
6
|
+
schema: SchemaObject;
|
|
7
|
+
}) => import("react/jsx-runtime").JSX.Element;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useState } from "react";
|
|
3
|
+
import { cn } from "../../util/cn.js";
|
|
4
|
+
import { Markdown } from "../../components/Markdown.js";
|
|
5
|
+
import * as Collapsible from "@radix-ui/react-collapsible";
|
|
6
|
+
import { Button } from "../../ui/Button.js";
|
|
7
|
+
import { ListPlusIcon } from "lucide-react";
|
|
8
|
+
export const SchemaListView = ({ name, schema, level = 0, defaultOpen = false, }) => {
|
|
9
|
+
const properties = Object.entries(schema.properties ?? {});
|
|
10
|
+
const additionalProperties = typeof schema.additionalProperties === "object"
|
|
11
|
+
? Object.entries(schema.additionalProperties)
|
|
12
|
+
: [];
|
|
13
|
+
const combinedProperties = properties.concat(Array.isArray(additionalProperties) ? additionalProperties : []);
|
|
14
|
+
const groups = Object.groupBy(combinedProperties, ([propertyName, property]) => {
|
|
15
|
+
return property.deprecated
|
|
16
|
+
? "deprecated"
|
|
17
|
+
: schema.required?.includes(propertyName)
|
|
18
|
+
? "required"
|
|
19
|
+
: "optional";
|
|
20
|
+
});
|
|
21
|
+
return (_jsxs("div", { className: cn("not-prose", level > 0 && "border border-border rounded text-sm"), children: [(schema.title ?? name) && (_jsx("div", { className: "ml-2 my-1 font-bold", children: schema.title ?? name })), level === 0 && schema.description && (_jsx("p", { className: "prose", children: schema.description })), _jsx("ul", { children: Object.entries(groups).map(([group, properties]) => {
|
|
22
|
+
return (_jsx(SchemaListViewItemGroup, { defaultOpen: defaultOpen, group: group, nestingLevel: level, properties: properties, required: schema.required ?? [] }));
|
|
23
|
+
}) })] }));
|
|
24
|
+
};
|
|
25
|
+
const SchemaListViewItemGroup = ({ group, properties, nestingLevel, required, defaultOpen = false, }) => {
|
|
26
|
+
const notCollapsible = defaultOpen ||
|
|
27
|
+
group === "required" ||
|
|
28
|
+
properties.length === 1 ||
|
|
29
|
+
nestingLevel === 0;
|
|
30
|
+
const [open, setOpen] = useState(notCollapsible);
|
|
31
|
+
if (properties.length === 0) {
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
return (_jsxs(Collapsible.Root, { className: "CollapsibleRoot", open: open, onOpenChange: setOpen, children: [!open && (_jsxs(Collapsible.Trigger, { className: cn("py-2 hover:bg-muted w-full", group === "optional" && "font-semibold", group === "deprecated" && "text-muted-foreground"), children: [properties.length, " ", group, " fields"] })), _jsx(Collapsible.Content, { children: properties.map(([propertyName, property]) => (_jsx(SchemaListViewItem, { property: property, propertyName: propertyName, nestingLevel: nestingLevel, isRequired: required?.includes(propertyName) ?? false }))) })] }));
|
|
35
|
+
};
|
|
36
|
+
const SchemaListViewItem = ({ propertyName, property, nestingLevel, isRequired, }) => {
|
|
37
|
+
return (_jsxs("div", { className: cn(nestingLevel > 0 ? "py-2" : "py-4", "px-2 border-t border-border bg-border/20 hover:bg-border/30 flex gap-1 flex-col text-sm", property.deprecated && "opacity-50"), children: [_jsxs("div", { className: "flex items-center gap-2 relative", children: [_jsxs("code", { children: [propertyName, " ", property.title] }), property.type && (_jsx("span", { className: "text-muted-foreground", children: property.type })), property.deprecated && (_jsx("span", { className: "text-muted-foreground", children: "Deprecated" })), !isRequired && (_jsxs("span", { className: "py-px px-1.5 font-medium text-xs border border-border rounded-lg", children: ["optional ", property.required] }))] }), property.description && (_jsx(Markdown, { content: property.description, className: "text-sm leading-normal line-clamp-4 " })), property.enum && (_jsxs("span", { className: "text-sm text-muted-foreground flex gap-1 flex-wrap items-center", children: [_jsx("span", { children: "Possible values" }), property.enum
|
|
38
|
+
.filter((value) => value)
|
|
39
|
+
.map((value) => (_jsx("span", { className: "font-mono text-xs border-border border bg-muted rounded px-1", children: value }, value)))
|
|
40
|
+
.slice(0, 4), property.enum.length > 4 && (_jsx("span", { className: "font-mono text-xs border-border border bg-muted rounded px-1", children: "..." }))] })), _jsxs(Collapsible.Root, { className: "CollapsibleRoot", defaultOpen: false, children: [property.type === "object" ||
|
|
41
|
+
(property.type === "array" && property.items.type === "object") ? (_jsx(Collapsible.Trigger, { asChild: true, children: _jsxs(Button, { variant: "ghost", size: "sm", children: ["Show nested fields", _jsx(ListPlusIcon, { size: 18, className: "ml-1.5" })] }) })) : null, _jsxs(Collapsible.Content, { children: [property.type === "object" && (_jsx("div", { className: "mt-2.5", children: _jsx(SchemaListView, { schema: property, level: nestingLevel + 1, defaultOpen: true }) })), property.type === "array" && property.items.type === "object" && (_jsx("div", { className: "mt-2.5", children: _jsx(SchemaListView, { schema: property.items, defaultOpen: true, level: nestingLevel + 1 }) }))] })] })] }, propertyName));
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=SchemaListView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SchemaListView.js","sourceRoot":"","sources":["../../../../src/lib/plugins/openapi/SchemaListView.tsx"],"names":[],"mappings":"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"}
|