@lensjs/core 1.0.12 → 2.1.0
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 +23 -0
- package/dist/abstracts/store.d.cts +7 -2
- package/dist/abstracts/store.d.ts +7 -2
- package/dist/abstracts/store.js +23 -0
- package/dist/core/api_controller.cjs +47 -4
- package/dist/core/api_controller.d.cts +7 -3
- package/dist/core/api_controller.d.ts +7 -3
- package/dist/core/api_controller.js +47 -4
- package/dist/core/lens.cjs +109 -10
- package/dist/core/lens.js +110 -11
- package/dist/exception-3AZsPtAg.d.ts +52 -0
- package/dist/exception-C69UCHPk.d.cts +52 -0
- package/dist/index.cjs +301 -19
- package/dist/index.d.cts +7 -2
- package/dist/index.d.ts +7 -2
- package/dist/index.js +296 -20
- package/dist/stores/better_sqlite.cjs +40 -6
- package/dist/stores/better_sqlite.d.cts +17 -1
- package/dist/stores/better_sqlite.d.ts +17 -1
- package/dist/stores/better_sqlite.js +41 -7
- package/dist/stores/index.cjs +40 -6
- package/dist/stores/index.js +41 -7
- package/dist/types/index.cjs +2 -0
- package/dist/types/index.d.cts +49 -2
- package/dist/types/index.d.ts +49 -2
- package/dist/types/index.js +2 -0
- package/dist/ui/assets/CacheActionBadge-3t8U516j.js +1 -0
- package/dist/ui/assets/CacheEntriesTable-BqLquILg.js +1 -0
- package/dist/ui/assets/CacheEntryContainer-B86waEsR.js +2 -0
- package/dist/ui/assets/CacheEntryDetails-Dm-oXALj.js +1 -0
- package/dist/ui/assets/CacheEntryDetailsContainer-BCyXGgkx.js +2 -0
- package/dist/ui/assets/ExceptionContainer-DSQBz5cb.js +2 -0
- package/dist/ui/assets/ExceptionDetails-gmpSQ_eu.js +16 -0
- package/dist/ui/assets/ExceptionDetailsContainer-BHIz-TUv.js +2 -0
- package/dist/ui/assets/ExceptionTable-BhrX9MSS.js +1 -0
- package/dist/ui/assets/LoadMore-26PcNWcP.js +1 -0
- package/dist/ui/assets/QueriesContainer-BSF-O4s3.js +2 -0
- package/dist/ui/assets/{QueryDetailsContainer-E7P-IO7f.js → QueryDetailsContainer-BjQM9QIb.js} +15 -15
- package/dist/ui/assets/QueryTable-szgIT5Uc.js +1 -0
- package/dist/ui/assets/RequestDetails-CvQhX-2F.js +1 -0
- package/dist/ui/assets/{RequestDetailsContainer-DuDo-IqS.js → RequestDetailsContainer-XYPFJFX0.js} +2 -2
- package/dist/ui/assets/RequestsContainer-D0QPK2Ii.js +2 -0
- package/dist/ui/assets/RequetsTable-6Fqchsrt.js +1 -0
- package/dist/ui/assets/{StatusCode-FQEjz7gK.js → StatusCode-CfVCLID2.js} +1 -1
- package/dist/ui/assets/TabbedDataViewer-Cl5ednx4.js +1 -0
- package/dist/ui/assets/{Table-DYaXk80S.js → Table-CGe8JwTO.js} +2 -2
- package/dist/ui/assets/columns-BFxCubt5.js +1 -0
- package/dist/ui/assets/columns-Cw7tw3Em.js +1 -0
- package/dist/ui/assets/columns-RiCoo9Ea.js +1 -0
- package/dist/ui/assets/{index-CpP2Ap5X.js → index-BRRKsoNv.js} +1 -1
- package/dist/ui/assets/index-BzFeZyjf.css +1 -0
- package/dist/ui/assets/{index-BS8XxorB.js → index-XoJlyTFO.js} +32 -22
- package/dist/ui/assets/useCacheEntries-SCADuxKq.js +1 -0
- package/dist/ui/assets/useExceptions-BMGL3nir.js +1 -0
- package/dist/ui/assets/useLensApi-BYyiIIZR.js +1 -0
- package/dist/ui/assets/{useLoadMore-CJltToLI.js → useLoadMore-CksOcXOF.js} +1 -1
- package/dist/ui/assets/useQueries-6nYr0oG5.js +1 -0
- package/dist/ui/index.html +2 -2
- package/dist/utils/async_context.cjs +144 -0
- package/dist/utils/async_context.d.cts +13 -0
- package/dist/utils/async_context.d.ts +13 -0
- package/dist/utils/async_context.js +108 -0
- package/dist/utils/event_emitter.cjs +5 -2
- package/dist/utils/event_emitter.d.cts +8 -1
- package/dist/utils/event_emitter.d.ts +8 -1
- package/dist/utils/event_emitter.js +3 -1
- 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/watchers/cache_watcher.cjs +107 -0
- package/dist/watchers/cache_watcher.d.cts +11 -0
- package/dist/watchers/cache_watcher.d.ts +11 -0
- package/dist/watchers/cache_watcher.js +84 -0
- 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 +81 -0
- package/dist/watchers/index.d.cts +2 -0
- package/dist/watchers/index.d.ts +2 -0
- package/dist/watchers/index.js +69 -0
- package/package.json +8 -6
- package/dist/ui/assets/QueriesContainer-CAAsjjW5.js +0 -2
- package/dist/ui/assets/QueryTable-BcrtUssT.js +0 -1
- package/dist/ui/assets/RequestDetails-C2DZBu5H.js +0 -1
- package/dist/ui/assets/RequestsContainer-DK3hQVz9.js +0 -2
- package/dist/ui/assets/RequetsTable-DgP8p60b.js +0 -1
- package/dist/ui/assets/TabbedDataViewer-cBDdPwIz.js +0 -1
- package/dist/ui/assets/index-DzNHqeKh.css +0 -1
- package/dist/ui/assets/useLensApi-DG6atd6d.js +0 -1
- package/dist/ui/assets/useQueries-C8mDDDc6.js +0 -1
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/watchers/cache_watcher.ts
|
|
21
|
+
var cache_watcher_exports = {};
|
|
22
|
+
__export(cache_watcher_exports, {
|
|
23
|
+
default: () => CacheWatcher
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(cache_watcher_exports);
|
|
26
|
+
|
|
27
|
+
// src/context/container.ts
|
|
28
|
+
var Container = class {
|
|
29
|
+
static bindings = /* @__PURE__ */ new Map();
|
|
30
|
+
static singletons = /* @__PURE__ */ new Map();
|
|
31
|
+
static instances = /* @__PURE__ */ new Map();
|
|
32
|
+
static bind(key, factory) {
|
|
33
|
+
this.bindings.set(key, factory);
|
|
34
|
+
}
|
|
35
|
+
static singleton(key, factory) {
|
|
36
|
+
this.singletons.set(key, factory);
|
|
37
|
+
}
|
|
38
|
+
static make(key) {
|
|
39
|
+
if (this.instances.has(key)) {
|
|
40
|
+
return this.instances.get(key);
|
|
41
|
+
}
|
|
42
|
+
if (this.singletons.has(key)) {
|
|
43
|
+
const instance = this.singletons.get(key)();
|
|
44
|
+
this.instances.set(key, instance);
|
|
45
|
+
return instance;
|
|
46
|
+
}
|
|
47
|
+
if (this.bindings.has(key)) {
|
|
48
|
+
return this.bindings.get(key)();
|
|
49
|
+
}
|
|
50
|
+
throw new Error(`Service "${key}" is not bound in the container`);
|
|
51
|
+
}
|
|
52
|
+
static has(key) {
|
|
53
|
+
return this.bindings.has(key) || this.singletons.has(key) || this.instances.has(key);
|
|
54
|
+
}
|
|
55
|
+
static clear() {
|
|
56
|
+
this.bindings.clear();
|
|
57
|
+
this.singletons.clear();
|
|
58
|
+
this.instances.clear();
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
// src/context/context.ts
|
|
63
|
+
var getStore = () => {
|
|
64
|
+
return Container.make("store");
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
// src/core/watcher.ts
|
|
68
|
+
var Watcher = class {
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
// src/watchers/cache_watcher.ts
|
|
72
|
+
var CacheWatcher = class extends Watcher {
|
|
73
|
+
name = "cache" /* CACHE */;
|
|
74
|
+
async log(data) {
|
|
75
|
+
const payload = {
|
|
76
|
+
action: data.action,
|
|
77
|
+
data: this.normalizePayload(data),
|
|
78
|
+
requestId: data.requestId ?? "",
|
|
79
|
+
createdAt: data.createdAt
|
|
80
|
+
};
|
|
81
|
+
await getStore().save({
|
|
82
|
+
requestId: data.requestId ?? "",
|
|
83
|
+
type: this.name,
|
|
84
|
+
data: payload,
|
|
85
|
+
minimal_data: {
|
|
86
|
+
action: data.action,
|
|
87
|
+
key: payload.data.key,
|
|
88
|
+
createdAt: payload.createdAt
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
normalizePayload(data) {
|
|
93
|
+
let key = "";
|
|
94
|
+
let value = "";
|
|
95
|
+
if ("data" in data && typeof data.data === "object" && data.data !== null) {
|
|
96
|
+
if ("key" in data.data) {
|
|
97
|
+
key = String(data.data.key);
|
|
98
|
+
}
|
|
99
|
+
if ("value" in data.data) {
|
|
100
|
+
value = data.data.value;
|
|
101
|
+
}
|
|
102
|
+
} else if (typeof data.data === "string") {
|
|
103
|
+
value = data.data;
|
|
104
|
+
}
|
|
105
|
+
return { key, value };
|
|
106
|
+
}
|
|
107
|
+
};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Watcher from '../core/watcher.cjs';
|
|
2
|
+
import { WatcherTypeEnum, CacheEntry } from '../types/index.cjs';
|
|
3
|
+
import 'sql-formatter';
|
|
4
|
+
|
|
5
|
+
declare class CacheWatcher extends Watcher {
|
|
6
|
+
name: WatcherTypeEnum;
|
|
7
|
+
log(data: CacheEntry): Promise<void>;
|
|
8
|
+
private normalizePayload;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { CacheWatcher as default };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Watcher from '../core/watcher.js';
|
|
2
|
+
import { WatcherTypeEnum, CacheEntry } from '../types/index.js';
|
|
3
|
+
import 'sql-formatter';
|
|
4
|
+
|
|
5
|
+
declare class CacheWatcher extends Watcher {
|
|
6
|
+
name: WatcherTypeEnum;
|
|
7
|
+
log(data: CacheEntry): Promise<void>;
|
|
8
|
+
private normalizePayload;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export { CacheWatcher as default };
|
|
@@ -0,0 +1,84 @@
|
|
|
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/watchers/cache_watcher.ts
|
|
46
|
+
var CacheWatcher = class extends Watcher {
|
|
47
|
+
name = "cache" /* CACHE */;
|
|
48
|
+
async log(data) {
|
|
49
|
+
const payload = {
|
|
50
|
+
action: data.action,
|
|
51
|
+
data: this.normalizePayload(data),
|
|
52
|
+
requestId: data.requestId ?? "",
|
|
53
|
+
createdAt: data.createdAt
|
|
54
|
+
};
|
|
55
|
+
await getStore().save({
|
|
56
|
+
requestId: data.requestId ?? "",
|
|
57
|
+
type: this.name,
|
|
58
|
+
data: payload,
|
|
59
|
+
minimal_data: {
|
|
60
|
+
action: data.action,
|
|
61
|
+
key: payload.data.key,
|
|
62
|
+
createdAt: payload.createdAt
|
|
63
|
+
}
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
normalizePayload(data) {
|
|
67
|
+
let key = "";
|
|
68
|
+
let value = "";
|
|
69
|
+
if ("data" in data && typeof data.data === "object" && data.data !== null) {
|
|
70
|
+
if ("key" in data.data) {
|
|
71
|
+
key = String(data.data.key);
|
|
72
|
+
}
|
|
73
|
+
if ("value" in data.data) {
|
|
74
|
+
value = data.data.value;
|
|
75
|
+
}
|
|
76
|
+
} else if (typeof data.data === "string") {
|
|
77
|
+
value = data.data;
|
|
78
|
+
}
|
|
79
|
+
return { key, value };
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
export {
|
|
83
|
+
CacheWatcher as default
|
|
84
|
+
};
|
|
@@ -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,11 +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, {
|
|
33
|
+
CacheWatcher: () => CacheWatcher,
|
|
34
|
+
ExceptionWatcher: () => ExceptionWatcher,
|
|
23
35
|
QueryWatcher: () => QueryWatcher,
|
|
24
36
|
RequestWatcher: () => RequestWatcher
|
|
25
37
|
});
|
|
@@ -104,8 +116,77 @@ var RequestWatcher = class extends Watcher {
|
|
|
104
116
|
});
|
|
105
117
|
}
|
|
106
118
|
};
|
|
119
|
+
|
|
120
|
+
// src/watchers/cache_watcher.ts
|
|
121
|
+
var CacheWatcher = class extends Watcher {
|
|
122
|
+
name = "cache" /* CACHE */;
|
|
123
|
+
async log(data) {
|
|
124
|
+
const payload = {
|
|
125
|
+
action: data.action,
|
|
126
|
+
data: this.normalizePayload(data),
|
|
127
|
+
requestId: data.requestId ?? "",
|
|
128
|
+
createdAt: data.createdAt
|
|
129
|
+
};
|
|
130
|
+
await getStore().save({
|
|
131
|
+
requestId: data.requestId ?? "",
|
|
132
|
+
type: this.name,
|
|
133
|
+
data: payload,
|
|
134
|
+
minimal_data: {
|
|
135
|
+
action: data.action,
|
|
136
|
+
key: payload.data.key,
|
|
137
|
+
createdAt: payload.createdAt
|
|
138
|
+
}
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
normalizePayload(data) {
|
|
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;
|
|
153
|
+
}
|
|
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
|
+
});
|
|
184
|
+
}
|
|
185
|
+
};
|
|
107
186
|
// Annotate the CommonJS export names for ESM import in node:
|
|
108
187
|
0 && (module.exports = {
|
|
188
|
+
CacheWatcher,
|
|
189
|
+
ExceptionWatcher,
|
|
109
190
|
QueryWatcher,
|
|
110
191
|
RequestWatcher
|
|
111
192
|
});
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { default as QueryWatcher } from './query_watcher.cjs';
|
|
2
2
|
export { default as RequestWatcher } from './request_watcher.cjs';
|
|
3
|
+
export { default as CacheWatcher } from './cache_watcher.cjs';
|
|
4
|
+
export { default as ExceptionWatcher } from './exception_watcher.cjs';
|
|
3
5
|
import '../core/watcher.cjs';
|
|
4
6
|
import '../types/index.cjs';
|
|
5
7
|
import 'sql-formatter';
|
package/dist/watchers/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { default as QueryWatcher } from './query_watcher.js';
|
|
2
2
|
export { default as RequestWatcher } from './request_watcher.js';
|
|
3
|
+
export { default as CacheWatcher } from './cache_watcher.js';
|
|
4
|
+
export { default as ExceptionWatcher } from './exception_watcher.js';
|
|
3
5
|
import '../core/watcher.js';
|
|
4
6
|
import '../types/index.js';
|
|
5
7
|
import 'sql-formatter';
|
package/dist/watchers/index.js
CHANGED
|
@@ -77,7 +77,76 @@ var RequestWatcher = class extends Watcher {
|
|
|
77
77
|
});
|
|
78
78
|
}
|
|
79
79
|
};
|
|
80
|
+
|
|
81
|
+
// src/watchers/cache_watcher.ts
|
|
82
|
+
var CacheWatcher = class extends Watcher {
|
|
83
|
+
name = "cache" /* CACHE */;
|
|
84
|
+
async log(data) {
|
|
85
|
+
const payload = {
|
|
86
|
+
action: data.action,
|
|
87
|
+
data: this.normalizePayload(data),
|
|
88
|
+
requestId: data.requestId ?? "",
|
|
89
|
+
createdAt: data.createdAt
|
|
90
|
+
};
|
|
91
|
+
await getStore().save({
|
|
92
|
+
requestId: data.requestId ?? "",
|
|
93
|
+
type: this.name,
|
|
94
|
+
data: payload,
|
|
95
|
+
minimal_data: {
|
|
96
|
+
action: data.action,
|
|
97
|
+
key: payload.data.key,
|
|
98
|
+
createdAt: payload.createdAt
|
|
99
|
+
}
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
normalizePayload(data) {
|
|
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;
|
|
114
|
+
}
|
|
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
|
+
});
|
|
145
|
+
}
|
|
146
|
+
};
|
|
80
147
|
export {
|
|
148
|
+
CacheWatcher,
|
|
149
|
+
ExceptionWatcher,
|
|
81
150
|
QueryWatcher,
|
|
82
151
|
RequestWatcher
|
|
83
152
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lensjs/core",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "2.1.0",
|
|
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,2 +0,0 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./QueryTable-BcrtUssT.js","./index-BS8XxorB.js","./index-DzNHqeKh.css","./Table-DYaXk80S.js","./index-CpP2Ap5X.js"])))=>i.map(i=>d[i]);
|
|
2
|
-
import{r as t,j as s,_ as a}from"./index-BS8XxorB.js";import{u as i}from"./useQueries-C8mDDDc6.js";import{u}from"./useLoadMore-CJltToLI.js";import"./useLensApi-DG6atd6d.js";const m=t.lazy(()=>a(()=>import("./QueryTable-BcrtUssT.js"),__vite__mapDeps([0,1,2,3,4]),import.meta.url)),l=()=>{const{loadMoreRequests:o,fetchQueries:r}=i(),e=u({paginatedPage:o});return t.useEffect(()=>{r()},[]),console.log("data",e.data),s.jsx(m,{hasMoreObject:e})};export{l as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{q as r,k as o,j as e,L as i}from"./index-BS8XxorB.js";import{C as l,T as d,L as c}from"./Table-DYaXk80S.js";import{h as x}from"./index-CpP2Ap5X.js";function m(a){return e.jsx("span",{className:"text-red-600 dark:text-red-400 font-mono",children:a})}const u=()=>{const a=r(o());return[{name:"Query",render:t=>e.jsx("div",{className:"max-w-xl",children:e.jsx("code",{className:"text-sm font-mono text-slate-800 dark:text-slate-300 leading-relaxed line-clamp-1",title:t.data.query,children:m(t.data.query)})})},{name:"Duration",render:t=>e.jsx("div",{className:"col-span-1 text-right",children:e.jsx("span",{className:"text-sm text-slate-600 dark:text-slate-400 font-mono",children:t.data.duration})})},{name:"Provider",render:t=>e.jsx("div",{className:"col-span-2 text-right",children:e.jsx("span",{className:"text-sm text-slate-600 dark:text-slate-400 font-mono",children:t.data.type})})},{name:"Happened",render:t=>{const{label:s,exact:n}=x(t.data.createdAt);return e.jsx("span",{className:"text-nowrap",title:n,children:s})},position:"end",class:"min-w-32"},{name:"Actions",render:t=>e.jsx(i,{to:`${a.QUERIES}/${t.id}`,className:"transition-colors duration-100 hover:text-white",children:e.jsx(l,{size:20})}),position:"end"}]},f=({hasMoreObject:a})=>e.jsxs("div",{className:"w-full",children:[e.jsx("div",{className:"overflow-x-auto",children:e.jsx(d,{columns:u(),data:a.data})}),e.jsx(c,{paginatedPage:a})]});export{f as default};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as l,j as t}from"./index-BS8XxorB.js";import{D as d,T as o}from"./TabbedDataViewer-cBDdPwIz.js";import{f as m}from"./index-CpP2Ap5X.js";import{M as i,S as n}from"./StatusCode-FQEjz7gK.js";const x=({request:a})=>{const e=l.useMemo(()=>m(a?.data?.createdAt),[a?.data?.createdAt]);if(!a||!a.data)return t.jsx(d,{title:"Request Details",items:[],emptyMessage:"No request data available"});const s=()=>a?.data?.headers?.host||"Unknown",r=l.useMemo(()=>[{label:"Time",value:e,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.data.method?t.jsx(i,{method:a.data.method}):"Unknown"},{label:"Request ID",value:a.data.id||"N/A",className:"text-gray-700 dark:text-gray-300 font-mono text-sm"},{label:"Path",value:a.data.path||"N/A",className:"text-gray-900 dark:text-gray-100 font-mono"},{label:"Status",value:a.data.status?t.jsx(n,{status:a.data.status}):"N/A"},{label:"Duration",value:a.data.duration||"N/A",className:"text-gray-900 dark:text-gray-100 font-medium"},{label:"IP Address",value:a.data.ip||"N/A",className:"text-gray-900 dark:text-gray-100 font-mono"}],[a.data,e]);return t.jsx(d,{title:"Request Details",items:r})},u=({request:a})=>{const e=[{id:"payload",label:"Payload",data:a.data.body},{id:"headers",label:"Headers",data:a.data.headers}],s=[{id:"response-body",label:"Body",data:a.data.response.json},{id:"response-headers",label:"Headers",data:a.data.response.headers}];return t.jsxs("div",{className:"flex flex-col gap-3",children:[t.jsx(x,{request:a}),a.data.user&&t.jsx(d,{title:"User",items:[{label:"ID",value:a?.data?.user?.id},{label:"Email",value:a?.data?.user?.email},{label:"Name",value:a?.data?.user?.name}]}),t.jsx(o,{tabs:e,title:"Request Data",defaultActiveTab:"payload"}),t.jsx(o,{tabs:s,title:"Response Data",defaultActiveTab:"response-body"})]})};export{u as default};
|