@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.
Files changed (41) hide show
  1. package/dist/character-set.d.ts +24 -2
  2. package/dist/character-set.d.ts.map +1 -1
  3. package/dist/character-set.js +21 -0
  4. package/dist/character-set.js.map +1 -1
  5. package/dist/index.d.ts +1 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/iterable-utility.d.ts +39 -0
  10. package/dist/iterable-utility.d.ts.map +1 -0
  11. package/dist/iterable-utility.js +35 -0
  12. package/dist/iterable-utility.js.map +1 -0
  13. package/dist/locale/en/locale-strings.d.ts +16 -17
  14. package/dist/locale/en/locale-strings.d.ts.map +1 -1
  15. package/dist/locale/en/locale-strings.js +16 -17
  16. package/dist/locale/en/locale-strings.js.map +1 -1
  17. package/dist/locale/fr/locale-strings.d.ts +16 -17
  18. package/dist/locale/fr/locale-strings.d.ts.map +1 -1
  19. package/dist/locale/fr/locale-strings.js +16 -17
  20. package/dist/locale/fr/locale-strings.js.map +1 -1
  21. package/dist/record.d.ts +3 -0
  22. package/dist/record.d.ts.map +1 -1
  23. package/dist/record.js +3 -0
  24. package/dist/record.js.map +1 -1
  25. package/dist/string.d.ts +3 -0
  26. package/dist/string.d.ts.map +1 -1
  27. package/dist/transformer.d.ts +4 -35
  28. package/dist/transformer.d.ts.map +1 -1
  29. package/dist/transformer.js +4 -31
  30. package/dist/transformer.js.map +1 -1
  31. package/package.json +5 -5
  32. package/src/character-set.ts +28 -2
  33. package/src/index.ts +1 -0
  34. package/src/iterable-utility.ts +55 -0
  35. package/src/locale/en/locale-strings.ts +16 -17
  36. package/src/locale/fr/locale-strings.ts +16 -17
  37. package/src/record.ts +3 -0
  38. package/src/string.ts +3 -0
  39. package/src/transformer.ts +10 -60
  40. package/test/character-set.test.ts +28 -12
  41. 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
- function testCharacterSetCreator(name: string, characterSetCreator: CharacterSetCreator, characterSetSize: number, length: number, excludeFirstZero: boolean, excludeAllNumeric: boolean): void {
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
- testCharacterSetCreator("Numeric", NUMERIC_CREATOR, 10, 4, true, false);
202
- testCharacterSetCreator("Hexadecimal", HEXADECIMAL_CREATOR, 16, 4, true, true);
203
- testCharacterSetCreator("Alphabetic", ALPHABETIC_CREATOR, 26, 3, false, false);
204
- testCharacterSetCreator("Alphanumeric", ALPHANUMERIC_CREATOR, 36, 3, true, true);
205
- testCharacterSetCreator("Middle numeric", new CharacterSetCreator([
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), 14, 4, false, true);
223
+ ], Exclusion.AllNumeric);
224
+
225
+ testCharacterSet("Middle numeric", middleNumericCreator, middleNumericCreator as CharacterSetValidator, 14, 4, false, true);
@@ -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(BigInt(1000n));
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(BigInt(1000n));
93
+ expect(transformer.domain).toBe(1000n);
88
94
 
89
95
  const transformer0 = Transformer.get(1000, 0);
90
96