@xivdyetools/core 2.6.0 → 4.0.1

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 (156) hide show
  1. package/README.md +85 -67
  2. package/dist/blending/blending.d.ts +22 -0
  3. package/dist/blending/blending.d.ts.map +1 -0
  4. package/dist/blending/blending.js +129 -0
  5. package/dist/blending/blending.js.map +1 -0
  6. package/dist/blending/conversions.d.ts +53 -0
  7. package/dist/blending/conversions.d.ts.map +1 -0
  8. package/dist/blending/conversions.js +256 -0
  9. package/dist/blending/conversions.js.map +1 -0
  10. package/dist/blending/index.d.ts +8 -0
  11. package/dist/blending/index.d.ts.map +1 -0
  12. package/dist/blending/index.js +3 -0
  13. package/dist/blending/index.js.map +1 -0
  14. package/dist/blending/types.d.ts +36 -0
  15. package/dist/blending/types.d.ts.map +1 -0
  16. package/dist/blending/types.js +21 -0
  17. package/dist/blending/types.js.map +1 -0
  18. package/dist/config/band-calibration.d.ts +68 -0
  19. package/dist/config/band-calibration.d.ts.map +1 -0
  20. package/dist/config/band-calibration.js +196 -0
  21. package/dist/config/band-calibration.js.map +1 -0
  22. package/dist/config/band-vocabulary.d.ts +82 -0
  23. package/dist/config/band-vocabulary.d.ts.map +1 -0
  24. package/dist/config/band-vocabulary.js +117 -0
  25. package/dist/config/band-vocabulary.js.map +1 -0
  26. package/dist/config/consolidated-ids.js +2 -2
  27. package/dist/config/consolidated-ids.js.map +1 -1
  28. package/dist/config/dye-vocabulary.d.ts +45 -0
  29. package/dist/config/dye-vocabulary.d.ts.map +1 -0
  30. package/dist/config/dye-vocabulary.js +58 -0
  31. package/dist/config/dye-vocabulary.js.map +1 -0
  32. package/dist/config/facewear.d.ts +24 -0
  33. package/dist/config/facewear.d.ts.map +1 -0
  34. package/dist/config/facewear.js +35 -0
  35. package/dist/config/facewear.js.map +1 -0
  36. package/dist/config/learn-links.d.ts +70 -0
  37. package/dist/config/learn-links.d.ts.map +1 -0
  38. package/dist/config/learn-links.js +171 -0
  39. package/dist/config/learn-links.js.map +1 -0
  40. package/dist/config/product-links.d.ts +44 -0
  41. package/dist/config/product-links.d.ts.map +1 -0
  42. package/dist/config/product-links.js +44 -0
  43. package/dist/config/product-links.js.map +1 -0
  44. package/dist/constants/index.d.ts +14 -1
  45. package/dist/constants/index.d.ts.map +1 -1
  46. package/dist/constants/index.js +38 -22
  47. package/dist/constants/index.js.map +1 -1
  48. package/dist/data/character_colors/race_specific/hair_colors.json +1 -1
  49. package/dist/data/character_colors/race_specific/skin_colors.json +1 -1
  50. package/dist/data/dyes.json +1127 -0
  51. package/dist/data/facewear_colors.json +57 -0
  52. package/dist/data/locales/de.json +4 -50
  53. package/dist/data/locales/en.json +4 -50
  54. package/dist/data/locales/fr.json +4 -50
  55. package/dist/data/locales/ja.json +4 -50
  56. package/dist/data/locales/ko.json +4 -50
  57. package/dist/data/locales/zh.json +4 -50
  58. package/dist/data/presets.json +59 -301
  59. package/dist/index.d.ts +156 -17
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +114 -10
  62. package/dist/index.js.map +1 -1
  63. package/dist/services/APIService.d.ts +39 -62
  64. package/dist/services/APIService.d.ts.map +1 -1
  65. package/dist/services/APIService.js +156 -150
  66. package/dist/services/APIService.js.map +1 -1
  67. package/dist/services/CharacterColorService.d.ts +4 -36
  68. package/dist/services/CharacterColorService.d.ts.map +1 -1
  69. package/dist/services/CharacterColorService.js +57 -79
  70. package/dist/services/CharacterColorService.js.map +1 -1
  71. package/dist/services/ColorService.d.ts +57 -68
  72. package/dist/services/ColorService.d.ts.map +1 -1
  73. package/dist/services/ColorService.js +86 -94
  74. package/dist/services/ColorService.js.map +1 -1
  75. package/dist/services/DyeService.d.ts +11 -104
  76. package/dist/services/DyeService.d.ts.map +1 -1
  77. package/dist/services/DyeService.js +19 -157
  78. package/dist/services/DyeService.js.map +1 -1
  79. package/dist/services/LocalizationService.d.ts +48 -59
  80. package/dist/services/LocalizationService.d.ts.map +1 -1
  81. package/dist/services/LocalizationService.js +86 -95
  82. package/dist/services/LocalizationService.js.map +1 -1
  83. package/dist/services/PaletteService.d.ts +8 -9
  84. package/dist/services/PaletteService.d.ts.map +1 -1
  85. package/dist/services/PaletteService.js +10 -22
  86. package/dist/services/PaletteService.js.map +1 -1
  87. package/dist/services/PresetService.d.ts +2 -34
  88. package/dist/services/PresetService.d.ts.map +1 -1
  89. package/dist/services/PresetService.js +12 -59
  90. package/dist/services/PresetService.js.map +1 -1
  91. package/dist/services/chara/chara-models.d.ts +68 -0
  92. package/dist/services/chara/chara-models.d.ts.map +1 -0
  93. package/dist/services/chara/chara-models.js +87 -0
  94. package/dist/services/chara/chara-models.js.map +1 -0
  95. package/dist/services/chara/chara-parser.d.ts +95 -0
  96. package/dist/services/chara/chara-parser.d.ts.map +1 -0
  97. package/dist/services/chara/chara-parser.js +299 -0
  98. package/dist/services/chara/chara-parser.js.map +1 -0
  99. package/dist/services/chara/chara-resolver.d.ts +103 -0
  100. package/dist/services/chara/chara-resolver.d.ts.map +1 -0
  101. package/dist/services/chara/chara-resolver.js +233 -0
  102. package/dist/services/chara/chara-resolver.js.map +1 -0
  103. package/dist/services/color/ColorConverter.d.ts +112 -35
  104. package/dist/services/color/ColorConverter.d.ts.map +1 -1
  105. package/dist/services/color/ColorConverter.js +205 -89
  106. package/dist/services/color/ColorConverter.js.map +1 -1
  107. package/dist/services/color/ColorManipulator.d.ts +11 -0
  108. package/dist/services/color/ColorManipulator.d.ts.map +1 -1
  109. package/dist/services/color/ColorManipulator.js +24 -9
  110. package/dist/services/color/ColorManipulator.js.map +1 -1
  111. package/dist/services/color/ColorblindnessSimulator.d.ts +17 -0
  112. package/dist/services/color/ColorblindnessSimulator.d.ts.map +1 -1
  113. package/dist/services/color/ColorblindnessSimulator.js +57 -3
  114. package/dist/services/color/ColorblindnessSimulator.js.map +1 -1
  115. package/dist/services/color/SpectralMixer.d.ts +0 -34
  116. package/dist/services/color/SpectralMixer.d.ts.map +1 -1
  117. package/dist/services/color/SpectralMixer.js +0 -73
  118. package/dist/services/color/SpectralMixer.js.map +1 -1
  119. package/dist/services/dye/DyeDatabase.d.ts +5 -21
  120. package/dist/services/dye/DyeDatabase.d.ts.map +1 -1
  121. package/dist/services/dye/DyeDatabase.js +98 -130
  122. package/dist/services/dye/DyeDatabase.js.map +1 -1
  123. package/dist/services/dye/DyeSearch.d.ts +17 -31
  124. package/dist/services/dye/DyeSearch.d.ts.map +1 -1
  125. package/dist/services/dye/DyeSearch.js +45 -141
  126. package/dist/services/dye/DyeSearch.js.map +1 -1
  127. package/dist/services/dye/HarmonyGenerator.d.ts +11 -18
  128. package/dist/services/dye/HarmonyGenerator.d.ts.map +1 -1
  129. package/dist/services/dye/HarmonyGenerator.js +33 -38
  130. package/dist/services/dye/HarmonyGenerator.js.map +1 -1
  131. package/dist/services/localization/LocaleLoader.d.ts.map +1 -1
  132. package/dist/services/localization/LocaleLoader.js +0 -1
  133. package/dist/services/localization/LocaleLoader.js.map +1 -1
  134. package/dist/services/localization/TranslationProvider.d.ts +1 -42
  135. package/dist/services/localization/TranslationProvider.d.ts.map +1 -1
  136. package/dist/services/localization/TranslationProvider.js +4 -82
  137. package/dist/services/localization/TranslationProvider.js.map +1 -1
  138. package/dist/types/index.d.ts +39 -52
  139. package/dist/types/index.d.ts.map +1 -1
  140. package/dist/types/index.js +50 -10
  141. package/dist/types/index.js.map +1 -1
  142. package/dist/utils/index.d.ts +36 -123
  143. package/dist/utils/index.d.ts.map +1 -1
  144. package/dist/utils/index.js +54 -413
  145. package/dist/utils/index.js.map +1 -1
  146. package/dist/utils/kd-tree.d.ts +0 -4
  147. package/dist/utils/kd-tree.d.ts.map +1 -1
  148. package/dist/utils/kd-tree.js +0 -6
  149. package/dist/utils/kd-tree.js.map +1 -1
  150. package/package.json +24 -15
  151. package/dist/data/character_colors/index.json +0 -40
  152. package/dist/data/colors_xiv.json +0 -3538
  153. package/dist/version.d.ts +0 -11
  154. package/dist/version.d.ts.map +0 -1
  155. package/dist/version.js +0 -11
  156. package/dist/version.js.map +0 -1
@@ -6,7 +6,7 @@
6
6
  *
7
7
  * @module services/localization
8
8
  */
9
- import type { LocaleCode, TranslationKey, HarmonyTypeKey, VisionType, ToolKey, SheetKey, JobKey, GrandCompanyKey, RaceKey, ClanKey } from '@xivdyetools/types';
9
+ import type { LocaleCode, TranslationKey, HarmonyTypeKey, VisionType, ToolKey, SheetKey, RaceKey, ClanKey } from '@xivdyetools/types';
10
10
  import type { LocaleRegistry } from './LocaleRegistry.js';
11
11
  /**
12
12
  * Provides translations with automatic fallback to English
@@ -93,19 +93,6 @@ export declare class TranslationProvider {
93
93
  * ```
94
94
  */
95
95
  getCurrency(currency: string, locale: LocaleCode): string;
96
- /**
97
- * Get metallic dye IDs (locale-independent)
98
- *
99
- * @param locale - Current locale (for consistency)
100
- * @returns Array of metallic dye item IDs
101
- *
102
- * @example
103
- * ```typescript
104
- * const metallicIds = provider.getMetallicDyeIds('fr');
105
- * // Returns [13116, 13117, ...] for any locale
106
- * ```
107
- */
108
- getMetallicDyeIds(locale: LocaleCode): number[];
109
96
  /**
110
97
  * Get harmony type with fallback
111
98
  *
@@ -186,34 +173,6 @@ export declare class TranslationProvider {
186
173
  * ```
187
174
  */
188
175
  getSheetName(key: SheetKey, locale: LocaleCode): string;
189
- /**
190
- * Get job name with fallback
191
- *
192
- * @param key - Job key
193
- * @param locale - Requested locale
194
- * @returns Localized job name
195
- *
196
- * @example
197
- * ```typescript
198
- * const job = provider.getJobName('darkKnight', 'ja');
199
- * // Returns "暗黒騎士" (ja) or "Dark Knight" (en fallback)
200
- * ```
201
- */
202
- getJobName(key: JobKey, locale: LocaleCode): string;
203
- /**
204
- * Get Grand Company name with fallback
205
- *
206
- * @param key - Grand Company key
207
- * @param locale - Requested locale
208
- * @returns Localized Grand Company name
209
- *
210
- * @example
211
- * ```typescript
212
- * const gc = provider.getGrandCompanyName('maelstrom', 'ja');
213
- * // Returns "黒渦団" (ja) or "The Maelstrom" (en fallback)
214
- * ```
215
- */
216
- getGrandCompanyName(key: GrandCompanyKey, locale: LocaleCode): string;
217
176
  /**
218
177
  * Get race name with fallback
219
178
  *
@@ -1 +1 @@
1
- {"version":3,"file":"TranslationProvider.d.ts","sourceRoot":"","sources":["../../../src/services/localization/TranslationProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,OAAO,EACP,QAAQ,EACR,MAAM,EACN,eAAe,EACf,OAAO,EACP,OAAO,EACR,MAAM,oBAAoB,CAAC;AAM5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,cAAc;IAE5C;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoBzD;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IA+B7D;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoBzD;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoB/D;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoBzD;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,EAAE;IAY/C;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoB/D;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoB1D;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAiB3D;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAiBrD;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAiBvD;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoBnD;;;;;;;;;;;;OAYG;IACH,mBAAmB,CAAC,GAAG,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoBrE;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoBjD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoBjD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,SAAS;CAMlB"}
1
+ {"version":3,"file":"TranslationProvider.d.ts","sourceRoot":"","sources":["../../../src/services/localization/TranslationProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,OAAO,EACP,QAAQ,EACR,OAAO,EACP,OAAO,EACR,MAAM,oBAAoB,CAAC;AAM5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;;;;GAWG;AACH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,QAAQ;gBAAR,QAAQ,EAAE,cAAc;IAE5C;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAqBzD;;;;;;;;;;;;OAYG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI;IA+B7D;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoBzD;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoB/D;;;;;;;;;;;;OAYG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoBzD;;;;;;;;;;;;OAYG;IACH,cAAc,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoB/D;;;;;;;;;;;;OAYG;IACH,aAAa,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoB1D;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAiB3D;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAiBrD;;;;;;;;;;;;;;;OAeG;IACH,YAAY,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAiBvD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoBjD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM;IAoBjD;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,SAAS;CAMlB"}
@@ -39,14 +39,15 @@ export class TranslationProvider {
39
39
  */
40
40
  getLabel(key, locale) {
41
41
  const localeData = this.registry.getLocale(locale);
42
- // Try requested locale
43
- if (localeData?.labels[key]) {
42
+ // Try requested locale (FINDING-027: own-property lookups — a key such as
43
+ // "constructor" must not resolve through the prototype chain)
44
+ if (localeData && Object.hasOwn(localeData.labels, key) && localeData.labels[key]) {
44
45
  return localeData.labels[key];
45
46
  }
46
47
  // Fallback to English
47
48
  if (locale !== 'en') {
48
49
  const englishData = this.registry.getLocale('en');
49
- if (englishData?.labels[key]) {
50
+ if (englishData && Object.hasOwn(englishData.labels, key) && englishData.labels[key]) {
50
51
  return englishData.labels[key];
51
52
  }
52
53
  }
@@ -179,27 +180,6 @@ export class TranslationProvider {
179
180
  // Final fallback: return original currency
180
181
  return currency;
181
182
  }
182
- /**
183
- * Get metallic dye IDs (locale-independent)
184
- *
185
- * @param locale - Current locale (for consistency)
186
- * @returns Array of metallic dye item IDs
187
- *
188
- * @example
189
- * ```typescript
190
- * const metallicIds = provider.getMetallicDyeIds('fr');
191
- * // Returns [13116, 13117, ...] for any locale
192
- * ```
193
- */
194
- getMetallicDyeIds(locale) {
195
- const localeData = this.registry.getLocale(locale);
196
- if (localeData?.metallicDyeIds) {
197
- return localeData.metallicDyeIds;
198
- }
199
- // Fallback to English
200
- const englishData = this.registry.getLocale('en');
201
- return englishData?.metallicDyeIds || [];
202
- }
203
183
  /**
204
184
  * Get harmony type with fallback
205
185
  *
@@ -346,64 +326,6 @@ export class TranslationProvider {
346
326
  }
347
327
  return this.formatKey(key);
348
328
  }
349
- /**
350
- * Get job name with fallback
351
- *
352
- * @param key - Job key
353
- * @param locale - Requested locale
354
- * @returns Localized job name
355
- *
356
- * @example
357
- * ```typescript
358
- * const job = provider.getJobName('darkKnight', 'ja');
359
- * // Returns "暗黒騎士" (ja) or "Dark Knight" (en fallback)
360
- * ```
361
- */
362
- getJobName(key, locale) {
363
- const localeData = this.registry.getLocale(locale);
364
- // Try requested locale
365
- if (localeData?.jobNames[key]) {
366
- return localeData.jobNames[key];
367
- }
368
- // Fallback to English
369
- if (locale !== 'en') {
370
- const englishData = this.registry.getLocale('en');
371
- if (englishData?.jobNames[key]) {
372
- return englishData.jobNames[key];
373
- }
374
- }
375
- // Final fallback: format key
376
- return this.formatKey(key);
377
- }
378
- /**
379
- * Get Grand Company name with fallback
380
- *
381
- * @param key - Grand Company key
382
- * @param locale - Requested locale
383
- * @returns Localized Grand Company name
384
- *
385
- * @example
386
- * ```typescript
387
- * const gc = provider.getGrandCompanyName('maelstrom', 'ja');
388
- * // Returns "黒渦団" (ja) or "The Maelstrom" (en fallback)
389
- * ```
390
- */
391
- getGrandCompanyName(key, locale) {
392
- const localeData = this.registry.getLocale(locale);
393
- // Try requested locale
394
- if (localeData?.grandCompanyNames[key]) {
395
- return localeData.grandCompanyNames[key];
396
- }
397
- // Fallback to English
398
- if (locale !== 'en') {
399
- const englishData = this.registry.getLocale('en');
400
- if (englishData?.grandCompanyNames[key]) {
401
- return englishData.grandCompanyNames[key];
402
- }
403
- }
404
- // Final fallback: format key
405
- return this.formatKey(key);
406
- }
407
329
  /**
408
330
  * Get race name with fallback
409
331
  *
@@ -1 +1 @@
1
- {"version":3,"file":"TranslationProvider.js","sourceRoot":"","sources":["../../../src/services/localization/TranslationProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TranslationProvider.js","sourceRoot":"","sources":["../../../src/services/localization/TranslationProvider.ts"],"names":[],"mappings":"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"}
@@ -7,64 +7,51 @@
7
7
  * @module types
8
8
  */
9
9
  /**
10
- * Available color matching algorithms for finding closest dyes.
10
+ * The 5.0 matching vocabulary one list suite-wide (web, Discord bot,
11
+ * og-worker, public API). Stored choice values; identifiers never localise.
11
12
  *
12
- * - rgb: RGB Euclidean distance (fastest, least accurate)
13
- * - cie76: CIE76 LAB Euclidean (fast, fair accuracy)
14
- * - ciede2000: CIEDE2000 (industry standard, accurate)
15
- * - oklab: OKLAB Euclidean (modern, simpler than ciede2000, CSS standard)
16
- * - hyab: HyAB hybrid (best for large color differences/palette matching)
17
- * - oklch-weighted: OKLCH with custom L/C/H weights (advanced)
13
+ * - ciede2000: ΔE2000 industry-standard perceptual formula (**the default
14
+ * everywhere**)
15
+ * - oklab: ΔEOK — OKLAB Euclidean (prints raw, dp 3)
16
+ * - cie76: ΔE76 CIELAB Euclidean
17
+ * - redmean: REDMEAN weighted RGB approximation
18
+ * - rgb: RGB DIST Euclidean RGB distance
19
+ * - distinguish: DISTINGUISH % — RGB DIST rescaled to 0-100. Kept
20
+ * deliberately for continuity with the Accessibility readout; identical
21
+ * ranks to RGB DIST by construction. Display rounding creates ties —
22
+ * orderings driven by the displayed value badge TIE, never imply a single
23
+ * answer.
24
+ *
25
+ * RATIO (WCAG contrast) is the seventh *display* entry only where the tool
26
+ * measures it (Accessibility Checker, Dye Comparison) — it is not a
27
+ * distance and never ranks dye matches, so it is not a MatchingMethod.
28
+ *
29
+ * The v4 methods `hyab` and `oklch-weighted` are retired; stored values
30
+ * migrate through {@link normalizeMatchingMethod}.
18
31
  */
19
- export type MatchingMethod = 'rgb' | 'cie76' | 'ciede2000' | 'oklab' | 'hyab' | 'oklch-weighted';
32
+ export type MatchingMethod = 'ciede2000' | 'oklab' | 'cie76' | 'redmean' | 'rgb' | 'distinguish';
33
+ /** Suite display order: ΔE2000 · ΔEOK · ΔE76 · REDMEAN · RGB DIST · DISTINGUISH % */
34
+ export declare const MATCHING_METHODS: readonly MatchingMethod[];
35
+ /** ΔE2000 is the default everywhere — one answer to "what does CLOSE mean". */
36
+ export declare const DEFAULT_MATCHING_METHOD: MatchingMethod;
20
37
  /**
21
- * Configuration for OKLCH weighted matching.
22
- * Allows users to prioritize different color attributes.
38
+ * Method display tags (the short-key vocabulary; `ratio` included for the
39
+ * two tools that print it). Tags are identifiers — never localise them.
23
40
  */
24
- export interface OklchWeights {
25
- /** Lightness weight (default 1.0). Higher = prioritize brightness matching */
26
- kL: number;
27
- /** Chroma weight (default 1.0). Higher = prioritize saturation matching */
28
- kC: number;
29
- /** Hue weight (default 1.0). Higher = prioritize hue matching */
30
- kH: number;
31
- }
41
+ export declare const MATCHING_METHOD_TAGS: Record<MatchingMethod | 'ratio', string>;
32
42
  /**
33
- * Color matching configuration options.
43
+ * Retired v4 stored values → their 5.0 replacement. Both retired methods
44
+ * fold into the suite default (there is no perceptual successor that keeps
45
+ * their exact behaviour, and a silently different non-default would be
46
+ * worse than the default).
34
47
  */
35
- export interface MatchingConfig {
36
- /** The matching algorithm to use */
37
- method: MatchingMethod;
38
- /** Custom weights for oklch-weighted method (ignored for other methods) */
39
- weights?: OklchWeights;
40
- }
48
+ export declare const LEGACY_MATCHING_METHOD_MAP: Record<string, MatchingMethod>;
49
+ /** Type guard for the 5.0 vocabulary. */
50
+ export declare function isMatchingMethod(value: unknown): value is MatchingMethod;
41
51
  /**
42
- * Default OKLCH weights for common matching presets.
52
+ * Normalize any stored/parsed method value (KV preference, localStorage,
53
+ * URL `algo` param, API body) into the 5.0 vocabulary: current values pass
54
+ * through, retired values map, anything else falls back to the default.
43
55
  */
44
- export declare const MATCHING_PRESETS: {
45
- /** Equal weight to all attributes (default) */
46
- readonly balanced: {
47
- readonly kL: 1;
48
- readonly kC: 1;
49
- readonly kH: 1;
50
- };
51
- /** Prioritize matching the hue (color), tolerate brightness differences */
52
- readonly matchHue: {
53
- readonly kL: 0.5;
54
- readonly kC: 0.8;
55
- readonly kH: 2;
56
- };
57
- /** Prioritize matching brightness (for armor visibility) */
58
- readonly matchBrightness: {
59
- readonly kL: 2;
60
- readonly kC: 1;
61
- readonly kH: 0.5;
62
- };
63
- /** Prioritize matching saturation (find vibrant alternatives) */
64
- readonly matchSaturation: {
65
- readonly kL: 0.5;
66
- readonly kC: 2;
67
- readonly kH: 0.8;
68
- };
69
- };
56
+ export declare function normalizeMatchingMethod(value: unknown): MatchingMethod;
70
57
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,GAAG,gBAAgB,CAAC;AAEjG;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,8EAA8E;IAC9E,EAAE,EAAE,MAAM,CAAC;IACX,2EAA2E;IAC3E,EAAE,EAAE,MAAM,CAAC;IACX,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,MAAM,EAAE,cAAc,CAAC;IACvB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,YAAY,CAAC;CACxB;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B,+CAA+C;;;;;;IAE/C,2EAA2E;;;;;;IAE3E,4DAA4D;;;;;;IAE5D,iEAAiE;;;;;;CAEzD,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,cAAc,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,KAAK,GAAG,aAAa,CAAC;AAEjG,qFAAqF;AACrF,eAAO,MAAM,gBAAgB,EAAE,SAAS,cAAc,EAOrD,CAAC;AAEF,+EAA+E;AAC/E,eAAO,MAAM,uBAAuB,EAAE,cAA4B,CAAC;AAEnE;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,cAAc,GAAG,OAAO,EAAE,MAAM,CAQzE,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAKrE,CAAC;AAEF,yCAAyC;AACzC,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAExE;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAMtE"}
@@ -6,17 +6,57 @@
6
6
  *
7
7
  * @module types
8
8
  */
9
+ /** Suite display order: ΔE2000 · ΔEOK · ΔE76 · REDMEAN · RGB DIST · DISTINGUISH % */
10
+ export const MATCHING_METHODS = [
11
+ 'ciede2000',
12
+ 'oklab',
13
+ 'cie76',
14
+ 'redmean',
15
+ 'rgb',
16
+ 'distinguish',
17
+ ];
18
+ /** ΔE2000 is the default everywhere — one answer to "what does CLOSE mean". */
19
+ export const DEFAULT_MATCHING_METHOD = 'ciede2000';
9
20
  /**
10
- * Default OKLCH weights for common matching presets.
21
+ * Method display tags (the short-key vocabulary; `ratio` included for the
22
+ * two tools that print it). Tags are identifiers — never localise them.
11
23
  */
12
- export const MATCHING_PRESETS = {
13
- /** Equal weight to all attributes (default) */
14
- balanced: { kL: 1.0, kC: 1.0, kH: 1.0 },
15
- /** Prioritize matching the hue (color), tolerate brightness differences */
16
- matchHue: { kL: 0.5, kC: 0.8, kH: 2.0 },
17
- /** Prioritize matching brightness (for armor visibility) */
18
- matchBrightness: { kL: 2.0, kC: 1.0, kH: 0.5 },
19
- /** Prioritize matching saturation (find vibrant alternatives) */
20
- matchSaturation: { kL: 0.5, kC: 2.0, kH: 0.8 },
24
+ export const MATCHING_METHOD_TAGS = {
25
+ ciede2000: 'ΔE2000',
26
+ oklab: 'ΔEOK',
27
+ cie76: 'ΔE76',
28
+ redmean: 'REDMEAN',
29
+ rgb: 'RGB DIST',
30
+ distinguish: 'DISTINGUISH %',
31
+ ratio: 'RATIO',
21
32
  };
33
+ /**
34
+ * Retired v4 stored values → their 5.0 replacement. Both retired methods
35
+ * fold into the suite default (there is no perceptual successor that keeps
36
+ * their exact behaviour, and a silently different non-default would be
37
+ * worse than the default).
38
+ */
39
+ export const LEGACY_MATCHING_METHOD_MAP = {
40
+ hyab: 'ciede2000',
41
+ 'oklch-weighted': 'ciede2000',
42
+ // Pre-5.0 deep links used 'euclidean' informally for RGB distance
43
+ euclidean: 'rgb',
44
+ };
45
+ /** Type guard for the 5.0 vocabulary. */
46
+ export function isMatchingMethod(value) {
47
+ return typeof value === 'string' && MATCHING_METHODS.includes(value);
48
+ }
49
+ /**
50
+ * Normalize any stored/parsed method value (KV preference, localStorage,
51
+ * URL `algo` param, API body) into the 5.0 vocabulary: current values pass
52
+ * through, retired values map, anything else falls back to the default.
53
+ */
54
+ export function normalizeMatchingMethod(value) {
55
+ if (isMatchingMethod(value))
56
+ return value;
57
+ if (typeof value === 'string' && value in LEGACY_MATCHING_METHOD_MAP) {
58
+ return LEGACY_MATCHING_METHOD_MAP[value];
59
+ }
60
+ return DEFAULT_MATCHING_METHOD;
61
+ }
22
62
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAyCH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,+CAA+C;IAC/C,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;IACvC,2EAA2E;IAC3E,QAAQ,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;IACvC,4DAA4D;IAC5D,eAAe,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;IAC9C,iEAAiE;IACjE,eAAe,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE;CACtC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AA+BH,qFAAqF;AACrF,MAAM,CAAC,MAAM,gBAAgB,GAA8B;IACzD,WAAW;IACX,OAAO;IACP,OAAO;IACP,SAAS;IACT,KAAK;IACL,aAAa;CACd,CAAC;AAEF,+EAA+E;AAC/E,MAAM,CAAC,MAAM,uBAAuB,GAAmB,WAAW,CAAC;AAEnE;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA6C;IAC5E,SAAS,EAAE,QAAQ;IACnB,KAAK,EAAE,MAAM;IACb,KAAK,EAAE,MAAM;IACb,OAAO,EAAE,SAAS;IAClB,GAAG,EAAE,UAAU;IACf,WAAW,EAAE,eAAe;IAC5B,KAAK,EAAE,OAAO;CACf,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAmC;IACxE,IAAI,EAAE,WAAW;IACjB,gBAAgB,EAAE,WAAW;IAC7B,kEAAkE;IAClE,SAAS,EAAE,KAAK;CACjB,CAAC;AAEF,yCAAyC;AACzC,MAAM,UAAU,gBAAgB,CAAC,KAAc;IAC7C,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAK,gBAAsC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC9F,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,IAAI,gBAAgB,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC1C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,0BAA0B,EAAE,CAAC;QACrE,OAAO,0BAA0B,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,uBAAuB,CAAC;AACjC,CAAC"}
@@ -74,94 +74,6 @@ export declare class LRUCache<K, V> {
74
74
  */
75
75
  get size(): number;
76
76
  }
77
- /**
78
- * Async-safe LRU cache with built-in request deduplication
79
- *
80
- * Unlike the synchronous LRUCache, this class is designed for async operations
81
- * where multiple concurrent requests for the same key should share a single
82
- * computation rather than triggering duplicate work.
83
- *
84
- * @example
85
- * ```typescript
86
- * const cache = new AsyncLRUCache<string, ApiResponse>(100);
87
- *
88
- * // Multiple concurrent calls with same key share one fetch
89
- * const [result1, result2] = await Promise.all([
90
- * cache.getOrCompute('user:123', () => fetchUser('123')),
91
- * cache.getOrCompute('user:123', () => fetchUser('123')), // Reuses first call
92
- * ]);
93
- * // fetchUser was only called once!
94
- * ```
95
- *
96
- * Implementation notes:
97
- * - Uses separate Map for pending promises (request deduplication)
98
- * - Promise is stored SYNCHRONOUSLY before any await (critical for race safety)
99
- * - Handles errors gracefully - removes from pending but doesn't cache failures
100
- * - LRU eviction when cache is full
101
- *
102
- * Per OPT-001: This addresses the concurrency limitation of the synchronous
103
- * LRUCache for async contexts.
104
- */
105
- export declare class AsyncLRUCache<K, V> {
106
- private cache;
107
- private pending;
108
- private maxSize;
109
- constructor(maxSize?: number);
110
- /**
111
- * Move an entry to the end of the Map (most recently used position).
112
- *
113
- * BUG-006: Extracted for clarity. These synchronous Map operations within
114
- * a single microtask are atomic in JavaScript's event loop — no interleaving
115
- * can occur between delete and set.
116
- */
117
- private moveToEnd;
118
- /**
119
- * Get a value from cache, or compute it if not present
120
- *
121
- * This method handles request deduplication: if a computation for the same
122
- * key is already in progress, subsequent calls will wait for that computation
123
- * rather than starting a new one.
124
- *
125
- * @param key - The cache key
126
- * @param compute - Async function to compute the value if not cached
127
- * @returns Promise resolving to the cached or computed value
128
- *
129
- * @example
130
- * ```typescript
131
- * const value = await cache.getOrCompute(
132
- * 'expensive-key',
133
- * async () => await expensiveAsyncOperation()
134
- * );
135
- * ```
136
- */
137
- getOrCompute(key: K, compute: () => Promise<V>): Promise<V>;
138
- /**
139
- * Get a value from the cache (sync check only)
140
- *
141
- * @param key - The key to look up
142
- * @returns The cached value or undefined if not found
143
- */
144
- get(key: K): V | undefined;
145
- /**
146
- * Set a value in the cache
147
- *
148
- * @param key - The key to store
149
- * @param value - The value to cache
150
- */
151
- set(key: K, value: V): void;
152
- /**
153
- * Clear all entries from the cache and pending operations
154
- */
155
- clear(): void;
156
- /**
157
- * Get the current number of cached entries
158
- */
159
- get size(): number;
160
- /**
161
- * Get the current number of pending operations
162
- */
163
- get pendingSize(): number;
164
- }
165
77
  /**
166
78
  * Validate a hexadecimal color string
167
79
  *
@@ -185,40 +97,6 @@ export declare class AsyncLRUCache<K, V> {
185
97
  * Security: Input length is validated before regex to prevent ReDoS
186
98
  */
187
99
  export declare function isValidHexColor(hex: string): boolean;
188
- /**
189
- * Type guard: Check if a value is a plain object (not array, not null)
190
- *
191
- * @param value - Value to check
192
- * @returns true if value is a plain object, false otherwise
193
- *
194
- * @example
195
- * ```typescript
196
- * isObject({ a: 1 }) // Returns true
197
- * isObject({}) // Returns true
198
- * isObject([]) // Returns false (array)
199
- * isObject(null) // Returns false
200
- * isObject(new Date()) // Returns true (object instance)
201
- * ```
202
- */
203
- export declare function isObject(value: unknown): value is Record<string, unknown>;
204
- /**
205
- * Type guard: Check if a value is null or undefined
206
- *
207
- * @param value - Value to check
208
- * @returns true if value is null or undefined, false otherwise
209
- *
210
- * @example
211
- * ```typescript
212
- * isNullish(null) // Returns true
213
- * isNullish(undefined) // Returns true
214
- * isNullish(0) // Returns false
215
- * isNullish('') // Returns false
216
- * isNullish(false) // Returns false
217
- * ```
218
- *
219
- * Note: More precise than falsy check - only null/undefined, not 0/false/''
220
- */
221
- export declare function isNullish(value: unknown): value is null | undefined;
222
100
  /**
223
101
  * Sleep for a specified duration (async delay)
224
102
  *
@@ -285,7 +163,42 @@ export declare function sleep(ms: number): Promise<void>;
285
163
  * Retries on all errors including AbortError (timeout), allowing
286
164
  * transient network issues to be recovered from.
287
165
  */
288
- export declare function retry<T>(fn: () => Promise<T>, maxAttempts?: number, delayMs?: number, logger?: Logger): Promise<T>;
166
+ export declare function retry<T>(fn: () => Promise<T>, maxAttempts?: number, delayMs?: number, logger?: Logger, shouldRetry?: (error: unknown) => boolean): Promise<T>;
167
+ /**
168
+ * Three-character axis code for a localized dye name (the bot's 14C triangle
169
+ * and 13C·1 contrast plot).
170
+ *
171
+ * The order of operations is the whole point, and it is why this lives in
172
+ * core rather than being re-derived per generator:
173
+ *
174
+ * 1. **Uppercase before slicing.** `'ß'.toUpperCase()` is `'SS'` — two
175
+ * characters — so slicing first and uppercasing after silently yields a
176
+ * four-character code for German names.
177
+ * 2. **Strip punctuation.** `Ul'dahbrauner` must abbreviate to `ULD`, not
178
+ * `UL'` — an apostrophe carries no identifying signal in a 3-char code.
179
+ * 3. **CJK keeps its first three characters** and is not uppercased: those
180
+ * scripts have no case, and each glyph already carries a full word's
181
+ * worth of meaning.
182
+ *
183
+ * A code is deliberately **not** globally unique — the nine Metallics all
184
+ * abbreviate to `MET`, the Dark run to `DAR`, and every German
185
+ * `Schnee-`/`Schiefer-` name collides on `SCH`. That is accepted because a
186
+ * code never appears alone: the swatch pair sits on the same row, so colour
187
+ * disambiguates the letters and the letters disambiguate the colour.
188
+ *
189
+ * @param name - The dye name, already localized
190
+ * @param locale - Locale code; `ja`/`zh`/`ko` take the CJK path
191
+ * @returns A code of at most three characters
192
+ *
193
+ * @example
194
+ * ```typescript
195
+ * abbreviateDyeName("Ul'dahbrauner", 'de') // 'ULD'
196
+ * abbreviateDyeName('Rußschwarzer', 'de') // 'RUS' (ß → SS, then sliced)
197
+ * abbreviateDyeName('Metallic Gold', 'en') // 'MET'
198
+ * abbreviateDyeName('ダラガブレッド', 'ja') // 'ダラガ'
199
+ * ```
200
+ */
201
+ export declare function abbreviateDyeName(name: string, locale: string): string;
289
202
  /**
290
203
  * Generate a simple checksum for data integrity checking
291
204
  *
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAM1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAa;IAKlC;;;;;;;OAOG;IACH,OAAO,CAAC,SAAS;IAKjB;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAO1B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAa3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,aAAa,CAAC,CAAC,EAAE,CAAC;IAC7B,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAa;IAMlC;;;;;;OAMG;IACH,OAAO,CAAC,SAAS;IAKjB;;;;;;;;;;;;;;;;;;OAkBG;IACG,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IA+BjE;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAO1B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAa3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;CACF;AA6PD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUpD;AA6ID;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEzE;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,SAAS,CAEnE;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/C;AA6BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,WAAW,GAAE,MAAU,EACvB,OAAO,GAAE,MAAa,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,CAAC,CAAC,CAsBZ;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAStD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAM1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,qBAAa,QAAQ,CAAC,CAAC,EAAE,CAAC;IACxB,OAAO,CAAC,KAAK,CAAY;IACzB,OAAO,CAAC,OAAO,CAAS;gBAEZ,OAAO,GAAE,MAAa;IAKlC;;;;;;;OAOG;IACH,OAAO,CAAC,SAAS;IAKjB;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,SAAS;IAO1B;;;;;OAKG;IACH,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI;IAa3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAsED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUpD;AA+ED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAG/C;AA6BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAsB,KAAK,CAAC,CAAC,EAC3B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,WAAW,GAAE,MAAU,EACvB,OAAO,GAAE,MAAa,EACtB,MAAM,CAAC,EAAE,MAAM,EAIf,WAAW,GAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAoB,GACpD,OAAO,CAAC,CAAC,CAAC,CA2BZ;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAMtE;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAStD"}