datanautics 4.4.0 → 4.5.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 +12 -0
- package/diff.js +36 -0
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.js +1 -0
- package/dist/constants/index.js.map +1 -1
- package/dist/constants/separator.d.ts +1 -0
- package/dist/constants/separator.js +5 -0
- package/dist/constants/separator.js.map +1 -0
- package/dist/datanautics.d.ts +2 -0
- package/dist/datanautics.js +31 -4
- package/dist/datanautics.js.map +1 -1
- package/dist/helpers/index.d.ts +2 -0
- package/dist/helpers/index.js +19 -0
- package/dist/helpers/index.js.map +1 -0
- package/dist/helpers/normalize-dump.d.ts +1 -0
- package/dist/helpers/normalize-dump.js +17 -0
- package/dist/helpers/normalize-dump.js.map +1 -0
- package/dist/helpers/two-files-diff.d.ts +1 -0
- package/dist/helpers/two-files-diff.js +41 -0
- package/dist/helpers/two-files-diff.js.map +1 -0
- package/package.json +6 -6
- package/test/data.txt +4 -7
- package/test/test.js +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,18 @@ 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
|
+
## [4.5.0] - 2025-08-11
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- timestamps in dumps, preparing for multi-instance synchronization
|
|
13
|
+
|
|
14
|
+
## [4.4.0] - 2025-08-11
|
|
15
|
+
|
|
16
|
+
### Fixed
|
|
17
|
+
|
|
18
|
+
- handle quoted property names correctly
|
|
19
|
+
|
|
8
20
|
## [4.3.1] - 2025-08-11
|
|
9
21
|
|
|
10
22
|
### Fixed
|
package/diff.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
// const { readFileSync } = require('fs');
|
|
2
|
+
// const SEPARATOR = /[\r|\n]/g;
|
|
3
|
+
//
|
|
4
|
+
// function diff(source, target) {
|
|
5
|
+
// const targetContent = readFileSync(target).toString('utf8').split(SEPARATOR);
|
|
6
|
+
// const sourceContent = readFileSync(source).toString('utf8').split(SEPARATOR);
|
|
7
|
+
// const tMap = new Map();
|
|
8
|
+
// const sMap = new Map();
|
|
9
|
+
// targetContent.forEach(line => {
|
|
10
|
+
// const [ key, ...valueArray] = line.split(' ');
|
|
11
|
+
// if (key) {
|
|
12
|
+
// tMap.set(key, valueArray?.join(' ') || undefined);
|
|
13
|
+
// }
|
|
14
|
+
// })
|
|
15
|
+
// sourceContent.forEach(line => {
|
|
16
|
+
// const [ key, ...valueArray] = line.split(' ');
|
|
17
|
+
// if (key) {
|
|
18
|
+
// sMap.set(key, valueArray.join(' '));
|
|
19
|
+
// }
|
|
20
|
+
// })
|
|
21
|
+
// const tKeys = tMap.keys();
|
|
22
|
+
// const sKeys = sMap.keys();
|
|
23
|
+
// const remove = tKeys.filter(tKey => !sMap.has(tKey));
|
|
24
|
+
// const set = sKeys.filter(sKey => !tMap.has(sKey) || tMap.get(sKey) !== sMap.get(sKey));
|
|
25
|
+
// const patch = {};
|
|
26
|
+
// remove.forEach(key => {
|
|
27
|
+
// patch[key] = undefined;
|
|
28
|
+
// })
|
|
29
|
+
// set.forEach(key => {
|
|
30
|
+
// patch[key] = sMap.get(key);
|
|
31
|
+
// })
|
|
32
|
+
// console.log(patch)
|
|
33
|
+
// }
|
|
34
|
+
//
|
|
35
|
+
// diff('./test/data2.txt', './test/data.txt')
|
|
36
|
+
console.log(/^\d{13}\s/.test(Date.now() + ' '))
|
package/dist/constants/index.js
CHANGED
|
@@ -19,4 +19,5 @@ __exportStar(require("./events"), exports);
|
|
|
19
19
|
__exportStar(require("./falsy-values"), exports);
|
|
20
20
|
__exportStar(require("./interval"), exports);
|
|
21
21
|
__exportStar(require("./reg-exp"), exports);
|
|
22
|
+
__exportStar(require("./separator"), exports);
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,2CAAyB;AACzB,iDAA+B;AAC/B,6CAA2B;AAC3B,4CAA0B"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/constants/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gEAA8C;AAC9C,2CAAyB;AACzB,iDAA+B;AAC/B,6CAA2B;AAC3B,4CAA0B;AAC1B,8CAA4B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const SEPARATOR: RegExp;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"separator.js","sourceRoot":"","sources":["../../src/constants/separator.ts"],"names":[],"mappings":";;;AAAa,QAAA,SAAS,GAAG,UAAU,CAAC"}
|
package/dist/datanautics.d.ts
CHANGED
|
@@ -4,8 +4,10 @@ import { DatanauticsOptions } from './options';
|
|
|
4
4
|
export declare class Datanautics {
|
|
5
5
|
protected options: DatanauticsOptions;
|
|
6
6
|
protected data: Record<string, any>;
|
|
7
|
+
protected updateTracking: Record<string, number>;
|
|
7
8
|
protected eventEmitter: EventEmitter;
|
|
8
9
|
constructor(options?: DatanauticsOptions);
|
|
10
|
+
normalizeDump(): void;
|
|
9
11
|
store(): void;
|
|
10
12
|
protected createDump(): void;
|
|
11
13
|
protected useDump(): void;
|
package/dist/datanautics.js
CHANGED
|
@@ -5,13 +5,16 @@ const events_1 = require("events");
|
|
|
5
5
|
const fs_1 = require("fs");
|
|
6
6
|
const property_accessor_1 = require("property-accessor");
|
|
7
7
|
const _const_1 = require("./constants");
|
|
8
|
+
const helpers_1 = require("./helpers");
|
|
8
9
|
class Datanautics {
|
|
9
10
|
options;
|
|
10
11
|
data;
|
|
12
|
+
updateTracking;
|
|
11
13
|
eventEmitter;
|
|
12
14
|
constructor(options) {
|
|
13
15
|
this.options = { ..._const_1.defaultDatanauticsOptions, ...(options || {}) };
|
|
14
16
|
this.data = {};
|
|
17
|
+
this.updateTracking = {};
|
|
15
18
|
this.eventEmitter = new events_1.EventEmitter();
|
|
16
19
|
if ((0, fs_1.existsSync)(this.options.dumpPath)) {
|
|
17
20
|
this.useDump();
|
|
@@ -34,6 +37,9 @@ class Datanautics {
|
|
|
34
37
|
});
|
|
35
38
|
}
|
|
36
39
|
}
|
|
40
|
+
normalizeDump() {
|
|
41
|
+
return (0, helpers_1.normalizeDump)(this.options.dumpPath);
|
|
42
|
+
}
|
|
37
43
|
store() {
|
|
38
44
|
return this.createDump();
|
|
39
45
|
}
|
|
@@ -43,8 +49,9 @@ class Datanautics {
|
|
|
43
49
|
const data = [];
|
|
44
50
|
for (const key in flat) {
|
|
45
51
|
const value = property_accessor_1.PropertyAccessor.get(key.replace(/␣/g, ' '), this.data);
|
|
52
|
+
const timestamp = property_accessor_1.PropertyAccessor.get(key, this.updateTracking) || Date.now();
|
|
46
53
|
if (value || _const_1.falsyValues.includes(value)) {
|
|
47
|
-
data.push(`${key} ${value.toString()}`);
|
|
54
|
+
data.push(`${timestamp} ${key} ${value.toString()}`);
|
|
48
55
|
}
|
|
49
56
|
}
|
|
50
57
|
(0, fs_1.writeFileSync)(this.options.dumpPath, data.join('\n'), 'utf8');
|
|
@@ -62,10 +69,24 @@ class Datanautics {
|
|
|
62
69
|
if (!line) {
|
|
63
70
|
continue;
|
|
64
71
|
}
|
|
65
|
-
const
|
|
66
|
-
|
|
72
|
+
const lineData = line.split(' ');
|
|
73
|
+
let t;
|
|
74
|
+
let k;
|
|
75
|
+
let rest;
|
|
76
|
+
if (lineData.length > 2) {
|
|
77
|
+
[
|
|
78
|
+
t,
|
|
79
|
+
k,
|
|
80
|
+
...rest
|
|
81
|
+
] = lineData;
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
t = Date.now().toString(10);
|
|
85
|
+
[k, ...rest] = lineData;
|
|
86
|
+
}
|
|
67
87
|
const key = k.trim().replace(/␣/g, ' ');
|
|
68
|
-
|
|
88
|
+
const v = rest.join(' ');
|
|
89
|
+
if (key && v !== undefined) {
|
|
69
90
|
let value = v.trim();
|
|
70
91
|
if (_const_1.numberRegExp.test(value)) {
|
|
71
92
|
if (_const_1.intRegExp.test(value)) {
|
|
@@ -85,10 +106,16 @@ class Datanautics {
|
|
|
85
106
|
value = value === 'true';
|
|
86
107
|
}
|
|
87
108
|
property_accessor_1.PropertyAccessor.set(key, value, this.data);
|
|
109
|
+
property_accessor_1.PropertyAccessor.set(key, parseInt(t, 10), this.updateTracking);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
property_accessor_1.PropertyAccessor.delete(key, this.data);
|
|
113
|
+
property_accessor_1.PropertyAccessor.delete(key, this.updateTracking);
|
|
88
114
|
}
|
|
89
115
|
}
|
|
90
116
|
}
|
|
91
117
|
set(key, value) {
|
|
118
|
+
property_accessor_1.PropertyAccessor.set(key, Date.now(), this.updateTracking);
|
|
92
119
|
return property_accessor_1.PropertyAccessor.set(key, value, this.data);
|
|
93
120
|
}
|
|
94
121
|
get(key) {
|
package/dist/datanautics.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datanautics.js","sourceRoot":"","sources":["../src/datanautics.ts"],"names":[],"mappings":";;;AAAA,mCAAsC;AACtC,2BAAoE;AACpE,yDAAqD;AAErD,mCAAiH;
|
|
1
|
+
{"version":3,"file":"datanautics.js","sourceRoot":"","sources":["../src/datanautics.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./two-files-diff"), exports);
|
|
18
|
+
__exportStar(require("./normalize-dump"), exports);
|
|
19
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,mDAAiC;AACjC,mDAAiC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function normalizeDump(targetPath: string): void;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.normalizeDump = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const _const_1 = require("../constants");
|
|
6
|
+
function normalizeDump(targetPath) {
|
|
7
|
+
const targetContent = (0, fs_1.readFileSync)(targetPath).toString('utf8').split(_const_1.SEPARATOR);
|
|
8
|
+
const normalizedLines = [];
|
|
9
|
+
targetContent.forEach(line => {
|
|
10
|
+
if (line) {
|
|
11
|
+
/^\d{13}\s/.test(line) ? normalizedLines.push(line) : normalizedLines.push(`${Date.now()} ${line}`);
|
|
12
|
+
}
|
|
13
|
+
});
|
|
14
|
+
(0, fs_1.writeFileSync)(targetPath, normalizedLines.join('\n'), 'utf8');
|
|
15
|
+
}
|
|
16
|
+
exports.normalizeDump = normalizeDump;
|
|
17
|
+
//# sourceMappingURL=normalize-dump.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-dump.js","sourceRoot":"","sources":["../../src/helpers/normalize-dump.ts"],"names":[],"mappings":";;;AAAA,2BAAiD;AACjD,mCAAmC;AAEnC,SAAgB,aAAa,CAAC,UAAkB;IAC9C,MAAM,aAAa,GAAG,IAAA,iBAAY,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,kBAAS,CAAC,CAAC;IACjF,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC3B,IAAI,IAAI,EAAE,CAAC;YACT,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;QACtG,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAA,kBAAa,EAAC,UAAU,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,CAAC;AAChE,CAAC;AATD,sCASC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function twoFilesDiff(sourcePath: string, targetPath: string): Record<string, any>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.twoFilesDiff = void 0;
|
|
4
|
+
const fs_1 = require("fs");
|
|
5
|
+
const _const_1 = require("../constants");
|
|
6
|
+
function twoFilesDiff(sourcePath, targetPath) {
|
|
7
|
+
const targetContent = (0, fs_1.readFileSync)(targetPath).toString('utf8').split(_const_1.SEPARATOR);
|
|
8
|
+
const sourceContent = (0, fs_1.readFileSync)(sourcePath).toString('utf8').split(_const_1.SEPARATOR);
|
|
9
|
+
const tMap = new Map();
|
|
10
|
+
const ttMap = new Map();
|
|
11
|
+
const sMap = new Map();
|
|
12
|
+
const tsMap = new Map();
|
|
13
|
+
targetContent.forEach(line => {
|
|
14
|
+
const [timestamp, key, ...valueArray] = line.split(' ');
|
|
15
|
+
if (key) {
|
|
16
|
+
tMap.set(key, valueArray?.join(' ') || undefined);
|
|
17
|
+
ttMap.set(key, parseInt(timestamp, 10));
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
sourceContent.forEach(line => {
|
|
21
|
+
const [timestamp, key, ...valueArray] = line.split(' ');
|
|
22
|
+
if (key) {
|
|
23
|
+
sMap.set(key, valueArray.join(' '));
|
|
24
|
+
tsMap.set(key, parseInt(timestamp, 10));
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
const tKeys = Array.from(tMap.keys());
|
|
28
|
+
const sKeys = Array.from(sMap.keys());
|
|
29
|
+
const remove = tKeys.filter(tKey => !sMap.has(tKey));
|
|
30
|
+
const set = sKeys.filter(sKey => !tMap.has(sKey) || (tMap.get(sKey) !== sMap.get(sKey) && tsMap.get(sKey) > ttMap.get(sKey)));
|
|
31
|
+
const patch = {};
|
|
32
|
+
remove.forEach(key => {
|
|
33
|
+
patch[key] = undefined;
|
|
34
|
+
});
|
|
35
|
+
set.forEach(key => {
|
|
36
|
+
patch[key] = `${tMap.get(key)} ${sMap.get(key)}`;
|
|
37
|
+
});
|
|
38
|
+
return patch;
|
|
39
|
+
}
|
|
40
|
+
exports.twoFilesDiff = twoFilesDiff;
|
|
41
|
+
//# sourceMappingURL=two-files-diff.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"two-files-diff.js","sourceRoot":"","sources":["../../src/helpers/two-files-diff.ts"],"names":[],"mappings":";;;AAAA,2BAAkC;AAClC,mCAAkC;AAElC,SAAgB,YAAY,CAAC,UAAkB,EAAE,UAAkB;IACjE,MAAM,aAAa,GAAG,IAAA,iBAAY,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,kBAAS,CAAC,CAAC;IACjF,MAAM,aAAa,GAAG,IAAA,iBAAY,EAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,kBAAS,CAAC,CAAC;IACjF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACvB,MAAM,KAAK,GAAG,IAAI,GAAG,EAAE,CAAC;IACxB,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC3B,MAAM,CAAE,SAAS,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC;YAClD,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAA;IACF,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC3B,MAAM,CAAE,SAAS,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,GAAG,EAAE,CAAC;YACR,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YACpC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAA;IACF,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAE,CAAC,CAAC;IAC/H,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QACnB,KAAK,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACzB,CAAC,CAAC,CAAC;IACH,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAChB,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IACH,OAAO,KAAK,CAAC;AACf,CAAC;AAjCD,oCAiCC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "datanautics",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.5.0",
|
|
4
4
|
"description": "",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"data store",
|
|
@@ -21,12 +21,12 @@
|
|
|
21
21
|
"runtime": "node dist/index.js"
|
|
22
22
|
},
|
|
23
23
|
"dependencies": {
|
|
24
|
-
"property-accessor": "^2.5.
|
|
24
|
+
"property-accessor": "^2.5.1"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
|
-
"@types/node": "
|
|
27
|
+
"@types/node": "22.14.0",
|
|
28
28
|
"@types/prettier": "2.6.0",
|
|
29
|
-
"@types/uuid": "
|
|
29
|
+
"@types/uuid": "11.0.0",
|
|
30
30
|
"@typescript-eslint/eslint-plugin": "6.17.0",
|
|
31
31
|
"@typescript-eslint/parser": "6.17.0",
|
|
32
32
|
"eslint": "8.47.0",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
},
|
|
45
45
|
"repository": {
|
|
46
46
|
"type": "git",
|
|
47
|
-
"url": "git@github.com:
|
|
47
|
+
"url": "git@github.com:databikers/datanautics.git"
|
|
48
48
|
},
|
|
49
49
|
"engines": {
|
|
50
|
-
"node": ">=
|
|
50
|
+
"node": ">=18.0.0"
|
|
51
51
|
}
|
|
52
52
|
}
|
package/test/data.txt
CHANGED
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
user.firstname John Junior Frost
|
|
2
|
-
user.lastname Doe
|
|
3
|
-
user.nested.key 1000000000000000000000
|
|
4
|
-
|
|
5
|
-
user.score␣huya[1] 12
|
|
6
|
-
user.score␣huya[2] 13
|
|
7
|
-
score[0] 27
|
|
1
|
+
1770169858788 user.firstname John Junior Frost 11
|
|
2
|
+
1770169858788 user.lastname Doe
|
|
3
|
+
1770169859789 user.nested.key 1000000000000000000000
|
|
4
|
+
1770169858788 score[0] 27
|
package/test/test.js
CHANGED
|
@@ -6,9 +6,8 @@ const { setTimeout } = require('timers');
|
|
|
6
6
|
|
|
7
7
|
const dumpPath = resolve(__dirname, './data.txt');
|
|
8
8
|
const data = {
|
|
9
|
-
user: { firstname: 'John Junior Frost', lastname: 'Doe' },
|
|
9
|
+
user: { firstname: 'John Junior Frost 11', lastname: 'Doe' },
|
|
10
10
|
score: [27],
|
|
11
|
-
'score huya': [11,12],
|
|
12
11
|
nested: { key: BigInt('1000000000000000000000') },
|
|
13
12
|
};
|
|
14
13
|
|
|
@@ -31,3 +30,4 @@ setTimeout(() => {
|
|
|
31
30
|
console.log('tests passed');
|
|
32
31
|
process.exit(0);
|
|
33
32
|
}, 2000);
|
|
33
|
+
|