@aidc-toolkit/utility 1.0.25-beta → 1.0.27-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 (71) hide show
  1. package/dist/character-set.d.ts +222 -0
  2. package/dist/character-set.d.ts.map +1 -0
  3. package/dist/character-set.js +568 -0
  4. package/dist/character-set.js.map +1 -0
  5. package/dist/exclusion.d.ts +26 -0
  6. package/dist/exclusion.d.ts.map +1 -0
  7. package/dist/exclusion.js +18 -0
  8. package/dist/exclusion.js.map +1 -0
  9. package/dist/index.d.ts +26 -953
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +8 -3505
  12. package/dist/index.js.map +1 -1
  13. package/dist/iterable-utility.d.ts +39 -0
  14. package/dist/iterable-utility.d.ts.map +1 -0
  15. package/dist/iterable-utility.js +35 -0
  16. package/dist/iterable-utility.js.map +1 -0
  17. package/dist/locale/en/locale-resources.d.ts +33 -0
  18. package/dist/locale/en/locale-resources.d.ts.map +1 -0
  19. package/dist/locale/en/locale-resources.js +32 -0
  20. package/dist/locale/en/locale-resources.js.map +1 -0
  21. package/dist/locale/fr/locale-resources.d.ts +33 -0
  22. package/dist/locale/fr/locale-resources.d.ts.map +1 -0
  23. package/dist/locale/fr/locale-resources.js +32 -0
  24. package/dist/locale/fr/locale-resources.js.map +1 -0
  25. package/dist/locale/i18n.d.ts +27 -0
  26. package/dist/locale/i18n.d.ts.map +1 -0
  27. package/dist/locale/i18n.js +34 -0
  28. package/dist/locale/i18n.js.map +1 -0
  29. package/dist/record.d.ts +37 -0
  30. package/dist/record.d.ts.map +1 -0
  31. package/dist/record.js +58 -0
  32. package/dist/record.js.map +1 -0
  33. package/dist/reg-exp.d.ts +40 -0
  34. package/dist/reg-exp.d.ts.map +1 -0
  35. package/dist/reg-exp.js +55 -0
  36. package/dist/reg-exp.js.map +1 -0
  37. package/dist/sequence.d.ts +45 -0
  38. package/dist/sequence.d.ts.map +1 -0
  39. package/dist/sequence.js +96 -0
  40. package/dist/sequence.js.map +1 -0
  41. package/dist/string.d.ts +25 -0
  42. package/dist/string.d.ts.map +1 -0
  43. package/dist/string.js +2 -0
  44. package/dist/string.js.map +1 -0
  45. package/dist/transformer.d.ts +196 -0
  46. package/dist/transformer.d.ts.map +1 -0
  47. package/dist/transformer.js +457 -0
  48. package/dist/transformer.js.map +1 -0
  49. package/package.json +10 -6
  50. package/src/character-set.ts +62 -59
  51. package/src/index.ts +9 -9
  52. package/src/locale/i18n.ts +3 -3
  53. package/src/locale/i18next.d.ts +1 -1
  54. package/src/record.ts +8 -8
  55. package/src/reg-exp.ts +6 -6
  56. package/src/sequence.ts +21 -21
  57. package/src/transformer.ts +54 -54
  58. package/test/character-set.test.ts +1 -1
  59. package/test/record.test.ts +1 -1
  60. package/test/reg-exp.test.ts +1 -1
  61. package/test/sequence.test.ts +1 -1
  62. package/test/setup.ts +1 -1
  63. package/test/transformer.test.ts +1 -6
  64. package/tsconfig-config.json +4 -0
  65. package/tsconfig-src.json +8 -0
  66. package/tsconfig-test.json +9 -0
  67. package/tsconfig.json +12 -1
  68. package/tsup.config.ts +3 -2
  69. package/dist/index.cjs +0 -3570
  70. package/dist/index.cjs.map +0 -1
  71. package/dist/index.d.cts +0 -953
@@ -0,0 +1,568 @@
1
+ var _a;
2
+ import { Exclusions } from "./exclusion.js";
3
+ import { i18nextUtility } from "./locale/i18n.js";
4
+ import { RegExpValidator } from "./reg-exp.js";
5
+ import { Transformer } from "./transformer.js";
6
+ /**
7
+ * Character set validator. Validates a string against a specified character set.
8
+ */
9
+ export class CharacterSetValidator {
10
+ static #NOT_ALL_NUMERIC_VALIDATOR = new class extends RegExpValidator {
11
+ /**
12
+ * Create an error message for an all-numeric string.
13
+ *
14
+ * @param _s
15
+ * String.
16
+ *
17
+ * @returns
18
+ * Error message.
19
+ */
20
+ createErrorMessage(_s) {
21
+ return i18nextUtility.t("CharacterSetValidator.stringMustNotBeAllNumeric");
22
+ }
23
+ }(/\D/);
24
+ /**
25
+ * Character set.
26
+ */
27
+ #characterSet;
28
+ /**
29
+ * Character set map, mapping each character in the character set to its index such that
30
+ * `_characterSetMap.get(_characterSet[index]) === index`.
31
+ */
32
+ #characterSetMap;
33
+ /**
34
+ * Exclusions supported by the character set.
35
+ */
36
+ #exclusionSupport;
37
+ /**
38
+ * Constructor.
39
+ *
40
+ * @param characterSet
41
+ * Character set. Each element is a single-character string, unique within the array, that defines the character
42
+ * set.
43
+ *
44
+ * @param exclusionSupport
45
+ * Exclusions supported by the character set. All character sets implicitly support {@linkcode Exclusions.None}.
46
+ */
47
+ constructor(characterSet, ...exclusionSupport) {
48
+ this.#characterSet = characterSet;
49
+ const characterSetMap = new Map();
50
+ characterSet.forEach((c, index) => {
51
+ characterSetMap.set(c, index);
52
+ });
53
+ this.#characterSetMap = characterSetMap;
54
+ this.#exclusionSupport = exclusionSupport;
55
+ }
56
+ /**
57
+ * Get the character set.
58
+ */
59
+ get characterSet() {
60
+ return this.#characterSet;
61
+ }
62
+ /**
63
+ * Get the character set size.
64
+ */
65
+ get characterSetSize() {
66
+ return this.#characterSet.length;
67
+ }
68
+ /**
69
+ * Get the exclusions supported by the character set.
70
+ */
71
+ get exclusionSupport() {
72
+ return this.#exclusionSupport;
73
+ }
74
+ /**
75
+ * Get the character at an index.
76
+ *
77
+ * @param index
78
+ * Index into the character set.
79
+ *
80
+ * @returns
81
+ * Character at the index.
82
+ */
83
+ character(index) {
84
+ return this.#characterSet[index];
85
+ }
86
+ /**
87
+ * Get the index for a character.
88
+ *
89
+ * @param c
90
+ * Character.
91
+ *
92
+ * @returns
93
+ * Index for the character or undefined if the character is not in the character set.
94
+ */
95
+ characterIndex(c) {
96
+ return this.#characterSetMap.get(c);
97
+ }
98
+ /**
99
+ * Get the indexes for all characters in a string.
100
+ *
101
+ * @param s
102
+ * String.
103
+ *
104
+ * @returns
105
+ * Array of indexes for each character or undefined if the character is not in the character set.
106
+ */
107
+ characterIndexes(s) {
108
+ return Array.from(s).map(c => this.#characterSetMap.get(c));
109
+ }
110
+ /**
111
+ * Convert a component definition to a string or undefined. Checks the type of the component and makes the callback
112
+ * if required.
113
+ *
114
+ * @param component
115
+ * Component definition as a string, callback, or undefined.
116
+ *
117
+ * @returns
118
+ * Component as a string or undefined.
119
+ */
120
+ static #componentToString(component) {
121
+ return typeof component === "function" ? component() : component;
122
+ }
123
+ /**
124
+ * Validate that an exclusion is supported. If not, an error is thrown.
125
+ *
126
+ * @param exclusion
127
+ * Exclusion.
128
+ */
129
+ validateExclusion(exclusion) {
130
+ if (exclusion !== Exclusions.None && !this.#exclusionSupport.includes(exclusion)) {
131
+ throw new RangeError(i18nextUtility.t("CharacterSetValidator.exclusionNotSupported", {
132
+ exclusion
133
+ }));
134
+ }
135
+ }
136
+ /**
137
+ * Validate a string. If the string violates the character set or any of the character set validation parameters, an
138
+ * error is thrown.
139
+ *
140
+ * @param s
141
+ * String.
142
+ *
143
+ * @param validation
144
+ * Character set validation parameters.
145
+ */
146
+ validate(s, validation) {
147
+ const length = s.length;
148
+ const minimumLength = validation?.minimumLength;
149
+ const maximumLength = validation?.maximumLength;
150
+ if (minimumLength !== undefined && length < minimumLength) {
151
+ let errorMessage;
152
+ if (maximumLength !== undefined && maximumLength === minimumLength) {
153
+ errorMessage = i18nextUtility.t(validation?.component === undefined ? "CharacterSetValidator.lengthMustBeEqualTo" : "CharacterSetValidator.lengthOfComponentMustBeEqualTo", {
154
+ component: CharacterSetValidator.#componentToString(validation?.component),
155
+ length,
156
+ exactLength: minimumLength
157
+ });
158
+ }
159
+ else {
160
+ errorMessage = i18nextUtility.t(validation?.component === undefined ? "CharacterSetValidator.lengthMustBeGreaterThanOrEqualTo" : "CharacterSetValidator.lengthOfComponentMustBeGreaterThanOrEqualTo", {
161
+ component: CharacterSetValidator.#componentToString(validation?.component),
162
+ length,
163
+ minimumLength
164
+ });
165
+ }
166
+ throw new RangeError(errorMessage);
167
+ }
168
+ if (maximumLength !== undefined && length > maximumLength) {
169
+ throw new RangeError(i18nextUtility.t(validation?.component === undefined ? "CharacterSetValidator.lengthMustBeLessThanOrEqualTo" : "CharacterSetValidator.lengthOfComponentMustBeLessThanOrEqualTo", {
170
+ component: CharacterSetValidator.#componentToString(validation?.component),
171
+ length,
172
+ maximumLength
173
+ }));
174
+ }
175
+ // Find the index of the first character that is not in the character set.
176
+ const index = this.characterIndexes(s).findIndex(characterIndex => characterIndex === undefined);
177
+ if (index !== -1) {
178
+ throw new RangeError(i18nextUtility.t(validation?.component === undefined ? "CharacterSetValidator.invalidCharacterAtPosition" : "CharacterSetValidator.invalidCharacterAtPositionOfComponent", {
179
+ component: CharacterSetValidator.#componentToString(validation?.component),
180
+ c: s.charAt(index),
181
+ position: index + (validation?.positionOffset ?? 0) + 1
182
+ }));
183
+ }
184
+ if (validation?.exclusion !== undefined) {
185
+ this.validateExclusion(validation.exclusion);
186
+ switch (validation.exclusion) {
187
+ case Exclusions.None:
188
+ break;
189
+ case Exclusions.FirstZero:
190
+ if (s.startsWith("0")) {
191
+ throw new RangeError(i18nextUtility.t(validation.component === undefined ? "CharacterSetValidator.invalidCharacterAtPosition" : "CharacterSetValidator.invalidCharacterAtPositionOfComponent", {
192
+ component: CharacterSetValidator.#componentToString(validation.component),
193
+ c: "0",
194
+ position: (validation.positionOffset ?? 0) + 1
195
+ }));
196
+ }
197
+ break;
198
+ case Exclusions.AllNumeric:
199
+ CharacterSetValidator.#NOT_ALL_NUMERIC_VALIDATOR.validate(s);
200
+ break;
201
+ }
202
+ }
203
+ }
204
+ }
205
+ /**
206
+ * Character set creator. Maps numeric values to strings using the character set as digits.
207
+ */
208
+ export class CharacterSetCreator extends CharacterSetValidator {
209
+ /**
210
+ * Maximum string length supported.
211
+ */
212
+ static MAXIMUM_STRING_LENGTH = 40;
213
+ /**
214
+ * Powers of 10 from 1 (`10**0`) to `10**MAXIMUM_STRING_LENGTH`.
215
+ */
216
+ static #POWERS_OF_10;
217
+ /**
218
+ * Create powers of a given base from 1 (`base**0`) to `base**MAXIMUM_STRING_LENGTH`.
219
+ *
220
+ * @param base
221
+ * Number base.
222
+ *
223
+ * @returns
224
+ * Array of powers of base.
225
+ */
226
+ static #createPowersOf(base) {
227
+ const powersOf = new Array(this.MAXIMUM_STRING_LENGTH + 1);
228
+ const baseN = BigInt(base);
229
+ for (let index = 0, powerOf = 1n; index <= this.MAXIMUM_STRING_LENGTH; index++, powerOf *= baseN) {
230
+ powersOf[index] = powerOf;
231
+ }
232
+ return powersOf;
233
+ }
234
+ /**
235
+ * Get a power of 10.
236
+ *
237
+ * @param power
238
+ * Power.
239
+ *
240
+ * @returns
241
+ * `10**power`.
242
+ */
243
+ static powerOf10(power) {
244
+ // Initialization is here due to order in which class is constructed causing errors reading undefined.
245
+ _a.#POWERS_OF_10 ??= _a.#createPowersOf(10);
246
+ return _a.#POWERS_OF_10[power];
247
+ }
248
+ /**
249
+ * Character set size as big integer, cached for performance purposes.
250
+ */
251
+ #characterSetSizeN;
252
+ /**
253
+ * Character set size minus 1 as big integer, cached for performance purposes.
254
+ */
255
+ #characterSetSizeMinusOneN;
256
+ /**
257
+ * Domains for every length for every supported {@linkcode Exclusions}.
258
+ */
259
+ #exclusionDomains;
260
+ /**
261
+ * Values that would generate all zeros in the created string.
262
+ */
263
+ #allZerosValues;
264
+ /**
265
+ * Constructor.
266
+ *
267
+ * @param characterSet
268
+ * Character set. Each element is a single-character string, unique within the array, that defines the character
269
+ * set.
270
+ *
271
+ * @param exclusionSupport
272
+ * Exclusions supported by the character set. All character sets implicitly support {@linkcode Exclusions.None}.
273
+ */
274
+ constructor(characterSet, ...exclusionSupport) {
275
+ super(characterSet, ...exclusionSupport);
276
+ this.#characterSetSizeN = BigInt(this.characterSetSize);
277
+ this.#characterSetSizeMinusOneN = BigInt(this.characterSetSize - 1);
278
+ const exclusionDomains = [];
279
+ const exclusionNoneDomains = _a.#createPowersOf(this.characterSetSize);
280
+ exclusionDomains[Exclusions.None] = exclusionNoneDomains;
281
+ if (exclusionSupport.includes(Exclusions.FirstZero)) {
282
+ if (characterSet[0] !== "0") {
283
+ throw new RangeError(i18nextUtility.t("CharacterSetValidator.firstZeroFirstCharacter"));
284
+ }
285
+ const exclusionFirstZeroDomains = new Array(_a.MAXIMUM_STRING_LENGTH + 1);
286
+ // Exclusion of first zero mathematically prohibits length of 0.
287
+ exclusionFirstZeroDomains[0] = 0n;
288
+ for (let index = 1; index <= _a.MAXIMUM_STRING_LENGTH; index++) {
289
+ // Domain excludes zero as the first character and so works with previous exclusion none domain.
290
+ exclusionFirstZeroDomains[index] = this.#characterSetSizeMinusOneN * exclusionNoneDomains[index - 1];
291
+ }
292
+ exclusionDomains[Exclusions.FirstZero] = exclusionFirstZeroDomains;
293
+ }
294
+ if (exclusionSupport.includes(Exclusions.AllNumeric)) {
295
+ const exclusionAllNumericDomains = new Array(_a.MAXIMUM_STRING_LENGTH + 1);
296
+ /**
297
+ * Validate that number indexes are defined and sequential.
298
+ *
299
+ * @param numberIndexes
300
+ * Number indexes.
301
+ */
302
+ function validateNumberIndexes(numberIndexes) {
303
+ let expectedNumberIndex = numberIndexes[0];
304
+ // Make sure that all numeric characters are present and in sequence.
305
+ for (const numberIndex of numberIndexes) {
306
+ if (numberIndex === undefined || numberIndex !== expectedNumberIndex) {
307
+ throw new RangeError(i18nextUtility.t("CharacterSetValidator.allNumericAllNumericCharacters"));
308
+ }
309
+ expectedNumberIndex = numberIndex + 1;
310
+ }
311
+ }
312
+ const numberIndexes = this.characterIndexes("0123456789");
313
+ validateNumberIndexes(numberIndexes);
314
+ // Zero index is the all-zero value for a single-character string.
315
+ const zeroIndex = BigInt(numberIndexes[0]);
316
+ const allZerosValues = new Array(_a.MAXIMUM_STRING_LENGTH + 1);
317
+ let allZerosValue = 0n;
318
+ // Each all-zero value is the previous all-zero value multiplied by the character set size plus the zero index.
319
+ for (let index = 0; index <= _a.MAXIMUM_STRING_LENGTH; index++) {
320
+ // Domain excludes the number of permutations that would result in an all-numeric string.
321
+ exclusionAllNumericDomains[index] = exclusionNoneDomains[index] - _a.powerOf10(index);
322
+ allZerosValues[index] = allZerosValue;
323
+ allZerosValue = allZerosValue * this.#characterSetSizeN + zeroIndex;
324
+ }
325
+ this.#allZerosValues = allZerosValues;
326
+ exclusionDomains[Exclusions.AllNumeric] = exclusionAllNumericDomains;
327
+ }
328
+ else {
329
+ // Empty array obviates need for non-null assertion while still forcing error if indexed due to a bug.
330
+ this.#allZerosValues = [];
331
+ }
332
+ this.#exclusionDomains = exclusionDomains;
333
+ }
334
+ /**
335
+ * Get a power of character set size.
336
+ *
337
+ * @param power
338
+ * Power.
339
+ *
340
+ * @returns
341
+ * `characterSetSize**power`.
342
+ */
343
+ #powerOfSize(power) {
344
+ return this.#exclusionDomains[Exclusions.None][power];
345
+ }
346
+ /**
347
+ * Determine the shift required to skip all all-numeric strings up to the value.
348
+ *
349
+ * @param shiftForward
350
+ * True to shift forward (value to string), false to shift backward (string to value).
351
+ *
352
+ * @param length
353
+ * Length of string for which to get the all-numeric shift.
354
+ *
355
+ * @param value
356
+ * Value for which to get the all-numeric shift.
357
+ *
358
+ * @returns
359
+ * Shift required to skip all all-numeric strings.
360
+ */
361
+ #allNumericShift(shiftForward, length, value) {
362
+ let shift;
363
+ if (length === 0) {
364
+ if (!shiftForward && value < 10n) {
365
+ // If calculation gets this far, string is all-numeric.
366
+ throw new RangeError(i18nextUtility.t("CharacterSetValidator.stringMustNotBeAllNumeric"));
367
+ }
368
+ // Now dealing with individual characters; shift by 10 to skip numeric characters.
369
+ shift = 10n;
370
+ }
371
+ else {
372
+ const powerOfSize = this.#powerOfSize(length);
373
+ const powerOf10 = _a.powerOf10(length);
374
+ // Calculate the gap to the next numeric string of equal length with incremental first character.
375
+ const gap = shiftForward ? powerOfSize - powerOf10 : powerOfSize;
376
+ // Determine the number of gaps remaining in the value.
377
+ const gaps = value / gap;
378
+ if (gaps >= 10n) {
379
+ // Shift is the next power of 10.
380
+ shift = _a.powerOf10(length + 1);
381
+ }
382
+ else {
383
+ // Shift is the number of gaps times the current power of 10 plus the shift for the next length down with value adjusted by the number of gaps times the gap.
384
+ shift = gaps * powerOf10 + this.#allNumericShift(shiftForward, length - 1, value - gaps * gap);
385
+ }
386
+ }
387
+ return shift;
388
+ }
389
+ /**
390
+ * Validate that a length is less than or equal to {@linkcode MAXIMUM_STRING_LENGTH}. If not, an error is thrown.
391
+ *
392
+ * @param length
393
+ * Length.
394
+ */
395
+ #validateLength(length) {
396
+ if (length < 0) {
397
+ throw new RangeError(i18nextUtility.t("CharacterSetValidator.lengthMustBeGreaterThanOrEqualTo", {
398
+ length,
399
+ minimumLength: 0
400
+ }));
401
+ }
402
+ if (length > _a.MAXIMUM_STRING_LENGTH) {
403
+ throw new RangeError(i18nextUtility.t("CharacterSetValidator.lengthMustBeLessThanOrEqualTo", {
404
+ length,
405
+ maximumLength: _a.MAXIMUM_STRING_LENGTH
406
+ }));
407
+ }
408
+ }
409
+ /**
410
+ * Create string(s) by mapping value(s) to the equivalent characters in the character set across the length of the
411
+ * string.
412
+ *
413
+ * @template TTransformerInput
414
+ * Transformer input type.
415
+ *
416
+ * @param length
417
+ * Required string length.
418
+ *
419
+ * @param valueOrValues
420
+ * Numeric value(s) of the string(s).
421
+ *
422
+ * @param exclusion
423
+ * String(s) to be excluded from the range of outputs. See {@linkcode Exclusions} for possible values and their
424
+ * meaning.
425
+ *
426
+ * @param tweak
427
+ * If provided, the numerical value of the string(s) is/are "tweaked" using an {@link EncryptionTransformer |
428
+ * encryption transformer}.
429
+ *
430
+ * @param creatorCallback
431
+ * If provided, called after each string is constructed to create the final value.
432
+ *
433
+ * @returns
434
+ * String(s) created from the value(s).
435
+ */
436
+ create(length, valueOrValues, exclusion = Exclusions.None, tweak, creatorCallback) {
437
+ this.#validateLength(length);
438
+ this.validateExclusion(exclusion);
439
+ // Zero value in ternary else obviates need for non-null assertion.
440
+ const allZerosValue = exclusion === Exclusions.AllNumeric ? this.#allZerosValues[length] : 0n;
441
+ const transformer = Transformer.get(this.#exclusionDomains[exclusion][length], tweak);
442
+ return transformer.forward(valueOrValues, (transformedValue, index) => {
443
+ let s = "";
444
+ // Empty string is valid.
445
+ if (length !== 0) {
446
+ let convertValue = transformedValue;
447
+ if (exclusion === Exclusions.AllNumeric && convertValue >= allZerosValue) {
448
+ // Value to convert is shifted by the number of all-numeric strings that occur at or prior to it.
449
+ convertValue += this.#allNumericShift(true, length, convertValue - allZerosValue);
450
+ }
451
+ // Build string from right to left excluding the first character.
452
+ for (let position = length - 1; position > 0; position--) {
453
+ const nextConvertValue = convertValue / this.#characterSetSizeN;
454
+ // First step is effectively a modulus calculation.
455
+ s = this.character(Number(convertValue - nextConvertValue * this.#characterSetSizeN)) + s;
456
+ convertValue = nextConvertValue;
457
+ }
458
+ // Zero is first in the character set for those that support excluding first zero.
459
+ s = this.character(exclusion === Exclusions.FirstZero ? Number(convertValue % this.#characterSetSizeMinusOneN) + 1 : Number(convertValue % this.#characterSetSizeN)) + s;
460
+ }
461
+ return creatorCallback === undefined ? s : creatorCallback(s, index);
462
+ });
463
+ }
464
+ /**
465
+ * Determine the value for a string.
466
+ *
467
+ * @param s
468
+ * String.
469
+ *
470
+ * @param exclusion
471
+ * Strings excluded from the range of inputs. See {@linkcode Exclusions} for possible values and their meaning.
472
+ *
473
+ * @param tweak
474
+ * If provided, the numerical value of the string was "tweaked" using an {@link EncryptionTransformer | encryption
475
+ * transformer}.
476
+ *
477
+ * @returns
478
+ * Numeric value of the string.
479
+ */
480
+ valueFor(s, exclusion = Exclusions.None, tweak) {
481
+ const length = s.length;
482
+ this.#validateLength(length);
483
+ this.validateExclusion(exclusion);
484
+ const characterSetSizeN = BigInt(this.characterSetSize);
485
+ // Convert string to its value character by character.
486
+ let value = this.characterIndexes(s).reduce((accumulator, characterIndex, index) => {
487
+ if (characterIndex === undefined) {
488
+ throw new RangeError(i18nextUtility.t("CharacterSetValidator.invalidCharacterAtPosition", {
489
+ c: s.charAt(index),
490
+ position: index + 1
491
+ }));
492
+ }
493
+ let value;
494
+ if (index === 0 && exclusion === Exclusions.FirstZero) {
495
+ if (characterIndex === 0) {
496
+ throw new RangeError(i18nextUtility.t("CharacterSetValidator.invalidCharacterAtPosition", {
497
+ c: "0",
498
+ position: 1
499
+ }));
500
+ }
501
+ // Accumulator is known to be zero at this point.
502
+ value = BigInt(characterIndex - 1);
503
+ }
504
+ else {
505
+ value = accumulator * characterSetSizeN + BigInt(characterIndex);
506
+ }
507
+ return value;
508
+ }, 0n);
509
+ if (exclusion === Exclusions.AllNumeric) {
510
+ const allZerosValue = this.#allZerosValues[length];
511
+ if (value >= allZerosValue) {
512
+ // Call will ensure that string is not all-numeric.
513
+ value -= this.#allNumericShift(false, length, value - allZerosValue);
514
+ }
515
+ }
516
+ return Transformer.get(this.#exclusionDomains[exclusion][length], tweak).reverse(value);
517
+ }
518
+ }
519
+ _a = CharacterSetCreator;
520
+ /**
521
+ * Numeric creator. Character set is 0-9. Supports {@linkcode Exclusions.FirstZero}.
522
+ */
523
+ export const NUMERIC_CREATOR = new CharacterSetCreator([
524
+ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"
525
+ ], Exclusions.FirstZero);
526
+ /**
527
+ * Numeric validator. Character set is 0-9. Supports {@linkcode Exclusions.FirstZero}.
528
+ */
529
+ export const NUMERIC_VALIDATOR = NUMERIC_CREATOR;
530
+ /**
531
+ * Hexadecimal creator. Character set is 0-9, A-F. Supports {@linkcode Exclusions.FirstZero} and {@linkcode
532
+ * Exclusions.AllNumeric}.
533
+ */
534
+ export const HEXADECIMAL_CREATOR = new CharacterSetCreator([
535
+ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
536
+ "A", "B", "C", "D", "E", "F"
537
+ ], Exclusions.FirstZero, Exclusions.AllNumeric);
538
+ /**
539
+ * Hexadecimal validator. Character set is 0-9, A-F. Supports {@linkcode Exclusions.FirstZero} and {@linkcode
540
+ * Exclusions.AllNumeric}.
541
+ */
542
+ export const HEXADECIMAL_VALIDATOR = HEXADECIMAL_CREATOR;
543
+ /**
544
+ * Alphabetic creator. Character set is A-Z.
545
+ */
546
+ export const ALPHABETIC_CREATOR = new CharacterSetCreator([
547
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
548
+ "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
549
+ ]);
550
+ /**
551
+ * Alphabetic validator. Character set is A-Z.
552
+ */
553
+ export const ALPHABETIC_VALIDATOR = ALPHABETIC_CREATOR;
554
+ /**
555
+ * Alphanumeric creator. Character set is 0-9, A-Z. Supports {@linkcode Exclusions.FirstZero} and {@linkcode
556
+ * Exclusions.AllNumeric}.
557
+ */
558
+ export const ALPHANUMERIC_CREATOR = new CharacterSetCreator([
559
+ "0", "1", "2", "3", "4", "5", "6", "7", "8", "9",
560
+ "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M",
561
+ "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"
562
+ ], Exclusions.FirstZero, Exclusions.AllNumeric);
563
+ /**
564
+ * Alphanumeric validator. Character set is 0-9, A-Z. Supports {@linkcode Exclusions.FirstZero} and {@linkcode
565
+ * Exclusions.AllNumeric}.
566
+ */
567
+ export const ALPHANUMERIC_VALIDATOR = ALPHANUMERIC_CREATOR;
568
+ //# sourceMappingURL=character-set.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"character-set.js","sourceRoot":"","sources":["../src/character-set.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Exclusion options for validating and creating strings based on character sets.
3
+ */
4
+ export declare const Exclusions: {
5
+ /**
6
+ * No strings excluded.
7
+ */
8
+ readonly None: 0;
9
+ /**
10
+ * Strings that start with zero ('0') excluded.
11
+ */
12
+ readonly FirstZero: 1;
13
+ /**
14
+ * Strings that are all-numeric (e.g., "123456") excluded.
15
+ */
16
+ readonly AllNumeric: 2;
17
+ };
18
+ /**
19
+ * Exclusion key.
20
+ */
21
+ export type ExclusionKey = keyof typeof Exclusions;
22
+ /**
23
+ * Exclusion.
24
+ */
25
+ export type Exclusion = typeof Exclusions[ExclusionKey];
26
+ //# sourceMappingURL=exclusion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exclusion.d.ts","sourceRoot":"","sources":["../src/exclusion.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,eAAO,MAAM,UAAU;IACnB;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;CAEG,CAAC;AAEX;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,OAAO,UAAU,CAAC;AAEnD;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,OAAO,UAAU,CAAC,YAAY,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Exclusion options for validating and creating strings based on character sets.
3
+ */
4
+ export const Exclusions = {
5
+ /**
6
+ * No strings excluded.
7
+ */
8
+ None: 0,
9
+ /**
10
+ * Strings that start with zero ('0') excluded.
11
+ */
12
+ FirstZero: 1,
13
+ /**
14
+ * Strings that are all-numeric (e.g., "123456") excluded.
15
+ */
16
+ AllNumeric: 2
17
+ };
18
+ //# sourceMappingURL=exclusion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exclusion.js","sourceRoot":"","sources":["../src/exclusion.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAG;IACtB;;OAEG;IACH,IAAI,EAAE,CAAC;IAEP;;OAEG;IACH,SAAS,EAAE,CAAC;IAEZ;;OAEG;IACH,UAAU,EAAE,CAAC;CACP,CAAC"}