@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.
- package/dist/core/collection/document.d.ts +7 -7
- package/dist/core/collection/document.d.ts.map +1 -1
- package/dist/core/collection/document.js +23 -21
- package/dist/core/collection/driver/collection_file_driver.d.ts.map +1 -1
- package/dist/core/collection/driver/collection_file_driver.js +1 -0
- package/dist/core/collection/driver/collection_operations.d.ts.map +1 -1
- package/dist/core/collection/driver/collection_operations.js +6 -0
- package/dist/tools/random.d.ts +4 -13
- package/dist/tools/random.d.ts.map +1 -1
- package/dist/tools/random.js +27 -69
- package/package.json +1 -1
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
export default class Document {
|
|
2
|
-
private _id;
|
|
3
|
-
private _data;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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;
|
|
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
|
-
|
|
6
|
-
|
|
7
|
-
|
|
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
|
-
|
|
36
|
-
return new Document({ id: document_id, ...data });
|
|
46
|
+
return new Document(data);
|
|
37
47
|
}
|
|
38
48
|
pick(...keys) {
|
|
39
|
-
|
|
40
|
-
|
|
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
|
-
|
|
48
|
-
|
|
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;
|
|
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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"collection_operations.d.ts","sourceRoot":"","sources":["../../../../src/core/collection/driver/collection_operations.ts"],"names":[],"mappings":"AAEA,OAAO,QAAQ,MAAM,aAAa,CAAC;AACnC,OAAO,oBAAoB,MAAM,0BAA0B,CAAC;AAG5D,MAAM,CAAC,OAAO,OAAO,oBAAoB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,oBAAoB,CAAC;gBAErB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,OAAO,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE;IAUhE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAG7B,UAAU,IAAI,IAAI;IAIZ,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAG7B,UAAU,IAAI,IAAI;IAIZ,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAG7B,QAAQ,IAAI,MAAM;IAKZ,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAMvD,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,QAAQ;IAOtC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IAM/D,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,GAAG,QAAQ,EAAE;IAO9C,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAKnC,UAAU,IAAI,QAAQ,EAAE;IAMlB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAQnD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,QAAQ,GAAG,IAAI;IAQlC,SAAS,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAK3C,aAAa,IAAI,QAAQ,GAAG,IAAI;IAK1B,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;IASvD,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,EAAE;IAUtC,mBAAmB,CACvB,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;
|
|
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);
|
package/dist/tools/random.d.ts
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
export default class Random {
|
|
2
2
|
private static _cuidCounter;
|
|
3
|
-
static
|
|
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,
|
|
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"}
|
package/dist/tools/random.js
CHANGED
|
@@ -1,14 +1,18 @@
|
|
|
1
1
|
export default class Random {
|
|
2
2
|
static _cuidCounter = 0;
|
|
3
|
-
static
|
|
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.
|
|
8
|
+
return Random.number({ min: 0, max: 0x10000 })
|
|
9
|
+
.toString(16)
|
|
10
|
+
.padStart(4, "0");
|
|
9
11
|
}
|
|
10
12
|
function twoDigits() {
|
|
11
|
-
return Random.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
121
|
-
: Random.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
}
|