@aidc-toolkit/utility 0.9.17-beta → 0.9.18-beta
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/character-set.d.ts +24 -2
- package/dist/character-set.d.ts.map +1 -1
- package/dist/character-set.js +21 -0
- package/dist/character-set.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/iterable-utility.d.ts +39 -0
- package/dist/iterable-utility.d.ts.map +1 -0
- package/dist/iterable-utility.js +35 -0
- package/dist/iterable-utility.js.map +1 -0
- package/dist/locale/en/locale-strings.d.ts +16 -17
- package/dist/locale/en/locale-strings.d.ts.map +1 -1
- package/dist/locale/en/locale-strings.js +16 -17
- package/dist/locale/en/locale-strings.js.map +1 -1
- package/dist/locale/fr/locale-strings.d.ts +16 -17
- package/dist/locale/fr/locale-strings.d.ts.map +1 -1
- package/dist/locale/fr/locale-strings.js +16 -17
- package/dist/locale/fr/locale-strings.js.map +1 -1
- package/dist/record.d.ts +3 -0
- package/dist/record.d.ts.map +1 -1
- package/dist/record.js +3 -0
- package/dist/record.js.map +1 -1
- package/dist/string.d.ts +3 -0
- package/dist/string.d.ts.map +1 -1
- package/dist/transformer.d.ts +4 -35
- package/dist/transformer.d.ts.map +1 -1
- package/dist/transformer.js +4 -31
- package/dist/transformer.js.map +1 -1
- package/package.json +5 -5
- package/src/character-set.ts +28 -2
- package/src/index.ts +1 -0
- package/src/iterable-utility.ts +55 -0
- package/src/locale/en/locale-strings.ts +16 -17
- package/src/locale/fr/locale-strings.ts +16 -17
- package/src/record.ts +3 -0
- package/src/string.ts +3 -0
- package/src/transformer.ts +10 -60
- package/test/character-set.test.ts +28 -12
- package/test/transformer.test.ts +9 -3
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
import { I18NEnvironment } from "@aidc-toolkit/core";
|
|
2
2
|
import { describe, expect, test } from "vitest";
|
|
3
3
|
import {
|
|
4
|
-
ALPHABETIC_CREATOR,
|
|
5
|
-
ALPHANUMERIC_CREATOR,
|
|
6
|
-
CharacterSetCreator,
|
|
4
|
+
ALPHABETIC_CREATOR, ALPHABETIC_VALIDATOR,
|
|
5
|
+
ALPHANUMERIC_CREATOR, ALPHANUMERIC_VALIDATOR,
|
|
6
|
+
CharacterSetCreator, type CharacterSetValidator,
|
|
7
7
|
Exclusion,
|
|
8
|
-
HEXADECIMAL_CREATOR,
|
|
8
|
+
HEXADECIMAL_CREATOR, HEXADECIMAL_VALIDATOR,
|
|
9
9
|
i18nUtilityInit,
|
|
10
|
-
NUMERIC_CREATOR,
|
|
10
|
+
NUMERIC_CREATOR, NUMERIC_VALIDATOR,
|
|
11
11
|
Sequence
|
|
12
12
|
} from "../src";
|
|
13
13
|
|
|
14
14
|
await i18nUtilityInit(I18NEnvironment.CLI);
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
// Type is used to ensure that testCharacterSet() is not called with creator twice.
|
|
17
|
+
type ValidatorNotCreator<T extends CharacterSetValidator> = T extends CharacterSetCreator ? never : T;
|
|
18
|
+
|
|
19
|
+
function testCharacterSet<T extends CharacterSetValidator>(name: string, characterSetCreator: CharacterSetCreator, characterSetValidator: ValidatorNotCreator<T>, characterSetSize: number, length: number, excludeFirstZero: boolean, excludeAllNumeric: boolean): void {
|
|
17
20
|
describe(name, () => {
|
|
21
|
+
test("Validator is creator", () => {
|
|
22
|
+
expect(characterSetValidator).toBe(characterSetCreator);
|
|
23
|
+
});
|
|
24
|
+
|
|
18
25
|
test("Character set", () => {
|
|
19
26
|
characterSetCreator.characterSet.forEach((c, index) => {
|
|
20
27
|
expect(c).not.toBeUndefined();
|
|
@@ -77,6 +84,9 @@ function testCharacterSetCreator(name: string, characterSetCreator: CharacterSet
|
|
|
77
84
|
|
|
78
85
|
expect(s.length).toBe(length);
|
|
79
86
|
|
|
87
|
+
expect(() => {
|
|
88
|
+
characterSetValidator.validate(s);
|
|
89
|
+
}).not.toThrow(RangeError);
|
|
80
90
|
expect(characterSetCreator.valueFor(s, exclusion)).toBe(BigInt(index));
|
|
81
91
|
|
|
82
92
|
index++;
|
|
@@ -104,6 +114,9 @@ function testCharacterSetCreator(name: string, characterSetCreator: CharacterSet
|
|
|
104
114
|
expect(sequenceSet.has(s)).toBe(false);
|
|
105
115
|
sequenceSet.add(s);
|
|
106
116
|
|
|
117
|
+
expect(() => {
|
|
118
|
+
characterSetValidator.validate(s);
|
|
119
|
+
}).not.toThrow(RangeError);
|
|
107
120
|
expect(characterSetCreator.valueFor(s, exclusion, 123456n)).toBe(BigInt(domain - index - 1));
|
|
108
121
|
|
|
109
122
|
index++;
|
|
@@ -198,12 +211,15 @@ describe("Exclusion", () => {
|
|
|
198
211
|
});
|
|
199
212
|
});
|
|
200
213
|
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
214
|
+
testCharacterSet("Numeric", NUMERIC_CREATOR, NUMERIC_VALIDATOR, 10, 4, true, false);
|
|
215
|
+
testCharacterSet("Hexadecimal", HEXADECIMAL_CREATOR, HEXADECIMAL_VALIDATOR, 16, 4, true, true);
|
|
216
|
+
testCharacterSet("Alphabetic", ALPHABETIC_CREATOR, ALPHABETIC_VALIDATOR, 26, 3, false, false);
|
|
217
|
+
testCharacterSet("Alphanumeric", ALPHANUMERIC_CREATOR, ALPHANUMERIC_VALIDATOR, 36, 3, true, true);
|
|
218
|
+
|
|
219
|
+
const middleNumericCreator = new CharacterSetCreator([
|
|
206
220
|
"(", ")",
|
|
207
221
|
"0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
|
|
208
222
|
"<", ">"
|
|
209
|
-
], Exclusion.AllNumeric)
|
|
223
|
+
], Exclusion.AllNumeric);
|
|
224
|
+
|
|
225
|
+
testCharacterSet("Middle numeric", middleNumericCreator, middleNumericCreator as CharacterSetValidator, 14, 4, false, true);
|
package/test/transformer.test.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { I18NEnvironment } from "@aidc-toolkit/core";
|
|
2
|
-
import { describe, expect, test } from "vitest";
|
|
2
|
+
import { afterEach, describe, expect, test } from "vitest";
|
|
3
3
|
import { EncryptionTransformer, i18nUtilityInit, IdentityTransformer, Sequence, Transformer } from "../src";
|
|
4
4
|
|
|
5
5
|
await i18nUtilityInit(I18NEnvironment.CLI);
|
|
@@ -52,6 +52,12 @@ function testTransformer(domain: number, tweak?: number, callback?: (value: bigi
|
|
|
52
52
|
expect(() => transformer.forward(new Sequence(-1, -1))).toThrow("Minimum value -1 must be greater than or equal to 0");
|
|
53
53
|
}
|
|
54
54
|
|
|
55
|
+
// TODO Remove when https://github.com/vitest-dev/vitest/discussions/6511 resolved.
|
|
56
|
+
afterEach(async () => {
|
|
57
|
+
// eslint-disable-next-line promise/avoid-new -- Patch.
|
|
58
|
+
await new Promise(resolve => setImmediate(resolve));
|
|
59
|
+
});
|
|
60
|
+
|
|
55
61
|
describe("Identity", () => {
|
|
56
62
|
test("Get", () => {
|
|
57
63
|
const transformer = Transformer.get(1000);
|
|
@@ -59,7 +65,7 @@ describe("Identity", () => {
|
|
|
59
65
|
expect(transformer instanceof IdentityTransformer).toBe(true);
|
|
60
66
|
expect(Transformer.get(1000n)).toBe(transformer);
|
|
61
67
|
|
|
62
|
-
expect(transformer.domain).toBe(
|
|
68
|
+
expect(transformer.domain).toBe(1000n);
|
|
63
69
|
});
|
|
64
70
|
|
|
65
71
|
test("Reversible", () => {
|
|
@@ -84,7 +90,7 @@ describe("Encryption", () => {
|
|
|
84
90
|
expect(transformer instanceof EncryptionTransformer).toBe(true);
|
|
85
91
|
expect(Transformer.get(1000n, 1234n)).toBe(transformer);
|
|
86
92
|
|
|
87
|
-
expect(transformer.domain).toBe(
|
|
93
|
+
expect(transformer.domain).toBe(1000n);
|
|
88
94
|
|
|
89
95
|
const transformer0 = Transformer.get(1000, 0);
|
|
90
96
|
|