@emeryld/rrroutes-openapi 2.3.1 → 2.3.3

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.
Files changed (67) hide show
  1. package/README.md +21 -10
  2. package/dist/docs/LeafDocsPage.d.ts +3 -23
  3. package/dist/docs/docs.d.ts +4 -7
  4. package/dist/docs/schemaIntrospection.d.ts +4 -13
  5. package/dist/docs/serializer.d.ts +5 -19
  6. package/dist/index.cjs +468 -670
  7. package/dist/index.cjs.map +1 -1
  8. package/dist/index.d.ts +30 -105
  9. package/dist/index.mjs +471 -670
  10. package/dist/index.mjs.map +1 -1
  11. package/dist/public/assets/docs.css +1 -1
  12. package/dist/public/assets/docs.js +260 -21
  13. package/dist/web/app.d.ts +1 -8
  14. package/dist/web/main.d.ts +1 -1
  15. package/dist/web/utils/grouping.d.ts +2 -8
  16. package/dist/web/utils/security.d.ts +21 -0
  17. package/dist/web/utils/types.d.ts +17 -0
  18. package/dist/web/v2/AppShell.d.ts +7 -0
  19. package/dist/web/v2/components/JsonInput.d.ts +10 -0
  20. package/dist/web/v2/components/JsonViewer.d.ts +12 -0
  21. package/dist/web/v2/components/MethodBadge.d.ts +4 -0
  22. package/dist/web/v2/components/New/HttpMethodChip.d.ts +7 -0
  23. package/dist/web/v2/components/New/ListToolBar.d.ts +11 -0
  24. package/dist/web/v2/components/New/MethodFiltersChips.d.ts +7 -0
  25. package/dist/web/v2/components/New/RequestStatusChip.d.ts +6 -0
  26. package/dist/web/v2/components/New/SplitPageLayout.d.ts +7 -0
  27. package/dist/web/v2/components/New/StabilityChip.d.ts +7 -0
  28. package/dist/web/v2/components/New/StatusRangeFilter.d.ts +8 -0
  29. package/dist/web/v2/components/RecordItem.d.ts +34 -0
  30. package/dist/web/v2/components/ResizableSidePanel.d.ts +12 -0
  31. package/dist/web/v2/components/SchemaTable.d.ts +5 -0
  32. package/dist/web/v2/components/SectionHeader.d.ts +9 -0
  33. package/dist/web/v2/endpoints/EndpointDetailsPanel.d.ts +5 -0
  34. package/dist/web/v2/endpoints/EndpointList.d.ts +12 -0
  35. package/dist/web/v2/endpoints/EndpointsPage.d.ts +4 -0
  36. package/dist/web/v2/endpoints/endpoints.utils.d.ts +3 -0
  37. package/dist/web/v2/stores/clientStore.d.ts +48 -0
  38. package/dist/web/v2/theme.d.ts +21 -0
  39. package/dist/web/v2/types/types.base.d.ts +30 -0
  40. package/dist/web/v2/types/types.cacheLog.d.ts +165 -0
  41. package/dist/web/v2/types/types.endpoint.d.ts +326 -0
  42. package/dist/web/v2/types/types.log.d.ts +119 -0
  43. package/dist/web/v2/types/types.preset.d.ts +251 -0
  44. package/dist/web/v2/types/types.requestLog.d.ts +264 -0
  45. package/package.json +16 -5
  46. package/dist/docs/presets.d.ts +0 -14
  47. package/dist/web/components/Analytics.d.ts +0 -68
  48. package/dist/web/components/CopyablePre.d.ts +0 -7
  49. package/dist/web/components/EndpointCard.d.ts +0 -10
  50. package/dist/web/components/Filters.d.ts +0 -9
  51. package/dist/web/components/FiltersBar.d.ts +0 -25
  52. package/dist/web/components/HelperEnumInput.d.ts +0 -11
  53. package/dist/web/components/HistoryView.d.ts +0 -7
  54. package/dist/web/components/LogsView.d.ts +0 -1
  55. package/dist/web/components/PlaygroundOverlay.d.ts +0 -94
  56. package/dist/web/components/PresetsView.d.ts +0 -15
  57. package/dist/web/components/RequestLogs.d.ts +0 -10
  58. package/dist/web/components/SchemaTable.d.ts +0 -4
  59. package/dist/web/components/ui/Button.d.ts +0 -8
  60. package/dist/web/components/ui/Clickable.d.ts +0 -7
  61. package/dist/web/components/ui/Tag.d.ts +0 -9
  62. package/dist/web/components/ui/Text.d.ts +0 -8
  63. package/dist/web/components/ui/index.d.ts +0 -4
  64. package/dist/web/historyStore.d.ts +0 -68
  65. package/dist/web/logsStore.d.ts +0 -51
  66. package/dist/web/types.d.ts +0 -5
  67. package/dist/webhooks.d.ts +0 -181
package/dist/web/app.d.ts CHANGED
@@ -1,8 +1 @@
1
- import type { SerializablePreset } from '../docs/presets.js';
2
- import type { SerializableLeaf } from '../docs/serializer.js';
3
- export declare function DocsApp({ initialLeaves, presets, basePath, baseUrlSuffix, }: {
4
- initialLeaves: SerializableLeaf[];
5
- presets: SerializablePreset[];
6
- basePath?: string;
7
- baseUrlSuffix?: string;
8
- }): import("react/jsx-runtime").JSX.Element;
1
+ export declare function DocsApp(): import("react/jsx-runtime").JSX.Element;
@@ -1 +1 @@
1
- import './styles/docs.css';
1
+ import './main.css';
@@ -1,10 +1,4 @@
1
- import type { SerializableLeaf } from '../../docs/serializer.js';
2
- export declare function groupLeaves(leaves: {
3
- leaf: SerializableLeaf;
4
- idx: number;
5
- }[]): Record<string, {
6
- leaf: SerializableLeaf;
7
- idx: number;
8
- }[]>;
1
+ import type { SerializedLeaf } from '../../docs/serializer.js';
2
+ export declare function groupLeaves(leaves: SerializedLeaf[]): Record<string, SerializedLeaf[]>;
9
3
  export declare function sortGroups(groups: string[]): string[];
10
4
  export declare function sortRoutes(aPath?: string, bPath?: string): number;
@@ -0,0 +1,21 @@
1
+ import type { RequestHandler, Response } from 'express';
2
+ /**
3
+ * HTTP Basic password guard.
4
+ */
5
+ export declare function createPasswordGuard(password: string, realm: string): RequestHandler;
6
+ /**
7
+ * Cookie-based guard. Requires `req.cookies` to be populated
8
+ * (e.g. via `cookie-parser`).
9
+ */
10
+ export declare function createCookieGuard(cookieName: string, cookieSecret?: string): RequestHandler;
11
+ /**
12
+ * When auth is enabled but no password/cookie/custom guard is provided,
13
+ * fail closed.
14
+ */
15
+ export declare function createMissingPasswordGuard(): RequestHandler;
16
+ /**
17
+ * Simple IP allow-list guard. For accurate client IPs behind proxies,
18
+ * configure `app.set('trust proxy', true)` in your Express app.
19
+ */
20
+ export declare function createIpAllowListGuard(allowed: string[]): RequestHandler;
21
+ export declare function applyDocsSecurityHeaders(res: Response): void;
@@ -0,0 +1,17 @@
1
+ import { AnyLeafLowProfile, AugmentLeaves, FinalizedRegistry } from '@emeryld/rrroutes-contract';
2
+ import { cacheLeaves } from '../v2/types/types.cacheLog';
3
+ import { endpointLeaves } from '../v2/types/types.endpoint';
4
+ import { logLeaves } from '../v2/types/types.log';
5
+ import { presetLeaves } from '../v2/types/types.preset';
6
+ import { requestLogLeaves } from '../v2/types/types.requestLog';
7
+ type MountedLeaves<Leaves extends readonly AnyLeafLowProfile[]> = AugmentLeaves<'/__rrroutes', undefined, Leaves>;
8
+ type AllLeaves = readonly [
9
+ ...MountedLeaves<typeof endpointLeaves>,
10
+ ...MountedLeaves<typeof requestLogLeaves>,
11
+ ...MountedLeaves<typeof logLeaves>,
12
+ ...MountedLeaves<typeof cacheLeaves>,
13
+ ...MountedLeaves<typeof presetLeaves>
14
+ ];
15
+ declare const allLeaves: AllLeaves;
16
+ export declare const leaves: FinalizedRegistry<typeof allLeaves>;
17
+ export {};
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from 'react';
2
+ type AppShellProps = {
3
+ children: ReactNode;
4
+ title?: string;
5
+ };
6
+ export declare function AppShell({ children, title }: AppShellProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,10 @@
1
+ export declare function JsonInput({ value, onChange, placeholder, }: {
2
+ value?: string;
3
+ onChange?: (next: string) => void;
4
+ placeholder?: string;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ export declare function KeyValueList({ label, data, emptyLabel, }: {
7
+ label: string;
8
+ data: Record<string, string>;
9
+ emptyLabel: string;
10
+ }): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,12 @@
1
+ export type JsonViewerProps = {
2
+ label: string;
3
+ value: unknown;
4
+ emptyLabel?: string;
5
+ collapsedLines?: number;
6
+ };
7
+ export declare const formatResponse: (data: unknown) => string;
8
+ export declare const truncateLines: (text: string, maxLines: number) => string;
9
+ /**
10
+ * Read-only JSON/text viewer with truncation + copy.
11
+ */
12
+ export declare function JsonViewer({ label, value, emptyLabel, collapsedLines, }: JsonViewerProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,4 @@
1
+ export type MethodBadgeProps = {
2
+ method: string;
3
+ };
4
+ export declare function MethodBadge({ method }: MethodBadgeProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,7 @@
1
+ import { MethodType } from '../../types/types.base';
2
+ type Props = {
3
+ method: MethodType;
4
+ size?: 'small' | 'medium';
5
+ };
6
+ export declare function HttpMethodChip({ method, size }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,11 @@
1
+ import { ReactNode } from 'react';
2
+ type ListToolbarProps = {
3
+ title?: string;
4
+ searchPlaceholder?: string;
5
+ searchValue?: string;
6
+ onSearchChange: (value: string) => void;
7
+ filtersSlot?: ReactNode;
8
+ actionsSlot?: ReactNode;
9
+ };
10
+ export declare function ListToolbar({ title, searchPlaceholder, searchValue, onSearchChange, filtersSlot, actionsSlot, }: ListToolbarProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
@@ -0,0 +1,7 @@
1
+ import { MethodType } from '../../types/types.base.js';
2
+ type MethodFilterChipsProps = {
3
+ value: MethodType[] | undefined;
4
+ onChange: (value: MethodType[] | undefined) => void;
5
+ };
6
+ export declare function MethodFilterChips({ value, onChange }: MethodFilterChipsProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,6 @@
1
+ type Props = {
2
+ status: number;
3
+ size?: 'small' | 'medium';
4
+ };
5
+ export declare function RequestStatusChip({ status, size }: Props): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,7 @@
1
+ import { ReactNode } from 'react';
2
+ type Props = {
3
+ list: ReactNode;
4
+ detail: ReactNode;
5
+ };
6
+ export declare function SplitPageLayout({ list, detail }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,7 @@
1
+ import { Endpoint } from '../../types/types.endpoint';
2
+ type Props = {
3
+ value: Endpoint['stability'];
4
+ size?: 'small' | 'medium';
5
+ };
6
+ export declare function StabilityChip({ value, size }: Props): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,8 @@
1
+ export type StatusRange = 'any' | '2xx' | '3xx' | '4xx' | '5xx';
2
+ type Props = {
3
+ value: StatusRange;
4
+ onChange: (value: StatusRange) => void;
5
+ size?: 'small' | 'medium';
6
+ };
7
+ export declare function StatusRangeFilter({ value, onChange, size }: Props): import("react/jsx-runtime").JSX.Element;
8
+ export {};
@@ -0,0 +1,34 @@
1
+ export type RecordItem = {
2
+ key: string;
3
+ value?: string;
4
+ enabled: boolean;
5
+ };
6
+ export type RecordInput = RecordItem[];
7
+ export type RecordInputUpdate = {
8
+ operation: 'add';
9
+ value: RecordItem;
10
+ } | {
11
+ operation: 'change';
12
+ idx: number;
13
+ value: RecordItem;
14
+ } | {
15
+ operation: 'remove';
16
+ idx: number;
17
+ };
18
+ type RecodItemSectionProps = {
19
+ title: string;
20
+ rows: RecordInput;
21
+ onUpdateRow?: (index: number, next: RecordInputUpdate) => void;
22
+ onAddRow?: () => void;
23
+ onRemoveRow?: (index: number) => void;
24
+ defaultOpen?: boolean;
25
+ showToggle?: boolean;
26
+ disableKey?: boolean;
27
+ placeholder?: {
28
+ key?: string;
29
+ value?: string;
30
+ };
31
+ gridClassName?: string;
32
+ };
33
+ export declare function RecordItemSection({ title, rows, onUpdateRow, onAddRow, onRemoveRow, defaultOpen, showToggle, disableKey, placeholder, }: RecodItemSectionProps): import("react/jsx-runtime").JSX.Element;
34
+ export {};
@@ -0,0 +1,12 @@
1
+ import { ReactNode } from 'react';
2
+ type ResizableSidePanelProps = {
3
+ children: ReactNode;
4
+ isVisible: boolean;
5
+ resizable?: boolean;
6
+ minWidth?: number;
7
+ maxWidth?: number;
8
+ initialWidth?: number;
9
+ onClose?: () => void;
10
+ };
11
+ declare const ResizableSidePanel: ({ children, isVisible, resizable, minWidth, maxWidth, initialWidth, onClose, }: ResizableSidePanelProps) => import("react/jsx-runtime").JSX.Element | null;
12
+ export default ResizableSidePanel;
@@ -0,0 +1,5 @@
1
+ import { SerializableSchemaNode } from '../../../docs/schemaIntrospection';
2
+ export declare function SchemaTable({ node, title, }: {
3
+ title?: string;
4
+ node?: SerializableSchemaNode;
5
+ }): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,9 @@
1
+ type Props = {
2
+ title: string;
3
+ hasRows: boolean;
4
+ open: boolean;
5
+ setOpen: (updater: (prev: boolean) => boolean) => void;
6
+ onAddRow?: () => void;
7
+ };
8
+ export declare function SectionHeader({ title, hasRows, open, setOpen, onAddRow, }: Props): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,5 @@
1
+ type Props = {
2
+ endpointId: string;
3
+ };
4
+ export declare function EndpointDetailsPanel({ endpointId }: Props): import("react/jsx-runtime").JSX.Element;
5
+ export {};
@@ -0,0 +1,12 @@
1
+ import { Endpoint } from '../types/types.endpoint';
2
+ import { EndpointFilterType } from './EndpointsPage';
3
+ type Props = {
4
+ endpoints: Endpoint[];
5
+ total?: number;
6
+ filters: EndpointFilterType;
7
+ onFiltersChange: (next: EndpointFilterType) => void;
8
+ selectedEndpointId?: string;
9
+ onSelectEndpoint: (id: string) => void;
10
+ };
11
+ export declare function EndpointList({ endpoints, total, filters, onFiltersChange, selectedEndpointId, onSelectEndpoint, }: Props): import("react/jsx-runtime").JSX.Element;
12
+ export {};
@@ -0,0 +1,4 @@
1
+ import z from 'zod';
2
+ import { endpointFilterSchema } from '../types/types.endpoint.js';
3
+ export type EndpointFilterType = z.infer<typeof endpointFilterSchema>;
4
+ export default function EndpointsPage(): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,3 @@
1
+ import { Endpoint } from '../types/types.endpoint';
2
+ export type EndpointStability = Endpoint['stability'];
3
+ export declare function buildEndpointId(endpoint: Endpoint): string;
@@ -0,0 +1,48 @@
1
+ import { RouteClient } from '@emeryld/rrroutes-client';
2
+ import { QueryClient } from '@tanstack/react-query';
3
+ import { ReactNode } from 'react';
4
+ import { MethodType } from '../types/types.base';
5
+ import { RequestLogType } from '../types/types.requestLog';
6
+ export type EndpointRun = {
7
+ logs?: any;
8
+ error?: {
9
+ message: string;
10
+ stack?: string;
11
+ name?: string;
12
+ };
13
+ id: string;
14
+ log: RequestLogType;
15
+ };
16
+ export type PlaygroundInputs = {
17
+ query: {
18
+ key: string;
19
+ value: string;
20
+ enabled: boolean;
21
+ }[];
22
+ params: {
23
+ key: string;
24
+ value: string;
25
+ enabled: boolean;
26
+ }[];
27
+ body: string;
28
+ };
29
+ type ClientContextValue = {
30
+ client: RouteClient<string>;
31
+ queryClient: QueryClient;
32
+ baseUrl: string;
33
+ headers: Record<string, string>;
34
+ setBaseUrl: (url: string) => void;
35
+ getLastRun: (args: {
36
+ id?: string;
37
+ method: MethodType;
38
+ path: string;
39
+ }) => EndpointRun | undefined;
40
+ fetch: (method: MethodType, path: string, input: PlaygroundInputs, id: string) => Promise<EndpointRun>;
41
+ runs: EndpointRun[];
42
+ };
43
+ export declare function ClientProvider({ children, initialBaseUrl, }: {
44
+ children: ReactNode;
45
+ initialBaseUrl: string;
46
+ }): import("react/jsx-runtime").JSX.Element;
47
+ export declare function useClientContext(): ClientContextValue;
48
+ export {};
@@ -0,0 +1,21 @@
1
+ declare module '@mui/material/styles' {
2
+ interface Palette {
3
+ http: {
4
+ get: string;
5
+ post: string;
6
+ put: string;
7
+ patch: string;
8
+ delete: string;
9
+ };
10
+ status: {
11
+ success: string;
12
+ warning: string;
13
+ error: string;
14
+ };
15
+ }
16
+ interface PaletteOptions {
17
+ http?: Palette['http'];
18
+ status?: Palette['status'];
19
+ }
20
+ }
21
+ export declare const docsTheme: import("@mui/material").Theme;
@@ -0,0 +1,30 @@
1
+ import z from 'zod';
2
+ export declare const METHODS: readonly ["get", "post", "put", "patch", "delete"];
3
+ export type MethodType = (typeof METHODS)[number];
4
+ export declare const baseEntitySchema: z.ZodObject<{
5
+ id: z.ZodString;
6
+ name: z.ZodString;
7
+ description: z.ZodOptional<z.ZodString>;
8
+ groupId: z.ZodOptional<z.ZodString>;
9
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
10
+ createdAt: z.ZodNumber;
11
+ updatedAt: z.ZodNumber;
12
+ }, z.core.$strip>;
13
+ export declare const baseQuerySchema: z.ZodObject<{
14
+ beforeDate: z.ZodOptional<z.ZodString>;
15
+ afterDate: z.ZodOptional<z.ZodString>;
16
+ orderBy: z.ZodDefault<z.ZodEnum<{
17
+ timestamp: "timestamp";
18
+ duration: "duration";
19
+ level: "level";
20
+ path: "path";
21
+ }>>;
22
+ orderDirection: z.ZodDefault<z.ZodEnum<{
23
+ asc: "asc";
24
+ desc: "desc";
25
+ }>>;
26
+ searchQuery: z.ZodOptional<z.ZodString>;
27
+ groups: z.ZodOptional<z.ZodArray<z.ZodString>>;
28
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
29
+ cursor: z.ZodOptional<z.ZodString>;
30
+ }, z.core.$strip>;
@@ -0,0 +1,165 @@
1
+ import z from 'zod';
2
+ export declare const cacheLogSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ name: z.ZodString;
5
+ description: z.ZodOptional<z.ZodString>;
6
+ groupId: z.ZodOptional<z.ZodString>;
7
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
8
+ createdAt: z.ZodNumber;
9
+ updatedAt: z.ZodNumber;
10
+ operation: z.ZodEnum<{
11
+ delete: "delete";
12
+ hit: "hit";
13
+ miss: "miss";
14
+ set: "set";
15
+ }>;
16
+ value: z.ZodNullable<z.ZodAny>;
17
+ size: z.ZodOptional<z.ZodNumber>;
18
+ }, z.core.$strip>;
19
+ export declare const cacheLogQuerySchema: z.ZodObject<{
20
+ beforeDate: z.ZodOptional<z.ZodString>;
21
+ afterDate: z.ZodOptional<z.ZodString>;
22
+ orderBy: z.ZodDefault<z.ZodEnum<{
23
+ timestamp: "timestamp";
24
+ duration: "duration";
25
+ level: "level";
26
+ path: "path";
27
+ }>>;
28
+ orderDirection: z.ZodDefault<z.ZodEnum<{
29
+ asc: "asc";
30
+ desc: "desc";
31
+ }>>;
32
+ searchQuery: z.ZodOptional<z.ZodString>;
33
+ groups: z.ZodOptional<z.ZodArray<z.ZodString>>;
34
+ tags: z.ZodOptional<z.ZodArray<z.ZodString>>;
35
+ cursor: z.ZodOptional<z.ZodString>;
36
+ operations: z.ZodOptional<z.ZodArray<z.ZodEnum<{
37
+ delete: "delete";
38
+ hit: "hit";
39
+ miss: "miss";
40
+ set: "set";
41
+ }>>>;
42
+ }, z.core.$strip>;
43
+ export declare const cacheLeaves: readonly [{
44
+ readonly method: "get";
45
+ readonly path: "cache";
46
+ readonly cfg: Readonly<{
47
+ description?: string | undefined;
48
+ tags?: string[] | undefined;
49
+ deprecated?: boolean | undefined;
50
+ queryExtensionSchema: undefined;
51
+ bodyFiles?: import("@emeryld/rrroutes-contract").FileField[] | undefined;
52
+ feed: true;
53
+ summary?: string | undefined;
54
+ docsGroup?: string | undefined;
55
+ stability?: "experimental" | "beta" | "stable" | "deprecated" | undefined;
56
+ docsHidden?: boolean | undefined;
57
+ docsMeta?: Record<string, unknown> | undefined;
58
+ bodySchema: import("@emeryld/rrroutes-contract").RouteSchema<unknown, unknown> | undefined;
59
+ querySchema: import("@emeryld/rrroutes-contract").RouteSchema<{
60
+ orderBy: "timestamp" | "duration" | "level" | "path";
61
+ orderDirection: "asc" | "desc";
62
+ beforeDate?: string | undefined;
63
+ afterDate?: string | undefined;
64
+ searchQuery?: string | undefined;
65
+ groups?: string[] | undefined;
66
+ tags?: string[] | undefined;
67
+ cursor?: string | undefined;
68
+ operations?: ("delete" | "hit" | "miss" | "set")[] | undefined;
69
+ }, {
70
+ beforeDate?: string | undefined;
71
+ afterDate?: string | undefined;
72
+ orderBy?: "timestamp" | "duration" | "level" | "path" | undefined;
73
+ orderDirection?: "asc" | "desc" | undefined;
74
+ searchQuery?: string | undefined;
75
+ groups?: string[] | undefined;
76
+ tags?: string[] | undefined;
77
+ cursor?: string | undefined;
78
+ operations?: ("delete" | "hit" | "miss" | "set")[] | undefined;
79
+ }>;
80
+ paramsSchema: undefined;
81
+ outputSchema: import("@emeryld/rrroutes-contract").RouteSchema<{
82
+ out: {
83
+ id: string;
84
+ name: string;
85
+ createdAt: number;
86
+ updatedAt: number;
87
+ operation: "delete" | "hit" | "miss" | "set";
88
+ value: any;
89
+ description?: string | undefined;
90
+ groupId?: string | undefined;
91
+ tags?: string[] | undefined;
92
+ size?: number | undefined;
93
+ }[];
94
+ meta: {
95
+ totalCount?: number | undefined;
96
+ };
97
+ }, {
98
+ out: {
99
+ id: string;
100
+ name: string;
101
+ createdAt: number;
102
+ updatedAt: number;
103
+ operation: "delete" | "hit" | "miss" | "set";
104
+ value: any;
105
+ description?: string | undefined;
106
+ groupId?: string | undefined;
107
+ tags?: string[] | undefined;
108
+ size?: number | undefined;
109
+ }[];
110
+ meta: {
111
+ totalCount?: number | undefined;
112
+ };
113
+ }>;
114
+ outputMetaSchema: import("@emeryld/rrroutes-contract").RouteSchema<{
115
+ totalCount?: number | undefined;
116
+ }, {
117
+ totalCount?: number | undefined;
118
+ }>;
119
+ }>;
120
+ }, {
121
+ readonly method: "post";
122
+ readonly path: "cache";
123
+ readonly cfg: Readonly<{
124
+ description?: string | undefined;
125
+ tags?: string[] | undefined;
126
+ deprecated?: boolean | undefined;
127
+ queryExtensionSchema: undefined;
128
+ bodyFiles?: import("@emeryld/rrroutes-contract").FileField[] | undefined;
129
+ feed?: boolean | undefined;
130
+ summary?: string | undefined;
131
+ docsGroup?: string | undefined;
132
+ stability?: "experimental" | "beta" | "stable" | "deprecated" | undefined;
133
+ docsHidden?: boolean | undefined;
134
+ docsMeta?: Record<string, unknown> | undefined;
135
+ bodySchema: import("@emeryld/rrroutes-contract").RouteSchema<unknown, unknown> | undefined;
136
+ querySchema: import("@emeryld/rrroutes-contract").RouteSchema<{
137
+ orderBy: "timestamp" | "duration" | "level" | "path";
138
+ orderDirection: "asc" | "desc";
139
+ beforeDate?: string | undefined;
140
+ afterDate?: string | undefined;
141
+ searchQuery?: string | undefined;
142
+ groups?: string[] | undefined;
143
+ tags?: string[] | undefined;
144
+ cursor?: string | undefined;
145
+ operations?: ("delete" | "hit" | "miss" | "set")[] | undefined;
146
+ }, {
147
+ beforeDate?: string | undefined;
148
+ afterDate?: string | undefined;
149
+ orderBy?: "timestamp" | "duration" | "level" | "path" | undefined;
150
+ orderDirection?: "asc" | "desc" | undefined;
151
+ searchQuery?: string | undefined;
152
+ groups?: string[] | undefined;
153
+ tags?: string[] | undefined;
154
+ cursor?: string | undefined;
155
+ operations?: ("delete" | "hit" | "miss" | "set")[] | undefined;
156
+ }>;
157
+ paramsSchema: undefined;
158
+ outputSchema: import("@emeryld/rrroutes-contract").RouteSchema<{
159
+ meta?: string | undefined;
160
+ }, {
161
+ meta?: string | undefined;
162
+ }>;
163
+ outputMetaSchema: undefined;
164
+ }>;
165
+ }];