@commandkit/devtools 0.0.0-dev.20250514140214 → 0.0.0-dev.20250515153730
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/server/api.js +3 -1
- package/dist/server/routes/feature-flags.d.ts +2 -0
- package/dist/server/routes/feature-flags.js +17 -0
- package/package.json +3 -3
- package/ui/assets/{commands-DLOqEa09.js → commands-B2VBOrVb.js} +2 -2
- package/ui/assets/{events-8TOcM0SA.js → events-BwZatcGw.js} +1 -1
- package/ui/assets/feature-flags-HTu2JPH3.js +1 -0
- package/ui/assets/{guilds-C14RhxbA.js → guilds-BN1k-9Y8.js} +1 -1
- package/ui/assets/{index-DeEbAdiT.js → index-BXPlMQOT.js} +39 -34
- package/ui/assets/{index-BHEndNIe.js → index-hf1fDcV5.js} +1 -1
- package/ui/assets/{plugins-CdXdPOuc.js → plugins-BnV98pc6.js} +1 -1
- package/ui/index.html +1 -1
package/dist/server/api.js
CHANGED
|
@@ -8,6 +8,7 @@ const auth_middleware_1 = require("./middlewares/auth.middleware");
|
|
|
8
8
|
const guilds_1 = require("./routes/guilds");
|
|
9
9
|
const plugins_1 = require("./routes/plugins");
|
|
10
10
|
const events_1 = require("./routes/events");
|
|
11
|
+
const feature_flags_1 = require("./routes/feature-flags");
|
|
11
12
|
exports.api = (0, express_1.Router)();
|
|
12
13
|
exports.api.get('/', (req, res) => {
|
|
13
14
|
res.json({
|
|
@@ -21,4 +22,5 @@ exports.api.use('/commands', commands_1.commandsRouter);
|
|
|
21
22
|
exports.api.use('/guilds', guilds_1.guildsRouter);
|
|
22
23
|
exports.api.use('/plugins', plugins_1.pluginsRouter);
|
|
23
24
|
exports.api.use('/events', events_1.eventsRouter);
|
|
24
|
-
|
|
25
|
+
exports.api.use('/feature-flags', feature_flags_1.flagsRouter);
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NlcnZlci9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQWlDO0FBQ2pDLHdDQUEyQztBQUMzQyxnREFBbUQ7QUFDbkQsbUVBQXFEO0FBQ3JELDRDQUErQztBQUMvQyw4Q0FBaUQ7QUFDakQsNENBQStDO0FBQy9DLDBEQUFxRDtBQUV4QyxRQUFBLEdBQUcsR0FBVyxJQUFBLGdCQUFNLEdBQUUsQ0FBQztBQUVwQyxXQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtJQUN4QixHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ1AsT0FBTyxFQUFFLG9DQUFvQztLQUM5QyxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUMsQ0FBQztBQUVILFdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLGlCQUFVLENBQUMsQ0FBQztBQUM3QixhQUFhO0FBQ2IsV0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFBLHNCQUFJLEdBQUUsQ0FBQyxDQUFDO0FBQ2hCLFdBQUcsQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLHlCQUFjLENBQUMsQ0FBQztBQUNyQyxXQUFHLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxxQkFBWSxDQUFDLENBQUM7QUFDakMsV0FBRyxDQUFDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsdUJBQWEsQ0FBQyxDQUFDO0FBQ25DLFdBQUcsQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLHFCQUFZLENBQUMsQ0FBQztBQUNqQyxXQUFHLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLDJCQUFXLENBQUMsQ0FBQyJ9
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.flagsRouter = void 0;
|
|
4
|
+
const express_1 = require("express");
|
|
5
|
+
const store_1 = require("../store");
|
|
6
|
+
exports.flagsRouter = (0, express_1.Router)();
|
|
7
|
+
exports.flagsRouter.get('/', async (req, res) => {
|
|
8
|
+
const flags = await (0, store_1.getCommandKit)().flags.map((f) => ({
|
|
9
|
+
key: f.options.key,
|
|
10
|
+
description: f.options.description ?? null,
|
|
11
|
+
hasIdentify: f.options.identify !== undefined,
|
|
12
|
+
}));
|
|
13
|
+
return void res.status(200).json({
|
|
14
|
+
flags,
|
|
15
|
+
});
|
|
16
|
+
});
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmVhdHVyZS1mbGFncy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9zZXJ2ZXIvcm91dGVzL2ZlYXR1cmUtZmxhZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQWlDO0FBQ2pDLG9DQUF5QztBQUU1QixRQUFBLFdBQVcsR0FBVyxJQUFBLGdCQUFNLEdBQUUsQ0FBQztBQUU1QyxtQkFBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtJQUN0QyxNQUFNLEtBQUssR0FBRyxNQUFNLElBQUEscUJBQWEsR0FBRSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDcEQsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsR0FBRztRQUNsQixXQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxXQUFXLElBQUksSUFBSTtRQUMxQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEtBQUssU0FBUztLQUM5QyxDQUFDLENBQUMsQ0FBQztJQUVKLE9BQU8sS0FBSyxHQUFHLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMvQixLQUFLO0tBQ04sQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDLENBQUMifQ==
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@commandkit/devtools",
|
|
3
3
|
"description": "CommandKit devtools",
|
|
4
|
-
"version": "0.0.0-dev.
|
|
4
|
+
"version": "0.0.0-dev.20250515153730",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "commonjs",
|
|
7
7
|
"types": "dist/index.d.ts",
|
|
@@ -11,8 +11,8 @@
|
|
|
11
11
|
"@types/express": "^5.0.1",
|
|
12
12
|
"discord.js": "^14.19.1",
|
|
13
13
|
"typescript": "^5.8.3",
|
|
14
|
-
"commandkit": "1.0.0-dev.
|
|
15
|
-
"tsconfig": "0.0.0-dev.
|
|
14
|
+
"commandkit": "1.0.0-dev.20250515153730",
|
|
15
|
+
"tsconfig": "0.0.0-dev.20250515153730"
|
|
16
16
|
},
|
|
17
17
|
"files": [
|
|
18
18
|
"dist",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{i,r as p,u as N,a as f,j as e,B as h,k as v,C as b}from"./index-
|
|
1
|
+
import{i,r as p,u as N,a as f,j as e,B as h,k as v,C as b}from"./index-BXPlMQOT.js";/**
|
|
2
2
|
* @license lucide-react v0.468.0 - ISC
|
|
3
3
|
*
|
|
4
4
|
* This source code is licensed under the ISC license.
|
|
@@ -18,4 +18,4 @@ import{i,r as p,u as N,a as f,j as e,B as h,k as v,C as b}from"./index-DeEbAdiT.
|
|
|
18
18
|
*
|
|
19
19
|
* This source code is licensed under the ISC license.
|
|
20
20
|
* See the LICENSE file in the root directory of this source tree.
|
|
21
|
-
*/const u=i("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]),w=({command:t,middlewares:d})=>e.jsxs(b,{className:"p-4 mt-4 bg-muted/50 border-l-4 border-l-primary rounded-sm",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:t.name}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-muted-foreground",children:"ID:"}),e.jsx("p",{className:"font-mono text-xs break-all",children:t.id})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-muted-foreground",children:"Category:"}),e.jsx("p",{children:t.category||"Uncategorized"})]}),e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("p",{className:"text-muted-foreground",children:"Path:"}),e.jsx("p",{className:"font-mono text-xs break-all",children:t.path})]}),e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("p",{className:"text-muted-foreground",children:"Relative Path:"}),e.jsx("p",{className:"font-mono text-xs",children:t.relativePath})]}),e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("p",{className:"text-muted-foreground",children:"Middlewares:"}),e.jsx("div",{className:"flex flex-wrap gap-2 mt-1",children:t.middlewares.map(l=>{const a=d[l];return e.jsxs(h,{variant:"outline",className:"flex items-center gap-1",children:[e.jsx(u,{className:"h-3 w-3"}),(a==null?void 0:a.name)||l,(a==null?void 0:a.global)&&e.jsx("span",{className:"text-xs ml-1 text-muted-foreground",children:"(global)"})]},l)})})]})]})]}),j=({name:t,children:d,isCommand:l=!1,hasMiddleware:a=!1,onClick:n,isSelected:c})=>{const[o,x]=p.useState(!0),s=!!d;return e.jsxs("div",{className:"ml-4",children:[e.jsxs("div",{className:`flex items-center py-1 cursor-pointer hover:bg-slate-100 dark:hover:bg-gray-800/50 rounded ${c?"bg-slate-100 dark:bg-gray-800/50":""}`,onClick:()=>{s&&x(!o),n&&n()},children:[s?o?e.jsx(y,{className:"h-4 w-4 mr-1 text-muted-foreground"}):e.jsx(v,{className:"h-4 w-4 mr-1 text-muted-foreground"}):e.jsx("span",{className:"w-5"}),l?e.jsx(C,{className:"h-4 w-4 mr-1 text-primary"}):e.jsx(g,{className:"h-4 w-4 mr-1 text-amber-500"}),e.jsx("span",{className:`${l?"font-mono text-sm":"font-semibold"}`,children:t}),a&&e.jsxs(h,{variant:"outline",className:"ml-2 py-0 h-5",children:[e.jsx(u,{className:"h-3 w-3 mr-1"}),"λ"]})]}),s&&o&&e.jsx("div",{className:"border-l border-dashed border-slate-300 dark:border-slate-700 pl-2",children:d})]})},M=function(){const[d,l]=p.useState(null),a=N(),{data:n,isError:c,isLoading:o}=f({queryKey:["commands"],enabled:!!a,refetchOnWindowFocus:!0,refetchOnReconnect:!0,queryFn:async()=>(await a.api.get("/commands")).data}),x=n?Object.values(n.commands).reduce((s,m)=>{const r=m.category||"uncategorized";return s[r]||(s[r]=[]),s[r].push(m),s},{}):{};return o?e.jsx("div",{className:"flex justify-center items-center h-64",children:"Loading command data..."}):c?e.jsx("div",{className:"text-red-500",children:c}):n?e.jsxs("div",{className:"container mx-auto
|
|
21
|
+
*/const u=i("Shield",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}]]),w=({command:t,middlewares:d})=>e.jsxs(b,{className:"p-4 mt-4 bg-muted/50 border-l-4 border-l-primary rounded-sm",children:[e.jsx("h3",{className:"text-lg font-bold mb-2",children:t.name}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-2 text-sm",children:[e.jsxs("div",{children:[e.jsx("p",{className:"text-muted-foreground",children:"ID:"}),e.jsx("p",{className:"font-mono text-xs break-all",children:t.id})]}),e.jsxs("div",{children:[e.jsx("p",{className:"text-muted-foreground",children:"Category:"}),e.jsx("p",{children:t.category||"Uncategorized"})]}),e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("p",{className:"text-muted-foreground",children:"Path:"}),e.jsx("p",{className:"font-mono text-xs break-all",children:t.path})]}),e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("p",{className:"text-muted-foreground",children:"Relative Path:"}),e.jsx("p",{className:"font-mono text-xs",children:t.relativePath})]}),e.jsxs("div",{className:"md:col-span-2",children:[e.jsx("p",{className:"text-muted-foreground",children:"Middlewares:"}),e.jsx("div",{className:"flex flex-wrap gap-2 mt-1",children:t.middlewares.map(l=>{const a=d[l];return e.jsxs(h,{variant:"outline",className:"flex items-center gap-1",children:[e.jsx(u,{className:"h-3 w-3"}),(a==null?void 0:a.name)||l,(a==null?void 0:a.global)&&e.jsx("span",{className:"text-xs ml-1 text-muted-foreground",children:"(global)"})]},l)})})]})]})]}),j=({name:t,children:d,isCommand:l=!1,hasMiddleware:a=!1,onClick:n,isSelected:c})=>{const[o,x]=p.useState(!0),s=!!d;return e.jsxs("div",{className:"ml-4",children:[e.jsxs("div",{className:`flex items-center py-1 cursor-pointer hover:bg-slate-100 dark:hover:bg-gray-800/50 rounded ${c?"bg-slate-100 dark:bg-gray-800/50":""}`,onClick:()=>{s&&x(!o),n&&n()},children:[s?o?e.jsx(y,{className:"h-4 w-4 mr-1 text-muted-foreground"}):e.jsx(v,{className:"h-4 w-4 mr-1 text-muted-foreground"}):e.jsx("span",{className:"w-5"}),l?e.jsx(C,{className:"h-4 w-4 mr-1 text-primary"}):e.jsx(g,{className:"h-4 w-4 mr-1 text-amber-500"}),e.jsx("span",{className:`${l?"font-mono text-sm":"font-semibold"}`,children:t}),a&&e.jsxs(h,{variant:"outline",className:"ml-2 py-0 h-5",children:[e.jsx(u,{className:"h-3 w-3 mr-1"}),"λ"]})]}),s&&o&&e.jsx("div",{className:"border-l border-dashed border-slate-300 dark:border-slate-700 pl-2",children:d})]})},M=function(){const[d,l]=p.useState(null),a=N(),{data:n,isError:c,isLoading:o}=f({queryKey:["commands"],enabled:!!a,refetchOnWindowFocus:!0,refetchOnReconnect:!0,queryFn:async()=>(await a.api.get("/commands")).data}),x=n?Object.values(n.commands).reduce((s,m)=>{const r=m.category||"uncategorized";return s[r]||(s[r]=[]),s[r].push(m),s},{}):{};return o?e.jsx("div",{className:"flex justify-center items-center h-64",children:"Loading command data..."}):c?e.jsx("div",{className:"text-red-500",children:c}):n?e.jsxs("div",{className:"container mx-auto py-4",children:[e.jsx("h1",{className:"text-2xl font-bold mb-6",children:"Commands"}),e.jsxs("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[e.jsxs("div",{className:"lg:col-span-1 border rounded-lg p-4 bg-muted/50 shadow-sm overflow-auto max-h-[80vh]",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Commands"}),e.jsx("div",{className:"command-tree",children:Object.entries(x).map(([s,m])=>e.jsx(j,{name:s,children:m.map(r=>e.jsx(j,{name:r.name,isCommand:!0,hasMiddleware:r.middlewares.length>0,onClick:()=>l(r.id),isSelected:d===r.id},r.id))},s))})]}),e.jsxs("div",{className:"lg:col-span-2 border rounded-lg p-4 bg-muted/50 shadow-sm",children:[e.jsx("h2",{className:"text-xl font-bold mb-4",children:"Command Details"}),d?e.jsx(w,{command:n.commands[d],middlewares:n.middlewares}):e.jsxs("div",{className:"text-center p-8 text-muted-foreground",children:[e.jsx(g,{className:"h-12 w-12 mx-auto mb-4 opacity-50"}),e.jsx("p",{children:"Select a command to view its details"})]})]})]}),e.jsx("div",{className:"mt-6 text-sm text-muted-foreground",children:e.jsxs("p",{children:[e.jsxs(h,{variant:"outline",className:"mr-2",children:[e.jsx(u,{className:"h-3 w-3 mr-1"}),"λ"]}),"indicates the command has middleware associated"]})})]}):e.jsx("div",{children:"No command data available"})};export{M as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as x,a as p,r as o,j as e,L as u,B as c}from"./index-
|
|
1
|
+
import{u as x,a as p,r as o,j as e,L as u,B as c}from"./index-BXPlMQOT.js";const j=function(){const i=x(),{data:n,isLoading:m,isError:l}=p({queryKey:["events"],queryFn:async()=>await i.events.fetch()}),r=o.useMemo(()=>crypto.randomUUID(),[]),d=o.useMemo(()=>{if(!n)return[];const s={};return n.forEach(a=>{const t=a.namespace||r;s[t]||(s[t]=[]),s[t].push(a)}),Object.entries(s).map(([a,t])=>({namespace:a,events:t}))},[n,r]);return m||!n?e.jsx(u,{}):l?e.jsx("div",{className:"h-screen grid place-items-center",children:e.jsx("h1",{className:"text-2xl text-red-500",children:"An error occurred while fetching events data."})}):e.jsx("div",{className:"p-4",children:d.map(s=>e.jsxs("div",{className:"mb-6",children:[e.jsx("h1",{className:"text-2xl font-bold capitalize",children:s.namespace===r?"Default":s.namespace}),e.jsx("div",{className:"grid grid-cols-3 gap-4 py-4",children:s.events.map(a=>e.jsxs("div",{className:"border p-4 rounded",children:[e.jsx("h2",{className:"text-lg font-semibold",children:a.name}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 font-medium font-mono break-all",children:a.metadata.path}),e.jsxs("div",{className:"flex items-center gap-4",children:[e.jsxs(c,{variant:"outline",className:"text-xs text-gray-500 mt-2 font-mono",children:["Namespace: ",a.namespace||"discord.js"]}),e.jsxs(c,{variant:"outline",className:"text-xs text-gray-500 mt-2 font-mono break-all",children:["Once: ",a.onceListeners]}),e.jsxs(c,{variant:"outline",className:"text-xs text-gray-500 mt-2 font-mono break-all",children:["Regular: ",a.regularListeners]})]})]},`${a.name}-${s.namespace}`))})]},s.namespace))})};export{j as component};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{u as i,a as o,j as e,L as c,B as d}from"./index-BXPlMQOT.js";const m=function(){const r=i(),{data:t,isLoading:a,isError:n}=o({queryKey:["feature-flags"],queryFn:async()=>await r.getFeatureFlags()});return a||!t?e.jsx(c,{}):n?e.jsx("div",{className:"h-screen grid place-items-center",children:e.jsx("h1",{className:"text-2xl text-red-500",children:"An error occurred while fetching plugins data."})}):e.jsxs("div",{className:"p-4",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-2xl font-bold ",children:"Feature Flags"}),e.jsx("p",{className:"text-muted-foreground",children:"The below is a list of active feature flags in your project"})]}),e.jsx("div",{className:"grid grid-cols-3 gap-4 py-4",children:t.flags.map(s=>e.jsxs("div",{className:"border p-4 rounded",children:[e.jsx("h2",{className:"text-lg font-semibold",children:s.key}),e.jsx("p",{className:"text-muted-foreground text-xs mt-2 font-medium",children:s.description||`${s.key} feature flag`}),s.hasIdentify&&e.jsx(d,{variant:"outline",className:"text-sm text-gray-500 mt-2 font-mono",children:"identify"})]},s.key))})]})};export{m as component};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{u as c,a as d,j as e,L as i,C as o,b as l,A as m,c as x,d as h,e as j,f as p,h as u}from"./index-
|
|
1
|
+
import{u as c,a as d,j as e,L as i,C as o,b as l,A as m,c as x,d as h,e as j,f as p,h as u}from"./index-BXPlMQOT.js";const y=function(){const a=c(),{data:r,isLoading:n,isError:t}=d({queryKey:["guilds"],queryFn:async()=>await a.guilds.fetch()});return n||!r?e.jsx(i,{}):t?e.jsx("div",{className:"h-screen grid place-items-center",children:e.jsx("h1",{className:"text-2xl text-red-500",children:"An error occurred while fetching guilds data."})}):e.jsxs("div",{className:"grid grid-cols-3 gap-4 p-4",children:[e.jsx("h1",{className:"text-2xl font-bold col-span-3",children:"Guilds"}),r.map(s=>e.jsxs(o,{className:"border py-4 rounded",children:[e.jsx(l,{children:e.jsxs(m,{className:"h-12 w-12 rounded-lg",children:[e.jsx(x,{src:s.iconURL,alt:s.name}),e.jsx(h,{className:"rounded-lg",children:s.nameAcronym})]})}),e.jsxs(j,{children:[e.jsx(p,{children:s.name}),e.jsx(u,{children:s.description||`${s.name} server`})]})]},s.id))]})};export{y as component};
|