@viplance/nestjs-logger 0.3.6 → 0.3.7
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 +1 -1
- package/dist/guards/access.guard.d.ts +4 -0
- package/dist/guards/access.guard.js +32 -0
- package/dist/guards/access.guard.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/interceptors/log.interceptor.d.ts +9 -0
- package/dist/interceptors/log.interceptor.js +43 -0
- package/dist/interceptors/log.interceptor.js.map +1 -0
- package/dist/log.module.js +18 -9
- package/dist/log.module.js.map +1 -1
- package/dist/services/log.service.d.ts +2 -0
- package/dist/services/log.service.js +7 -1
- package/dist/services/log.service.js.map +1 -1
- package/dist/services/memory-db.service.d.ts +1 -0
- package/dist/services/memory-db.service.js +5 -0
- package/dist/services/memory-db.service.js.map +1 -1
- package/package.json +1 -1
- package/public/scripts/common.js +26 -0
- package/public/scripts/details-popup.js +6 -1
- package/public/styles/index.css +2 -0
- package/src/guards/access.guard.ts +25 -0
- package/src/index.ts +1 -1
- package/src/{log.interceptor.ts → interceptors/log.interceptor.ts} +1 -1
- package/src/log.module.ts +26 -8
- package/src/services/log.service.ts +9 -1
- package/src/services/memory-db.service.ts +7 -0
package/README.md
CHANGED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.LogAccessGuard = void 0;
|
|
13
|
+
const common_1 = require("@nestjs/common");
|
|
14
|
+
const log_service_1 = require("../services/log.service");
|
|
15
|
+
const node_querystring_1 = __importDefault(require("node:querystring"));
|
|
16
|
+
let LogAccessGuard = class LogAccessGuard {
|
|
17
|
+
canActivate(context) {
|
|
18
|
+
const req = !!context.switchToHttp
|
|
19
|
+
? context.switchToHttp().getRequest()
|
|
20
|
+
: context; // hook for using as method
|
|
21
|
+
const params = node_querystring_1.default.parse(req.url.split("?")[1]);
|
|
22
|
+
if (log_service_1.LogService.options.key && params.key !== log_service_1.LogService.options.key) {
|
|
23
|
+
throw new common_1.HttpException("Unauthorized", 401);
|
|
24
|
+
}
|
|
25
|
+
return true;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
exports.LogAccessGuard = LogAccessGuard;
|
|
29
|
+
exports.LogAccessGuard = LogAccessGuard = __decorate([
|
|
30
|
+
(0, common_1.Injectable)()
|
|
31
|
+
], LogAccessGuard);
|
|
32
|
+
//# sourceMappingURL=access.guard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access.guard.js","sourceRoot":"","sources":["../../src/guards/access.guard.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAKwB;AACxB,yDAAqD;AACrD,wEAA2C;AAGpC,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,WAAW,CAAC,OAAyB;QACnC,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,YAAY;YAChC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,UAAU,EAAE;YACrC,CAAC,CAAC,OAAO,CAAC,CAAC,2BAA2B;QAExC,MAAM,MAAM,GAAG,0BAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAExD,IAAI,wBAAU,CAAC,OAAO,CAAC,GAAG,IAAI,MAAM,CAAC,GAAG,KAAK,wBAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;YACpE,MAAM,IAAI,sBAAa,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAA;AAdY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;GACA,cAAc,CAc1B"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./log.interceptor"), exports);
|
|
17
|
+
__exportStar(require("./interceptors/log.interceptor"), exports);
|
|
18
18
|
__exportStar(require("./log.module"), exports);
|
|
19
19
|
__exportStar(require("./types/index"), exports);
|
|
20
20
|
__exportStar(require("./services/log.service"), exports);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iEAA+C;AAC/C,+CAA6B;AAC7B,gDAA8B;AAC9B,yDAAuC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { CallHandler, NestInterceptor } from "@nestjs/common";
|
|
2
|
+
import { Observable } from "rxjs";
|
|
3
|
+
import { LogService } from "../services/log.service";
|
|
4
|
+
import { ExecutionContextHost } from "@nestjs/core/helpers/execution-context-host";
|
|
5
|
+
export declare class LogInterceptor implements NestInterceptor {
|
|
6
|
+
private readonly logService;
|
|
7
|
+
constructor(logService: LogService);
|
|
8
|
+
intercept(context: ExecutionContextHost, next: CallHandler): Observable<any>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.LogInterceptor = void 0;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const rxjs_1 = require("rxjs");
|
|
18
|
+
const log_service_1 = require("../services/log.service");
|
|
19
|
+
let LogInterceptor = class LogInterceptor {
|
|
20
|
+
constructor(logService) {
|
|
21
|
+
this.logService = logService;
|
|
22
|
+
}
|
|
23
|
+
intercept(context, next) {
|
|
24
|
+
return next.handle().pipe((0, rxjs_1.tap)({
|
|
25
|
+
error: (error) => {
|
|
26
|
+
var _a, _b;
|
|
27
|
+
(_a = this.logService) === null || _a === void 0 ? void 0 : _a.error(error.message, error.stack, context);
|
|
28
|
+
(_b = this.logService) === null || _b === void 0 ? void 0 : _b.clearBreadcrumbs();
|
|
29
|
+
},
|
|
30
|
+
complete: () => {
|
|
31
|
+
var _a;
|
|
32
|
+
(_a = this.logService) === null || _a === void 0 ? void 0 : _a.clearBreadcrumbs();
|
|
33
|
+
},
|
|
34
|
+
}));
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
exports.LogInterceptor = LogInterceptor;
|
|
38
|
+
exports.LogInterceptor = LogInterceptor = __decorate([
|
|
39
|
+
(0, common_1.Injectable)(),
|
|
40
|
+
__param(0, (0, common_1.Inject)(log_service_1.LogService)),
|
|
41
|
+
__metadata("design:paramtypes", [log_service_1.LogService])
|
|
42
|
+
], LogInterceptor);
|
|
43
|
+
//# sourceMappingURL=log.interceptor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.interceptor.js","sourceRoot":"","sources":["../../src/interceptors/log.interceptor.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,2CAAoD;AACpD,+BAAuC;AACvC,yDAAqD;AAI9C,IAAM,cAAc,GAApB,MAAM,cAAc;IACzB,YAAiD,UAAsB;QAAtB,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE3E,SAAS,CAAC,OAA6B,EAAE,IAAiB;QACxD,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,CACvB,IAAA,UAAG,EAAC;YACF,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;;gBACf,MAAA,IAAI,CAAC,UAAU,0CAAE,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC5D,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,EAAE,CAAC;YACtC,CAAC;YACD,QAAQ,EAAE,GAAG,EAAE;;gBACb,MAAA,IAAI,CAAC,UAAU,0CAAE,gBAAgB,EAAE,CAAC;YACtC,CAAC;SACF,CAAC,CACH,CAAC;IACJ,CAAC;CACF,CAAA;AAhBY,wCAAc;yBAAd,cAAc;IAD1B,IAAA,mBAAU,GAAE;IAEE,WAAA,IAAA,eAAM,EAAC,wBAAU,CAAC,CAAA;qCAA8B,wBAAU;GAD5D,cAAc,CAgB1B"}
|
package/dist/log.module.js
CHANGED
|
@@ -13,31 +13,40 @@ exports.LogModule = void 0;
|
|
|
13
13
|
const common_1 = require("@nestjs/common");
|
|
14
14
|
const log_service_1 = require("./services/log.service");
|
|
15
15
|
const memory_db_service_1 = require("./services/memory-db.service");
|
|
16
|
-
const log_interceptor_1 = require("./log.interceptor");
|
|
16
|
+
const log_interceptor_1 = require("./interceptors/log.interceptor");
|
|
17
17
|
const typeorm_1 = require("@nestjs/typeorm");
|
|
18
18
|
const node_querystring_1 = __importDefault(require("node:querystring"));
|
|
19
19
|
const core_1 = require("@nestjs/core");
|
|
20
20
|
const node_path_1 = require("node:path");
|
|
21
|
+
const access_guard_1 = require("./guards/access.guard");
|
|
21
22
|
let LogModule = class LogModule {
|
|
22
23
|
static async init(app, options) {
|
|
23
24
|
app.resolve(log_service_1.LogService);
|
|
24
25
|
const logService = await app.resolve(log_service_1.LogService);
|
|
26
|
+
const logAccessGuard = await app.get(access_guard_1.LogAccessGuard);
|
|
27
|
+
if (options) {
|
|
28
|
+
logService.setOptions(options);
|
|
29
|
+
}
|
|
25
30
|
app.useGlobalInterceptors(new log_interceptor_1.LogInterceptor(logService)); // intercept all errors
|
|
26
31
|
if (options === null || options === void 0 ? void 0 : options.path) {
|
|
27
32
|
app.useStaticAssets((0, node_path_1.join)(__dirname, "..", "public"), {
|
|
28
33
|
prefix: options.path,
|
|
29
34
|
});
|
|
30
35
|
const httpAdapter = app.getHttpAdapter();
|
|
36
|
+
// get all logs endpoint
|
|
31
37
|
httpAdapter.get((0, node_path_1.join)(options.path, "api"), async (req, res) => {
|
|
32
|
-
|
|
33
|
-
if ((_a = log_service_1.LogService.options) === null || _a === void 0 ? void 0 : _a.key) {
|
|
34
|
-
const params = node_querystring_1.default.parse(req.url.split("?")[1]);
|
|
35
|
-
if (params.key && params.key !== log_service_1.LogService.options.key) {
|
|
36
|
-
throw new common_1.HttpException("Unauthorized", 401);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
38
|
+
logAccessGuard.canActivate(req);
|
|
39
39
|
res.json(await logService.getAll());
|
|
40
40
|
});
|
|
41
|
+
// delete log endpoint
|
|
42
|
+
httpAdapter.delete((0, node_path_1.join)(options.path, "api"), async (req, res) => {
|
|
43
|
+
logAccessGuard.canActivate(req);
|
|
44
|
+
const params = node_querystring_1.default.parse(req.url.split("?")[1]);
|
|
45
|
+
if (!params.id) {
|
|
46
|
+
throw new common_1.HttpException("id is required", 400);
|
|
47
|
+
}
|
|
48
|
+
res.json(await logService.delete(params.id.toString()));
|
|
49
|
+
});
|
|
41
50
|
}
|
|
42
51
|
if (options === null || options === void 0 ? void 0 : options.database) {
|
|
43
52
|
await logService.connectDb(options);
|
|
@@ -49,7 +58,7 @@ exports.LogModule = LogModule = __decorate([
|
|
|
49
58
|
(0, common_1.Global)(),
|
|
50
59
|
(0, common_1.Module)({
|
|
51
60
|
imports: [typeorm_1.TypeOrmModule],
|
|
52
|
-
providers: [core_1.ApplicationConfig, log_service_1.LogService, memory_db_service_1.MemoryDbService],
|
|
61
|
+
providers: [core_1.ApplicationConfig, access_guard_1.LogAccessGuard, log_service_1.LogService, memory_db_service_1.MemoryDbService],
|
|
53
62
|
exports: [typeorm_1.TypeOrmModule, log_service_1.LogService, memory_db_service_1.MemoryDbService],
|
|
54
63
|
})
|
|
55
64
|
], LogModule);
|
package/dist/log.module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.module.js","sourceRoot":"","sources":["../src/log.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,wDAAoD;AACpD,oEAA+D;AAC/D,
|
|
1
|
+
{"version":3,"file":"log.module.js","sourceRoot":"","sources":["../src/log.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,wDAAoD;AACpD,oEAA+D;AAC/D,oEAAgE;AAEhE,6CAAgD;AAChD,wEAA2C;AAC3C,uCAAiD;AACjD,yCAAiC;AACjC,wDAAuD;AAQhD,IAAM,SAAS,GAAf,MAAM,SAAS;IACb,MAAM,CAAC,KAAK,CAAC,IAAI,CACtB,GAAQ,EACR,OAA0B;QAE1B,GAAG,CAAC,OAAO,CAAC,wBAAU,CAAC,CAAC;QAExB,MAAM,UAAU,GAAe,MAAM,GAAG,CAAC,OAAO,CAAC,wBAAU,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAmB,MAAM,GAAG,CAAC,GAAG,CAAC,6BAAc,CAAC,CAAC;QAErE,IAAI,OAAO,EAAE,CAAC;YACZ,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,GAAG,CAAC,qBAAqB,CAAC,IAAI,gCAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB;QAElF,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,eAAe,CAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;gBACnD,MAAM,EAAE,OAAO,CAAC,IAAI;aACrB,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;YAEzC,wBAAwB;YACxB,WAAW,CAAC,GAAG,CAAC,IAAA,gBAAI,EAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,EAAE;gBACtE,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAEhC,GAAG,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,WAAW,CAAC,MAAM,CAChB,IAAA,gBAAI,EAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EACzB,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,EAAE;gBAC3B,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAEhC,MAAM,MAAM,GAAG,0BAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAExD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,IAAI,sBAAa,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;gBACjD,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,CAAC;YACtB,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF,CAAA;AAnDY,8BAAS;oBAAT,SAAS;IANrB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,uBAAa,CAAC;QACxB,SAAS,EAAE,CAAC,wBAAiB,EAAE,6BAAc,EAAE,wBAAU,EAAE,mCAAe,CAAC;QAC3E,OAAO,EAAE,CAAC,uBAAa,EAAE,wBAAU,EAAE,mCAAe,CAAC;KACtD,CAAC;GACW,SAAS,CAmDrB"}
|
|
@@ -13,6 +13,7 @@ export declare class LogService implements LoggerService {
|
|
|
13
13
|
breadcrumbs: any[];
|
|
14
14
|
constructor(memoryDbService: MemoryDbService);
|
|
15
15
|
connectDb(options: LogModuleOptions): Promise<DataSource>;
|
|
16
|
+
setOptions(options: LogModuleOptions): void;
|
|
16
17
|
addBreadcrumb(breadcrumb: any): void;
|
|
17
18
|
clearBreadcrumbs(): void;
|
|
18
19
|
log(message: string, context?: ExecutionContextHost): void;
|
|
@@ -21,6 +22,7 @@ export declare class LogService implements LoggerService {
|
|
|
21
22
|
debug(message: string, context?: ExecutionContextHost): void;
|
|
22
23
|
verbose(message: string, context?: ExecutionContextHost): void;
|
|
23
24
|
getAll(): Promise<any[]>;
|
|
25
|
+
delete(id: string): Promise<import("typeorm").DeleteResult>;
|
|
24
26
|
private smartInsert;
|
|
25
27
|
private getConnection;
|
|
26
28
|
private parseContext;
|
|
@@ -26,7 +26,7 @@ let LogService = LogService_1 = class LogService {
|
|
|
26
26
|
async connectDb(options) {
|
|
27
27
|
var _a, _b, _c, _d, _e, _f;
|
|
28
28
|
LogService_1.Log = (0, log_entity_1.createLogEntity)(((_a = options.database) === null || _a === void 0 ? void 0 : _a.collection) || ((_b = options.database) === null || _b === void 0 ? void 0 : _b.table) || defaults_1.defaultTable);
|
|
29
|
-
|
|
29
|
+
this.setOptions(options);
|
|
30
30
|
const dataSourceOptions = {
|
|
31
31
|
type: (_c = options.database) === null || _c === void 0 ? void 0 : _c.type,
|
|
32
32
|
database: (_d = options.database) === null || _d === void 0 ? void 0 : _d.database,
|
|
@@ -42,6 +42,9 @@ let LogService = LogService_1 = class LogService {
|
|
|
42
42
|
LogService_1.timer = (0, timers_1.setInterval)(this.checkRecords, 1000 * 60 * 60); // check one time per hour
|
|
43
43
|
return LogService_1.connection;
|
|
44
44
|
}
|
|
45
|
+
setOptions(options) {
|
|
46
|
+
LogService_1.options = options;
|
|
47
|
+
}
|
|
45
48
|
addBreadcrumb(breadcrumb) {
|
|
46
49
|
this.breadcrumbs.push(breadcrumb);
|
|
47
50
|
}
|
|
@@ -100,6 +103,9 @@ let LogService = LogService_1 = class LogService {
|
|
|
100
103
|
order: { updatedAt: "DESC" },
|
|
101
104
|
});
|
|
102
105
|
}
|
|
106
|
+
async delete(id) {
|
|
107
|
+
return this.getConnection().delete(LogService_1.Log, id);
|
|
108
|
+
}
|
|
103
109
|
async smartInsert(data) {
|
|
104
110
|
const currentDate = new Date();
|
|
105
111
|
const connection = this.getConnection();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"log.service.js","sourceRoot":"","sources":["../../src/services/log.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,2CAAkE;AAClE,2DAAsD;AACtD,0CAA2C;AAC3C,oCAA8D;AAC9D,qCAKiB;AACjB,uDAAyD;AAEzD,mCAAqC;AAG9B,IAAM,UAAU,kBAAhB,MAAM,UAAU;IAQrB,YAA6B,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;QAF7D,gBAAW,GAAU,EAAE,CAAC;IAEwC,CAAC;IAEjE,KAAK,CAAC,SAAS,CAAC,OAAyB;;QACvC,YAAU,CAAC,GAAG,GAAG,IAAA,4BAAe,EAC9B,CAAA,MAAA,OAAO,CAAC,QAAQ,0CAAE,UAAU,MAAI,MAAA,OAAO,CAAC,QAAQ,0CAAE,KAAK,CAAA,IAAI,uBAAY,CACxE,CAAC;QAEF,
|
|
1
|
+
{"version":3,"file":"log.service.js","sourceRoot":"","sources":["../../src/services/log.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export declare class MemoryDbService {
|
|
|
8
8
|
select?: string[];
|
|
9
9
|
}): Promise<any[]>;
|
|
10
10
|
getOneById(entity: EntitySchema, _id: string): Promise<any>;
|
|
11
|
+
delete(entity: EntitySchema, _id: string): Promise<any>;
|
|
11
12
|
findByProperty(entity: EntitySchema, field: string, value: string): any[];
|
|
12
13
|
findOne(entity: EntitySchema, condition: {
|
|
13
14
|
where: any;
|
|
@@ -70,6 +70,11 @@ let MemoryDbService = class MemoryDbService {
|
|
|
70
70
|
const table = this.getTableName(entity);
|
|
71
71
|
return Promise.resolve(this.db[table].find((item) => item._id === _id));
|
|
72
72
|
}
|
|
73
|
+
async delete(entity, _id) {
|
|
74
|
+
const table = this.getTableName(entity);
|
|
75
|
+
this.db[table] = this.db[table].filter((item) => item._id !== _id);
|
|
76
|
+
return Promise.resolve(_id);
|
|
77
|
+
}
|
|
73
78
|
findByProperty(entity, field, value) {
|
|
74
79
|
const table = this.getTableName(entity);
|
|
75
80
|
return this.db[table].filter((item) => item[field] === value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory-db.service.js","sourceRoot":"","sources":["../../src/services/memory-db.service.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,kBAAkB;AAClB,2CAA4C;AAC5C,mCAAiD;AACjD,0CAA2C;AAG3C,MAAM,MAAM,GAAG,CAAC,uBAAY,CAAC,CAAC;AAGvB,IAAM,eAAe,GAArB,MAAM,eAAe;IAG1B;QAFQ,OAAE,GAA6B,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"memory-db.service.js","sourceRoot":"","sources":["../../src/services/memory-db.service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/public/scripts/common.js
CHANGED
|
@@ -160,6 +160,7 @@ function renderLogs() {
|
|
|
160
160
|
|
|
161
161
|
async function getLogs() {
|
|
162
162
|
const { origin, pathname, search } = window.location;
|
|
163
|
+
|
|
163
164
|
const res = await fetch(`${origin}${pathname}api${search}`);
|
|
164
165
|
|
|
165
166
|
if (res.ok) {
|
|
@@ -176,6 +177,31 @@ async function getLogs() {
|
|
|
176
177
|
}
|
|
177
178
|
|
|
178
179
|
renderLogs();
|
|
180
|
+
} else {
|
|
181
|
+
alert("An error occurred while fetching logs.");
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
async function deleteLog(id) {
|
|
186
|
+
if (!confirm("Are you sure? It can't be undone.")) return;
|
|
187
|
+
|
|
188
|
+
const { origin, pathname, search: searchParams } = window.location;
|
|
189
|
+
|
|
190
|
+
const searchParamsWithId = new URLSearchParams(searchParams);
|
|
191
|
+
searchParamsWithId.set("id", id);
|
|
192
|
+
|
|
193
|
+
const res = await fetch(
|
|
194
|
+
`${origin}${pathname}api?${searchParamsWithId.toString()}`,
|
|
195
|
+
{
|
|
196
|
+
method: "DELETE",
|
|
197
|
+
}
|
|
198
|
+
);
|
|
199
|
+
|
|
200
|
+
if (res.ok) {
|
|
201
|
+
closePopup();
|
|
202
|
+
getLogs();
|
|
203
|
+
} else {
|
|
204
|
+
alert("An error occurred while deleting log.");
|
|
179
205
|
}
|
|
180
206
|
}
|
|
181
207
|
|
|
@@ -30,7 +30,12 @@ function showLogDetails(log) {
|
|
|
30
30
|
`
|
|
31
31
|
: ""
|
|
32
32
|
}
|
|
33
|
-
<
|
|
33
|
+
<div class="content">
|
|
34
|
+
<button class="white mt-2" onclick="closePopup()">Close</button>
|
|
35
|
+
<button class="light mt-2" onclick="deleteLog('${
|
|
36
|
+
log._id
|
|
37
|
+
}')">Delete</button>
|
|
38
|
+
</div>
|
|
34
39
|
</div>
|
|
35
40
|
<div>`;
|
|
36
41
|
|
package/public/styles/index.css
CHANGED
|
@@ -311,6 +311,7 @@ nav ul li:hover {
|
|
|
311
311
|
overflow-y: scroll;
|
|
312
312
|
z-index: 1;
|
|
313
313
|
opacity: 0.97;
|
|
314
|
+
box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);
|
|
314
315
|
}
|
|
315
316
|
|
|
316
317
|
/* JSON viewer */
|
|
@@ -338,5 +339,6 @@ nav ul li:hover {
|
|
|
338
339
|
#popup {
|
|
339
340
|
width: 100%;
|
|
340
341
|
left: 0;
|
|
342
|
+
box-shadow: none;
|
|
341
343
|
}
|
|
342
344
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {
|
|
2
|
+
CanActivate,
|
|
3
|
+
ExecutionContext,
|
|
4
|
+
HttpException,
|
|
5
|
+
Injectable,
|
|
6
|
+
} from "@nestjs/common";
|
|
7
|
+
import { LogService } from "../services/log.service";
|
|
8
|
+
import querystring from "node:querystring";
|
|
9
|
+
|
|
10
|
+
@Injectable()
|
|
11
|
+
export class LogAccessGuard implements CanActivate {
|
|
12
|
+
canActivate(context: ExecutionContext): boolean {
|
|
13
|
+
const req = !!context.switchToHttp
|
|
14
|
+
? context.switchToHttp().getRequest()
|
|
15
|
+
: context; // hook for using as method
|
|
16
|
+
|
|
17
|
+
const params = querystring.parse(req.url.split("?")[1]);
|
|
18
|
+
|
|
19
|
+
if (LogService.options.key && params.key !== LogService.options.key) {
|
|
20
|
+
throw new HttpException("Unauthorized", 401);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
return true;
|
|
24
|
+
}
|
|
25
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CallHandler, NestInterceptor } from "@nestjs/common";
|
|
2
2
|
import { Inject, Injectable } from "@nestjs/common";
|
|
3
3
|
import { Observable, tap } from "rxjs";
|
|
4
|
-
import { LogService } from "
|
|
4
|
+
import { LogService } from "../services/log.service";
|
|
5
5
|
import { ExecutionContextHost } from "@nestjs/core/helpers/execution-context-host";
|
|
6
6
|
|
|
7
7
|
@Injectable()
|
package/src/log.module.ts
CHANGED
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import { Module, Global, HttpException } from "@nestjs/common";
|
|
2
2
|
import { LogService } from "./services/log.service";
|
|
3
3
|
import { MemoryDbService } from "./services/memory-db.service";
|
|
4
|
-
import { LogInterceptor } from "./log.interceptor";
|
|
4
|
+
import { LogInterceptor } from "./interceptors/log.interceptor";
|
|
5
5
|
import { LogModuleOptions } from "./types";
|
|
6
6
|
import { TypeOrmModule } from "@nestjs/typeorm";
|
|
7
7
|
import querystring from "node:querystring";
|
|
8
8
|
import { ApplicationConfig } from "@nestjs/core";
|
|
9
9
|
import { join } from "node:path";
|
|
10
|
+
import { LogAccessGuard } from "./guards/access.guard";
|
|
10
11
|
|
|
11
12
|
@Global()
|
|
12
13
|
@Module({
|
|
13
14
|
imports: [TypeOrmModule],
|
|
14
|
-
providers: [ApplicationConfig, LogService, MemoryDbService],
|
|
15
|
+
providers: [ApplicationConfig, LogAccessGuard, LogService, MemoryDbService],
|
|
15
16
|
exports: [TypeOrmModule, LogService, MemoryDbService],
|
|
16
17
|
})
|
|
17
18
|
export class LogModule {
|
|
@@ -22,6 +23,11 @@ export class LogModule {
|
|
|
22
23
|
app.resolve(LogService);
|
|
23
24
|
|
|
24
25
|
const logService: LogService = await app.resolve(LogService);
|
|
26
|
+
const logAccessGuard: LogAccessGuard = await app.get(LogAccessGuard);
|
|
27
|
+
|
|
28
|
+
if (options) {
|
|
29
|
+
logService.setOptions(options);
|
|
30
|
+
}
|
|
25
31
|
|
|
26
32
|
app.useGlobalInterceptors(new LogInterceptor(logService)); // intercept all errors
|
|
27
33
|
|
|
@@ -31,17 +37,29 @@ export class LogModule {
|
|
|
31
37
|
});
|
|
32
38
|
|
|
33
39
|
const httpAdapter = app.getHttpAdapter();
|
|
40
|
+
|
|
41
|
+
// get all logs endpoint
|
|
34
42
|
httpAdapter.get(join(options.path, "api"), async (req: any, res: any) => {
|
|
35
|
-
|
|
43
|
+
logAccessGuard.canActivate(req);
|
|
44
|
+
|
|
45
|
+
res.json(await logService.getAll());
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
// delete log endpoint
|
|
49
|
+
httpAdapter.delete(
|
|
50
|
+
join(options.path, "api"),
|
|
51
|
+
async (req: any, res: any) => {
|
|
52
|
+
logAccessGuard.canActivate(req);
|
|
53
|
+
|
|
36
54
|
const params = querystring.parse(req.url.split("?")[1]);
|
|
37
55
|
|
|
38
|
-
if (params.
|
|
39
|
-
throw new HttpException("
|
|
56
|
+
if (!params.id) {
|
|
57
|
+
throw new HttpException("id is required", 400);
|
|
40
58
|
}
|
|
41
|
-
}
|
|
42
59
|
|
|
43
|
-
|
|
44
|
-
|
|
60
|
+
res.json(await logService.delete(params.id.toString()));
|
|
61
|
+
}
|
|
62
|
+
);
|
|
45
63
|
}
|
|
46
64
|
|
|
47
65
|
if (options?.database) {
|
|
@@ -28,7 +28,7 @@ export class LogService implements LoggerService {
|
|
|
28
28
|
options.database?.collection || options.database?.table || defaultTable
|
|
29
29
|
);
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
this.setOptions(options);
|
|
32
32
|
|
|
33
33
|
const dataSourceOptions = {
|
|
34
34
|
type: options.database?.type,
|
|
@@ -51,6 +51,10 @@ export class LogService implements LoggerService {
|
|
|
51
51
|
return LogService.connection;
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
+
setOptions(options: LogModuleOptions) {
|
|
55
|
+
LogService.options = options;
|
|
56
|
+
}
|
|
57
|
+
|
|
54
58
|
addBreadcrumb(breadcrumb: any) {
|
|
55
59
|
this.breadcrumbs.push(breadcrumb);
|
|
56
60
|
}
|
|
@@ -117,6 +121,10 @@ export class LogService implements LoggerService {
|
|
|
117
121
|
});
|
|
118
122
|
}
|
|
119
123
|
|
|
124
|
+
async delete(id: string) {
|
|
125
|
+
return this.getConnection().delete(LogService.Log, id);
|
|
126
|
+
}
|
|
127
|
+
|
|
120
128
|
private async smartInsert(data: {
|
|
121
129
|
type: LogType;
|
|
122
130
|
message: string;
|
|
@@ -92,6 +92,13 @@ export class MemoryDbService {
|
|
|
92
92
|
return Promise.resolve(this.db[table].find((item) => item._id === _id));
|
|
93
93
|
}
|
|
94
94
|
|
|
95
|
+
public async delete(entity: EntitySchema, _id: string): Promise<any> {
|
|
96
|
+
const table = this.getTableName(entity);
|
|
97
|
+
this.db[table] = this.db[table].filter((item) => item._id !== _id);
|
|
98
|
+
|
|
99
|
+
return Promise.resolve(_id);
|
|
100
|
+
}
|
|
101
|
+
|
|
95
102
|
public findByProperty(
|
|
96
103
|
entity: EntitySchema,
|
|
97
104
|
field: string,
|