datanautics 2.2.0 → 2.2.2
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 +13 -0
- package/dist/datanautics.d.ts +2 -3
- package/dist/datanautics.js +19 -74
- package/dist/datanautics.js.map +1 -1
- package/package.json +2 -2
- package/test/test.js +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,19 @@ 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.2] - 2025-05-19
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Updated property-accessor version
|
|
13
|
+
|
|
14
|
+
## [2.2.1] - 2025-05-17
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- Refactor the data storing avoiding async functionality
|
|
19
|
+
|
|
20
|
+
---
|
|
8
21
|
## [2.2.0] - 2025-05-17
|
|
9
22
|
|
|
10
23
|
### Fixed
|
package/dist/datanautics.d.ts
CHANGED
|
@@ -6,9 +6,8 @@ export declare class Datanautics {
|
|
|
6
6
|
protected data: Record<string, any>;
|
|
7
7
|
protected eventEmitter: EventEmitter;
|
|
8
8
|
constructor(options?: DatanauticsOptions);
|
|
9
|
-
protected
|
|
10
|
-
protected
|
|
11
|
-
protected useDump(): Promise<void>;
|
|
9
|
+
protected createDump(): void;
|
|
10
|
+
protected useDump(): void;
|
|
12
11
|
set(key: string, value: any): boolean;
|
|
13
12
|
get(key: string): any;
|
|
14
13
|
}
|
package/dist/datanautics.js
CHANGED
|
@@ -1,36 +1,10 @@
|
|
|
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
|
-
};
|
|
25
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
3
|
exports.Datanautics = void 0;
|
|
27
4
|
const events_1 = require("events");
|
|
28
5
|
const fs_1 = require("fs");
|
|
29
|
-
const child_process_1 = require("child_process");
|
|
30
|
-
const readline = __importStar(require("readline"));
|
|
31
6
|
const property_accessor_1 = require("property-accessor");
|
|
32
7
|
const _const_1 = require("./constants");
|
|
33
|
-
const console = __importStar(require("console"));
|
|
34
8
|
class Datanautics {
|
|
35
9
|
options;
|
|
36
10
|
data;
|
|
@@ -40,53 +14,27 @@ class Datanautics {
|
|
|
40
14
|
this.data = {};
|
|
41
15
|
this.eventEmitter = new events_1.EventEmitter();
|
|
42
16
|
if ((0, fs_1.existsSync)(this.options.dumpPath)) {
|
|
43
|
-
this.useDump()
|
|
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
|
-
});
|
|
53
|
-
}
|
|
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);
|
|
17
|
+
this.useDump();
|
|
63
18
|
}
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
});
|
|
19
|
+
this.eventEmitter.on(_const_1.DUMP_EVENT, async () => {
|
|
20
|
+
this.createDump();
|
|
21
|
+
setTimeout(() => {
|
|
22
|
+
this.eventEmitter.emit(_const_1.DUMP_EVENT);
|
|
23
|
+
}, this.options.dumpInterval);
|
|
70
24
|
});
|
|
25
|
+
this.eventEmitter.emit(_const_1.DUMP_EVENT);
|
|
71
26
|
}
|
|
72
|
-
|
|
27
|
+
createDump() {
|
|
73
28
|
try {
|
|
74
29
|
const flat = property_accessor_1.PropertyAccessor.flat(this.data);
|
|
30
|
+
const data = [];
|
|
75
31
|
for (const key in flat) {
|
|
76
32
|
const value = property_accessor_1.PropertyAccessor.get(key, this.data);
|
|
77
33
|
if (value !== undefined) {
|
|
78
|
-
|
|
79
|
-
await new Promise((resolve, reject) => {
|
|
80
|
-
(0, child_process_1.exec)(`echo "${key} ${value.toString()}" >> ${this.options.dumpPath}`, (error) => {
|
|
81
|
-
error ? reject(error) : resolve(true);
|
|
82
|
-
});
|
|
83
|
-
});
|
|
84
|
-
}
|
|
85
|
-
catch (e) {
|
|
86
|
-
console.error(e);
|
|
87
|
-
}
|
|
34
|
+
data.push(`${key} ${value.toString()}`);
|
|
88
35
|
}
|
|
89
36
|
}
|
|
37
|
+
(0, fs_1.writeFileSync)(this.options.dumpPath, data.join('\n'), 'utf8');
|
|
90
38
|
}
|
|
91
39
|
catch (e) {
|
|
92
40
|
if (this.options.verbose) {
|
|
@@ -94,17 +42,14 @@ class Datanautics {
|
|
|
94
42
|
}
|
|
95
43
|
}
|
|
96
44
|
}
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
const lines =
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
const key = data[0];
|
|
106
|
-
let value = data[1];
|
|
107
|
-
if (key && value) {
|
|
45
|
+
useDump() {
|
|
46
|
+
const data = (0, fs_1.readFileSync)(this.options.dumpPath).toString('utf8');
|
|
47
|
+
const lines = data.split('\n');
|
|
48
|
+
for (const line of lines) {
|
|
49
|
+
const [k, v] = line.split(' ');
|
|
50
|
+
const key = k.trim();
|
|
51
|
+
if (v !== undefined) {
|
|
52
|
+
let value = v.trim();
|
|
108
53
|
if (/^[+-]?\d+(\.\d+)?$/.test(value)) {
|
|
109
54
|
value = /^[+-]?\d+$/.test(value) ? parseInt(value, 10) : parseFloat(value);
|
|
110
55
|
}
|
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
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "datanautics",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.2",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"data store",
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"runtime": "node dist/index.js"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"property-accessor": "^2.1.
|
|
24
|
+
"property-accessor": "^2.1.2"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "20.10.6",
|
package/test/test.js
CHANGED
|
@@ -8,7 +8,7 @@ const { setTimeout } = require('timers');
|
|
|
8
8
|
const dumpPath = resolve(__dirname, './data.txt');
|
|
9
9
|
const data = { user: { firstname: 'John', lastname: 'Doe' }, score: [27] };
|
|
10
10
|
|
|
11
|
-
const db = new Datanautics({ dumpPath, dumpInterval:
|
|
11
|
+
const db = new Datanautics({ dumpPath, dumpInterval: 100 });
|
|
12
12
|
|
|
13
13
|
assert.equal(db.set('user.firstname', data.user.firstname), true);
|
|
14
14
|
assert.equal(db.set('user.lastname', data.user.lastname), true);
|