@xivdyetools/core 1.5.6 → 1.7.0

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.
@@ -2,7 +2,7 @@
2
2
  "locale": "de",
3
3
  "meta": {
4
4
  "version": "1.0.0",
5
- "generated": "2026-01-07T14:31:57.562Z",
5
+ "generated": "2026-01-08T07:20:00.837Z",
6
6
  "dyeCount": 125
7
7
  },
8
8
  "labels": {
@@ -2,7 +2,7 @@
2
2
  "locale": "en",
3
3
  "meta": {
4
4
  "version": "1.0.0",
5
- "generated": "2026-01-07T14:31:57.559Z",
5
+ "generated": "2026-01-08T07:20:00.834Z",
6
6
  "dyeCount": 125
7
7
  },
8
8
  "labels": {
@@ -2,7 +2,7 @@
2
2
  "locale": "fr",
3
3
  "meta": {
4
4
  "version": "1.0.0",
5
- "generated": "2026-01-07T14:31:57.563Z",
5
+ "generated": "2026-01-08T07:20:00.838Z",
6
6
  "dyeCount": 125
7
7
  },
8
8
  "labels": {
@@ -2,7 +2,7 @@
2
2
  "locale": "ja",
3
3
  "meta": {
4
4
  "version": "1.0.0",
5
- "generated": "2026-01-07T14:31:57.561Z",
5
+ "generated": "2026-01-08T07:20:00.836Z",
6
6
  "dyeCount": 125
7
7
  },
8
8
  "labels": {
package/dist/index.d.ts CHANGED
@@ -6,11 +6,13 @@ export { LocalizationService } from './services/LocalizationService.js';
6
6
  export { PresetService } from './services/PresetService.js';
7
7
  export { PaletteService } from './services/PaletteService.js';
8
8
  export type { PaletteExtractionOptions, ExtractedColor, PaletteMatch, PaletteServiceOptions, } from './services/PaletteService.js';
9
- export type { Dye, LocalizedDye, RGB, HSV, HexColor, VisionType, Matrix3x3, ColorblindMatrices, ErrorSeverity, PriceData, CachedData, LocaleCode, TranslationKey, HarmonyTypeKey, JobKey, GrandCompanyKey, LocaleData, LocalePreference, Logger, PresetCategory, CategoryMeta, PresetPalette, ResolvedPreset, PresetData, PresetStatus, CommunityPreset, PresetSubmission, PresetListResponse, PresetSubmitResponse, VoteResponse, PresetFilters, } from './types/index.js';
10
- export { AppError, ErrorCode, createHexColor, NoOpLogger, ConsoleLogger } from './types/index.js';
9
+ export { CharacterColorService } from './services/CharacterColorService.js';
10
+ export type { Dye, LocalizedDye, RGB, HSV, HexColor, VisionType, Matrix3x3, ColorblindMatrices, ErrorSeverity, PriceData, CachedData, LocaleCode, TranslationKey, HarmonyTypeKey, JobKey, GrandCompanyKey, LocaleData, LocalePreference, Logger, PresetCategory, CategoryMeta, PresetPalette, ResolvedPreset, PresetData, PresetStatus, CommunityPreset, PresetSubmission, PresetListResponse, PresetSubmitResponse, VoteResponse, PresetFilters, CharacterColor, CharacterColorMatch, SubRace, Gender, Race, } from './types/index.js';
11
+ export { AppError, ErrorCode, createHexColor, NoOpLogger, ConsoleLogger, RACE_SUBRACES, SUBRACE_TO_RACE, COLOR_GRID_DIMENSIONS, } from './types/index.js';
11
12
  export { RGB_MIN, RGB_MAX, HUE_MIN, HUE_MAX, SATURATION_MIN, SATURATION_MAX, VALUE_MIN, VALUE_MAX, COLOR_DISTANCE_MAX, VISION_TYPES, VISION_TYPE_LABELS, BRETTEL_MATRICES, PATTERNS, UNIVERSALIS_API_BASE, UNIVERSALIS_API_TIMEOUT, UNIVERSALIS_API_RETRY_COUNT, UNIVERSALIS_API_RETRY_DELAY, API_CACHE_TTL, API_DEBOUNCE_DELAY, API_CACHE_VERSION, API_MAX_RESPONSE_SIZE, API_RATE_LIMIT_DELAY, } from './constants/index.js';
12
13
  export { clamp, lerp, round, distance, unique, groupBy, sortByProperty, filterNulls, isValidHexColor, isValidRGB, isValidHSV, isString, isNumber, isArray, isObject, isNullish, sleep, retry, isAbortError, generateChecksum, } from './utils/index.js';
13
14
  export { default as dyeDatabase } from './data/colors_xiv.json';
14
15
  export { default as presetData } from './data/presets.json';
16
+ export { default as characterColorData } from './data/character_colors.json';
15
17
  export { VERSION } from './version.js';
16
18
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EACV,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAGtC,YAAY,EACV,GAAG,EACH,YAAY,EACZ,GAAG,EACH,GAAG,EACH,QAAQ,EACR,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,UAAU,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,MAAM,EACN,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,MAAM,EAEN,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,UAAU,EAEV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,aAAa,GACd,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAGlG,OAAO,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,cAAc,EACd,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,KAAK,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAuB;AACtF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAuB;AAGlF,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC1E,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,YAAY,EACV,wBAAwB,EACxB,cAAc,EACd,YAAY,EACZ,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AAG5E,YAAY,EACV,GAAG,EACH,YAAY,EACZ,GAAG,EACH,GAAG,EACH,QAAQ,EACR,UAAU,EACV,SAAS,EACT,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,UAAU,EACV,UAAU,EACV,cAAc,EACd,cAAc,EACd,MAAM,EACN,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,MAAM,EAEN,cAAc,EACd,YAAY,EACZ,aAAa,EACb,cAAc,EACd,UAAU,EAEV,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,aAAa,EAEb,cAAc,EACd,mBAAmB,EACnB,OAAO,EACP,MAAM,EACN,IAAI,GACL,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,QAAQ,EACR,SAAS,EACT,cAAc,EACd,UAAU,EACV,aAAa,EAEb,aAAa,EACb,eAAe,EACf,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,cAAc,EACd,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,KAAK,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAuB;AACtF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAuB;AAClF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,8BAA8B,CAAuB;AAGnG,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js CHANGED
@@ -5,7 +5,10 @@ export { APIService, MemoryCacheBackend } from './services/APIService.js';
5
5
  export { LocalizationService } from './services/LocalizationService.js';
6
6
  export { PresetService } from './services/PresetService.js';
7
7
  export { PaletteService } from './services/PaletteService.js';
8
- export { AppError, ErrorCode, createHexColor, NoOpLogger, ConsoleLogger } from './types/index.js';
8
+ export { CharacterColorService } from './services/CharacterColorService.js';
9
+ export { AppError, ErrorCode, createHexColor, NoOpLogger, ConsoleLogger,
10
+ // Character constants
11
+ RACE_SUBRACES, SUBRACE_TO_RACE, COLOR_GRID_DIMENSIONS, } from './types/index.js';
9
12
  // Constants
10
13
  export { RGB_MIN, RGB_MAX, HUE_MIN, HUE_MAX, SATURATION_MIN, SATURATION_MAX, VALUE_MIN, VALUE_MAX, COLOR_DISTANCE_MAX, VISION_TYPES, VISION_TYPE_LABELS, BRETTEL_MATRICES, PATTERNS, UNIVERSALIS_API_BASE, UNIVERSALIS_API_TIMEOUT, UNIVERSALIS_API_RETRY_COUNT, UNIVERSALIS_API_RETRY_DELAY, API_CACHE_TTL, API_DEBOUNCE_DELAY, API_CACHE_VERSION, API_MAX_RESPONSE_SIZE, API_RATE_LIMIT_DELAY, } from './constants/index.js';
11
14
  // Utils
@@ -13,6 +16,7 @@ export { clamp, lerp, round, distance, unique, groupBy, sortByProperty, filterNu
13
16
  // Data (for browser environments - to be injected)
14
17
  export { default as dyeDatabase } from './data/colors_xiv.json' with { type: 'json' };
15
18
  export { default as presetData } from './data/presets.json' with { type: 'json' };
19
+ export { default as characterColorData } from './data/character_colors.json' with { type: 'json' };
16
20
  // Version (auto-generated from package.json during build)
17
21
  export { VERSION } from './version.js';
18
22
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AA4C9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAElG,YAAY;AACZ,OAAO,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,QAAQ;AACR,OAAO,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,cAAc,EACd,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,KAAK,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,mDAAmD;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAElF,0DAA0D;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,mCAAmC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAO9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,qCAAqC,CAAC;AA4C5E,OAAO,EACL,QAAQ,EACR,SAAS,EACT,cAAc,EACd,UAAU,EACV,aAAa;AACb,sBAAsB;AACtB,aAAa,EACb,eAAe,EACf,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAE1B,YAAY;AACZ,OAAO,EACL,OAAO,EACP,OAAO,EACP,OAAO,EACP,OAAO,EACP,cAAc,EACd,cAAc,EACd,SAAS,EACT,SAAS,EACT,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,gBAAgB,EAChB,QAAQ,EACR,oBAAoB,EACpB,uBAAuB,EACvB,2BAA2B,EAC3B,2BAA2B,EAC3B,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAE9B,QAAQ;AACR,OAAO,EACL,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,MAAM,EACN,OAAO,EACP,cAAc,EACd,WAAW,EACX,eAAe,EACf,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,OAAO,EACP,QAAQ,EACR,SAAS,EACT,KAAK,EACL,KAAK,EACL,YAAY,EACZ,gBAAgB,GACjB,MAAM,kBAAkB,CAAC;AAE1B,mDAAmD;AACnD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtF,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,qBAAqB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAClF,OAAO,EAAE,OAAO,IAAI,kBAAkB,EAAE,MAAM,8BAA8B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAEnG,0DAA0D;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * @xivdyetools/core - Character Color Service
3
+ *
4
+ * Service for accessing FFXIV character customization colors and
5
+ * finding matching dyes for hair, eye, skin tones etc.
6
+ *
7
+ * @module services/CharacterColorService
8
+ * @example
9
+ * ```typescript
10
+ * import { CharacterColorService, DyeService, dyeDatabase } from '@xivdyetools/core';
11
+ *
12
+ * const characterColors = new CharacterColorService();
13
+ * const dyeService = new DyeService(dyeDatabase);
14
+ *
15
+ * // Get all eye colors
16
+ * const eyeColors = characterColors.getEyeColors();
17
+ *
18
+ * // Find closest dyes to an eye color
19
+ * const matches = characterColors.findClosestDyes(eyeColors[47], dyeService, 3);
20
+ * ```
21
+ */
22
+ import type { CharacterColor, CharacterColorMatch, SharedColorCategory, RaceSpecificColorCategory, SubRace, Gender } from '@xivdyetools/types';
23
+ import type { DyeService } from './DyeService.js';
24
+ /**
25
+ * Service for accessing FFXIV character customization colors
26
+ */
27
+ export declare class CharacterColorService {
28
+ private data;
29
+ constructor();
30
+ /**
31
+ * Get all eye colors (192 colors)
32
+ */
33
+ getEyeColors(): CharacterColor[];
34
+ /**
35
+ * Get all hair highlight colors (192 colors)
36
+ */
37
+ getHighlightColors(): CharacterColor[];
38
+ /**
39
+ * Get all dark lip colors (96 colors)
40
+ */
41
+ getLipColorsDark(): CharacterColor[];
42
+ /**
43
+ * Get all light lip colors (96 colors)
44
+ */
45
+ getLipColorsLight(): CharacterColor[];
46
+ /**
47
+ * Get all tattoo/limbal ring colors (192 colors)
48
+ */
49
+ getTattooColors(): CharacterColor[];
50
+ /**
51
+ * Get all dark face paint colors (96 colors)
52
+ */
53
+ getFacePaintColorsDark(): CharacterColor[];
54
+ /**
55
+ * Get all light face paint colors (96 colors)
56
+ */
57
+ getFacePaintColorsLight(): CharacterColor[];
58
+ /**
59
+ * Get shared colors by category
60
+ */
61
+ getSharedColors(category: SharedColorCategory): CharacterColor[];
62
+ /**
63
+ * Get hair colors for a specific subrace and gender (192 colors each)
64
+ */
65
+ getHairColors(subrace: SubRace, gender: Gender): CharacterColor[];
66
+ /**
67
+ * Get skin colors for a specific subrace and gender (192 colors each)
68
+ */
69
+ getSkinColors(subrace: SubRace, gender: Gender): CharacterColor[];
70
+ /**
71
+ * Get race-specific colors by category
72
+ */
73
+ getRaceSpecificColors(category: RaceSpecificColorCategory, subrace: SubRace, gender: Gender): CharacterColor[];
74
+ /**
75
+ * Find the closest matching dyes to a character color
76
+ *
77
+ * @param color - The character color to match
78
+ * @param dyeService - DyeService instance for dye lookup
79
+ * @param count - Number of matches to return (default: 3)
80
+ * @returns Array of matches sorted by distance (closest first)
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * const eyeColor = characterColors.getEyeColors()[47];
85
+ * const matches = characterColors.findClosestDyes(eyeColor, dyeService, 3);
86
+ *
87
+ * console.log(matches[0].dye.name); // "Chestnut Brown"
88
+ * console.log(matches[0].distance); // 4.2
89
+ * ```
90
+ */
91
+ findClosestDyes(color: CharacterColor, dyeService: DyeService, count?: number): CharacterColorMatch[];
92
+ /**
93
+ * Find the single closest dye to a character color
94
+ */
95
+ findClosestDye(color: CharacterColor, dyeService: DyeService): CharacterColorMatch | null;
96
+ /**
97
+ * Find all dyes within a color distance threshold
98
+ */
99
+ findDyesWithinDistance(color: CharacterColor, dyeService: DyeService, maxDistance: number): CharacterColorMatch[];
100
+ /**
101
+ * Get a specific color by index from a shared category
102
+ */
103
+ getSharedColorByIndex(category: SharedColorCategory, index: number): CharacterColor | null;
104
+ /**
105
+ * Get a specific color by index from a race-specific category
106
+ */
107
+ getRaceSpecificColorByIndex(category: RaceSpecificColorCategory, subrace: SubRace, gender: Gender, index: number): CharacterColor | null;
108
+ /**
109
+ * Get all available subraces
110
+ */
111
+ getAvailableSubraces(): SubRace[];
112
+ /**
113
+ * Get the data version
114
+ */
115
+ getVersion(): string;
116
+ /**
117
+ * Get grid column count (always 8)
118
+ */
119
+ getGridColumns(): number;
120
+ /**
121
+ * Calculate Euclidean distance in RGB space
122
+ */
123
+ private calculateDistance;
124
+ }
125
+ //# sourceMappingURL=CharacterColorService.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CharacterColorService.d.ts","sourceRoot":"","sources":["../../src/services/CharacterColorService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,EACzB,OAAO,EACP,MAAM,EACP,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAqBlD;;GAEG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,IAAI,CAAqB;;IAUjC;;OAEG;IACH,YAAY,IAAI,cAAc,EAAE;IAIhC;;OAEG;IACH,kBAAkB,IAAI,cAAc,EAAE;IAItC;;OAEG;IACH,gBAAgB,IAAI,cAAc,EAAE;IAIpC;;OAEG;IACH,iBAAiB,IAAI,cAAc,EAAE;IAIrC;;OAEG;IACH,eAAe,IAAI,cAAc,EAAE;IAInC;;OAEG;IACH,sBAAsB,IAAI,cAAc,EAAE;IAI1C;;OAEG;IACH,uBAAuB,IAAI,cAAc,EAAE;IAI3C;;OAEG;IACH,eAAe,CAAC,QAAQ,EAAE,mBAAmB,GAAG,cAAc,EAAE;IAQhE;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE;IAIjE;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,EAAE;IAIjE;;OAEG;IACH,qBAAqB,CACnB,QAAQ,EAAE,yBAAyB,EACnC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,GACb,cAAc,EAAE;IAQnB;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CACb,KAAK,EAAE,cAAc,EACrB,UAAU,EAAE,UAAU,EACtB,KAAK,GAAE,MAAU,GAChB,mBAAmB,EAAE;IAuBxB;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,UAAU,GAAG,mBAAmB,GAAG,IAAI;IAKzF;;OAEG;IACH,sBAAsB,CACpB,KAAK,EAAE,cAAc,EACrB,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,MAAM,GAClB,mBAAmB,EAAE;IA2BxB;;OAEG;IACH,qBAAqB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAK1F;;OAEG;IACH,2BAA2B,CACzB,QAAQ,EAAE,yBAAyB,EACnC,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GACZ,cAAc,GAAG,IAAI;IASxB;;OAEG;IACH,oBAAoB,IAAI,OAAO,EAAE;IAKjC;;OAEG;IACH,UAAU,IAAI,MAAM;IAIpB;;OAEG;IACH,cAAc,IAAI,MAAM;IAQxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAM1B"}
@@ -0,0 +1,223 @@
1
+ /**
2
+ * @xivdyetools/core - Character Color Service
3
+ *
4
+ * Service for accessing FFXIV character customization colors and
5
+ * finding matching dyes for hair, eye, skin tones etc.
6
+ *
7
+ * @module services/CharacterColorService
8
+ * @example
9
+ * ```typescript
10
+ * import { CharacterColorService, DyeService, dyeDatabase } from '@xivdyetools/core';
11
+ *
12
+ * const characterColors = new CharacterColorService();
13
+ * const dyeService = new DyeService(dyeDatabase);
14
+ *
15
+ * // Get all eye colors
16
+ * const eyeColors = characterColors.getEyeColors();
17
+ *
18
+ * // Find closest dyes to an eye color
19
+ * const matches = characterColors.findClosestDyes(eyeColors[47], dyeService, 3);
20
+ * ```
21
+ */
22
+ // Import character color data
23
+ import characterColorData from '../data/character_colors.json';
24
+ /**
25
+ * Service for accessing FFXIV character customization colors
26
+ */
27
+ export class CharacterColorService {
28
+ constructor() {
29
+ this.data = characterColorData;
30
+ }
31
+ // ==========================================================================
32
+ // Shared Colors (Race-Agnostic)
33
+ // ==========================================================================
34
+ /**
35
+ * Get all eye colors (192 colors)
36
+ */
37
+ getEyeColors() {
38
+ return this.data.shared.eyeColors || [];
39
+ }
40
+ /**
41
+ * Get all hair highlight colors (192 colors)
42
+ */
43
+ getHighlightColors() {
44
+ return this.data.shared.highlightColors || [];
45
+ }
46
+ /**
47
+ * Get all dark lip colors (96 colors)
48
+ */
49
+ getLipColorsDark() {
50
+ return this.data.shared.lipColorsDark || [];
51
+ }
52
+ /**
53
+ * Get all light lip colors (96 colors)
54
+ */
55
+ getLipColorsLight() {
56
+ return this.data.shared.lipColorsLight || [];
57
+ }
58
+ /**
59
+ * Get all tattoo/limbal ring colors (192 colors)
60
+ */
61
+ getTattooColors() {
62
+ return this.data.shared.tattooColors || [];
63
+ }
64
+ /**
65
+ * Get all dark face paint colors (96 colors)
66
+ */
67
+ getFacePaintColorsDark() {
68
+ return this.data.shared.facePaintColorsDark || [];
69
+ }
70
+ /**
71
+ * Get all light face paint colors (96 colors)
72
+ */
73
+ getFacePaintColorsLight() {
74
+ return this.data.shared.facePaintColorsLight || [];
75
+ }
76
+ /**
77
+ * Get shared colors by category
78
+ */
79
+ getSharedColors(category) {
80
+ return this.data.shared[category] || [];
81
+ }
82
+ // ==========================================================================
83
+ // Race-Specific Colors
84
+ // ==========================================================================
85
+ /**
86
+ * Get hair colors for a specific subrace and gender (192 colors each)
87
+ */
88
+ getHairColors(subrace, gender) {
89
+ return this.data.raceSpecific.hairColors?.[subrace]?.[gender] || [];
90
+ }
91
+ /**
92
+ * Get skin colors for a specific subrace and gender (192 colors each)
93
+ */
94
+ getSkinColors(subrace, gender) {
95
+ return this.data.raceSpecific.skinColors?.[subrace]?.[gender] || [];
96
+ }
97
+ /**
98
+ * Get race-specific colors by category
99
+ */
100
+ getRaceSpecificColors(category, subrace, gender) {
101
+ return this.data.raceSpecific[category]?.[subrace]?.[gender] || [];
102
+ }
103
+ // ==========================================================================
104
+ // Color Matching
105
+ // ==========================================================================
106
+ /**
107
+ * Find the closest matching dyes to a character color
108
+ *
109
+ * @param color - The character color to match
110
+ * @param dyeService - DyeService instance for dye lookup
111
+ * @param count - Number of matches to return (default: 3)
112
+ * @returns Array of matches sorted by distance (closest first)
113
+ *
114
+ * @example
115
+ * ```typescript
116
+ * const eyeColor = characterColors.getEyeColors()[47];
117
+ * const matches = characterColors.findClosestDyes(eyeColor, dyeService, 3);
118
+ *
119
+ * console.log(matches[0].dye.name); // "Chestnut Brown"
120
+ * console.log(matches[0].distance); // 4.2
121
+ * ```
122
+ */
123
+ findClosestDyes(color, dyeService, count = 3) {
124
+ const allDyes = dyeService.getAllDyes();
125
+ const results = [];
126
+ for (const dye of allDyes) {
127
+ // Skip Facewear dyes (not usable for regular glamour)
128
+ if (dye.category === 'Facewear') {
129
+ continue;
130
+ }
131
+ const distance = this.calculateDistance(color.rgb, dye.rgb);
132
+ results.push({
133
+ characterColor: color,
134
+ dye,
135
+ distance,
136
+ });
137
+ }
138
+ // Sort by distance and return top N
139
+ results.sort((a, b) => a.distance - b.distance);
140
+ return results.slice(0, count);
141
+ }
142
+ /**
143
+ * Find the single closest dye to a character color
144
+ */
145
+ findClosestDye(color, dyeService) {
146
+ const matches = this.findClosestDyes(color, dyeService, 1);
147
+ return matches[0] || null;
148
+ }
149
+ /**
150
+ * Find all dyes within a color distance threshold
151
+ */
152
+ findDyesWithinDistance(color, dyeService, maxDistance) {
153
+ const allDyes = dyeService.getAllDyes();
154
+ const results = [];
155
+ for (const dye of allDyes) {
156
+ if (dye.category === 'Facewear') {
157
+ continue;
158
+ }
159
+ const distance = this.calculateDistance(color.rgb, dye.rgb);
160
+ if (distance <= maxDistance) {
161
+ results.push({
162
+ characterColor: color,
163
+ dye,
164
+ distance,
165
+ });
166
+ }
167
+ }
168
+ results.sort((a, b) => a.distance - b.distance);
169
+ return results;
170
+ }
171
+ // ==========================================================================
172
+ // Color Lookup
173
+ // ==========================================================================
174
+ /**
175
+ * Get a specific color by index from a shared category
176
+ */
177
+ getSharedColorByIndex(category, index) {
178
+ const colors = this.getSharedColors(category);
179
+ return colors.find((c) => c.index === index) || null;
180
+ }
181
+ /**
182
+ * Get a specific color by index from a race-specific category
183
+ */
184
+ getRaceSpecificColorByIndex(category, subrace, gender, index) {
185
+ const colors = this.getRaceSpecificColors(category, subrace, gender);
186
+ return colors.find((c) => c.index === index) || null;
187
+ }
188
+ // ==========================================================================
189
+ // Metadata
190
+ // ==========================================================================
191
+ /**
192
+ * Get all available subraces
193
+ */
194
+ getAvailableSubraces() {
195
+ const hairColors = this.data.raceSpecific.hairColors || {};
196
+ return Object.keys(hairColors);
197
+ }
198
+ /**
199
+ * Get the data version
200
+ */
201
+ getVersion() {
202
+ return this.data.meta.version;
203
+ }
204
+ /**
205
+ * Get grid column count (always 8)
206
+ */
207
+ getGridColumns() {
208
+ return this.data.meta.gridColumns;
209
+ }
210
+ // ==========================================================================
211
+ // Private Helpers
212
+ // ==========================================================================
213
+ /**
214
+ * Calculate Euclidean distance in RGB space
215
+ */
216
+ calculateDistance(rgb1, rgb2) {
217
+ const dr = rgb1.r - rgb2.r;
218
+ const dg = rgb1.g - rgb2.g;
219
+ const db = rgb1.b - rgb2.b;
220
+ return Math.sqrt(dr * dr + dg * dg + db * db);
221
+ }
222
+ }
223
+ //# sourceMappingURL=CharacterColorService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CharacterColorService.js","sourceRoot":"","sources":["../../src/services/CharacterColorService.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAaH,8BAA8B;AAC9B,OAAO,kBAAkB,MAAM,+BAA+B,CAAC;AAkB/D;;GAEG;AACH,MAAM,OAAO,qBAAqB;IAGhC;QACE,IAAI,CAAC,IAAI,GAAG,kBAAwC,CAAC;IACvD,CAAC;IAED,6EAA6E;IAC7E,gCAAgC;IAChC,6EAA6E;IAE7E;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;IAChD,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,iBAAiB;QACf,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,eAAe;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,IAAI,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,uBAAuB;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,oBAAoB,IAAI,EAAE,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,eAAe,CAAC,QAA6B;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1C,CAAC;IAED,6EAA6E;IAC7E,uBAAuB;IACvB,6EAA6E;IAE7E;;OAEG;IACH,aAAa,CAAC,OAAgB,EAAE,MAAc;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,aAAa,CAAC,OAAgB,EAAE,MAAc;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACtE,CAAC;IAED;;OAEG;IACH,qBAAqB,CACnB,QAAmC,EACnC,OAAgB,EAChB,MAAc;QAEd,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;IACrE,CAAC;IAED,6EAA6E;IAC7E,iBAAiB;IACjB,6EAA6E;IAE7E;;;;;;;;;;;;;;;;OAgBG;IACH,eAAe,CACb,KAAqB,EACrB,UAAsB,EACtB,QAAgB,CAAC;QAEjB,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,sDAAsD;YACtD,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAChC,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5D,OAAO,CAAC,IAAI,CAAC;gBACX,cAAc,EAAE,KAAK;gBACrB,GAAG;gBACH,QAAQ;aACT,CAAC,CAAC;QACL,CAAC;QAED,oCAAoC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,KAAqB,EAAE,UAAsB;QAC1D,MAAM,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC3D,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,sBAAsB,CACpB,KAAqB,EACrB,UAAsB,EACtB,WAAmB;QAEnB,MAAM,OAAO,GAAG,UAAU,CAAC,UAAU,EAAE,CAAC;QACxC,MAAM,OAAO,GAA0B,EAAE,CAAC;QAE1C,KAAK,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAChC,SAAS;YACX,CAAC;YAED,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YAC5D,IAAI,QAAQ,IAAI,WAAW,EAAE,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC;oBACX,cAAc,EAAE,KAAK;oBACrB,GAAG;oBACH,QAAQ;iBACT,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,6EAA6E;IAC7E,eAAe;IACf,6EAA6E;IAE7E;;OAEG;IACH,qBAAqB,CAAC,QAA6B,EAAE,KAAa;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC;IACvD,CAAC;IAED;;OAEG;IACH,2BAA2B,CACzB,QAAmC,EACnC,OAAgB,EAChB,MAAc,EACd,KAAa;QAEb,MAAM,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QACrE,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,IAAI,IAAI,CAAC;IACvD,CAAC;IAED,6EAA6E;IAC7E,WAAW;IACX,6EAA6E;IAE7E;;OAEG;IACH,oBAAoB;QAClB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,IAAI,EAAE,CAAC;QAC3D,OAAO,MAAM,CAAC,IAAI,CAAC,UAAU,CAAc,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACpC,CAAC;IAED,6EAA6E;IAC7E,kBAAkB;IAClB,6EAA6E;IAE7E;;OAEG;IACK,iBAAiB,CAAC,IAAS,EAAE,IAAS;QAC5C,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAChD,CAAC;CACF"}
@@ -33,6 +33,7 @@ export interface DyeDatabaseConfig {
33
33
  export declare class DyeDatabase {
34
34
  private dyes;
35
35
  private dyesByIdMap;
36
+ private dyesByStainIdMap;
36
37
  private dyesByHueBucket;
37
38
  private kdTree;
38
39
  private isLoaded;
@@ -79,6 +80,28 @@ export declare class DyeDatabase {
79
80
  * Get dye by ID
80
81
  */
81
82
  getDyeById(id: number): Dye | null;
83
+ /**
84
+ * Get dye by stainID (game's internal stain table ID)
85
+ *
86
+ * Use this method when interfacing with plugins like Glamourer or Mare Synchronos
87
+ * that expose stainID rather than itemID.
88
+ *
89
+ * **Note:** For stable references, prefer `getDyeById()` with itemID.
90
+ *
91
+ * @param stainId - The game's stain table ID (1-125)
92
+ * @returns The matching dye or null if not found
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * // Glamourer uses stainID internally
97
+ * const dye = database.getByStainId(1); // Snow White
98
+ * console.log(dye?.name); // "Snow White"
99
+ * console.log(dye?.itemID); // 5729
100
+ * ```
101
+ *
102
+ * @since 2.1.0
103
+ */
104
+ getByStainId(stainId: number): Dye | null;
82
105
  /**
83
106
  * Get multiple dyes by IDs
84
107
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DyeDatabase.d.ts","sourceRoot":"","sources":["../../../src/services/dye/DyeDatabase.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAgB,MAAM,wBAAwB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,GAAG;IACtC,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,WAAW;IAEtB,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,WAAW,CAAuC;IAG1D,OAAO,CAAC,eAAe,CAAyC;IAEhE,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAGhC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAE9C;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAsD;IAE5F;;;OAGG;gBACS,MAAM,GAAE,iBAAsB;IAI1C;;;OAGG;IACH,OAAO,CAAC,SAAS;IAgBjB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAsGlB;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAmHlC;;OAEG;IACH,YAAY,IAAI,IAAI;IAMpB;;OAEG;IACH,UAAU,IAAI,GAAG,EAAE;IAKnB;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAKlC;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE;IAQlC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,WAAW,IAAI,MAAM;IAKrB;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAWzB;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAMjC;;;OAGG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAmBrE;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE;IAKzC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,eAAe,IAAI,WAAW,EAAE;CAIjC"}
1
+ {"version":3,"file":"DyeDatabase.d.ts","sourceRoot":"","sources":["../../../src/services/dye/DyeDatabase.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,MAAM,EAAgB,MAAM,wBAAwB,CAAC;AAE9D;;;;GAIG;AACH,MAAM,WAAW,WAAY,SAAQ,GAAG;IACtC,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,qBAAa,WAAW;IAEtB,OAAO,CAAC,IAAI,CAAqB;IACjC,OAAO,CAAC,WAAW,CAAuC;IAE1D,OAAO,CAAC,gBAAgB,CAAuC;IAG/D,OAAO,CAAC,eAAe,CAAyC;IAEhE,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAkB;IAClC,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAGhC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,eAAe,CAAM;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAM;IAE9C;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAsD;IAE5F;;;OAGG;gBACS,MAAM,GAAE,iBAAsB;IAI1C;;;OAGG;IACH,OAAO,CAAC,SAAS;IAgBjB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IAsGlB;;;OAGG;IACH,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IA2HlC;;OAEG;IACH,YAAY,IAAI,IAAI;IAMpB;;OAEG;IACH,UAAU,IAAI,GAAG,EAAE;IAKnB;;OAEG;IACH,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAKlC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI;IAKzC;;OAEG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,GAAG,EAAE;IAQlC;;OAEG;IACH,cAAc,IAAI,OAAO;IAIzB;;OAEG;IACH,iBAAiB,IAAI,MAAM;IAI3B;;OAEG;IACH,WAAW,IAAI,MAAM;IAKrB;;OAEG;IACH,aAAa,IAAI,MAAM,EAAE;IAWzB;;OAEG;IACH,SAAS,IAAI,MAAM,GAAG,IAAI;IAI1B;;;OAGG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAMjC;;;OAGG;IACH,qBAAqB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE;IAmBrE;;OAEG;IACH,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,EAAE;IAKzC;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,eAAe,IAAI,WAAW,EAAE;CAIjC"}
@@ -19,6 +19,8 @@ export class DyeDatabase {
19
19
  // Per MEM-001: Store DyeInternal with pre-computed lowercase fields
20
20
  this.dyes = [];
21
21
  this.dyesByIdMap = new Map();
22
+ // Per Phase-1: StainID map for plugin interoperability (Glamourer, Mare, etc.)
23
+ this.dyesByStainIdMap = new Map();
22
24
  // Per P-2: Hue-indexed map for fast harmony lookups (70-90% speedup)
23
25
  // Maps hue bucket (0-35 for 10° buckets) to array of dyes in that range
24
26
  this.dyesByHueBucket = new Map();
@@ -197,6 +199,8 @@ export class DyeDatabase {
197
199
  .map((dye) => dye);
198
200
  // Build ID map for fast lookups
199
201
  this.dyesByIdMap.clear();
202
+ // Per Phase-1: Build stainID map for plugin interop
203
+ this.dyesByStainIdMap.clear();
200
204
  // Per P-2: Build hue-indexed map for harmony lookups
201
205
  this.dyesByHueBucket.clear();
202
206
  // Per P-7: Build k-d tree for RGB color space
@@ -209,6 +213,11 @@ export class DyeDatabase {
209
213
  if (dye.itemID && dye.itemID !== dye.id) {
210
214
  this.dyesByIdMap.set(dye.itemID, dye);
211
215
  }
216
+ // Per Phase-1: Map by stainID for plugin interop (Glamourer, Mare, etc.)
217
+ // stainID is null for Facewear dyes
218
+ if (typeof dye.stainID === 'number') {
219
+ this.dyesByStainIdMap.set(dye.stainID, dye);
220
+ }
212
221
  // Per P-2: Index by hue bucket (10° buckets)
213
222
  const hueBucket = this.getHueBucket(dye.hsv.h);
214
223
  if (!this.dyesByHueBucket.has(hueBucket)) {
@@ -258,6 +267,31 @@ export class DyeDatabase {
258
267
  this.ensureLoaded();
259
268
  return this.dyesByIdMap.get(id) || null;
260
269
  }
270
+ /**
271
+ * Get dye by stainID (game's internal stain table ID)
272
+ *
273
+ * Use this method when interfacing with plugins like Glamourer or Mare Synchronos
274
+ * that expose stainID rather than itemID.
275
+ *
276
+ * **Note:** For stable references, prefer `getDyeById()` with itemID.
277
+ *
278
+ * @param stainId - The game's stain table ID (1-125)
279
+ * @returns The matching dye or null if not found
280
+ *
281
+ * @example
282
+ * ```typescript
283
+ * // Glamourer uses stainID internally
284
+ * const dye = database.getByStainId(1); // Snow White
285
+ * console.log(dye?.name); // "Snow White"
286
+ * console.log(dye?.itemID); // 5729
287
+ * ```
288
+ *
289
+ * @since 2.1.0
290
+ */
291
+ getByStainId(stainId) {
292
+ this.ensureLoaded();
293
+ return this.dyesByStainIdMap.get(stainId) || null;
294
+ }
261
295
  /**
262
296
  * Get multiple dyes by IDs
263
297
  */
@@ -1 +1 @@
1
- {"version":3,"file":"DyeDatabase.js","sourceRoot":"","sources":["../../../src/services/dye/DyeDatabase.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DyeDatabase.js","sourceRoot":"","sources":["../../../src/services/dye/DyeDatabase.ts"],"names":[],"mappings":"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"}
@@ -33,6 +33,11 @@ export type { VisionType, Matrix3x3, ColorblindMatrices } from '@xivdyetools/typ
33
33
  * @deprecated Removed in v2.0.0. Import directly from '@xivdyetools/types' instead.
34
34
  */
35
35
  export type { Dye, LocalizedDye, DyeWithDistance, DyeDatabase } from '@xivdyetools/types';
36
+ /**
37
+ * @deprecated Removed in v2.0.0. Import directly from '@xivdyetools/types' instead.
38
+ */
39
+ export type { CharacterColor, CharacterColorMatch, SharedColorCategory, RaceSpecificColorCategory, CharacterColorCategory, SubRace, Gender, Race, } from '@xivdyetools/types';
40
+ export { RACE_SUBRACES, SUBRACE_TO_RACE, COLOR_GRID_DIMENSIONS } from '@xivdyetools/types';
36
41
  /**
37
42
  * @deprecated Removed in v2.0.0. Import directly from '@xivdyetools/types' instead.
38
43
  */