@kidus.dev/flowdb 1.0.4 → 1.0.5

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.
@@ -1,14 +1,14 @@
1
1
  export default class Document {
2
- private _id;
3
- private _data;
4
- constructor({ id, ...data }: {
5
- id: string;
6
- [key: string]: any;
7
- });
2
+ private readonly _id;
3
+ private readonly _data;
4
+ private readonly _createdAt;
5
+ private readonly _updatedAt;
6
+ constructor(data: Record<string, any>);
8
7
  get id(): string;
8
+ get createdAt(): Date;
9
+ get updatedAt(): Date;
9
10
  get data(): Record<string, any>;
10
11
  get(key: string): any;
11
- set(key: string, value: any): Document;
12
12
  containsKey(key: string): boolean;
13
13
  containsValue(value: any): boolean;
14
14
  get keys(): string[];
@@ -1 +1 @@
1
- {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/core/collection/document.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B,OAAO,CAAC,GAAG,CAAS;IACpB,OAAO,CAAC,KAAK,CAAsB;gBAEvB,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE;IAK/D,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAE9B;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAIrB,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,QAAQ;IAKtC,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAIlC,IAAI,IAAI,IAAI,MAAM,EAAE,CAEnB;IAED,IAAI,MAAM,IAAI,GAAG,EAAE,CAElB;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ;IAKpD,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ;IAWjC,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ;CAUlC"}
1
+ {"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../../src/core/collection/document.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAO;IAClC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAO;gBAEtB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAarC,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,SAAS,IAAI,IAAI,CAEpB;IAED,IAAI,SAAS,IAAI,IAAI,CAEpB;IAED,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAE9B;IAED,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG;IAIrB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIjC,aAAa,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO;IAIlC,IAAI,IAAI,IAAI,MAAM,EAAE,CAEnB;IAED,IAAI,MAAM,IAAI,GAAG,EAAE,CAElB;IAED,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ;IAI7C,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ;IAQjC,IAAI,CAAC,GAAG,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ;CAOzC"}
@@ -2,23 +2,34 @@ import { Json, Random } from "../../tools";
2
2
  export default class Document {
3
3
  _id;
4
4
  _data;
5
- constructor({ id, ...data }) {
6
- this._id = id;
7
- this._data = data;
5
+ _createdAt;
6
+ _updatedAt;
7
+ constructor(data) {
8
+ this._id = data["__id"] ?? Random.cuid();
9
+ this._createdAt = data["__created_at"] ?? new Date();
10
+ this._updatedAt = data["__updated_at"] ?? new Date();
11
+ this._data = {
12
+ __id: this._id,
13
+ ...data,
14
+ __created_at: this._createdAt,
15
+ __updated_at: this._updatedAt,
16
+ };
8
17
  }
9
18
  get id() {
10
19
  return this._id;
11
20
  }
21
+ get createdAt() {
22
+ return this._createdAt;
23
+ }
24
+ get updatedAt() {
25
+ return this._updatedAt;
26
+ }
12
27
  get data() {
13
28
  return this._data;
14
29
  }
15
30
  get(key) {
16
31
  return Json.getNested(this._data, key);
17
32
  }
18
- set(key, value) {
19
- this._data = Json.update(this._data, key, value);
20
- return this;
21
- }
22
33
  containsKey(key) {
23
34
  return Object.prototype.hasOwnProperty.call(this._data, key);
24
35
  }
@@ -32,23 +43,14 @@ export default class Document {
32
43
  return Object.values(this._data);
33
44
  }
34
45
  static fromJson(data) {
35
- const document_id = data["__id"] ?? Random.uuid();
36
- return new Document({ id: document_id, ...data });
46
+ return new Document(data);
37
47
  }
38
48
  pick(...keys) {
39
- return new Document({
40
- id: this._id,
41
- ...Object.fromEntries(keys
42
- .filter((k) => Object.prototype.hasOwnProperty.call(this._data, k))
43
- .map((k) => [k, this._data[k]])),
44
- });
49
+ const pickedData = Object.fromEntries(keys.filter((k) => keys.includes(k)).map((k) => [k, this._data[k]]));
50
+ return new Document(pickedData);
45
51
  }
46
52
  omit(...keys) {
47
- return new Document({
48
- id: this._id,
49
- ...Object.fromEntries(keys
50
- .filter((k) => Object.prototype.hasOwnProperty.call(this._data, k))
51
- .map((k) => [k, this._data[k]])),
52
- });
53
+ const omittedData = Object.fromEntries(Object.entries(this._data).filter(([k]) => !keys.includes(k)));
54
+ return new Document(omittedData);
53
55
  }
54
56
  }
@@ -1 +1 @@
1
- {"version":3,"file":"collection_file_driver.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/driver/collection_file_driver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAQ,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAAU;gBAEf,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO;IAMhE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B,UAAU,IAAI,IAAI;IAKZ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,UAAU,IAAI,IAAI;IAIZ,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7B,QAAQ,IAAI,MAAM;IAKZ,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAarE,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI;IAapD,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAcxD,eAAe,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAYvC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpE,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI;CAU1D"}
1
+ {"version":3,"file":"collection_file_driver.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/driver/collection_file_driver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAQ,MAAM,gBAAgB,CAAC;AAEjD,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,SAAS,CAAU;gBAEf,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO;IAMhE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAK7B,UAAU,IAAI,IAAI;IAKZ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B,UAAU,IAAI,IAAI;IAIZ,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7B,QAAQ,IAAI,MAAM;IAKZ,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrE,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI;IAapD,WAAW,IAAI,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAcxD,eAAe,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAYvC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAYpE,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI;CAU1D"}
@@ -33,6 +33,7 @@ export default class CollectionFileDriver {
33
33
  return stats.size;
34
34
  }
35
35
  async appendRecords(lines) {
36
+ console.log(lines);
36
37
  const content = lines
37
38
  .map((line) => this.encrypted
38
39
  ? this.encryptor.enc(JSON.stringify(line))
@@ -1 +1 @@
1
- {"version":3,"file":"collection_operations.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/driver/collection_operations.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collection_operations.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/driver/collection_operations.ts"],"names":[],"mappings":"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"}
@@ -106,6 +106,7 @@ export default class CollectionOperations {
106
106
  for (const record of records) {
107
107
  if (!updated && record["__id"] === id) {
108
108
  const mergedData = { ...record, ...data };
109
+ mergedData["__updated_at"] = new Date();
109
110
  const newDoc = Document.fromJson(mergedData);
110
111
  output.push(newDoc);
111
112
  updatedRecord = newDoc;
@@ -126,6 +127,7 @@ export default class CollectionOperations {
126
127
  for (const record of records) {
127
128
  if (!updated && record["__id"] === id) {
128
129
  const mergedData = { ...record, ...data };
130
+ mergedData["__updated_at"] = new Date();
129
131
  const newDoc = Document.fromJson(mergedData);
130
132
  output.push(newDoc);
131
133
  updatedRecord = newDoc;
@@ -146,6 +148,7 @@ export default class CollectionOperations {
146
148
  for (const record of records) {
147
149
  if (ids.includes(record["__id"])) {
148
150
  const mergedData = { ...record, ...data };
151
+ mergedData["__updated_at"] = new Date();
149
152
  const doc = Document.fromJson(mergedData);
150
153
  output.push(doc);
151
154
  updatedRecords.push(doc);
@@ -164,6 +167,7 @@ export default class CollectionOperations {
164
167
  for (const record of records) {
165
168
  if (ids.includes(record["__id"])) {
166
169
  const mergedData = { ...record, ...data };
170
+ mergedData["__updated_at"] = new Date();
167
171
  const doc = Document.fromJson(mergedData);
168
172
  output.push(doc);
169
173
  updatedRecords.push(doc);
@@ -184,6 +188,7 @@ export default class CollectionOperations {
184
188
  if (ids.includes(record["__id"])) {
185
189
  const index = ids.indexOf(record["__id"]);
186
190
  const mergedData = { ...record, ...datas[index] };
191
+ mergedData["__updated_at"] = new Date();
187
192
  const doc = Document.fromJson(mergedData);
188
193
  output.push(doc);
189
194
  updatedRecords.push(doc);
@@ -203,6 +208,7 @@ export default class CollectionOperations {
203
208
  if (ids.includes(record["__id"])) {
204
209
  const index = ids.indexOf(record["__id"]);
205
210
  const mergedData = { ...record, ...datas[index] };
211
+ mergedData["__updated_at"] = new Date();
206
212
  const doc = Document.fromJson(mergedData);
207
213
  output.push(doc);
208
214
  updatedRecords.push(doc);
@@ -1,6 +1,9 @@
1
1
  export default class Random {
2
2
  private static _cuidCounter;
3
- static nextInt(max: number): number;
3
+ static number({ min, max }: {
4
+ min?: number;
5
+ max?: number;
6
+ }): number;
4
7
  static uuid(): string;
5
8
  static cuid(): string;
6
9
  static alpha(length: number, opts?: {
@@ -13,7 +16,6 @@ export default class Random {
13
16
  static boolean(): boolean;
14
17
  static pickOne<T>(values: T[]): T;
15
18
  static shuffle<T>(values: T[]): T[];
16
- static nextDouble(): number;
17
19
  static date(args?: {
18
20
  start?: Date;
19
21
  end?: Date;
@@ -22,15 +24,6 @@ export default class Random {
22
24
  static hexColor(opts?: {
23
25
  withAlpha?: boolean;
24
26
  }): string;
25
- static pickMapValue<K, V>(map: Map<K, V> | {
26
- [key: string]: V;
27
- }, opts?: {
28
- weights?: number[];
29
- }): V;
30
- static duration(args?: {
31
- min?: number;
32
- max?: number;
33
- }): number;
34
27
  static coin(probability: number): boolean;
35
28
  static pickSome<T>(values: T[], args?: {
36
29
  min?: number;
@@ -40,7 +33,5 @@ export default class Random {
40
33
  count?: number;
41
34
  }): T[];
42
35
  static ipv4(): string;
43
- static doubleInRange(min: number, max: number): number;
44
- static intInRange(min: number, max: number): number;
45
36
  }
46
37
  //# sourceMappingURL=random.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/tools/random.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAK;IAEhC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAInC,MAAM,CAAC,IAAI,IAAI,MAAM;IA4BrB,MAAM,CAAC,IAAI,IAAI,MAAM;IAoBrB,MAAM,CAAC,KAAK,CACV,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAO,GACxC,MAAM;IAWT,MAAM,CAAC,YAAY,CACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAO,GACxC,MAAM;IAcT,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAStC,MAAM,CAAC,OAAO,IAAI,OAAO;IAIzB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC;IAKjC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;IASnC,MAAM,CAAC,UAAU,IAAI,MAAM;IAI3B,MAAM,CAAC,IAAI,CAAC,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,IAAI,CAAC;QAAC,GAAG,CAAC,EAAE,IAAI,CAAA;KAAO,GAAG,IAAI;IAY1D,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAS3D,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,MAAM;IAU3D,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EACtB,GAAG,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAA;KAAE,EACrC,IAAI,GAAE;QAAE,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAO,GAChC,CAAC;IA0BJ,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,MAAM;IAQlE,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAOzC,MAAM,CAAC,QAAQ,CAAC,CAAC,EACf,MAAM,EAAE,CAAC,EAAE,EACX,IAAI,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GACxC,CAAC,EAAE;IAgBN,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,CAAC,EAAE;IAanE,MAAM,CAAC,IAAI,IAAI,MAAM;IAIrB,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;IAKtD,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM;CAIpD"}
1
+ {"version":3,"file":"random.d.ts","sourceRoot":"","sources":["../../src/tools/random.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,MAAM;IACzB,OAAO,CAAC,MAAM,CAAC,YAAY,CAAK;IAEhC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAO,EAAE,GAAO,EAAE,EAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM;IAI3E,MAAM,CAAC,IAAI,IAAI,MAAM;IAgCrB,MAAM,CAAC,IAAI,IAAI,MAAM;IAwBrB,MAAM,CAAC,KAAK,CACV,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAO,GACxC,MAAM;IAWT,MAAM,CAAC,YAAY,CACjB,MAAM,EAAE,MAAM,EACd,IAAI,GAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAO,GACxC,MAAM;IAcT,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAStC,MAAM,CAAC,OAAO,IAAI,OAAO;IAIzB,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC;IAKjC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE;IASnC,MAAM,CAAC,IAAI,CAAC,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,IAAI,CAAC;QAAC,GAAG,CAAC,EAAE,IAAI,CAAA;KAAO,GAAG,IAAI;IAY1D,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM;IAS3D,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,MAAM;IAU3D,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAQzC,MAAM,CAAC,QAAQ,CAAC,CAAC,EACf,MAAM,EAAE,CAAC,EAAE,EACX,IAAI,GAAE;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAO,GACxC,CAAC,EAAE;IAgBN,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,GAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAO,GAAG,CAAC,EAAE;IAanE,MAAM,CAAC,IAAI,IAAI,MAAM;CAKtB"}
@@ -1,14 +1,18 @@
1
1
  export default class Random {
2
2
  static _cuidCounter = 0;
3
- static nextInt(max) {
4
- return Math.floor(Math.random() * max);
3
+ static number({ min = 0, max = 1 }) {
4
+ return min + Math.floor(Math.random() * (max - min + 1));
5
5
  }
6
6
  static uuid() {
7
7
  function fourDigits() {
8
- return Random.nextInt(0x10000).toString(16).padStart(4, "0");
8
+ return Random.number({ min: 0, max: 0x10000 })
9
+ .toString(16)
10
+ .padStart(4, "0");
9
11
  }
10
12
  function twoDigits() {
11
- return Random.nextInt(0x100).toString(16).padStart(2, "0");
13
+ return Random.number({ min: 0, max: 0x100 })
14
+ .toString(16)
15
+ .padStart(2, "0");
12
16
  }
13
17
  return (fourDigits() +
14
18
  fourDigits() +
@@ -19,7 +23,7 @@ export default class Random {
19
23
  twoDigits() +
20
24
  twoDigits() +
21
25
  "-" +
22
- (8 + Random.nextInt(4)).toString(16) +
26
+ (8 + Random.number({ min: 0, max: 4 })).toString(16) +
23
27
  twoDigits() +
24
28
  twoDigits() +
25
29
  "-" +
@@ -31,7 +35,9 @@ export default class Random {
31
35
  const ts = Date.now().toString(36).padStart(8, "0");
32
36
  Random._cuidCounter = (Random._cuidCounter + 1) % 1679616;
33
37
  const count = Random._cuidCounter.toString(36).padStart(4, "0");
34
- const randomPart = Random.nextInt(1679616).toString(36).padStart(4, "0");
38
+ const randomPart = Random.number({ min: 0, max: 1679616 })
39
+ .toString(36)
40
+ .padStart(4, "0");
35
41
  let fingerprint = "0000";
36
42
  try {
37
43
  fingerprint = ((typeof process !== "undefined" && process.pid ? process.pid : 0) ^
@@ -41,7 +47,9 @@ export default class Random {
41
47
  }
42
48
  catch {
43
49
  // fallback
44
- fingerprint = Random.nextInt(0x10000).toString(36).padStart(4, "0");
50
+ fingerprint = Random.number({ min: 0, max: 0x10000 })
51
+ .toString(36)
52
+ .padStart(4, "0");
45
53
  }
46
54
  return `c${ts}${count}${randomPart}${fingerprint}`;
47
55
  }
@@ -51,7 +59,7 @@ export default class Random {
51
59
  const chars = opts.includeUppercase ? lowercase + uppercase : lowercase;
52
60
  let out = "";
53
61
  for (let i = 0; i < length; ++i) {
54
- out += chars[Random.nextInt(chars.length)];
62
+ out += chars[Random.number({ min: 0, max: chars.length })];
55
63
  }
56
64
  return out;
57
65
  }
@@ -64,7 +72,7 @@ export default class Random {
64
72
  : lowercase + numbers;
65
73
  let out = "";
66
74
  for (let i = 0; i < length; ++i) {
67
- out += chars[Random.nextInt(chars.length)];
75
+ out += chars[Random.number({ min: 0, max: chars.length })];
68
76
  }
69
77
  return out;
70
78
  }
@@ -72,7 +80,7 @@ export default class Random {
72
80
  const numbers = "0123456789";
73
81
  let out = "";
74
82
  for (let i = 0; i < length; ++i) {
75
- out += numbers[Random.nextInt(numbers.length)];
83
+ out += numbers[Random.number({ min: 0, max: numbers.length })];
76
84
  }
77
85
  return out;
78
86
  }
@@ -82,19 +90,16 @@ export default class Random {
82
90
  static pickOne(values) {
83
91
  if (!values.length)
84
92
  throw new Error("List cannot be empty");
85
- return values[Random.nextInt(values.length)];
93
+ return values[Random.number({ min: 0, max: values.length })];
86
94
  }
87
95
  static shuffle(values) {
88
96
  const list = values.slice();
89
97
  for (let i = list.length - 1; i > 0; --i) {
90
- const j = Random.nextInt(i + 1);
98
+ const j = Random.number({ min: 0, max: i + 1 });
91
99
  [list[i], list[j]] = [list[j], list[i]];
92
100
  }
93
101
  return list;
94
102
  }
95
- static nextDouble() {
96
- return Math.random();
97
- }
98
103
  static date(args = {}) {
99
104
  const from = args.start || new Date(1970, 0, 1);
100
105
  const to = args.end || new Date();
@@ -110,56 +115,19 @@ export default class Random {
110
115
  throw new Error("charset cannot be empty");
111
116
  let out = "";
112
117
  for (let i = 0; i < length; ++i) {
113
- out += charset[Random.nextInt(charset.length)];
118
+ out += charset[Random.number({ min: 0, max: charset.length })];
114
119
  }
115
120
  return out;
116
121
  }
117
122
  static hexColor(opts = {}) {
118
123
  const withAlpha = opts.withAlpha || false;
119
124
  const value = withAlpha
120
- ? Random.nextInt(0x100000000)
121
- : Random.nextInt(0x1000000);
125
+ ? Random.number({ min: 0, max: 0x100000000 })
126
+ : Random.number({ min: 0, max: 0x1000000 });
122
127
  return withAlpha
123
128
  ? `#${value.toString(16).padStart(8, "0").toUpperCase()}`
124
129
  : `#${value.toString(16).padStart(6, "0").toUpperCase()}`;
125
130
  }
126
- static pickMapValue(map, opts = {}) {
127
- // Support both Map and object
128
- let values;
129
- if (map instanceof Map) {
130
- values = Array.from(map.values());
131
- }
132
- else {
133
- values = Object.values(map);
134
- }
135
- if (!values.length)
136
- throw new Error("Map cannot be empty");
137
- if (!opts.weights) {
138
- return Random.pickOne(values);
139
- }
140
- const weights = opts.weights;
141
- if (weights.length !== values.length) {
142
- throw new Error("Weights length must match Map value count.");
143
- }
144
- let sum = weights.reduce((a, b) => a + b, 0);
145
- let r = Math.random() * sum;
146
- for (let i = 0; i < values.length; ++i) {
147
- if (!weights[i])
148
- continue;
149
- if (r < weights[i])
150
- return values[i];
151
- r -= weights[i];
152
- }
153
- return values[values.length - 1];
154
- }
155
- static duration(args = {}) {
156
- // Returns random milliseconds between min (inclusive) and max (inclusive)
157
- const min = args.min ?? 0;
158
- const max = args.max ?? 60000;
159
- if (min > max)
160
- throw new Error("min must be < max");
161
- return min + Random.nextInt(max - min + 1);
162
- }
163
131
  static coin(probability) {
164
132
  if (probability < 0.0 || probability > 1.0) {
165
133
  throw new Error("probability must be from 0.0 to 1.0");
@@ -177,10 +145,10 @@ export default class Random {
177
145
  upper = values.length;
178
146
  if (lower > upper)
179
147
  throw new Error("min must be <= max");
180
- const count = lower + Random.nextInt(upper - lower + 1);
148
+ const count = lower + Random.number({ min: 0, max: upper - lower + 1 });
181
149
  const list = values.slice();
182
150
  for (let i = list.length - 1; i > 0; --i) {
183
- const j = Random.nextInt(i + 1);
151
+ const j = Random.number({ min: 0, max: i + 1 });
184
152
  [list[i], list[j]] = [list[j], list[i]];
185
153
  }
186
154
  return list.slice(0, count);
@@ -193,22 +161,12 @@ export default class Random {
193
161
  throw new Error("count must be <= values.length");
194
162
  const list = values.slice();
195
163
  for (let i = list.length - 1; i > 0; --i) {
196
- const j = Random.nextInt(i + 1);
164
+ const j = Random.number({ min: 0, max: i + 1 });
197
165
  [list[i], list[j]] = [list[j], list[i]];
198
166
  }
199
167
  return list.slice(0, count);
200
168
  }
201
169
  static ipv4() {
202
- return Array.from({ length: 4 }, () => Random.nextInt(256)).join(".");
203
- }
204
- static doubleInRange(min, max) {
205
- if (min >= max)
206
- throw new Error("min must be less than max");
207
- return min + Math.random() * (max - min);
208
- }
209
- static intInRange(min, max) {
210
- if (min >= max)
211
- throw new Error("min must be less than max");
212
- return min + Random.nextInt(max - min);
170
+ return Array.from({ length: 4 }, () => Random.number({ min: 0, max: 256 })).join(".");
213
171
  }
214
172
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kidus.dev/flowdb",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "A lightweight, pluggable local database for TypeScript and JavaScript projects.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",