@forgehive/record-tape 0.0.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/LICENSE +21 -0
- package/dist/index.d.ts +51 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +176 -0
- package/dist/index.js.map +1 -0
- package/dist/tests/compile-cache.test.d.ts +2 -0
- package/dist/tests/compile-cache.test.d.ts.map +1 -0
- package/dist/tests/compile-cache.test.js +34 -0
- package/dist/tests/compile-cache.test.js.map +1 -0
- package/dist/tests/index.test.d.ts +2 -0
- package/dist/tests/index.test.d.ts.map +1 -0
- package/dist/tests/index.test.js +99 -0
- package/dist/tests/index.test.js.map +1 -0
- package/dist/tests/load.test.d.ts +2 -0
- package/dist/tests/load.test.d.ts.map +1 -0
- package/dist/tests/load.test.js +89 -0
- package/dist/tests/load.test.js.map +1 -0
- package/dist/tests/log-format.test.d.ts +2 -0
- package/dist/tests/log-format.test.d.ts.map +1 -0
- package/dist/tests/log-format.test.js +36 -0
- package/dist/tests/log-format.test.js.map +1 -0
- package/dist/tests/mode.test.d.ts +2 -0
- package/dist/tests/mode.test.d.ts.map +1 -0
- package/dist/tests/mode.test.js +75 -0
- package/dist/tests/mode.test.js.map +1 -0
- package/dist/tests/save.test.d.ts +2 -0
- package/dist/tests/save.test.d.ts.map +1 -0
- package/dist/tests/save.test.js +95 -0
- package/dist/tests/save.test.js.map +1 -0
- package/dist/tests/task-listener.test.d.ts +2 -0
- package/dist/tests/task-listener.test.d.ts.map +1 -0
- package/dist/tests/task-listener.test.js +122 -0
- package/dist/tests/task-listener.test.js.map +1 -0
- package/jest.config.js +6 -0
- package/package.json +23 -0
- package/src/index.ts +218 -0
- package/src/tests/compile-cache.test.ts +41 -0
- package/src/tests/fixtures/load.log +2 -0
- package/src/tests/fixtures/single-cache.log +2 -0
- package/src/tests/index.test.ts +88 -0
- package/src/tests/load.test.ts +108 -0
- package/src/tests/log-format.test.ts +48 -0
- package/src/tests/mode.test.ts +93 -0
- package/src/tests/save.test.ts +127 -0
- package/src/tests/task-listener.test.ts +170 -0
- package/tsconfig.json +19 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 ForgeHive
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import fs from 'fs';
|
|
2
|
+
export interface LogRecord<TInput = unknown[], TOutput = unknown> {
|
|
3
|
+
name: string;
|
|
4
|
+
type: 'success' | 'error';
|
|
5
|
+
input: TInput;
|
|
6
|
+
output?: TOutput;
|
|
7
|
+
error?: unknown;
|
|
8
|
+
boundaries: Record<string, unknown>;
|
|
9
|
+
}
|
|
10
|
+
interface SuccessLogItem<TInput = unknown[], TOutput = unknown> {
|
|
11
|
+
input: TInput;
|
|
12
|
+
output: TOutput;
|
|
13
|
+
boundaries?: Record<string, unknown>;
|
|
14
|
+
}
|
|
15
|
+
interface ErrorLogItem<TInput = unknown[]> {
|
|
16
|
+
input: TInput;
|
|
17
|
+
error: unknown;
|
|
18
|
+
boundaries?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export type LogItem<TInput = unknown[], TOutput = unknown> = SuccessLogItem<TInput, TOutput> | ErrorLogItem<TInput>;
|
|
21
|
+
interface Config<TInput = unknown[], TOutput = unknown> {
|
|
22
|
+
path?: fs.PathLike;
|
|
23
|
+
log?: LogRecord<TInput, TOutput>[];
|
|
24
|
+
boundaries?: Record<string, unknown>;
|
|
25
|
+
}
|
|
26
|
+
export type Mode = 'record' | 'replay';
|
|
27
|
+
export declare class RecordTape<TInput = unknown[], TOutput = unknown> {
|
|
28
|
+
private _path;
|
|
29
|
+
private _mode;
|
|
30
|
+
private _boundaries;
|
|
31
|
+
private _log;
|
|
32
|
+
constructor(config?: Config<TInput, TOutput>);
|
|
33
|
+
getLog(): LogRecord<TInput, TOutput>[];
|
|
34
|
+
getMode(): Mode;
|
|
35
|
+
setMode(mode: Mode): void;
|
|
36
|
+
addLogItem(name: string, logItem: LogItem<TInput, TOutput>): void;
|
|
37
|
+
addLogRecord(logRecord: LogRecord<TInput, TOutput>): void;
|
|
38
|
+
stringify(): string;
|
|
39
|
+
parse(content: string): LogRecord<TInput, TOutput>[];
|
|
40
|
+
compileCache(): Record<string, unknown>;
|
|
41
|
+
recordFrom(name: string, task: {
|
|
42
|
+
_listener?: unknown;
|
|
43
|
+
setBoundariesData: (data: Record<string, unknown>) => void;
|
|
44
|
+
}): void;
|
|
45
|
+
load(): Promise<LogRecord<TInput, TOutput>[]>;
|
|
46
|
+
loadSync(): LogRecord<TInput, TOutput>[];
|
|
47
|
+
save(): Promise<void>;
|
|
48
|
+
saveSync(): void;
|
|
49
|
+
}
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AAGnB,MAAM,WAAW,SAAS,CAAC,MAAM,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO;IAC9D,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,SAAS,GAAG,OAAO,CAAA;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACpC;AAED,UAAU,cAAc,CAAC,MAAM,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO;IAC5D,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAED,UAAU,YAAY,CAAC,MAAM,GAAG,OAAO,EAAE;IACvC,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,OAAO,CAAA;IACd,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAUD,MAAM,MAAM,OAAO,CAAC,MAAM,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO,IAAI,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;AAEnH,UAAU,MAAM,CAAC,MAAM,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO;IACpD,IAAI,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAA;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAA;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACrC;AAED,MAAM,MAAM,IAAI,GAAG,QAAQ,GAAG,QAAQ,CAAA;AAEtC,qBAAa,UAAU,CAAC,MAAM,GAAG,OAAO,EAAE,EAAE,OAAO,GAAG,OAAO;IAC3D,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,KAAK,CAAM;IACnB,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,IAAI,CAA8B;gBAE9B,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM;IAQhD,MAAM,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAItC,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;IAIzB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgBjE,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAIzD,SAAS,IAAI,MAAM;IASnB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAYpD,YAAY,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAgBvC,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAC;QAAC,iBAAiB,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAA;KAAE,GAAG,IAAI;IAcnH,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IA8BnD,QAAQ,IAAI,SAAS,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE;IAmBlC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgB3B,QAAQ,IAAI,IAAI;CAajB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.RecordTape = void 0;
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const path_1 = __importDefault(require("path"));
|
|
9
|
+
function isSuccessLogItem(log) {
|
|
10
|
+
return log.output !== undefined;
|
|
11
|
+
}
|
|
12
|
+
function isErrorLogItem(log) {
|
|
13
|
+
return log.error !== undefined;
|
|
14
|
+
}
|
|
15
|
+
class RecordTape {
|
|
16
|
+
constructor(config = {}) {
|
|
17
|
+
var _a, _b;
|
|
18
|
+
this._path = typeof config.path === 'string' ? `${config.path}.log` : undefined;
|
|
19
|
+
this._log = (_a = config.log) !== null && _a !== void 0 ? _a : [];
|
|
20
|
+
this._boundaries = (_b = config.boundaries) !== null && _b !== void 0 ? _b : {};
|
|
21
|
+
this._mode = 'record';
|
|
22
|
+
}
|
|
23
|
+
// Data functions
|
|
24
|
+
getLog() {
|
|
25
|
+
return this._log;
|
|
26
|
+
}
|
|
27
|
+
getMode() {
|
|
28
|
+
return this._mode;
|
|
29
|
+
}
|
|
30
|
+
setMode(mode) {
|
|
31
|
+
this._mode = mode;
|
|
32
|
+
}
|
|
33
|
+
addLogItem(name, logItem) {
|
|
34
|
+
if (this._mode === 'replay') {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
if (isSuccessLogItem(logItem)) {
|
|
38
|
+
const { input, output, boundaries = {} } = logItem;
|
|
39
|
+
this._log.push({ name, type: 'success', input, output, boundaries });
|
|
40
|
+
}
|
|
41
|
+
else if (isErrorLogItem(logItem)) {
|
|
42
|
+
const { input, error, boundaries = {} } = logItem;
|
|
43
|
+
this._log.push({ name, type: 'error', input, error, boundaries });
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
throw new Error('invalid log item');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
addLogRecord(logRecord) {
|
|
50
|
+
this._log.push(logRecord);
|
|
51
|
+
}
|
|
52
|
+
stringify() {
|
|
53
|
+
let log = '';
|
|
54
|
+
for (const logItem of this._log) {
|
|
55
|
+
const str = JSON.stringify(logItem);
|
|
56
|
+
log = log + str + '\n';
|
|
57
|
+
}
|
|
58
|
+
return log;
|
|
59
|
+
}
|
|
60
|
+
parse(content) {
|
|
61
|
+
const items = content.split('\n');
|
|
62
|
+
const log = [];
|
|
63
|
+
for (const item of items) {
|
|
64
|
+
if (item !== '') {
|
|
65
|
+
const data = JSON.parse(item);
|
|
66
|
+
log.push(data);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return log;
|
|
70
|
+
}
|
|
71
|
+
compileCache() {
|
|
72
|
+
const cache = {};
|
|
73
|
+
for (const logIteam of this._log) {
|
|
74
|
+
for (const bondaryName in logIteam.boundaries) {
|
|
75
|
+
if (typeof cache[bondaryName] === 'undefined') {
|
|
76
|
+
cache[bondaryName] = logIteam.boundaries[bondaryName];
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
const currentValue = cache[bondaryName];
|
|
80
|
+
const newValue = logIteam.boundaries[bondaryName];
|
|
81
|
+
cache[bondaryName] = currentValue.concat(newValue);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return cache;
|
|
86
|
+
}
|
|
87
|
+
recordFrom(name, task) {
|
|
88
|
+
// Add listner
|
|
89
|
+
task._listener = async (logItem, _boundaries) => {
|
|
90
|
+
// Only update if mode is record
|
|
91
|
+
if (this.getMode() === 'record') {
|
|
92
|
+
this.addLogItem(name, logItem);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
// Add cache
|
|
96
|
+
task.setBoundariesData(this.compileCache());
|
|
97
|
+
}
|
|
98
|
+
// Load save functions
|
|
99
|
+
async load() {
|
|
100
|
+
if (typeof this._path === 'undefined') {
|
|
101
|
+
return [];
|
|
102
|
+
}
|
|
103
|
+
const dirpath = path_1.default.dirname(this._path.toString());
|
|
104
|
+
try {
|
|
105
|
+
await fs_1.default.promises.access(dirpath);
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
throw new Error('Logs folder doesn\'t exists');
|
|
109
|
+
}
|
|
110
|
+
if (typeof this._path === 'undefined') {
|
|
111
|
+
return [];
|
|
112
|
+
}
|
|
113
|
+
const readFile = fs_1.default.promises.readFile;
|
|
114
|
+
let content;
|
|
115
|
+
try {
|
|
116
|
+
content = await readFile(this._path.toString(), 'utf8');
|
|
117
|
+
}
|
|
118
|
+
catch (e) {
|
|
119
|
+
// Ignore error and return empty array
|
|
120
|
+
}
|
|
121
|
+
if (typeof content === 'undefined') {
|
|
122
|
+
return [];
|
|
123
|
+
}
|
|
124
|
+
this._log = this.parse(content);
|
|
125
|
+
return this._log;
|
|
126
|
+
}
|
|
127
|
+
loadSync() {
|
|
128
|
+
if (typeof this._path === 'undefined') {
|
|
129
|
+
return [];
|
|
130
|
+
}
|
|
131
|
+
const dirpath = path_1.default.dirname(this._path.toString());
|
|
132
|
+
try {
|
|
133
|
+
fs_1.default.accessSync(dirpath);
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
throw new Error('Logs folder doesn\'t exists');
|
|
137
|
+
}
|
|
138
|
+
if (!fs_1.default.existsSync(this._path.toString())) {
|
|
139
|
+
return [];
|
|
140
|
+
}
|
|
141
|
+
const content = fs_1.default.readFileSync(this._path.toString(), 'utf8');
|
|
142
|
+
this._log = this.parse(content);
|
|
143
|
+
return this._log;
|
|
144
|
+
}
|
|
145
|
+
async save() {
|
|
146
|
+
if (typeof this._path === 'undefined') {
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
const dirpath = path_1.default.dirname(this._path.toString());
|
|
150
|
+
try {
|
|
151
|
+
await fs_1.default.promises.access(dirpath);
|
|
152
|
+
}
|
|
153
|
+
catch (error) {
|
|
154
|
+
throw new Error('Folder doesn\'t exists');
|
|
155
|
+
}
|
|
156
|
+
const writeFile = fs_1.default.promises.writeFile;
|
|
157
|
+
const content = this.stringify();
|
|
158
|
+
await writeFile(this._path.toString(), content, 'utf8');
|
|
159
|
+
}
|
|
160
|
+
saveSync() {
|
|
161
|
+
if (typeof this._path === 'undefined') {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
const dirpath = path_1.default.dirname(this._path.toString());
|
|
165
|
+
try {
|
|
166
|
+
fs_1.default.accessSync(dirpath);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
throw new Error('Folder doesn\'t exists');
|
|
170
|
+
}
|
|
171
|
+
const content = this.stringify();
|
|
172
|
+
fs_1.default.writeFileSync(this._path.toString(), content, 'utf8');
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
exports.RecordTape = RecordTape;
|
|
176
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-cache.test.d.ts","sourceRoot":"","sources":["../../src/tests/compile-cache.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const path_1 = __importDefault(require("path"));
|
|
7
|
+
const index_1 = require("../index");
|
|
8
|
+
const simpleTapePath = path_1.default.resolve(__dirname, './fixtures/single-cache');
|
|
9
|
+
const complexTapePath = path_1.default.resolve(__dirname, './fixtures/complex-cache');
|
|
10
|
+
describe('Cache tests', () => {
|
|
11
|
+
it('Should create cache object from log', () => {
|
|
12
|
+
const tape = new index_1.RecordTape({ path: simpleTapePath });
|
|
13
|
+
tape.loadSync();
|
|
14
|
+
const cache = tape.compileCache();
|
|
15
|
+
expect(cache).toEqual({
|
|
16
|
+
getFilePath: [
|
|
17
|
+
{ input: ['doc'], output: 'readme.md' },
|
|
18
|
+
{ input: ['package'], output: 'package.json' }
|
|
19
|
+
]
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
it.skip('Should create cache object with multiple boundaties', () => {
|
|
23
|
+
const tape = new index_1.RecordTape({ path: complexTapePath });
|
|
24
|
+
tape.loadSync();
|
|
25
|
+
const cache = tape.compileCache();
|
|
26
|
+
expect(cache).toEqual({
|
|
27
|
+
getFilePath: [
|
|
28
|
+
{ input: ['doc'], output: 'readme.md' },
|
|
29
|
+
{ input: ['package'], output: 'package.json' }
|
|
30
|
+
]
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=compile-cache.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compile-cache.test.js","sourceRoot":"","sources":["../../src/tests/compile-cache.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAuB;AACvB,oCAAqC;AAErC,MAAM,cAAc,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,yBAAyB,CAAC,CAAA;AACzE,MAAM,eAAe,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,0BAA0B,CAAC,CAAA;AAE3E,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;QAI7C,MAAM,IAAI,GAAG,IAAI,kBAAU,CAAwB,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;QAC5E,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAEjC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACpB,WAAW,EAAE;gBACX,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;gBACvC,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE;aAC/C;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAIlE,MAAM,IAAI,GAAG,IAAI,kBAAU,CAAwB,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC,CAAA;QAC7E,IAAI,CAAC,QAAQ,EAAE,CAAA;QAEf,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAEjC,MAAM,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACpB,WAAW,EAAE;gBACX,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE;gBACvC,EAAE,KAAK,EAAE,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,cAAc,EAAE;aAC/C;SACF,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.d.ts","sourceRoot":"","sources":["../../src/tests/index.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
const path = __importStar(require("path"));
|
|
37
|
+
const index_1 = require("../index");
|
|
38
|
+
const emptyPath = path.resolve('any');
|
|
39
|
+
const tapePath = path.resolve(__dirname, './fixtures/load');
|
|
40
|
+
describe('Base tests', () => {
|
|
41
|
+
it('Load sync with no file should return a empty tape', () => {
|
|
42
|
+
const tape = new index_1.RecordTape({ path: emptyPath });
|
|
43
|
+
tape.loadSync();
|
|
44
|
+
const data = tape.getLog();
|
|
45
|
+
expect(data.length).toBe(0);
|
|
46
|
+
});
|
|
47
|
+
it('Load sync with fixture tape should return a tape with one element', () => {
|
|
48
|
+
const tape = new index_1.RecordTape({ path: tapePath });
|
|
49
|
+
tape.loadSync();
|
|
50
|
+
const data = tape.getLog();
|
|
51
|
+
expect(data.length).toBe(2);
|
|
52
|
+
});
|
|
53
|
+
it('Load with no file should return a empty tape', async () => {
|
|
54
|
+
const tape = new index_1.RecordTape({ path: emptyPath });
|
|
55
|
+
await tape.load();
|
|
56
|
+
const data = tape.getLog();
|
|
57
|
+
expect(data.length).toBe(0);
|
|
58
|
+
});
|
|
59
|
+
it('Load with fixture tape should return a tape with one element', async () => {
|
|
60
|
+
const tape = new index_1.RecordTape({ path: tapePath });
|
|
61
|
+
await tape.load();
|
|
62
|
+
const data = tape.getLog();
|
|
63
|
+
expect(data.length).toBe(2);
|
|
64
|
+
const successRecord = data[0];
|
|
65
|
+
expect(successRecord.type).toBe('success');
|
|
66
|
+
expect(successRecord.input).toEqual([true]);
|
|
67
|
+
expect(successRecord.output).toBe(true);
|
|
68
|
+
expect(successRecord.error).toBeUndefined();
|
|
69
|
+
const errorRecord = data[1];
|
|
70
|
+
expect(errorRecord.type).toBe('error');
|
|
71
|
+
expect(errorRecord.input).toEqual([true]);
|
|
72
|
+
expect(errorRecord.output).toBeUndefined();
|
|
73
|
+
expect(errorRecord.error).toBe('invalid data');
|
|
74
|
+
});
|
|
75
|
+
it('Should create a new tape with generic types', () => {
|
|
76
|
+
const tape = new index_1.RecordTape({ path: emptyPath });
|
|
77
|
+
tape.addLogItem('test', { input: [{ name: 'test' }], output: { age: 1 } });
|
|
78
|
+
tape.addLogItem('test', { input: [{ name: 'test' }], error: new Error('test') });
|
|
79
|
+
const data = tape.getLog();
|
|
80
|
+
expect(data.length).toBe(2);
|
|
81
|
+
const input = data[0].input;
|
|
82
|
+
const output = data[0].output;
|
|
83
|
+
const type = data[0].type;
|
|
84
|
+
const error = data[0].error;
|
|
85
|
+
expect(input).toEqual([{ name: 'test' }]);
|
|
86
|
+
expect(output).toEqual({ age: 1 });
|
|
87
|
+
expect(error).toBeUndefined();
|
|
88
|
+
expect(type).toBe('success');
|
|
89
|
+
const input2 = data[1].input;
|
|
90
|
+
const output2 = data[1].output;
|
|
91
|
+
const type2 = data[1].type;
|
|
92
|
+
const error2 = data[1].error;
|
|
93
|
+
expect(input2).toEqual([{ name: 'test' }]);
|
|
94
|
+
expect(output2).toBeUndefined();
|
|
95
|
+
expect(error2).toEqual(new Error('test'));
|
|
96
|
+
expect(type2).toBe('error');
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=index.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.test.js","sourceRoot":"","sources":["../../src/tests/index.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.test.d.ts","sourceRoot":"","sources":["../../src/tests/load.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const path_1 = __importDefault(require("path"));
|
|
7
|
+
const fs_1 = __importDefault(require("fs"));
|
|
8
|
+
const index_1 = require("../index");
|
|
9
|
+
const baseTapeData = [
|
|
10
|
+
{
|
|
11
|
+
name: 'name',
|
|
12
|
+
type: 'success',
|
|
13
|
+
input: [true],
|
|
14
|
+
output: true,
|
|
15
|
+
boundaries: {}
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'name',
|
|
19
|
+
type: 'error',
|
|
20
|
+
input: [true],
|
|
21
|
+
error: 'invalid data',
|
|
22
|
+
boundaries: {}
|
|
23
|
+
}
|
|
24
|
+
];
|
|
25
|
+
describe('Load async', () => {
|
|
26
|
+
it('Load async from file', async () => {
|
|
27
|
+
const tape = new index_1.RecordTape({
|
|
28
|
+
path: path_1.default.resolve(__dirname, './fixtures/load')
|
|
29
|
+
});
|
|
30
|
+
await tape.load();
|
|
31
|
+
const log = tape.getLog();
|
|
32
|
+
expect(log).toEqual(baseTapeData);
|
|
33
|
+
});
|
|
34
|
+
it('Load async from file on a directory that doesnt exist', async () => {
|
|
35
|
+
const tape = new index_1.RecordTape({
|
|
36
|
+
path: path_1.default.resolve(__dirname, './nowhere/nop')
|
|
37
|
+
});
|
|
38
|
+
await expect(tape.load()).rejects.toThrow('Logs folder doesn\'t exists');
|
|
39
|
+
});
|
|
40
|
+
it('Load async from file that doesnt exist', async () => {
|
|
41
|
+
const tapeFilePath = path_1.default.resolve(__dirname, './fixtures/nop');
|
|
42
|
+
try {
|
|
43
|
+
await fs_1.default.promises.unlink(tapeFilePath + '.log');
|
|
44
|
+
}
|
|
45
|
+
catch (_e) {
|
|
46
|
+
// eslint-disable-next-line no-console
|
|
47
|
+
// console.warn('Didnt found a file to unlink')
|
|
48
|
+
}
|
|
49
|
+
const tape = new index_1.RecordTape({
|
|
50
|
+
path: path_1.default.resolve(__dirname, './fixtures/nop')
|
|
51
|
+
});
|
|
52
|
+
await tape.load();
|
|
53
|
+
const log = tape.getLog();
|
|
54
|
+
expect(log).toEqual([]);
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
describe('Load sync', () => {
|
|
58
|
+
it('load sync from file', () => {
|
|
59
|
+
const tape = new index_1.RecordTape({
|
|
60
|
+
path: path_1.default.resolve(__dirname, './fixtures/load')
|
|
61
|
+
});
|
|
62
|
+
tape.loadSync();
|
|
63
|
+
const log = tape.getLog();
|
|
64
|
+
expect(log).toEqual(baseTapeData);
|
|
65
|
+
});
|
|
66
|
+
it('Load sync from file on a directory that doesnt exist', () => {
|
|
67
|
+
const tape = new index_1.RecordTape({
|
|
68
|
+
path: path_1.default.resolve(__dirname, './somewhere/nop')
|
|
69
|
+
});
|
|
70
|
+
expect(() => tape.loadSync()).toThrow('Logs folder doesn\'t exists');
|
|
71
|
+
});
|
|
72
|
+
it('Load sync from file that doesnt exist', () => {
|
|
73
|
+
const tapeFilePath = path_1.default.resolve(__dirname, './fixtures/nop');
|
|
74
|
+
try {
|
|
75
|
+
fs_1.default.unlinkSync(tapeFilePath + '.log');
|
|
76
|
+
}
|
|
77
|
+
catch (_e) {
|
|
78
|
+
// eslint-disable-next-line no-console
|
|
79
|
+
// console.warn('Didnt found a file to unlink')
|
|
80
|
+
}
|
|
81
|
+
const tape = new index_1.RecordTape({
|
|
82
|
+
path: path_1.default.resolve(__dirname, './fixtures/nop')
|
|
83
|
+
});
|
|
84
|
+
tape.loadSync();
|
|
85
|
+
const log = tape.getLog();
|
|
86
|
+
expect(log).toEqual([]);
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
//# sourceMappingURL=load.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"load.test.js","sourceRoot":"","sources":["../../src/tests/load.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-format.test.d.ts","sourceRoot":"","sources":["../../src/tests/log-format.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const index_1 = require("../index");
|
|
4
|
+
const baseTapeData = [
|
|
5
|
+
{
|
|
6
|
+
name: 'name',
|
|
7
|
+
type: 'success',
|
|
8
|
+
input: [true],
|
|
9
|
+
output: true,
|
|
10
|
+
boundaries: {}
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
name: 'name',
|
|
14
|
+
type: 'error',
|
|
15
|
+
input: [true],
|
|
16
|
+
error: 'invalid data',
|
|
17
|
+
boundaries: {}
|
|
18
|
+
}
|
|
19
|
+
];
|
|
20
|
+
const logFileData = '{"name":"name","type":"success","input":[true],"output":true,"boundaries":{}}\n{"name":"name","type":"error","input":[true],"error":"invalid data","boundaries":{}}\n';
|
|
21
|
+
describe('Log format', () => {
|
|
22
|
+
it('Should ensure format', () => {
|
|
23
|
+
const tape = new index_1.RecordTape({});
|
|
24
|
+
tape.addLogItem('name', { input: [true], output: true, boundaries: {} });
|
|
25
|
+
tape.addLogItem('name', { input: [true], error: 'invalid data', boundaries: {} });
|
|
26
|
+
expect(tape.getLog()).toEqual(baseTapeData);
|
|
27
|
+
});
|
|
28
|
+
it('Should serialize to one line per item', () => {
|
|
29
|
+
const tape = new index_1.RecordTape({});
|
|
30
|
+
tape.addLogItem('name', { input: [true], output: true, boundaries: {} });
|
|
31
|
+
tape.addLogItem('name', { input: [true], error: 'invalid data', boundaries: {} });
|
|
32
|
+
const logFile = tape.stringify();
|
|
33
|
+
expect(logFile).toBe(logFileData);
|
|
34
|
+
});
|
|
35
|
+
});
|
|
36
|
+
//# sourceMappingURL=log-format.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-format.test.js","sourceRoot":"","sources":["../../src/tests/log-format.test.ts"],"names":[],"mappings":";;AAAA,oCAAqC;AAErC,MAAM,YAAY,GAAG;IACnB;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,MAAM,EAAE,IAAI;QACZ,UAAU,EAAE,EAAE;KACf;IACD;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,OAAO;QACb,KAAK,EAAE,CAAC,IAAI,CAAC;QACb,KAAK,EAAE,cAAc;QACrB,UAAU,EAAE,EAAE;KACf;CACF,CAAA;AAED,MAAM,WAAW,GAAG,uKAAuK,CAAA;AAE3L,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,sBAAsB,EAAE,GAAG,EAAE;QAI9B,MAAM,IAAI,GAAG,IAAI,kBAAU,CAAwB,EAAE,CAAC,CAAA;QAEtD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;QACxE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;QAEjF,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAA;IAC7C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAI/C,MAAM,IAAI,GAAG,IAAI,kBAAU,CAAwB,EAAE,CAAC,CAAA;QAEtD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;QACxE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAA;QAEjF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAA;QAEhC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode.test.d.ts","sourceRoot":"","sources":["../../src/tests/mode.test.ts"],"names":[],"mappings":""}
|