@lensjs/core 2.0.0 → 2.1.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/README.md +69 -0
- package/dist/abstracts/store.cjs +13 -0
- package/dist/abstracts/store.d.cts +6 -3
- package/dist/abstracts/store.d.ts +6 -3
- package/dist/abstracts/store.js +13 -0
- package/dist/core/api_controller.cjs +22 -1
- package/dist/core/api_controller.d.cts +4 -2
- package/dist/core/api_controller.d.ts +4 -2
- package/dist/core/api_controller.js +22 -1
- package/dist/core/lens.cjs +52 -4
- package/dist/core/lens.js +52 -4
- package/dist/exception-3AZsPtAg.d.ts +52 -0
- package/dist/exception-C69UCHPk.d.cts +52 -0
- package/dist/index.cjs +207 -29
- package/dist/index.d.cts +4 -2
- package/dist/index.d.ts +4 -2
- package/dist/index.js +204 -29
- package/dist/stores/better_sqlite.cjs +19 -3
- package/dist/stores/better_sqlite.d.cts +9 -1
- package/dist/stores/better_sqlite.d.ts +9 -1
- package/dist/stores/better_sqlite.js +19 -3
- package/dist/stores/index.cjs +19 -3
- package/dist/stores/index.js +19 -3
- package/dist/types/index.cjs +1 -0
- package/dist/types/index.d.cts +26 -2
- package/dist/types/index.d.ts +26 -2
- package/dist/types/index.js +1 -0
- package/dist/ui/assets/{CacheActionBadge-3jjmNjC6.js → CacheActionBadge-CK7JdKoE.js} +1 -1
- package/dist/ui/assets/CacheEntriesTable-C5HcgCZI.js +1 -0
- package/dist/ui/assets/CacheEntryContainer-C0no2_6_.js +2 -0
- package/dist/ui/assets/{CacheEntryDetails-CHt_pNTk.js → CacheEntryDetails-D9Xy7d9u.js} +1 -1
- package/dist/ui/assets/CacheEntryDetailsContainer-BcwliP55.js +2 -0
- package/dist/ui/assets/ExceptionContainer-CQalcd8x.js +2 -0
- package/dist/ui/assets/ExceptionDetails-BbIFoM7M.js +16 -0
- package/dist/ui/assets/ExceptionDetailsContainer-fajmF7id.js +2 -0
- package/dist/ui/assets/ExceptionTable-DY3mmGT4.js +1 -0
- package/dist/ui/assets/{LoadMore-DHOrhPsi.js → LoadMore-CJh7FLbl.js} +1 -1
- package/dist/ui/assets/QueriesContainer-DWTsKzEk.js +2 -0
- package/dist/ui/assets/{QueryDetailsContainer-eoLkgEjj.js → QueryDetailsContainer-7CA9a5de.js} +7 -7
- package/dist/ui/assets/{QueryTable-BXSzT-Cm.js → QueryTable-pn7Ayura.js} +1 -1
- package/dist/ui/assets/RequestDetails-CYSM4og8.js +1 -0
- package/dist/ui/assets/{RequestDetailsContainer-BaH6fUK7.js → RequestDetailsContainer-BECT0XJh.js} +2 -2
- package/dist/ui/assets/RequestsContainer-DLkjpX67.js +2 -0
- package/dist/ui/assets/{RequetsTable-B51VXisk.js → RequetsTable-Cgas07Fe.js} +1 -1
- package/dist/ui/assets/{StatusCode-DVhX11V3.js → StatusCode-C5lihzKZ.js} +1 -1
- package/dist/ui/assets/TabbedDataViewer-BUMQ0QVm.js +1 -0
- package/dist/ui/assets/{Table-D1Kpw7PA.js → Table-BesHc4Lc.js} +1 -1
- package/dist/ui/assets/columns-C1CwS8yE.js +1 -0
- package/dist/ui/assets/{columns-jYfhBxOM.js → columns-CULxhcpY.js} +1 -1
- package/dist/ui/assets/{columns-BIDLCW64.js → columns-gYFQU5qH.js} +1 -1
- package/dist/ui/assets/index-B2QCOgug.css +1 -0
- package/dist/ui/assets/{index-CpP2Ap5X.js → index-BRRKsoNv.js} +1 -1
- package/dist/ui/assets/{index-BdvbrZNf.js → index-PEcJ5nx0.js} +26 -21
- package/dist/ui/assets/{useCacheEntries-vuHEIj6E.js → useCacheEntries-jbGe2CRY.js} +1 -1
- package/dist/ui/assets/useExceptions-uYUhAW-J.js +1 -0
- package/dist/ui/assets/useLensApi-BsDmB7vx.js +1 -0
- package/dist/ui/assets/{useLoadMore-twYxPJ-d.js → useLoadMore-sLsrekV5.js} +1 -1
- package/dist/ui/assets/{useQueries-BYFLoUQR.js → useQueries-DJE91mYq.js} +1 -1
- package/dist/ui/index.html +2 -2
- package/dist/utils/async_context.cjs +113 -0
- package/dist/utils/async_context.d.cts +6 -1
- package/dist/utils/async_context.d.ts +6 -1
- package/dist/utils/async_context.js +102 -0
- package/dist/utils/exception.cjs +130 -0
- package/dist/utils/exception.d.cts +3 -0
- package/dist/utils/exception.d.ts +3 -0
- package/dist/utils/exception.js +91 -0
- package/dist/utils/index.cjs +1 -0
- package/dist/utils/index.js +1 -0
- package/dist/watchers/cache_watcher.cjs +12 -16
- package/dist/watchers/cache_watcher.js +12 -16
- package/dist/watchers/exception_watcher.cjs +108 -0
- package/dist/watchers/exception_watcher.d.cts +10 -0
- package/dist/watchers/exception_watcher.d.ts +10 -0
- package/dist/watchers/exception_watcher.js +75 -0
- package/dist/watchers/index.cjs +53 -16
- package/dist/watchers/index.d.cts +1 -0
- package/dist/watchers/index.d.ts +1 -0
- package/dist/watchers/index.js +42 -16
- package/package.json +8 -6
- package/dist/ui/assets/CacheEntriesTable-DPLre6br.js +0 -1
- package/dist/ui/assets/CacheEntryContainer-WN6LkoCR.js +0 -2
- package/dist/ui/assets/CacheEntryDetailsContainer-BhquSApO.js +0 -2
- package/dist/ui/assets/QueriesContainer-Cl6rq4dH.js +0 -2
- package/dist/ui/assets/RequestDetails-CIB7_XWh.js +0 -1
- package/dist/ui/assets/RequestsContainer-DLS17BWP.js +0 -2
- package/dist/ui/assets/TabbedDataViewer-CNSEhc6h.js +0 -1
- package/dist/ui/assets/index-C04tuZDI.css +0 -1
- package/dist/ui/assets/useLensApi-Bzmx8hps.js +0 -1
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// src/watchers/exception_watcher.ts
|
|
31
|
+
var exception_watcher_exports = {};
|
|
32
|
+
__export(exception_watcher_exports, {
|
|
33
|
+
default: () => ExceptionWatcher
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(exception_watcher_exports);
|
|
36
|
+
|
|
37
|
+
// src/context/container.ts
|
|
38
|
+
var Container = class {
|
|
39
|
+
static bindings = /* @__PURE__ */ new Map();
|
|
40
|
+
static singletons = /* @__PURE__ */ new Map();
|
|
41
|
+
static instances = /* @__PURE__ */ new Map();
|
|
42
|
+
static bind(key, factory) {
|
|
43
|
+
this.bindings.set(key, factory);
|
|
44
|
+
}
|
|
45
|
+
static singleton(key, factory) {
|
|
46
|
+
this.singletons.set(key, factory);
|
|
47
|
+
}
|
|
48
|
+
static make(key) {
|
|
49
|
+
if (this.instances.has(key)) {
|
|
50
|
+
return this.instances.get(key);
|
|
51
|
+
}
|
|
52
|
+
if (this.singletons.has(key)) {
|
|
53
|
+
const instance = this.singletons.get(key)();
|
|
54
|
+
this.instances.set(key, instance);
|
|
55
|
+
return instance;
|
|
56
|
+
}
|
|
57
|
+
if (this.bindings.has(key)) {
|
|
58
|
+
return this.bindings.get(key)();
|
|
59
|
+
}
|
|
60
|
+
throw new Error(`Service "${key}" is not bound in the container`);
|
|
61
|
+
}
|
|
62
|
+
static has(key) {
|
|
63
|
+
return this.bindings.has(key) || this.singletons.has(key) || this.instances.has(key);
|
|
64
|
+
}
|
|
65
|
+
static clear() {
|
|
66
|
+
this.bindings.clear();
|
|
67
|
+
this.singletons.clear();
|
|
68
|
+
this.instances.clear();
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// src/context/context.ts
|
|
73
|
+
var getStore = () => {
|
|
74
|
+
return Container.make("store");
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
// src/core/watcher.ts
|
|
78
|
+
var Watcher = class {
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
// src/utils/index.ts
|
|
82
|
+
var import_luxon = require("luxon");
|
|
83
|
+
var import_sql_formatter = require("sql-formatter");
|
|
84
|
+
var import_crypto = require("crypto");
|
|
85
|
+
var import_url = require("url");
|
|
86
|
+
var path = __toESM(require("path"), 1);
|
|
87
|
+
var generateRandomUuid = () => {
|
|
88
|
+
return (0, import_crypto.randomUUID)();
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// src/watchers/exception_watcher.ts
|
|
92
|
+
var ExceptionWatcher = class extends Watcher {
|
|
93
|
+
name = "exception" /* EXCEPTION */;
|
|
94
|
+
async log(payload) {
|
|
95
|
+
await getStore().save({
|
|
96
|
+
id: generateRandomUuid(),
|
|
97
|
+
type: "exception" /* EXCEPTION */,
|
|
98
|
+
requestId: payload.requestId,
|
|
99
|
+
timestamp: payload.createdAt,
|
|
100
|
+
data: payload,
|
|
101
|
+
minimal_data: {
|
|
102
|
+
name: payload.name,
|
|
103
|
+
message: payload.message,
|
|
104
|
+
createdAt: payload.createdAt
|
|
105
|
+
}
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Watcher from '../core/watcher.cjs';
|
|
2
|
+
import { WatcherTypeEnum, ExceptionEntry } from '../types/index.cjs';
|
|
3
|
+
import 'sql-formatter';
|
|
4
|
+
|
|
5
|
+
declare class ExceptionWatcher extends Watcher {
|
|
6
|
+
name: WatcherTypeEnum;
|
|
7
|
+
log(payload: ExceptionEntry): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { ExceptionWatcher as default };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Watcher from '../core/watcher.js';
|
|
2
|
+
import { WatcherTypeEnum, ExceptionEntry } from '../types/index.js';
|
|
3
|
+
import 'sql-formatter';
|
|
4
|
+
|
|
5
|
+
declare class ExceptionWatcher extends Watcher {
|
|
6
|
+
name: WatcherTypeEnum;
|
|
7
|
+
log(payload: ExceptionEntry): Promise<void>;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export { ExceptionWatcher as default };
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// src/context/container.ts
|
|
2
|
+
var Container = class {
|
|
3
|
+
static bindings = /* @__PURE__ */ new Map();
|
|
4
|
+
static singletons = /* @__PURE__ */ new Map();
|
|
5
|
+
static instances = /* @__PURE__ */ new Map();
|
|
6
|
+
static bind(key, factory) {
|
|
7
|
+
this.bindings.set(key, factory);
|
|
8
|
+
}
|
|
9
|
+
static singleton(key, factory) {
|
|
10
|
+
this.singletons.set(key, factory);
|
|
11
|
+
}
|
|
12
|
+
static make(key) {
|
|
13
|
+
if (this.instances.has(key)) {
|
|
14
|
+
return this.instances.get(key);
|
|
15
|
+
}
|
|
16
|
+
if (this.singletons.has(key)) {
|
|
17
|
+
const instance = this.singletons.get(key)();
|
|
18
|
+
this.instances.set(key, instance);
|
|
19
|
+
return instance;
|
|
20
|
+
}
|
|
21
|
+
if (this.bindings.has(key)) {
|
|
22
|
+
return this.bindings.get(key)();
|
|
23
|
+
}
|
|
24
|
+
throw new Error(`Service "${key}" is not bound in the container`);
|
|
25
|
+
}
|
|
26
|
+
static has(key) {
|
|
27
|
+
return this.bindings.has(key) || this.singletons.has(key) || this.instances.has(key);
|
|
28
|
+
}
|
|
29
|
+
static clear() {
|
|
30
|
+
this.bindings.clear();
|
|
31
|
+
this.singletons.clear();
|
|
32
|
+
this.instances.clear();
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
// src/context/context.ts
|
|
37
|
+
var getStore = () => {
|
|
38
|
+
return Container.make("store");
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
// src/core/watcher.ts
|
|
42
|
+
var Watcher = class {
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
// src/utils/index.ts
|
|
46
|
+
import { DateTime } from "luxon";
|
|
47
|
+
import { format } from "sql-formatter";
|
|
48
|
+
import { randomUUID } from "crypto";
|
|
49
|
+
import { fileURLToPath } from "url";
|
|
50
|
+
import * as path from "path";
|
|
51
|
+
var generateRandomUuid = () => {
|
|
52
|
+
return randomUUID();
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
// src/watchers/exception_watcher.ts
|
|
56
|
+
var ExceptionWatcher = class extends Watcher {
|
|
57
|
+
name = "exception" /* EXCEPTION */;
|
|
58
|
+
async log(payload) {
|
|
59
|
+
await getStore().save({
|
|
60
|
+
id: generateRandomUuid(),
|
|
61
|
+
type: "exception" /* EXCEPTION */,
|
|
62
|
+
requestId: payload.requestId,
|
|
63
|
+
timestamp: payload.createdAt,
|
|
64
|
+
data: payload,
|
|
65
|
+
minimal_data: {
|
|
66
|
+
name: payload.name,
|
|
67
|
+
message: payload.message,
|
|
68
|
+
createdAt: payload.createdAt
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
export {
|
|
74
|
+
ExceptionWatcher as default
|
|
75
|
+
};
|
package/dist/watchers/index.cjs
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
2
3
|
var __defProp = Object.defineProperty;
|
|
3
4
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
5
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
5
7
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
8
|
var __export = (target, all) => {
|
|
7
9
|
for (var name in all)
|
|
@@ -15,12 +17,21 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
15
17
|
}
|
|
16
18
|
return to;
|
|
17
19
|
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
18
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
29
|
|
|
20
30
|
// src/watchers/index.ts
|
|
21
31
|
var watchers_exports = {};
|
|
22
32
|
__export(watchers_exports, {
|
|
23
33
|
CacheWatcher: () => CacheWatcher,
|
|
34
|
+
ExceptionWatcher: () => ExceptionWatcher,
|
|
24
35
|
QueryWatcher: () => QueryWatcher,
|
|
25
36
|
RequestWatcher: () => RequestWatcher
|
|
26
37
|
});
|
|
@@ -128,28 +139,54 @@ var CacheWatcher = class extends Watcher {
|
|
|
128
139
|
});
|
|
129
140
|
}
|
|
130
141
|
normalizePayload(data) {
|
|
131
|
-
let
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
value
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
|
|
142
|
-
normalizedData.key = "";
|
|
143
|
-
}
|
|
144
|
-
if (!normalizedData["value"]) {
|
|
145
|
-
normalizedData["value"] = "";
|
|
142
|
+
let key = "";
|
|
143
|
+
let value = "";
|
|
144
|
+
if ("data" in data && typeof data.data === "object" && data.data !== null) {
|
|
145
|
+
if ("key" in data.data) {
|
|
146
|
+
key = String(data.data.key);
|
|
147
|
+
}
|
|
148
|
+
if ("value" in data.data) {
|
|
149
|
+
value = data.data.value;
|
|
150
|
+
}
|
|
151
|
+
} else if (typeof data.data === "string") {
|
|
152
|
+
value = data.data;
|
|
146
153
|
}
|
|
147
|
-
return
|
|
154
|
+
return { key, value };
|
|
155
|
+
}
|
|
156
|
+
};
|
|
157
|
+
|
|
158
|
+
// src/utils/index.ts
|
|
159
|
+
var import_luxon = require("luxon");
|
|
160
|
+
var import_sql_formatter = require("sql-formatter");
|
|
161
|
+
var import_crypto = require("crypto");
|
|
162
|
+
var import_url = require("url");
|
|
163
|
+
var path = __toESM(require("path"), 1);
|
|
164
|
+
var generateRandomUuid = () => {
|
|
165
|
+
return (0, import_crypto.randomUUID)();
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// src/watchers/exception_watcher.ts
|
|
169
|
+
var ExceptionWatcher = class extends Watcher {
|
|
170
|
+
name = "exception" /* EXCEPTION */;
|
|
171
|
+
async log(payload) {
|
|
172
|
+
await getStore().save({
|
|
173
|
+
id: generateRandomUuid(),
|
|
174
|
+
type: "exception" /* EXCEPTION */,
|
|
175
|
+
requestId: payload.requestId,
|
|
176
|
+
timestamp: payload.createdAt,
|
|
177
|
+
data: payload,
|
|
178
|
+
minimal_data: {
|
|
179
|
+
name: payload.name,
|
|
180
|
+
message: payload.message,
|
|
181
|
+
createdAt: payload.createdAt
|
|
182
|
+
}
|
|
183
|
+
});
|
|
148
184
|
}
|
|
149
185
|
};
|
|
150
186
|
// Annotate the CommonJS export names for ESM import in node:
|
|
151
187
|
0 && (module.exports = {
|
|
152
188
|
CacheWatcher,
|
|
189
|
+
ExceptionWatcher,
|
|
153
190
|
QueryWatcher,
|
|
154
191
|
RequestWatcher
|
|
155
192
|
});
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { default as QueryWatcher } from './query_watcher.cjs';
|
|
2
2
|
export { default as RequestWatcher } from './request_watcher.cjs';
|
|
3
3
|
export { default as CacheWatcher } from './cache_watcher.cjs';
|
|
4
|
+
export { default as ExceptionWatcher } from './exception_watcher.cjs';
|
|
4
5
|
import '../core/watcher.cjs';
|
|
5
6
|
import '../types/index.cjs';
|
|
6
7
|
import 'sql-formatter';
|
package/dist/watchers/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export { default as QueryWatcher } from './query_watcher.js';
|
|
2
2
|
export { default as RequestWatcher } from './request_watcher.js';
|
|
3
3
|
export { default as CacheWatcher } from './cache_watcher.js';
|
|
4
|
+
export { default as ExceptionWatcher } from './exception_watcher.js';
|
|
4
5
|
import '../core/watcher.js';
|
|
5
6
|
import '../types/index.js';
|
|
6
7
|
import 'sql-formatter';
|
package/dist/watchers/index.js
CHANGED
|
@@ -100,27 +100,53 @@ var CacheWatcher = class extends Watcher {
|
|
|
100
100
|
});
|
|
101
101
|
}
|
|
102
102
|
normalizePayload(data) {
|
|
103
|
-
let
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
value
|
|
111
|
-
}
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
normalizedData.key = "";
|
|
115
|
-
}
|
|
116
|
-
if (!normalizedData["value"]) {
|
|
117
|
-
normalizedData["value"] = "";
|
|
103
|
+
let key = "";
|
|
104
|
+
let value = "";
|
|
105
|
+
if ("data" in data && typeof data.data === "object" && data.data !== null) {
|
|
106
|
+
if ("key" in data.data) {
|
|
107
|
+
key = String(data.data.key);
|
|
108
|
+
}
|
|
109
|
+
if ("value" in data.data) {
|
|
110
|
+
value = data.data.value;
|
|
111
|
+
}
|
|
112
|
+
} else if (typeof data.data === "string") {
|
|
113
|
+
value = data.data;
|
|
118
114
|
}
|
|
119
|
-
return
|
|
115
|
+
return { key, value };
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
|
|
119
|
+
// src/utils/index.ts
|
|
120
|
+
import { DateTime } from "luxon";
|
|
121
|
+
import { format } from "sql-formatter";
|
|
122
|
+
import { randomUUID } from "crypto";
|
|
123
|
+
import { fileURLToPath } from "url";
|
|
124
|
+
import * as path from "path";
|
|
125
|
+
var generateRandomUuid = () => {
|
|
126
|
+
return randomUUID();
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
// src/watchers/exception_watcher.ts
|
|
130
|
+
var ExceptionWatcher = class extends Watcher {
|
|
131
|
+
name = "exception" /* EXCEPTION */;
|
|
132
|
+
async log(payload) {
|
|
133
|
+
await getStore().save({
|
|
134
|
+
id: generateRandomUuid(),
|
|
135
|
+
type: "exception" /* EXCEPTION */,
|
|
136
|
+
requestId: payload.requestId,
|
|
137
|
+
timestamp: payload.createdAt,
|
|
138
|
+
data: payload,
|
|
139
|
+
minimal_data: {
|
|
140
|
+
name: payload.name,
|
|
141
|
+
message: payload.message,
|
|
142
|
+
createdAt: payload.createdAt
|
|
143
|
+
}
|
|
144
|
+
});
|
|
120
145
|
}
|
|
121
146
|
};
|
|
122
147
|
export {
|
|
123
148
|
CacheWatcher,
|
|
149
|
+
ExceptionWatcher,
|
|
124
150
|
QueryWatcher,
|
|
125
151
|
RequestWatcher
|
|
126
152
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lensjs/core",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.1.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "./dist/index.d.ts",
|
|
@@ -17,18 +17,20 @@
|
|
|
17
17
|
"access": "public"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
|
-
"@tailwindcss/vite": "^4.1.
|
|
20
|
+
"@tailwindcss/vite": "^4.1.13",
|
|
21
21
|
"@types/luxon": "^3.7.1",
|
|
22
|
+
"@types/stack-utils": "^2.0.3",
|
|
22
23
|
"cross-env": "^10.0.0",
|
|
23
24
|
"vitest": "^3.2.4",
|
|
24
25
|
"@lensjs/typescript-config": "1.0.12"
|
|
25
26
|
},
|
|
26
27
|
"dependencies": {
|
|
27
28
|
"emittery": "^1.2.0",
|
|
28
|
-
"libsql": "^0.5.
|
|
29
|
-
"luxon": "^3.7.
|
|
29
|
+
"libsql": "^0.5.22",
|
|
30
|
+
"luxon": "^3.7.2",
|
|
30
31
|
"rimraf": "^6.0.1",
|
|
31
|
-
"sql-formatter": "^15.6.
|
|
32
|
+
"sql-formatter": "^15.6.8",
|
|
33
|
+
"stack-utils": "^2.0.6",
|
|
32
34
|
"tailwind-merge": "^3.3.1",
|
|
33
35
|
"@lensjs/date": "1.0.12"
|
|
34
36
|
},
|
|
@@ -38,6 +40,6 @@
|
|
|
38
40
|
"build:ui": "npm --prefix src/ui run prod",
|
|
39
41
|
"clean": "rimraf dist",
|
|
40
42
|
"postbuild": "node copy-front-build.cjs",
|
|
41
|
-
"test": "vitest"
|
|
43
|
+
"test": "vitest run"
|
|
42
44
|
}
|
|
43
45
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as a}from"./index-BdvbrZNf.js";import{L as s}from"./LoadMore-DHOrhPsi.js";import{T as t}from"./Table-D1Kpw7PA.js";import{g as r}from"./columns-BIDLCW64.js";import"./index-CpP2Ap5X.js";import"./CacheActionBadge-3jjmNjC6.js";const p=({hasMoreObject:o})=>a.jsxs("div",{className:"w-full",children:[a.jsx("div",{className:"overflow-x-auto",children:a.jsx(t,{columns:r(),data:o.data})}),a.jsx(s,{paginatedPage:o})]});export{p as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CacheEntriesTable-DPLre6br.js","./index-BdvbrZNf.js","./index-C04tuZDI.css","./LoadMore-DHOrhPsi.js","./Table-D1Kpw7PA.js","./columns-BIDLCW64.js","./index-CpP2Ap5X.js","./CacheActionBadge-3jjmNjC6.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as t,j as a,_ as s}from"./index-BdvbrZNf.js";import{u as i}from"./useLoadMore-twYxPJ-d.js";import{u as m}from"./useCacheEntries-vuHEIj6E.js";import"./useLensApi-Bzmx8hps.js";const n=t.lazy(()=>s(()=>import("./CacheEntriesTable-DPLre6br.js"),__vite__mapDeps([0,1,2,3,4,5,6,7]),import.meta.url)),_=()=>{const{loadMoreItems:e,getItems:r}=m(),o=i({paginatedPage:e});return t.useEffect(()=>{r()},[]),a.jsx(n,{hasMoreObject:o})};export{_ as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./CacheEntryDetails-CHt_pNTk.js","./index-BdvbrZNf.js","./index-C04tuZDI.css","./TabbedDataViewer-CNSEhc6h.js","./CacheActionBadge-3jjmNjC6.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{m as o,r as s,j as r,_ as i}from"./index-BdvbrZNf.js";import{u as m}from"./useCacheEntries-vuHEIj6E.js";import"./useLensApi-Bzmx8hps.js";const n=s.lazy(()=>i(()=>import("./CacheEntryDetails-CHt_pNTk.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url)),E=()=>{const{item:e,getItem:a}=m(),{id:t}=o();return s.useEffect(()=>{t&&a(t)},[t]),r.jsx("div",{children:e&&r.jsx(n,{data:e})})};export{E as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./QueryTable-BXSzT-Cm.js","./index-BdvbrZNf.js","./index-C04tuZDI.css","./LoadMore-DHOrhPsi.js","./Table-D1Kpw7PA.js","./columns-jYfhBxOM.js","./index-CpP2Ap5X.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e,j as s,_ as a}from"./index-BdvbrZNf.js";import{u as i}from"./useQueries-BYFLoUQR.js";import{u}from"./useLoadMore-twYxPJ-d.js";import"./useLensApi-Bzmx8hps.js";const m=e.lazy(()=>a(()=>import("./QueryTable-BXSzT-Cm.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url)),f=()=>{const{loadMoreRequests:r,fetchQueries:t}=i(),o=u({paginatedPage:r});return e.useEffect(()=>{t()},[]),s.jsx(m,{hasMoreObject:o})};export{f as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as d,j as e}from"./index-BdvbrZNf.js";import{D as r,T as o}from"./TabbedDataViewer-CNSEhc6h.js";import{T as n}from"./Table-D1Kpw7PA.js";import{g as i}from"./columns-jYfhBxOM.js";import{g as m}from"./columns-BIDLCW64.js";import{f as u}from"./index-CpP2Ap5X.js";import{R as c,S as b}from"./StatusCode-DVhX11V3.js";import"./CacheActionBadge-3jjmNjC6.js";const x=({request:a})=>{const t=d.useMemo(()=>u(a?.request.data?.createdAt),[a?.request.data.createdAt]);if(!a||!a.request)return e.jsx(r,{title:"Request Details",items:[],emptyMessage:"No request data available"});const s=()=>a?.request.data?.headers?.host||"Unknown",l=d.useMemo(()=>[{label:"Time",value:t,className:"text-gray-900 dark:text-gray-100"},{label:"Hostname",value:s(),className:"text-gray-900 dark:text-gray-100 font-mono"},{label:"Method",value:a.request.data.method?e.jsx(c,{method:a.request.data.method}):"Unknown"},{label:"Request ID",value:a.request.data.id||"N/A",className:"text-gray-700 dark:text-gray-300 font-mono text-sm"},{label:"Path",value:a.request.data.path||"N/A",className:"text-gray-900 dark:text-gray-100 font-mono"},{label:"Status",value:a.request.data.status?e.jsx(b,{status:a.request.data.status}):"N/A"},{label:"Duration",value:a.request.data.duration||"N/A",className:"text-gray-900 dark:text-gray-100 font-medium"},{label:"IP Address",value:a.request.data.ip||"N/A",className:"text-gray-900 dark:text-gray-100 font-mono"}],[a.request.data,t]);return e.jsx(r,{title:"Request Details",items:l})},D=({request:a})=>{const t=[{id:"payload",label:"Payload",data:a.request.data.body},{id:"headers",label:"Headers",data:a.request.data.headers}],s=[{id:"response-body",label:"Body",data:a.request.data.response.json},{id:"response-headers",label:"Headers",data:a.request.data.response.headers}],l=[{id:"request-queries",label:`Queries (${a.queries.length})`,shouldShow:a.queries.length>0,content:e.jsx(n,{columns:i(),data:a?.queries})},{id:"request-cache",label:`Cache (${a.cacheEntries.length})`,shouldShow:a.cacheEntries.length>0,content:e.jsx(n,{columns:m(),data:a.cacheEntries})}];return e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx(x,{request:a}),a.request.data.user&&e.jsx(r,{title:"User",items:[{label:"ID",value:a.request.data.user?.id},{label:"Email",value:a.request.data.user?.email},{label:"Name",value:a.request.data.user?.name}]}),e.jsx(o,{tabs:t,title:"Request Data",defaultActiveTab:"payload"}),e.jsx(o,{tabs:s,title:"Response Data",defaultActiveTab:"response-body"}),e.jsx(o,{tabs:l})]})};export{D as default};
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./RequetsTable-B51VXisk.js","./index-BdvbrZNf.js","./index-C04tuZDI.css","./LoadMore-DHOrhPsi.js","./Table-D1Kpw7PA.js","./StatusCode-DVhX11V3.js","./index-CpP2Ap5X.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as e,j as m,_ as p}from"./index-BdvbrZNf.js";import{D as h,u as _}from"./useLensApi-Bzmx8hps.js";import{u as E}from"./useLoadMore-twYxPJ-d.js";const y={queries:[],cacheEntries:[],request:{created_at:"",data:{body:{},createdAt:"",duration:"",headers:{},id:"",ip:"",method:"GET",path:"",response:{headers:{},json:{}},status:0,user:null},id:"",lens_entry_id:null,type:"request"}};function M(){const[t,o]=e.useState([]),[r,d]=e.useState(y),[c,s]=e.useState(!1),[i,q]=e.useState(h),{getAllRequests:a,getRequestById:l}=_(),f=e.useCallback(async n=>{s(!0),l(n).then(u=>{d({request:u.data,queries:[],cacheEntries:[]})}).finally(()=>{s(!1)})},[l]),R=e.useCallback(async n=>{s(!0),a(n).then(u=>{o(u.data),q(u.meta)}).finally(()=>{s(!1)})},[a]);return{loadMoreRequests:e.useMemo(()=>({initialData:t,meta:i,loading:c,fetchRawPage:a}),[t,i,c,a]),fetchRequests:R,fetchRequest:f,request:r}}const g=e.lazy(()=>p(()=>import("./RequetsTable-B51VXisk.js"),__vite__mapDeps([0,1,2,3,4,5,6]),import.meta.url)),L=()=>{const{loadMoreRequests:t,fetchRequests:o}=M(),r=E({paginatedPage:t});return e.useEffect(()=>{o()},[]),m.jsx(g,{hasMoreObject:r})};export{L as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{j as e,r as b}from"./index-BdvbrZNf.js";const N=({title:s,items:d,emptyMessage:c="No data available"})=>!d||d.length===0||d.every(n=>!n.value)?e.jsxs("div",{className:"bg-white dark:bg-neutral-800 border border-gray-200 dark:border-neutral-700 rounded-lg shadow-sm p-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100",children:s})," ",e.jsx("p",{className:"text-center text-gray-500 dark:text-gray-400",children:c})]}):e.jsxs("div",{className:"bg-white dark:bg-neutral-800 border border-gray-200 dark:border-neutral-700 rounded-lg shadow-sm",children:[e.jsx("div",{className:"px-6 py-4 border-b border-gray-200 dark:border-neutral-700 bg-gray-50 dark:bg-neutral-900",children:e.jsx("h2",{className:"text-lg font-semibold text-gray-900 dark:text-gray-100",children:s})}),e.jsx("div",{className:"px-6 py-4",children:e.jsx("div",{className:"space-y-4",children:d.map((n,i)=>e.jsxs("div",{className:"flex flex-col sm:flex-row sm:items-start gap-2",children:[e.jsx("div",{className:"w-full sm:w-32 flex-shrink-0",children:e.jsx("span",{className:"text-sm font-medium text-gray-500 dark:text-gray-400",children:n.label})}),e.jsx("div",{className:"flex-1",children:typeof n.value=="string"?e.jsx("span",{className:`text-sm ${n.className||""}`,children:n.value}):n.value})]},i))})})]});function t(s="key"){return s+"-"+Math.random().toString(36).substr(2,9)}const j=({data:s})=>{const[d,c]=b.useState(!1),n=async()=>{try{await navigator.clipboard.writeText(JSON.stringify(s,null,2)),c(!0),setTimeout(()=>c(!1),2e3)}catch(l){console.error("Failed to copy: ",l)}},i=()=>e.jsxs("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[e.jsx("rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2"}),e.jsx("path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2"})]}),a=()=>e.jsx("svg",{width:"16",height:"16",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:e.jsx("path",{d:"M20 6 9 17l-5-5"})}),h=(l,p=0)=>{const r=[],x=" ".repeat(p);if(Array.isArray(l))r.push(e.jsx("span",{className:"text-neutral-600 dark:text-neutral-400",children:"["},t("open-bracket"))),l.forEach((u,m)=>{r.push(e.jsx("br",{},t("br"))),r.push(e.jsxs("span",{className:"text-transparent",children:[x," "]},t("indent"))),r.push(...h(u,p+1)),m<l.length-1&&r.push(e.jsx("span",{className:"text-neutral-600 dark:text-neutral-400",children:","},t("comma")))}),r.push(e.jsx("br",{},t("br-close"))),r.push(e.jsx("span",{className:"text-transparent",children:x},t("indent-close"))),r.push(e.jsx("span",{className:"text-neutral-600 dark:text-neutral-400",children:"]"},t("close-bracket")));else if(typeof l=="object"&&l!==null){r.push(e.jsx("span",{className:"text-neutral-600 dark:text-neutral-400",children:"{"},t("open-brace")));const u=Object.entries(l);u.forEach(([m,o],k)=>{r.push(e.jsx("br",{},t("br"))),r.push(e.jsxs("span",{className:"text-transparent",children:[x," "]},t("indent"))),r.push(e.jsxs("span",{className:"text-blue-600 dark:text-blue-400",children:['"',m,'"']},t("key"))),r.push(e.jsxs("span",{className:"text-neutral-600 dark:text-neutral-400",children:[":"," "]},t("colon"))),typeof o=="string"?r.push(e.jsxs("span",{className:"text-green-600 dark:text-green-400",children:['"',o,'"']},t("value-string"))):typeof o=="number"?r.push(e.jsx("span",{className:"text-orange-600 dark:text-orange-400",children:o},t("value-number"))):typeof o=="boolean"?r.push(e.jsx("span",{className:"text-purple-600 dark:text-purple-400",children:o.toString()},t("value-boolean"))):o===null?r.push(e.jsx("span",{className:"text-neutral-500 dark:text-neutral-400",children:"null"},t("value-null"))):r.push(...h(o,p+1)),k<u.length-1&&r.push(e.jsx("span",{className:"text-neutral-600 dark:text-neutral-400",children:","},t("comma")))}),r.push(e.jsx("br",{},t("br-close"))),r.push(e.jsx("span",{className:"text-transparent",children:x},t("indent-close"))),r.push(e.jsx("span",{className:"text-neutral-600 dark:text-neutral-400",children:"}"},t("close-brace")))}return r};function g(l){return typeof l=="string"?e.jsx("span",{className:"text-green-600 dark:text-green-400",children:l}):h(l)}return e.jsxs("div",{className:"bg-neutral-50 dark:bg-slate-900 rounded-lg p-4 font-mono text-sm overflow-x-auto relative",children:[e.jsx("button",{onClick:n,className:`absolute top-3 right-3 p-2 rounded-md transition-colors ${d?"bg-green-100 text-green-600 dark:bg-green-900/30 dark:text-green-400":"bg-white text-neutral-500 hover:text-neutral-700 hover:bg-neutral-100 dark:bg-slate-800 dark:text-neutral-400 dark:hover:text-neutral-300 dark:hover:bg-slate-700"}`,title:d?"Copied!":"Copy to clipboard",children:d?e.jsx(a,{}):e.jsx(i,{})}),e.jsx("pre",{className:"whitespace-pre-wrap pr-12 text-neutral-800 dark:text-neutral-200 min-h-10",children:g(s)})]})},y=({tabs:s,title:d,defaultActiveTab:c})=>{s=s.filter(a=>a.shouldShow===void 0||a.shouldShow);const[n,i]=b.useState(c||s[0]?.id||"");return s.length?e.jsxs("div",{className:"border border-neutral-200 dark:border-neutral-700 rounded-[15px] shadow-sm",children:[d&&e.jsx("div",{className:"px-6 py-4 rounded-t-[15px] border-b border-neutral-200 dark:border-neutral-700 bg-neutral-50 dark:bg-neutral-900",children:e.jsx("h2",{className:"text-lg font-semibold text-neutral-900 dark:text-neutral-100",children:d})}),e.jsx("div",{className:"border-b rounded-[15px] border-neutral-200 dark:border-neutral-700",children:e.jsx("nav",{className:"flex space-x-8 px-6","aria-label":"Tabs",children:s.map(a=>e.jsx("button",{onClick:()=>i(a.id),className:`py-4 px-1 border-b-2 font-medium text-sm transition-colors duration-200 ${n===a.id?"border-blue-500 text-blue-600 dark:text-blue-400":"border-transparent text-neutral-500 dark:text-neutral-400 hover:text-neutral-700 dark:hover:text-neutral-300 hover:border-neutral-300 dark:hover:border-neutral-600"}`,children:a.label},a.id))})}),e.jsx("div",{className:"p-6 ",children:s.map(a=>e.jsx("div",{className:n===a.id?"block":"hidden",children:a.content?e.jsx("div",{children:a.content}):e.jsx(e.Fragment,{children:a.data&&e.jsx(j,{data:a.data})})},a.id))})]}):null};export{N as D,j as J,y as T};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.1.12 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-space-x-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--color-red-100:oklch(93.6% .032 17.717);--color-red-400:oklch(70.4% .191 22.216);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-red-800:oklch(44.4% .177 26.899);--color-orange-400:oklch(75% .183 55.934);--color-orange-600:oklch(64.6% .222 41.116);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-800:oklch(47.3% .137 46.201);--color-yellow-100:oklch(97.3% .071 103.193);--color-yellow-600:oklch(68.1% .162 75.834);--color-yellow-700:oklch(55.4% .135 66.442);--color-yellow-800:oklch(47.6% .114 61.907);--color-green-100:oklch(96.2% .044 156.743);--color-green-400:oklch(79.2% .209 151.711);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-green-900:oklch(39.3% .095 152.535);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-600:oklch(51.1% .262 276.966);--color-purple-400:oklch(71.4% .203 305.504);--color-purple-600:oklch(55.8% .288 302.321);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-300:oklch(86.9% .022 252.894);--color-slate-400:oklch(70.4% .04 256.788);--color-slate-600:oklch(44.6% .043 257.281);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-neutral-50:oklch(98.5% 0 0);--color-neutral-100:oklch(97% 0 0);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-700:oklch(37.1% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-neutral-950:oklch(14.5% 0 0);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xl:36rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--leading-relaxed:1.625;--radius-md:.375rem;--radius-lg:.5rem;--radius-2xl:1rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--animate-spin:spin 1s linear infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-geist-sans);--default-mono-font-family:var(--font-geist-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}body{background-color:rgb(var(--bg-primary));color:rgb(var(--text-primary));transition:background-color .3s,color .3s}button{cursor:pointer}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-1\/2{top:50%}.top-3{top:calc(var(--spacing)*3)}.right-3{right:calc(var(--spacing)*3)}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-\[99\]{z-index:99}.z-\[100\]{z-index:100}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.my-5{margin-block:calc(var(--spacing)*5)}.my-6{margin-block:calc(var(--spacing)*6)}.mt-1{margin-top:calc(var(--spacing)*1)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.line-clamp-1{-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.h-5{height:calc(var(--spacing)*5)}.h-16{height:calc(var(--spacing)*16)}.h-28{height:calc(var(--spacing)*28)}.h-32{height:calc(var(--spacing)*32)}.h-full{height:100%}.h-screen{height:100vh}.max-h-none{max-height:none}.min-h-10{min-height:calc(var(--spacing)*10)}.min-h-\[88vh\]{min-height:88vh}.min-h-screen{min-height:100vh}.w-3\/4{width:75%}.w-5{width:calc(var(--spacing)*5)}.w-16{width:calc(var(--spacing)*16)}.w-28{width:calc(var(--spacing)*28)}.w-32{width:calc(var(--spacing)*32)}.w-full{width:100%}.max-w-80{max-width:calc(var(--spacing)*80)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-32{min-width:calc(var(--spacing)*32)}.min-w-40{min-width:calc(var(--spacing)*40)}.min-w-60{min-width:calc(var(--spacing)*60)}.flex-1{flex:1}.flex-shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-x-\[120\%\]{--tw-translate-x: -120% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-spin{animation:var(--animate-spin)}.cursor-not-allowed{cursor:not-allowed}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-8{gap:calc(var(--spacing)*8)}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-x-8>:not(:last-child)){--tw-space-x-reverse:0;margin-inline-start:calc(calc(var(--spacing)*8)*var(--tw-space-x-reverse));margin-inline-end:calc(calc(var(--spacing)*8)*calc(1 - var(--tw-space-x-reverse)))}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:var(--radius-2xl)}.rounded-\[10px\]{border-radius:10px}.rounded-\[15px\]{border-radius:15px}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-t-\[15px\]{border-top-left-radius:15px;border-top-right-radius:15px}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-t-4{border-top-style:var(--tw-border-style);border-top-width:4px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-b-4{border-bottom-style:var(--tw-border-style);border-bottom-width:4px}.border-blue-500{border-color:var(--color-blue-500)}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.border-gray-900{border-color:var(--color-gray-900)}.border-neutral-200{border-color:var(--color-neutral-200)}.border-neutral-800{border-color:var(--color-neutral-800)}.border-transparent{border-color:#0000}.bg-amber-100{background-color:var(--color-amber-100)}.bg-background{background-color:var(--background)}.bg-black\/40{background-color:#0006}@supports (color:color-mix(in lab,red,red)){.bg-black\/40{background-color:color-mix(in oklab,var(--color-black)40%,transparent)}}.bg-blue-100{background-color:var(--color-blue-100)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-200{background-color:var(--color-gray-200)}.bg-green-100{background-color:var(--color-green-100)}.bg-neutral-50{background-color:var(--color-neutral-50)}.bg-neutral-900{background-color:var(--color-neutral-900)}.bg-red-100{background-color:var(--color-red-100)}.bg-red-500{background-color:var(--color-red-500)}.bg-white{background-color:var(--color-white)}.bg-yellow-100{background-color:var(--color-yellow-100)}.p-2{padding:calc(var(--spacing)*2)}.p-2\.5{padding:calc(var(--spacing)*2.5)}.p-4{padding:calc(var(--spacing)*4)}.p-5{padding:calc(var(--spacing)*5)}.p-6{padding:calc(var(--spacing)*6)}.p-12{padding:calc(var(--spacing)*12)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-4{padding-block:calc(var(--spacing)*4)}.pe-8{padding-inline-end:calc(var(--spacing)*8)}.pr-12{padding-right:calc(var(--spacing)*12)}.pb-5{padding-bottom:calc(var(--spacing)*5)}.text-center{text-align:center}.text-end{text-align:end}.text-right{text-align:right}.text-start{text-align:start}.font-mono{font-family:var(--font-geist-mono)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-nowrap{text-wrap:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-800{color:var(--color-amber-800)}.text-blue-600{color:var(--color-blue-600)}.text-blue-800{color:var(--color-blue-800)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-600{color:var(--color-green-600)}.text-green-800{color:var(--color-green-800)}.text-indigo-600{color:var(--color-indigo-600)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-neutral-600{color:var(--color-neutral-600)}.text-neutral-800{color:var(--color-neutral-800)}.text-neutral-900{color:var(--color-neutral-900)}.text-orange-600{color:var(--color-orange-600)}.text-purple-600{color:var(--color-purple-600)}.text-red-500{color:var(--color-red-500)}.text-red-600{color:var(--color-red-600)}.text-red-800{color:var(--color-red-800)}.text-slate-300{color:var(--color-slate-300)}.text-slate-600{color:var(--color-slate-600)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-transparent{color:#0000}.text-white{color:var(--color-white)}.text-yellow-800{color:var(--color-yellow-800)}.opacity-50{opacity:.5}.shadow-2xl{--tw-shadow:0 25px 50px -12px var(--tw-shadow-color,#00000040);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.backdrop-blur-\[3px\]{--tw-backdrop-blur:blur(3px);-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.first\:rounded-s-lg:first-child{border-start-start-radius:var(--radius-lg);border-end-start-radius:var(--radius-lg)}.last\:rounded-e-lg:last-child{border-start-end-radius:var(--radius-lg);border-end-end-radius:var(--radius-lg)}@media (hover:hover){.hover\:border-neutral-300:hover{border-color:var(--color-neutral-300)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-gray-300:hover{background-color:var(--color-gray-300)}.hover\:bg-neutral-100:hover{background-color:var(--color-neutral-100)}.hover\:bg-neutral-800:hover{background-color:var(--color-neutral-800)}.hover\:bg-red-600:hover{background-color:var(--color-red-600)}.hover\:text-neutral-700:hover{color:var(--color-neutral-700)}.hover\:text-white:hover{color:var(--color-white)}.hover\:underline:hover{text-decoration-line:underline}.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}@media (min-width:40rem){.sm\:w-32{width:calc(var(--spacing)*32)}.sm\:w-64{width:calc(var(--spacing)*64)}.sm\:flex-row{flex-direction:row}.sm\:items-start{align-items:flex-start}.sm\:p-12{padding:calc(var(--spacing)*12)}}@media (min-width:64rem){.lg\:sticky{position:sticky}.lg\:z-0{z-index:0}.lg\:hidden{display:none}.lg\:h-auto{height:auto}.lg\:w-auto{width:auto}.lg\:translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.lg\:flex-row{flex-direction:row}.lg\:bg-transparent{background-color:#0000}.lg\:p-0{padding:calc(var(--spacing)*0)}}@media (prefers-color-scheme:dark){.dark\:border-neutral-700{border-color:var(--color-neutral-700)}.dark\:border-neutral-900{border-color:var(--color-neutral-900)}.dark\:bg-amber-600{background-color:var(--color-amber-600)}.dark\:bg-blue-600{background-color:var(--color-blue-600)}.dark\:bg-blue-700{background-color:var(--color-blue-700)}.dark\:bg-gray-600{background-color:var(--color-gray-600)}.dark\:bg-green-600{background-color:var(--color-green-600)}.dark\:bg-green-700{background-color:var(--color-green-700)}.dark\:bg-green-900\/30{background-color:#0d542b4d}@supports (color:color-mix(in lab,red,red)){.dark\:bg-green-900\/30{background-color:color-mix(in oklab,var(--color-green-900)30%,transparent)}}.dark\:bg-neutral-700{background-color:var(--color-neutral-700)}.dark\:bg-neutral-800{background-color:var(--color-neutral-800)}.dark\:bg-neutral-900{background-color:var(--color-neutral-900)}.dark\:bg-red-600{background-color:var(--color-red-600)}.dark\:bg-red-700{background-color:var(--color-red-700)}.dark\:bg-slate-800{background-color:var(--color-slate-800)}.dark\:bg-slate-900{background-color:var(--color-slate-900)}.dark\:bg-transparent{background-color:#0000}.dark\:bg-yellow-600{background-color:var(--color-yellow-600)}.dark\:bg-yellow-700{background-color:var(--color-yellow-700)}.dark\:text-blue-100{color:var(--color-blue-100)}.dark\:text-blue-400{color:var(--color-blue-400)}.dark\:text-gray-100{color:var(--color-gray-100)}.dark\:text-gray-300{color:var(--color-gray-300)}.dark\:text-gray-400{color:var(--color-gray-400)}.dark\:text-gray-500{color:var(--color-gray-500)}.dark\:text-green-100{color:var(--color-green-100)}.dark\:text-green-400{color:var(--color-green-400)}.dark\:text-indigo-400{color:var(--color-indigo-400)}.dark\:text-neutral-100{color:var(--color-neutral-100)}.dark\:text-neutral-200{color:var(--color-neutral-200)}.dark\:text-neutral-300{color:var(--color-neutral-300)}.dark\:text-neutral-400{color:var(--color-neutral-400)}.dark\:text-orange-400{color:var(--color-orange-400)}.dark\:text-purple-400{color:var(--color-purple-400)}.dark\:text-red-100{color:var(--color-red-100)}.dark\:text-red-400{color:var(--color-red-400)}.dark\:text-slate-200{color:var(--color-slate-200)}.dark\:text-slate-300{color:var(--color-slate-300)}.dark\:text-slate-400{color:var(--color-slate-400)}.dark\:text-slate-600{color:var(--color-slate-600)}.dark\:text-white{color:var(--color-white)}.dark\:text-yellow-100{color:var(--color-yellow-100)}@media (hover:hover){.dark\:hover\:border-neutral-600:hover{border-color:var(--color-neutral-600)}.dark\:hover\:bg-neutral-700:hover{background-color:var(--color-neutral-700)}.dark\:hover\:bg-neutral-800\/50:hover{background-color:#26262680}@supports (color:color-mix(in lab,red,red)){.dark\:hover\:bg-neutral-800\/50:hover{background-color:color-mix(in oklab,var(--color-neutral-800)50%,transparent)}}.dark\:hover\:bg-slate-700:hover{background-color:var(--color-slate-700)}.dark\:hover\:text-neutral-300:hover{color:var(--color-neutral-300)}}.dark\:even\:\[\&_td\]\:bg-neutral-950:nth-child(2n) td{background-color:var(--color-neutral-950)}}.container{margin-inline:auto;padding-inline:10px}}:root{--bg-primary:0 0 0;--bg-secondary:15 15 15;--text-primary:248 250 252;--text-secondary:148 163 184}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-space-x-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(360deg)}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{k as y,l as s}from"./index-BdvbrZNf.js";const q={currentPage:1,lastPage:1,total:0},E=()=>{const t=y();async function r(e,c){const n=await fetch(e,{headers:{"Content-Type":"application/json"},...c});if(!n.ok)throw new Error(`Failed to fetch: ${e}`);return n.json()}const a=(e,c)=>{const n=new URLSearchParams(Object.entries(c||{}).reduce((i,[u,o])=>(o!=null&&(i[u]=String(o)),i),{}));return`${e}${n.toString()?`?${n}`:""}`};return{getAllRequests:async e=>r(s(a(t.api.requests,{page:e}))),getRequestById:async e=>r(s(`${t.api.requests}/${e}`)),getQueries:async e=>r(s(a(t.api.queries,{page:e}))),getQueryById:async e=>r(s(`${t.api.queries}/${e}`)),getCacheEntries:async e=>r(s(a(t.api.cache,{page:e}))),getCacheEntryById:async e=>r(s(`${t.api.cache}/${e}`))}};export{q as D,E as u};
|