datanautics 2.1.1 → 2.2.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/CHANGELOG.md +9 -0
- package/dist/constants/default-datanautics-options.js +1 -1
- package/dist/constants/default-datanautics-options.js.map +1 -1
- package/dist/datanautics.d.ts +2 -1
- package/dist/datanautics.js +67 -30
- package/dist/datanautics.js.map +1 -1
- package/package.json +1 -1
- package/test/test.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,14 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
|
6
6
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
|
7
7
|
|
|
8
|
+
## [2.2.0] - 2025-05-17
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Upgraded data storing functionality
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
8
16
|
## [2.1.1] - 2025-05-17
|
|
9
17
|
|
|
10
18
|
### Fixed
|
|
@@ -12,6 +20,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/).
|
|
|
12
20
|
- Fixed events intersection and processes overflow
|
|
13
21
|
|
|
14
22
|
---
|
|
23
|
+
|
|
15
24
|
## [2.1.0] - 2025-05-17 (**Breaking changes!**)
|
|
16
25
|
|
|
17
26
|
### Fixed
|
|
@@ -31,6 +31,6 @@ exports.defaultDatanauticsOptions = {
|
|
|
31
31
|
dumpInterval: default_dump_interval_1.DEFAULT_DUMP_INTERVAL,
|
|
32
32
|
verbose: true,
|
|
33
33
|
logger: console,
|
|
34
|
-
dumpPath: (0, path_1.resolve)(__dirname, '../../data/data.
|
|
34
|
+
dumpPath: (0, path_1.resolve)(__dirname, '../../data/data.txt'),
|
|
35
35
|
};
|
|
36
36
|
//# sourceMappingURL=default-datanautics-options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-datanautics-options.js","sourceRoot":"","sources":["../../src/constants/default-datanautics-options.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,+BAA+B;AAG/B,mEAAgE;AAEnD,QAAA,yBAAyB,GAAuB;IAC3D,YAAY,EAAE,6CAAqB;IACnC,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,IAAA,cAAO,EAAC,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"default-datanautics-options.js","sourceRoot":"","sources":["../../src/constants/default-datanautics-options.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,iDAAmC;AACnC,+BAA+B;AAG/B,mEAAgE;AAEnD,QAAA,yBAAyB,GAAuB;IAC3D,YAAY,EAAE,6CAAqB;IACnC,OAAO,EAAE,IAAI;IACb,MAAM,EAAE,OAAO;IACf,QAAQ,EAAE,IAAA,cAAO,EAAC,SAAS,EAAE,qBAAqB,CAAC;CACpD,CAAC"}
|
package/dist/datanautics.d.ts
CHANGED
|
@@ -6,8 +6,9 @@ export declare class Datanautics {
|
|
|
6
6
|
protected data: Record<string, any>;
|
|
7
7
|
protected eventEmitter: EventEmitter;
|
|
8
8
|
constructor(options?: DatanauticsOptions);
|
|
9
|
+
protected flushDump(): Promise<void>;
|
|
9
10
|
protected createDump(): Promise<void>;
|
|
10
|
-
protected useDump(): void
|
|
11
|
+
protected useDump(): Promise<void>;
|
|
11
12
|
set(key: string, value: any): boolean;
|
|
12
13
|
get(key: string): any;
|
|
13
14
|
}
|
package/dist/datanautics.js
CHANGED
|
@@ -1,11 +1,36 @@
|
|
|
1
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 (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
2
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
26
|
exports.Datanautics = void 0;
|
|
27
|
+
const events_1 = require("events");
|
|
4
28
|
const fs_1 = require("fs");
|
|
5
29
|
const child_process_1 = require("child_process");
|
|
6
|
-
const
|
|
30
|
+
const readline = __importStar(require("readline"));
|
|
7
31
|
const property_accessor_1 = require("property-accessor");
|
|
8
32
|
const _const_1 = require("./constants");
|
|
33
|
+
const console = __importStar(require("console"));
|
|
9
34
|
class Datanautics {
|
|
10
35
|
options;
|
|
11
36
|
data;
|
|
@@ -14,25 +39,35 @@ class Datanautics {
|
|
|
14
39
|
this.options = Object.assign(_const_1.defaultDatanauticsOptions, options || {});
|
|
15
40
|
this.data = {};
|
|
16
41
|
this.eventEmitter = new events_1.EventEmitter();
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
42
|
+
if ((0, fs_1.existsSync)(this.options.dumpPath)) {
|
|
43
|
+
this.useDump().catch(console.error).finally(() => {
|
|
44
|
+
this.eventEmitter.on(_const_1.DUMP_EVENT, async () => {
|
|
45
|
+
await this.flushDump();
|
|
46
|
+
await this.createDump();
|
|
47
|
+
setTimeout(() => {
|
|
48
|
+
this.eventEmitter.emit(_const_1.DUMP_EVENT);
|
|
49
|
+
}, this.options.dumpInterval);
|
|
50
|
+
});
|
|
51
|
+
this.eventEmitter.emit(_const_1.DUMP_EVENT);
|
|
52
|
+
});
|
|
23
53
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
this.
|
|
27
|
-
|
|
54
|
+
else {
|
|
55
|
+
this.eventEmitter.on(_const_1.DUMP_EVENT, async () => {
|
|
56
|
+
await this.flushDump();
|
|
57
|
+
await this.createDump();
|
|
58
|
+
setTimeout(() => {
|
|
59
|
+
this.eventEmitter.emit(_const_1.DUMP_EVENT);
|
|
60
|
+
}, this.options.dumpInterval);
|
|
61
|
+
});
|
|
62
|
+
this.eventEmitter.emit(_const_1.DUMP_EVENT);
|
|
28
63
|
}
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
64
|
+
}
|
|
65
|
+
flushDump() {
|
|
66
|
+
return new Promise((resolve, reject) => {
|
|
67
|
+
(0, fs_1.truncate)(this.options.dumpPath, (error) => {
|
|
68
|
+
error ? reject(error) : resolve();
|
|
69
|
+
});
|
|
34
70
|
});
|
|
35
|
-
this.eventEmitter.emit(_const_1.DUMP_EVENT);
|
|
36
71
|
}
|
|
37
72
|
async createDump() {
|
|
38
73
|
try {
|
|
@@ -42,11 +77,9 @@ class Datanautics {
|
|
|
42
77
|
if (value !== undefined) {
|
|
43
78
|
try {
|
|
44
79
|
await new Promise((resolve, reject) => {
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
});
|
|
49
|
-
}, 0);
|
|
80
|
+
(0, child_process_1.exec)(`echo "${key} ${value.toString()}" >> ${this.options.dumpPath}`, (error) => {
|
|
81
|
+
error ? reject(error) : resolve(true);
|
|
82
|
+
});
|
|
50
83
|
});
|
|
51
84
|
}
|
|
52
85
|
catch (e) {
|
|
@@ -61,20 +94,24 @@ class Datanautics {
|
|
|
61
94
|
}
|
|
62
95
|
}
|
|
63
96
|
}
|
|
64
|
-
useDump() {
|
|
65
|
-
const
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
97
|
+
async useDump() {
|
|
98
|
+
const readStream = (0, fs_1.createReadStream)(this.options.dumpPath);
|
|
99
|
+
const lines = readline.createInterface({
|
|
100
|
+
input: readStream,
|
|
101
|
+
crlfDelay: Infinity, // handles both \n and \r\n
|
|
102
|
+
});
|
|
103
|
+
for await (const line of lines) {
|
|
104
|
+
const data = line.split(' ');
|
|
105
|
+
const key = data[0];
|
|
106
|
+
let value = data[1];
|
|
107
|
+
if (key && value) {
|
|
71
108
|
if (/^[+-]?\d+(\.\d+)?$/.test(value)) {
|
|
72
109
|
value = /^[+-]?\d+$/.test(value) ? parseInt(value, 10) : parseFloat(value);
|
|
73
110
|
}
|
|
74
111
|
else if (/^false|true$/.test(value)) {
|
|
75
112
|
value = /^true$/.test(value);
|
|
76
113
|
}
|
|
77
|
-
property_accessor_1.PropertyAccessor.set(
|
|
114
|
+
property_accessor_1.PropertyAccessor.set(key, value, this.data);
|
|
78
115
|
}
|
|
79
116
|
}
|
|
80
117
|
}
|
package/dist/datanautics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datanautics.js","sourceRoot":"","sources":["../src/datanautics.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"datanautics.js","sourceRoot":"","sources":["../src/datanautics.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/test/test.js
CHANGED
|
@@ -5,7 +5,7 @@ const { readFileSync, unlinkSync } = require('fs');
|
|
|
5
5
|
const { Datanautics } = require('../dist');
|
|
6
6
|
const { setTimeout } = require('timers');
|
|
7
7
|
|
|
8
|
-
const dumpPath = resolve(__dirname, './data');
|
|
8
|
+
const dumpPath = resolve(__dirname, './data.txt');
|
|
9
9
|
const data = { user: { firstname: 'John', lastname: 'Doe' }, score: [27] };
|
|
10
10
|
|
|
11
11
|
const db = new Datanautics({ dumpPath, dumpInterval: 0 });
|