datanautics 2.2.0 → 2.2.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/CHANGELOG.md CHANGED
@@ -5,6 +5,13 @@ 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.1] - 2025-05-17
9
+
10
+ ### Fixed
11
+
12
+ - Refactor the data storing avoiding async functionality
13
+
14
+ ---
8
15
  ## [2.2.0] - 2025-05-17
9
16
 
10
17
  ### Fixed
@@ -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 flushDump(): Promise<void>;
10
- protected createDump(): Promise<void>;
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
  }
@@ -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().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
- });
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
- flushDump() {
66
- return new Promise((resolve, reject) => {
67
- (0, fs_1.truncate)(this.options.dumpPath, (error) => {
68
- error ? reject(error) : resolve();
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
- async createDump() {
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
- try {
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
- 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) {
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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"datanautics.js","sourceRoot":"","sources":["../src/datanautics.ts"],"names":[],"mappings":"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"}
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.0",
3
+ "version": "2.2.1",
4
4
  "description": "",
5
5
  "keywords": [
6
6
  "data store",
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: 0 });
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);