@ringcentral/mfe-logger
Advanced tools
+1
-0
@@ -299,2 +299,3 @@ import { Message, MessageContext, Logger as Logger$1, LogWriter } from 'roarr'; | ||
| get maxLogsSize(): number; | ||
| protected _getTotalSize(): Promise<number>; | ||
| protected _pruneLogs(): Promise<void>; | ||
@@ -301,0 +302,0 @@ get recentTime(): number; |
+29
-7
@@ -365,2 +365,12 @@ 'use strict'; | ||
| } | ||
| // fast way to get total size of logs | ||
| _getTotalSize() { | ||
| var _a, _b; | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| const sizes = (_b = (yield ((_a = this._table) === null || _a === void 0 ? void 0 : _a.orderBy('size').keys()))) !== null && _b !== void 0 ? _b : []; | ||
| return sizes.reduce((acc, size) => { | ||
| return acc + size; | ||
| }, 0); | ||
| }); | ||
| } | ||
| _pruneLogs() { | ||
@@ -370,10 +380,22 @@ var _a; | ||
| yield this._deleteExpiredLogs(); | ||
| const logs = (_a = (yield this._getLogs())) !== null && _a !== void 0 ? _a : []; | ||
| let totalSize = 0; | ||
| for (const log of logs) { | ||
| totalSize += log.size; | ||
| if (totalSize > this.maxLogsSize) { | ||
| yield this._deleteLogs(log.time); | ||
| break; | ||
| // only prune logs if total size is greater than maxLogsSize | ||
| const totalLogSize = yield this._getTotalSize(); | ||
| if (totalLogSize > this.maxLogsSize) { | ||
| let sizeOverBy = totalLogSize - this.maxLogsSize; | ||
| let cutoffTime = 0; | ||
| try { | ||
| yield ((_a = this._table) === null || _a === void 0 ? void 0 : _a.orderBy('time').reverse().each((log) => { | ||
| sizeOverBy -= log.size; | ||
| if (sizeOverBy <= 0) { | ||
| cutoffTime = log.time; | ||
| throw new Error('cutoff found'); | ||
| } | ||
| })); | ||
| } | ||
| catch (_) { | ||
| // ignore | ||
| } | ||
| if (cutoffTime > 0) { | ||
| yield this._deleteLogs(cutoffTime); | ||
| } | ||
| } | ||
@@ -380,0 +402,0 @@ }); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} | ||
| {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} |
+29
-7
@@ -363,2 +363,12 @@ import { global } from '@ringcentral/mfe-shared'; | ||
| } | ||
| // fast way to get total size of logs | ||
| _getTotalSize() { | ||
| var _a, _b; | ||
| return __awaiter(this, void 0, void 0, function* () { | ||
| const sizes = (_b = (yield ((_a = this._table) === null || _a === void 0 ? void 0 : _a.orderBy('size').keys()))) !== null && _b !== void 0 ? _b : []; | ||
| return sizes.reduce((acc, size) => { | ||
| return acc + size; | ||
| }, 0); | ||
| }); | ||
| } | ||
| _pruneLogs() { | ||
@@ -368,10 +378,22 @@ var _a; | ||
| yield this._deleteExpiredLogs(); | ||
| const logs = (_a = (yield this._getLogs())) !== null && _a !== void 0 ? _a : []; | ||
| let totalSize = 0; | ||
| for (const log of logs) { | ||
| totalSize += log.size; | ||
| if (totalSize > this.maxLogsSize) { | ||
| yield this._deleteLogs(log.time); | ||
| break; | ||
| // only prune logs if total size is greater than maxLogsSize | ||
| const totalLogSize = yield this._getTotalSize(); | ||
| if (totalLogSize > this.maxLogsSize) { | ||
| let sizeOverBy = totalLogSize - this.maxLogsSize; | ||
| let cutoffTime = 0; | ||
| try { | ||
| yield ((_a = this._table) === null || _a === void 0 ? void 0 : _a.orderBy('time').reverse().each((log) => { | ||
| sizeOverBy -= log.size; | ||
| if (sizeOverBy <= 0) { | ||
| cutoffTime = log.time; | ||
| throw new Error('cutoff found'); | ||
| } | ||
| })); | ||
| } | ||
| catch (_) { | ||
| // ignore | ||
| } | ||
| if (cutoffTime > 0) { | ||
| yield this._deleteLogs(cutoffTime); | ||
| } | ||
| } | ||
@@ -378,0 +400,0 @@ }); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} | ||
| {"version":3,"file":"index.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"} |
@@ -109,2 +109,3 @@ /// <reference types="node" /> | ||
| get maxLogsSize(): number; | ||
| protected _getTotalSize(): Promise<number>; | ||
| protected _pruneLogs(): Promise<void>; | ||
@@ -111,0 +112,0 @@ get recentTime(): number; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../../src/transports/storage.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../../../../src/transports/storage.ts"],"names":[],"mappings":"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"} |
+2
-2
| { | ||
| "name": "@ringcentral/mfe-logger", | ||
| "version": "0.4.12", | ||
| "version": "0.4.13", | ||
| "description": "A micro frontends framework for building Web applications", | ||
@@ -45,3 +45,3 @@ "main": "dist/index.js", | ||
| "dependencies": { | ||
| "@ringcentral/mfe-shared": "^0.4.12", | ||
| "@ringcentral/mfe-shared": "^0.4.13", | ||
| "@roarr/browser-log-writer": "1.3.0", | ||
@@ -48,0 +48,0 @@ "dexie": "3.2.4", |
@@ -296,12 +296,37 @@ /* eslint-disable no-param-reassign */ | ||
| // fast way to get total size of logs | ||
| protected async _getTotalSize() { | ||
| const sizes = | ||
| ((await this._table?.orderBy('size').keys()) as number[]) ?? []; | ||
| return sizes.reduce((acc, size) => { | ||
| return acc + size; | ||
| }, 0); | ||
| } | ||
| protected async _pruneLogs() { | ||
| await this._deleteExpiredLogs(); | ||
| const logs = (await this._getLogs()) ?? []; | ||
| let totalSize = 0; | ||
| for (const log of logs) { | ||
| totalSize += log.size; | ||
| if (totalSize > this.maxLogsSize) { | ||
| await this._deleteLogs(log.time); | ||
| break; | ||
| // only prune logs if total size is greater than maxLogsSize | ||
| const totalLogSize = await this._getTotalSize(); | ||
| if (totalLogSize > this.maxLogsSize) { | ||
| let sizeOverBy = totalLogSize - this.maxLogsSize; | ||
| let cutoffTime = 0; | ||
| try { | ||
| await this._table | ||
| ?.orderBy('time') | ||
| .reverse() | ||
| .each((log: Logs) => { | ||
| sizeOverBy -= log.size; | ||
| if (sizeOverBy <= 0) { | ||
| cutoffTime = log.time; | ||
| throw new Error('cutoff found'); | ||
| } | ||
| }); | ||
| } catch (_) { | ||
| // ignore | ||
| } | ||
| if (cutoffTime > 0) { | ||
| await this._deleteLogs(cutoffTime); | ||
| } | ||
| } | ||
@@ -308,0 +333,0 @@ } |
200243
1.44%4265
1.62%