@xivdyetools/core 2.7.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.
- package/README.md +85 -67
- package/dist/blending/blending.d.ts +22 -0
- package/dist/blending/blending.d.ts.map +1 -0
- package/dist/blending/blending.js +129 -0
- package/dist/blending/blending.js.map +1 -0
- package/dist/blending/conversions.d.ts +53 -0
- package/dist/blending/conversions.d.ts.map +1 -0
- package/dist/blending/conversions.js +256 -0
- package/dist/blending/conversions.js.map +1 -0
- package/dist/blending/index.d.ts +8 -0
- package/dist/blending/index.d.ts.map +1 -0
- package/dist/blending/index.js +3 -0
- package/dist/blending/index.js.map +1 -0
- package/dist/blending/types.d.ts +36 -0
- package/dist/blending/types.d.ts.map +1 -0
- package/dist/blending/types.js +21 -0
- package/dist/blending/types.js.map +1 -0
- package/dist/config/band-calibration.d.ts +68 -0
- package/dist/config/band-calibration.d.ts.map +1 -0
- package/dist/config/band-calibration.js +196 -0
- package/dist/config/band-calibration.js.map +1 -0
- package/dist/config/band-vocabulary.d.ts +82 -0
- package/dist/config/band-vocabulary.d.ts.map +1 -0
- package/dist/config/band-vocabulary.js +117 -0
- package/dist/config/band-vocabulary.js.map +1 -0
- package/dist/config/consolidated-ids.js +2 -2
- package/dist/config/consolidated-ids.js.map +1 -1
- package/dist/config/dye-vocabulary.d.ts +45 -0
- package/dist/config/dye-vocabulary.d.ts.map +1 -0
- package/dist/config/dye-vocabulary.js +58 -0
- package/dist/config/dye-vocabulary.js.map +1 -0
- package/dist/config/facewear.d.ts +24 -0
- package/dist/config/facewear.d.ts.map +1 -0
- package/dist/config/facewear.js +35 -0
- package/dist/config/facewear.js.map +1 -0
- package/dist/config/learn-links.d.ts +70 -0
- package/dist/config/learn-links.d.ts.map +1 -0
- package/dist/config/learn-links.js +171 -0
- package/dist/config/learn-links.js.map +1 -0
- package/dist/config/product-links.d.ts +44 -0
- package/dist/config/product-links.d.ts.map +1 -0
- package/dist/config/product-links.js +44 -0
- package/dist/config/product-links.js.map +1 -0
- package/dist/constants/index.d.ts +14 -1
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +38 -22
- package/dist/constants/index.js.map +1 -1
- package/dist/data/character_colors/race_specific/hair_colors.json +1 -1
- package/dist/data/character_colors/race_specific/skin_colors.json +1 -1
- package/dist/data/dyes.json +1127 -0
- package/dist/data/facewear_colors.json +57 -0
- package/dist/data/locales/de.json +4 -50
- package/dist/data/locales/en.json +4 -50
- package/dist/data/locales/fr.json +4 -50
- package/dist/data/locales/ja.json +4 -50
- package/dist/data/locales/ko.json +4 -50
- package/dist/data/locales/zh.json +4 -50
- package/dist/data/presets.json +59 -301
- package/dist/index.d.ts +156 -17
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +114 -10
- package/dist/index.js.map +1 -1
- package/dist/services/APIService.d.ts +7 -61
- package/dist/services/APIService.d.ts.map +1 -1
- package/dist/services/APIService.js +43 -154
- package/dist/services/APIService.js.map +1 -1
- package/dist/services/CharacterColorService.d.ts +4 -36
- package/dist/services/CharacterColorService.d.ts.map +1 -1
- package/dist/services/CharacterColorService.js +16 -68
- package/dist/services/CharacterColorService.js.map +1 -1
- package/dist/services/ColorService.d.ts +55 -68
- package/dist/services/ColorService.d.ts.map +1 -1
- package/dist/services/ColorService.js +86 -94
- package/dist/services/ColorService.js.map +1 -1
- package/dist/services/DyeService.d.ts +10 -103
- package/dist/services/DyeService.d.ts.map +1 -1
- package/dist/services/DyeService.js +13 -156
- package/dist/services/DyeService.js.map +1 -1
- package/dist/services/LocalizationService.d.ts +1 -33
- package/dist/services/LocalizationService.d.ts.map +1 -1
- package/dist/services/LocalizationService.js +0 -44
- package/dist/services/LocalizationService.js.map +1 -1
- package/dist/services/PaletteService.d.ts +8 -9
- package/dist/services/PaletteService.d.ts.map +1 -1
- package/dist/services/PaletteService.js +2 -21
- package/dist/services/PaletteService.js.map +1 -1
- package/dist/services/PresetService.d.ts +2 -34
- package/dist/services/PresetService.d.ts.map +1 -1
- package/dist/services/PresetService.js +12 -59
- package/dist/services/PresetService.js.map +1 -1
- package/dist/services/chara/chara-models.d.ts +68 -0
- package/dist/services/chara/chara-models.d.ts.map +1 -0
- package/dist/services/chara/chara-models.js +87 -0
- package/dist/services/chara/chara-models.js.map +1 -0
- package/dist/services/chara/chara-parser.d.ts +95 -0
- package/dist/services/chara/chara-parser.d.ts.map +1 -0
- package/dist/services/chara/chara-parser.js +299 -0
- package/dist/services/chara/chara-parser.js.map +1 -0
- package/dist/services/chara/chara-resolver.d.ts +103 -0
- package/dist/services/chara/chara-resolver.d.ts.map +1 -0
- package/dist/services/chara/chara-resolver.js +233 -0
- package/dist/services/chara/chara-resolver.js.map +1 -0
- package/dist/services/color/ColorConverter.d.ts +107 -35
- package/dist/services/color/ColorConverter.d.ts.map +1 -1
- package/dist/services/color/ColorConverter.js +159 -48
- package/dist/services/color/ColorConverter.js.map +1 -1
- package/dist/services/color/ColorManipulator.d.ts +11 -0
- package/dist/services/color/ColorManipulator.d.ts.map +1 -1
- package/dist/services/color/ColorManipulator.js +14 -0
- package/dist/services/color/ColorManipulator.js.map +1 -1
- package/dist/services/color/ColorblindnessSimulator.d.ts +17 -0
- package/dist/services/color/ColorblindnessSimulator.d.ts.map +1 -1
- package/dist/services/color/ColorblindnessSimulator.js +53 -1
- package/dist/services/color/ColorblindnessSimulator.js.map +1 -1
- package/dist/services/color/SpectralMixer.d.ts +0 -34
- package/dist/services/color/SpectralMixer.d.ts.map +1 -1
- package/dist/services/color/SpectralMixer.js +0 -73
- package/dist/services/color/SpectralMixer.js.map +1 -1
- package/dist/services/dye/DyeDatabase.d.ts +0 -21
- package/dist/services/dye/DyeDatabase.d.ts.map +1 -1
- package/dist/services/dye/DyeDatabase.js +78 -103
- package/dist/services/dye/DyeDatabase.js.map +1 -1
- package/dist/services/dye/DyeSearch.d.ts +17 -31
- package/dist/services/dye/DyeSearch.d.ts.map +1 -1
- package/dist/services/dye/DyeSearch.js +31 -67
- package/dist/services/dye/DyeSearch.js.map +1 -1
- package/dist/services/dye/HarmonyGenerator.d.ts +11 -18
- package/dist/services/dye/HarmonyGenerator.d.ts.map +1 -1
- package/dist/services/dye/HarmonyGenerator.js +24 -35
- package/dist/services/dye/HarmonyGenerator.js.map +1 -1
- package/dist/services/localization/LocaleLoader.d.ts.map +1 -1
- package/dist/services/localization/LocaleLoader.js +0 -1
- package/dist/services/localization/LocaleLoader.js.map +1 -1
- package/dist/services/localization/TranslationProvider.d.ts +1 -42
- package/dist/services/localization/TranslationProvider.d.ts.map +1 -1
- package/dist/services/localization/TranslationProvider.js +4 -82
- package/dist/services/localization/TranslationProvider.js.map +1 -1
- package/dist/types/index.d.ts +39 -52
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +50 -10
- package/dist/types/index.js.map +1 -1
- package/dist/utils/index.d.ts +35 -122
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +45 -422
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/kd-tree.d.ts +0 -4
- package/dist/utils/kd-tree.d.ts.map +1 -1
- package/dist/utils/kd-tree.js +0 -6
- package/dist/utils/kd-tree.js.map +1 -1
- package/package.json +19 -10
- package/dist/data/character_colors/index.json +0 -40
- package/dist/data/colors_xiv.json +0 -3538
- package/dist/version.d.ts +0 -11
- package/dist/version.d.ts.map +0 -1
- package/dist/version.js +0 -11
- package/dist/version.js.map +0 -1
|
@@ -7,6 +7,7 @@ import { ErrorCode, AppError } from '@xivdyetools/types';
|
|
|
7
7
|
import { NoOpLogger } from '@xivdyetools/logger/library';
|
|
8
8
|
import { KDTree } from '../../utils/kd-tree.js';
|
|
9
9
|
import { ColorConverter } from '../color/ColorConverter.js';
|
|
10
|
+
import { ACQUISITION_META, METALLIC_STAIN_IDS, } from '../../config/dye-vocabulary.js';
|
|
10
11
|
/**
|
|
11
12
|
* Dye database manager
|
|
12
13
|
* Per R-4: Single Responsibility - database management only
|
|
@@ -23,7 +24,6 @@ export class DyeDatabase {
|
|
|
23
24
|
// Per P-7: k-d tree for fast nearest neighbor search in RGB space
|
|
24
25
|
kdTree = null;
|
|
25
26
|
isLoaded = false;
|
|
26
|
-
lastLoaded = 0;
|
|
27
27
|
logger;
|
|
28
28
|
// Per P-2: Hue bucket size (10 degrees per bucket for 36 buckets total)
|
|
29
29
|
static HUE_BUCKET_SIZE = 10;
|
|
@@ -78,11 +78,13 @@ export class DyeDatabase {
|
|
|
78
78
|
return typeof dye.name === 'string' ? dye.name : 'unknown';
|
|
79
79
|
}
|
|
80
80
|
isValidDye(dye) {
|
|
81
|
-
//
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
81
|
+
// Schema v2: stainID is the canonical identifier (Stain-sheet row, byte
|
|
82
|
+
// range). Legacy fixture shapes may instead carry id/itemID — accepted
|
|
83
|
+
// for backward compatibility with runtime-shaped test data.
|
|
84
|
+
const hasStainId = typeof dye.stainID === 'number' && dye.stainID >= 1 && dye.stainID <= 254;
|
|
85
|
+
const hasLegacyId = typeof dye.id === 'number' || typeof dye.itemID === 'number';
|
|
86
|
+
if (!hasStainId && !hasLegacyId) {
|
|
87
|
+
this.logger.warn('Dye missing required stainID (or legacy id/itemID) field');
|
|
86
88
|
return false;
|
|
87
89
|
}
|
|
88
90
|
// Required: name must be a non-empty string
|
|
@@ -91,51 +93,12 @@ export class DyeDatabase {
|
|
|
91
93
|
this.logger.warn(`Dye ${idForLog} has invalid name`);
|
|
92
94
|
return false;
|
|
93
95
|
}
|
|
94
|
-
//
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
const idForLog = this.dyeIdForLog(dye);
|
|
98
|
-
const hexForLog = typeof dye.hex === 'string' ? dye.hex : JSON.stringify(dye.hex);
|
|
99
|
-
this.logger.warn(`Dye ${idForLog} has invalid hex format: ${hexForLog}`);
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
// Validate RGB if present
|
|
104
|
-
if (dye.rgb !== undefined && dye.rgb !== null) {
|
|
105
|
-
const rgb = dye.rgb;
|
|
106
|
-
if (typeof rgb.r !== 'number' ||
|
|
107
|
-
rgb.r < 0 ||
|
|
108
|
-
rgb.r > 255 ||
|
|
109
|
-
typeof rgb.g !== 'number' ||
|
|
110
|
-
rgb.g < 0 ||
|
|
111
|
-
rgb.g > 255 ||
|
|
112
|
-
typeof rgb.b !== 'number' ||
|
|
113
|
-
rgb.b < 0 ||
|
|
114
|
-
rgb.b > 255) {
|
|
115
|
-
const idForLog = this.dyeIdForLog(dye);
|
|
116
|
-
this.logger.warn(`Dye ${idForLog} has invalid RGB values`);
|
|
117
|
-
return false;
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
// CORE-BUG-004 FIX: HSV is required per Dye interface (used for hue bucket indexing)
|
|
121
|
-
// Must validate HSV is present and has valid values
|
|
122
|
-
if (dye.hsv === undefined || dye.hsv === null) {
|
|
96
|
+
// Schema v2: hex is REQUIRED — it is the single color source of truth
|
|
97
|
+
// from which rgb/hsv/lab are derived during normalization.
|
|
98
|
+
if (typeof dye.hex !== 'string' || !/^#[A-Fa-f0-9]{6}$/.test(dye.hex)) {
|
|
123
99
|
const idForLog = this.dyeIdForLog(dye);
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
}
|
|
127
|
-
const hsv = dye.hsv;
|
|
128
|
-
if (typeof hsv.h !== 'number' ||
|
|
129
|
-
hsv.h < 0 ||
|
|
130
|
-
hsv.h > 360 ||
|
|
131
|
-
typeof hsv.s !== 'number' ||
|
|
132
|
-
hsv.s < 0 ||
|
|
133
|
-
hsv.s > 100 ||
|
|
134
|
-
typeof hsv.v !== 'number' ||
|
|
135
|
-
hsv.v < 0 ||
|
|
136
|
-
hsv.v > 100) {
|
|
137
|
-
const idForLog = this.dyeIdForLog(dye);
|
|
138
|
-
this.logger.warn(`Dye ${idForLog} has invalid HSV values`);
|
|
100
|
+
const hexForLog = typeof dye.hex === 'string' ? dye.hex : JSON.stringify(dye.hex);
|
|
101
|
+
this.logger.warn(`Dye ${idForLog} has missing or invalid hex: ${hexForLog}`);
|
|
139
102
|
return false;
|
|
140
103
|
}
|
|
141
104
|
// Validate category if present
|
|
@@ -144,6 +107,16 @@ export class DyeDatabase {
|
|
|
144
107
|
this.logger.warn(`Dye ${idForLog} has invalid category type`);
|
|
145
108
|
return false;
|
|
146
109
|
}
|
|
110
|
+
// Validate consolidationType domain if present
|
|
111
|
+
if (dye.consolidationType !== undefined &&
|
|
112
|
+
dye.consolidationType !== null &&
|
|
113
|
+
dye.consolidationType !== 'A' &&
|
|
114
|
+
dye.consolidationType !== 'B' &&
|
|
115
|
+
dye.consolidationType !== 'C') {
|
|
116
|
+
const idForLog = this.dyeIdForLog(dye);
|
|
117
|
+
this.logger.warn(`Dye ${idForLog} has invalid consolidationType`);
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
147
120
|
return true;
|
|
148
121
|
}
|
|
149
122
|
/**
|
|
@@ -166,44 +139,80 @@ export class DyeDatabase {
|
|
|
166
139
|
if (!Array.isArray(loadedDyes) || loadedDyes.length === 0) {
|
|
167
140
|
throw new Error('Invalid dye database format: empty or not an array');
|
|
168
141
|
}
|
|
169
|
-
// Normalize dyes
|
|
142
|
+
// Normalize dyes (schema v2): derive rgb/hsv/cost/currency/flags from
|
|
143
|
+
// the 7-field file shape, with prototype pollution protection. Legacy
|
|
144
|
+
// runtime-shaped input (full 16-field Dye objects, used by test
|
|
145
|
+
// fixtures) passes through with its explicit values respected.
|
|
170
146
|
// Per Issue #14: Filter out invalid dyes during loading
|
|
171
147
|
this.dyes = loadedDyes
|
|
172
148
|
.map((dye) => {
|
|
173
149
|
// Per Security: Create a safe clone to prevent prototype pollution
|
|
174
150
|
const normalizedDye = this.safeClone(dye);
|
|
175
|
-
//
|
|
151
|
+
// Schema v2: legacyItemID carries the market-era item ID. The
|
|
152
|
+
// runtime `itemID`/`id` contract (number, equal) is preserved for
|
|
153
|
+
// downstream compatibility; a future dye with legacyItemID null
|
|
154
|
+
// falls back to its stainID.
|
|
155
|
+
if (normalizedDye.itemID === undefined && normalizedDye.legacyItemID !== undefined) {
|
|
156
|
+
normalizedDye.itemID = normalizedDye.legacyItemID;
|
|
157
|
+
}
|
|
158
|
+
if ((normalizedDye.itemID === null || normalizedDye.itemID === undefined) &&
|
|
159
|
+
typeof normalizedDye.stainID === 'number') {
|
|
160
|
+
normalizedDye.itemID = normalizedDye.stainID;
|
|
161
|
+
}
|
|
176
162
|
if (normalizedDye.itemID && !normalizedDye.id) {
|
|
177
163
|
normalizedDye.id = normalizedDye.itemID;
|
|
178
164
|
}
|
|
179
|
-
//
|
|
180
|
-
//
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
normalizedDye.
|
|
187
|
-
normalizedDye.
|
|
165
|
+
// Schema v2: rgb/hsv are DERIVED from hex — the stored copies were
|
|
166
|
+
// a drift hazard (the Brass hsv bug; research/monorepo-2.0/01 §2).
|
|
167
|
+
// 2-dp hue precision matters: 4 dyes sit within 0.2° of a 10° hue
|
|
168
|
+
// bucket edge.
|
|
169
|
+
if (typeof normalizedDye.hex === 'string' &&
|
|
170
|
+
/^#[A-Fa-f0-9]{6}$/.test(normalizedDye.hex)) {
|
|
171
|
+
const rgb = ColorConverter.hexToRgb(normalizedDye.hex);
|
|
172
|
+
normalizedDye.rgb = rgb;
|
|
173
|
+
normalizedDye.hsv = ColorConverter.rgbToHsv(rgb.r, rgb.g, rgb.b);
|
|
188
174
|
}
|
|
189
|
-
//
|
|
190
|
-
//
|
|
175
|
+
// Schema v2: cost/currency derive from the acquisition table when
|
|
176
|
+
// the entry doesn't carry them (legacy `price` still honored).
|
|
177
|
+
const meta = typeof normalizedDye.acquisition === 'string'
|
|
178
|
+
? ACQUISITION_META[normalizedDye.acquisition]
|
|
179
|
+
: undefined;
|
|
191
180
|
if (normalizedDye.price !== undefined && normalizedDye.cost === undefined) {
|
|
192
181
|
normalizedDye.cost = normalizedDye.price ?? 0;
|
|
193
182
|
}
|
|
194
|
-
// Ensure cost is always a number (handle null values in JSON)
|
|
195
183
|
if (normalizedDye.cost === null || normalizedDye.cost === undefined) {
|
|
196
|
-
normalizedDye.cost = 0;
|
|
184
|
+
normalizedDye.cost = meta?.price ?? 0;
|
|
185
|
+
}
|
|
186
|
+
if (normalizedDye.currency === undefined) {
|
|
187
|
+
normalizedDye.currency = meta?.currency ?? null;
|
|
197
188
|
}
|
|
198
|
-
// Default consolidationType and isIshgardian for backward compatibility
|
|
199
189
|
if (normalizedDye.consolidationType === undefined) {
|
|
200
190
|
normalizedDye.consolidationType = null;
|
|
201
191
|
}
|
|
192
|
+
// Schema v2 derived flags (explicit fixture values win):
|
|
193
|
+
// - metallic = the Stain sheet's gloss set (16 — decided 2026-07-30;
|
|
194
|
+
// NOT the name prefix, which misses Gunmetal Black + Pearl White)
|
|
195
|
+
// - cosmic ≡ consolidationType 'C', ishgardian ≡ 'B' (fixes the old
|
|
196
|
+
// isCosmic pollution where all 9 Firmament dyes were included)
|
|
197
|
+
if (normalizedDye.isMetallic === undefined) {
|
|
198
|
+
normalizedDye.isMetallic =
|
|
199
|
+
typeof normalizedDye.stainID === 'number' &&
|
|
200
|
+
METALLIC_STAIN_IDS.has(normalizedDye.stainID);
|
|
201
|
+
}
|
|
202
|
+
if (normalizedDye.isPastel === undefined) {
|
|
203
|
+
normalizedDye.isPastel = String(normalizedDye.name).startsWith('Pastel');
|
|
204
|
+
}
|
|
205
|
+
if (normalizedDye.isDark === undefined) {
|
|
206
|
+
normalizedDye.isDark = String(normalizedDye.name).startsWith('Dark');
|
|
207
|
+
}
|
|
208
|
+
if (normalizedDye.isCosmic === undefined) {
|
|
209
|
+
normalizedDye.isCosmic = normalizedDye.consolidationType === 'C';
|
|
210
|
+
}
|
|
202
211
|
if (normalizedDye.isIshgardian === undefined) {
|
|
203
|
-
normalizedDye.isIshgardian =
|
|
212
|
+
normalizedDye.isIshgardian = normalizedDye.consolidationType === 'B';
|
|
204
213
|
}
|
|
205
|
-
if (normalizedDye.
|
|
206
|
-
normalizedDye.
|
|
214
|
+
if (normalizedDye.stainID === undefined) {
|
|
215
|
+
normalizedDye.stainID = null;
|
|
207
216
|
}
|
|
208
217
|
// Per MEM-001: Pre-compute lowercase name and category for search optimization
|
|
209
218
|
normalizedDye.nameLower = String(normalizedDye.name).toLowerCase();
|
|
@@ -282,7 +291,6 @@ export class DyeDatabase {
|
|
|
282
291
|
// Per P-7: Build k-d tree
|
|
283
292
|
this.kdTree = new KDTree(kdTreePoints);
|
|
284
293
|
this.isLoaded = true;
|
|
285
|
-
this.lastLoaded = Date.now();
|
|
286
294
|
this.logger.info(`Dye database loaded: ${this.dyes.length} dyes`);
|
|
287
295
|
}
|
|
288
296
|
catch (error) {
|
|
@@ -337,45 +345,12 @@ export class DyeDatabase {
|
|
|
337
345
|
this.ensureLoaded();
|
|
338
346
|
return this.dyesByStainIdMap.get(stainId) || null;
|
|
339
347
|
}
|
|
340
|
-
/**
|
|
341
|
-
* Get multiple dyes by IDs
|
|
342
|
-
*/
|
|
343
|
-
getDyesByIds(ids) {
|
|
344
|
-
this.ensureLoaded();
|
|
345
|
-
// DyeInternal extends Dye, so this is type-safe as Dye[]
|
|
346
|
-
return ids
|
|
347
|
-
.map((id) => this.dyesByIdMap.get(id))
|
|
348
|
-
.filter((dye) => dye !== undefined);
|
|
349
|
-
}
|
|
350
|
-
/**
|
|
351
|
-
* Get multiple dyes by stainIDs
|
|
352
|
-
*
|
|
353
|
-
* Batch equivalent of `getByStainId()`. Returns only the dyes that match;
|
|
354
|
-
* unknown stainIDs are silently skipped (consistent with `getDyesByIds()`).
|
|
355
|
-
*
|
|
356
|
-
* @param stainIds - Array of stain table IDs
|
|
357
|
-
* @returns Array of matching dyes (order matches input, gaps removed)
|
|
358
|
-
*
|
|
359
|
-
* @since 2.2.0
|
|
360
|
-
*/
|
|
361
|
-
getDyesByStainIds(stainIds) {
|
|
362
|
-
this.ensureLoaded();
|
|
363
|
-
return stainIds
|
|
364
|
-
.map((id) => this.dyesByStainIdMap.get(id))
|
|
365
|
-
.filter((dye) => dye !== undefined);
|
|
366
|
-
}
|
|
367
348
|
/**
|
|
368
349
|
* Check if database is loaded
|
|
369
350
|
*/
|
|
370
351
|
isLoadedStatus() {
|
|
371
352
|
return this.isLoaded;
|
|
372
353
|
}
|
|
373
|
-
/**
|
|
374
|
-
* Get timestamp of last load
|
|
375
|
-
*/
|
|
376
|
-
getLastLoadedTime() {
|
|
377
|
-
return this.lastLoaded;
|
|
378
|
-
}
|
|
379
354
|
/**
|
|
380
355
|
* Get total dye count
|
|
381
356
|
*/
|
|
@@ -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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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Handles finding dyes by name, category, color distance, etc.
|
|
5
5
|
*/
|
|
6
6
|
import type { Dye } from '@xivdyetools/types';
|
|
7
|
-
import type { MatchingMethod
|
|
7
|
+
import type { MatchingMethod } from '../../types/index.js';
|
|
8
8
|
import type { DyeDatabase } from './DyeDatabase.js';
|
|
9
9
|
/**
|
|
10
10
|
* Options for finding closest dye matches.
|
|
@@ -12,10 +12,8 @@ import type { DyeDatabase } from './DyeDatabase.js';
|
|
|
12
12
|
export interface FindClosestOptions {
|
|
13
13
|
/** Dye IDs to exclude from results */
|
|
14
14
|
excludeIds?: number[];
|
|
15
|
-
/** Color matching algorithm (default: '
|
|
15
|
+
/** Color matching algorithm (default: 'ciede2000' — see DEFAULT_MATCHING_METHOD) */
|
|
16
16
|
matchingMethod?: MatchingMethod;
|
|
17
|
-
/** Custom weights for oklch-weighted method */
|
|
18
|
-
weights?: OklchWeights;
|
|
19
17
|
}
|
|
20
18
|
/**
|
|
21
19
|
* Options for finding dyes within a distance threshold.
|
|
@@ -25,10 +23,8 @@ export interface FindWithinDistanceOptions {
|
|
|
25
23
|
maxDistance: number;
|
|
26
24
|
/** Maximum number of results to return */
|
|
27
25
|
limit?: number;
|
|
28
|
-
/** Color matching algorithm (default: '
|
|
26
|
+
/** Color matching algorithm (default: 'ciede2000' — see DEFAULT_MATCHING_METHOD) */
|
|
29
27
|
matchingMethod?: MatchingMethod;
|
|
30
|
-
/** Custom weights for oklch-weighted method */
|
|
31
|
-
weights?: OklchWeights;
|
|
32
28
|
}
|
|
33
29
|
/**
|
|
34
30
|
* Dye search and matching utilities
|
|
@@ -45,7 +41,6 @@ export declare class DyeSearch {
|
|
|
45
41
|
* @param hex1 - First color in hex format
|
|
46
42
|
* @param hex2 - Second color in hex format
|
|
47
43
|
* @param method - Matching algorithm to use
|
|
48
|
-
* @param weights - Custom weights for oklch-weighted method
|
|
49
44
|
* @returns Distance value (lower = more similar)
|
|
50
45
|
*/
|
|
51
46
|
private calculateDistance;
|
|
@@ -74,19 +69,23 @@ export declare class DyeSearch {
|
|
|
74
69
|
* Per P-7: Uses k-d tree for O(log n) initial candidates, then re-ranks
|
|
75
70
|
* using the specified perceptual distance algorithm.
|
|
76
71
|
*
|
|
77
|
-
* Per COLOR-MATCH-001: Supports
|
|
78
|
-
* - '
|
|
72
|
+
* Per COLOR-MATCH-001 (5.0 suite): Supports the six `MatchingMethod`s:
|
|
73
|
+
* - 'ciede2000': CIEDE2000 (industry standard, accurate) — the default
|
|
74
|
+
* - 'oklab': OKLAB Euclidean (modern, good balance)
|
|
79
75
|
* - 'cie76': CIE76 LAB Euclidean (fast, fair accuracy)
|
|
80
|
-
* - '
|
|
81
|
-
* - '
|
|
82
|
-
* - '
|
|
83
|
-
*
|
|
76
|
+
* - 'redmean': Redmean-weighted RGB (cheap perceptual approximation)
|
|
77
|
+
* - 'rgb': RGB Euclidean (fastest, least accurate)
|
|
78
|
+
* - 'distinguish': RGB distance as an unrounded percent of the max (same
|
|
79
|
+
* ranking as 'rgb'; display-only rounding happens at the consumer)
|
|
80
|
+
*
|
|
81
|
+
* The v4 methods 'hyab' / 'oklch-weighted' are retired; unknown values fall
|
|
82
|
+
* back to CIEDE2000 (see `normalizeMatchingMethod`).
|
|
84
83
|
*
|
|
85
84
|
* @param hex - Target color in hex format
|
|
86
|
-
* @param
|
|
85
|
+
* @param options - Options object (excludeIds, matchingMethod)
|
|
87
86
|
* @returns Closest matching dye, or null if none found
|
|
88
87
|
*/
|
|
89
|
-
findClosestDye(hex: string,
|
|
88
|
+
findClosestDye(hex: string, options?: FindClosestOptions): Dye | null;
|
|
90
89
|
/**
|
|
91
90
|
* Find dyes within a color distance threshold using configurable matching.
|
|
92
91
|
*
|
|
@@ -96,22 +95,9 @@ export declare class DyeSearch {
|
|
|
96
95
|
* Per COLOR-MATCH-001: Supports multiple matching algorithms.
|
|
97
96
|
*
|
|
98
97
|
* @param hex - Target color in hex format
|
|
99
|
-
* @param
|
|
100
|
-
* @param limit - Maximum results (legacy parameter, use options.limit instead)
|
|
98
|
+
* @param options - Options object (maxDistance, limit, matchingMethod)
|
|
101
99
|
* @returns Array of dyes within the distance threshold
|
|
102
100
|
*/
|
|
103
|
-
findDyesWithinDistance(hex: string,
|
|
104
|
-
/**
|
|
105
|
-
* Get dyes sorted by brightness
|
|
106
|
-
*/
|
|
107
|
-
getDyesSortedByBrightness(ascending?: boolean): Dye[];
|
|
108
|
-
/**
|
|
109
|
-
* Get dyes sorted by saturation
|
|
110
|
-
*/
|
|
111
|
-
getDyesSortedBySaturation(ascending?: boolean): Dye[];
|
|
112
|
-
/**
|
|
113
|
-
* Get dyes sorted by hue
|
|
114
|
-
*/
|
|
115
|
-
getDyesSortedByHue(ascending?: boolean): Dye[];
|
|
101
|
+
findDyesWithinDistance(hex: string, options: FindWithinDistanceOptions): Dye[];
|
|
116
102
|
}
|
|
117
103
|
//# sourceMappingURL=DyeSearch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DyeSearch.d.ts","sourceRoot":"","sources":["../../../src/services/dye/DyeSearch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"DyeSearch.d.ts","sourceRoot":"","sources":["../../../src/services/dye/DyeSearch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,oFAAoF;IACpF,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,oFAAoF;IACpF,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;GAGG;AACH,qBAAa,SAAS;IAGR,OAAO,CAAC,QAAQ;IAF5B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;gBAEJ,QAAQ,EAAE,WAAW;IAIzC;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAsBzB;;;OAGG;IACH,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,EAAE;IAclC;;;OAGG;IACH,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,GAAG,EAAE;IASzC;;OAEG;IACH,UAAU,CACR,MAAM,GAAE;QACN,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;QACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACd,GACL,GAAG,EAAE;IA0BR;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,GAAG,GAAG,IAAI;IA0EzE;;;;;;;;;;;OAWG;IACH,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,yBAAyB,GAAG,GAAG,EAAE;CAwE/E"}
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
* Per R-4: Focused class for dye search and matching operations
|
|
4
4
|
* Handles finding dyes by name, category, color distance, etc.
|
|
5
5
|
*/
|
|
6
|
+
import { COLOR_DISTANCE_MAX } from '../../constants/index.js';
|
|
6
7
|
import { ColorConverter } from '../color/ColorConverter.js';
|
|
7
8
|
/**
|
|
8
9
|
* Dye search and matching utilities
|
|
@@ -22,26 +23,27 @@ export class DyeSearch {
|
|
|
22
23
|
* @param hex1 - First color in hex format
|
|
23
24
|
* @param hex2 - Second color in hex format
|
|
24
25
|
* @param method - Matching algorithm to use
|
|
25
|
-
* @param weights - Custom weights for oklch-weighted method
|
|
26
26
|
* @returns Distance value (lower = more similar)
|
|
27
27
|
*/
|
|
28
|
-
calculateDistance(hex1, hex2, method
|
|
28
|
+
calculateDistance(hex1, hex2, method) {
|
|
29
29
|
switch (method) {
|
|
30
30
|
case 'rgb':
|
|
31
31
|
return ColorConverter.getColorDistance(hex1, hex2);
|
|
32
|
+
case 'redmean':
|
|
33
|
+
return ColorConverter.getRedmeanDistance(hex1, hex2);
|
|
34
|
+
case 'distinguish':
|
|
35
|
+
// Unrounded percent: identical ranks to RGB DIST (no ranking ties);
|
|
36
|
+
// display rounding happens at the consumer, where ties badge TIE.
|
|
37
|
+
return (ColorConverter.getColorDistance(hex1, hex2) / COLOR_DISTANCE_MAX) * 100;
|
|
38
|
+
// The three perceptual methods share their spelling with DeltaEFormula
|
|
39
|
+
// (DEAD-037, 2026-08-18 audit) — no translation switch needed.
|
|
32
40
|
case 'cie76':
|
|
33
|
-
return ColorConverter.getDeltaE(hex1, hex2, 'cie76');
|
|
34
41
|
case 'ciede2000':
|
|
35
|
-
return ColorConverter.getDeltaE(hex1, hex2, 'cie2000');
|
|
36
42
|
case 'oklab':
|
|
37
|
-
return ColorConverter.
|
|
38
|
-
case 'hyab':
|
|
39
|
-
return ColorConverter.getDeltaE_HyAB(hex1, hex2);
|
|
40
|
-
case 'oklch-weighted':
|
|
41
|
-
return ColorConverter.getDeltaE_OklchWeighted(hex1, hex2, weights);
|
|
43
|
+
return ColorConverter.getDeltaE(hex1, hex2, method);
|
|
42
44
|
default:
|
|
43
|
-
// Default to
|
|
44
|
-
return ColorConverter.
|
|
45
|
+
// Default to dE2000 for unknown methods (the suite default)
|
|
46
|
+
return ColorConverter.getDeltaE(hex1, hex2, 'ciede2000');
|
|
45
47
|
}
|
|
46
48
|
}
|
|
47
49
|
/**
|
|
@@ -100,25 +102,25 @@ export class DyeSearch {
|
|
|
100
102
|
* Per P-7: Uses k-d tree for O(log n) initial candidates, then re-ranks
|
|
101
103
|
* using the specified perceptual distance algorithm.
|
|
102
104
|
*
|
|
103
|
-
* Per COLOR-MATCH-001: Supports
|
|
104
|
-
* - '
|
|
105
|
+
* Per COLOR-MATCH-001 (5.0 suite): Supports the six `MatchingMethod`s:
|
|
106
|
+
* - 'ciede2000': CIEDE2000 (industry standard, accurate) — the default
|
|
107
|
+
* - 'oklab': OKLAB Euclidean (modern, good balance)
|
|
105
108
|
* - 'cie76': CIE76 LAB Euclidean (fast, fair accuracy)
|
|
106
|
-
* - '
|
|
107
|
-
* - '
|
|
108
|
-
* - '
|
|
109
|
-
*
|
|
109
|
+
* - 'redmean': Redmean-weighted RGB (cheap perceptual approximation)
|
|
110
|
+
* - 'rgb': RGB Euclidean (fastest, least accurate)
|
|
111
|
+
* - 'distinguish': RGB distance as an unrounded percent of the max (same
|
|
112
|
+
* ranking as 'rgb'; display-only rounding happens at the consumer)
|
|
113
|
+
*
|
|
114
|
+
* The v4 methods 'hyab' / 'oklch-weighted' are retired; unknown values fall
|
|
115
|
+
* back to CIEDE2000 (see `normalizeMatchingMethod`).
|
|
110
116
|
*
|
|
111
117
|
* @param hex - Target color in hex format
|
|
112
|
-
* @param
|
|
118
|
+
* @param options - Options object (excludeIds, matchingMethod)
|
|
113
119
|
* @returns Closest matching dye, or null if none found
|
|
114
120
|
*/
|
|
115
|
-
findClosestDye(hex,
|
|
121
|
+
findClosestDye(hex, options = {}) {
|
|
116
122
|
this.database.ensureLoaded();
|
|
117
|
-
|
|
118
|
-
const options = Array.isArray(excludeIdsOrOptions)
|
|
119
|
-
? { excludeIds: excludeIdsOrOptions }
|
|
120
|
-
: excludeIdsOrOptions;
|
|
121
|
-
const { excludeIds = [], matchingMethod = 'oklab', weights } = options;
|
|
123
|
+
const { excludeIds = [], matchingMethod = 'ciede2000' } = options;
|
|
122
124
|
try {
|
|
123
125
|
const targetRgb = ColorConverter.hexToRgb(hex);
|
|
124
126
|
const targetPoint = {
|
|
@@ -159,7 +161,7 @@ export class DyeSearch {
|
|
|
159
161
|
continue;
|
|
160
162
|
}
|
|
161
163
|
try {
|
|
162
|
-
const distance = this.calculateDistance(hex, dye.hex, matchingMethod
|
|
164
|
+
const distance = this.calculateDistance(hex, dye.hex, matchingMethod);
|
|
163
165
|
if (distance < minDistance) {
|
|
164
166
|
minDistance = distance;
|
|
165
167
|
closest = dye;
|
|
@@ -189,17 +191,12 @@ export class DyeSearch {
|
|
|
189
191
|
* Per COLOR-MATCH-001: Supports multiple matching algorithms.
|
|
190
192
|
*
|
|
191
193
|
* @param hex - Target color in hex format
|
|
192
|
-
* @param
|
|
193
|
-
* @param limit - Maximum results (legacy parameter, use options.limit instead)
|
|
194
|
+
* @param options - Options object (maxDistance, limit, matchingMethod)
|
|
194
195
|
* @returns Array of dyes within the distance threshold
|
|
195
196
|
*/
|
|
196
|
-
findDyesWithinDistance(hex,
|
|
197
|
+
findDyesWithinDistance(hex, options) {
|
|
197
198
|
this.database.ensureLoaded();
|
|
198
|
-
|
|
199
|
-
const options = typeof maxDistanceOrOptions === 'number'
|
|
200
|
-
? { maxDistance: maxDistanceOrOptions, limit }
|
|
201
|
-
: maxDistanceOrOptions;
|
|
202
|
-
const { maxDistance, limit: resultLimit, matchingMethod = 'rgb', weights } = options;
|
|
199
|
+
const { maxDistance, limit: resultLimit, matchingMethod = 'ciede2000' } = options;
|
|
203
200
|
try {
|
|
204
201
|
const targetRgb = ColorConverter.hexToRgb(hex);
|
|
205
202
|
const targetPoint = {
|
|
@@ -234,7 +231,7 @@ export class DyeSearch {
|
|
|
234
231
|
if (dye.category === 'Facewear') {
|
|
235
232
|
continue;
|
|
236
233
|
}
|
|
237
|
-
const distance = this.calculateDistance(hex, dye.hex, matchingMethod
|
|
234
|
+
const distance = this.calculateDistance(hex, dye.hex, matchingMethod);
|
|
238
235
|
if (distance <= maxDistance) {
|
|
239
236
|
results.push({ dye, distance });
|
|
240
237
|
}
|
|
@@ -258,38 +255,5 @@ export class DyeSearch {
|
|
|
258
255
|
return [];
|
|
259
256
|
}
|
|
260
257
|
}
|
|
261
|
-
/**
|
|
262
|
-
* Get dyes sorted by brightness
|
|
263
|
-
*/
|
|
264
|
-
getDyesSortedByBrightness(ascending = true) {
|
|
265
|
-
this.database.ensureLoaded();
|
|
266
|
-
return [...this.database.getDyesInternal()].sort((a, b) => {
|
|
267
|
-
const brightnessA = a.hsv.v;
|
|
268
|
-
const brightnessB = b.hsv.v;
|
|
269
|
-
return ascending ? brightnessA - brightnessB : brightnessB - brightnessA;
|
|
270
|
-
});
|
|
271
|
-
}
|
|
272
|
-
/**
|
|
273
|
-
* Get dyes sorted by saturation
|
|
274
|
-
*/
|
|
275
|
-
getDyesSortedBySaturation(ascending = true) {
|
|
276
|
-
this.database.ensureLoaded();
|
|
277
|
-
return [...this.database.getDyesInternal()].sort((a, b) => {
|
|
278
|
-
const satA = a.hsv.s;
|
|
279
|
-
const satB = b.hsv.s;
|
|
280
|
-
return ascending ? satA - satB : satB - satA;
|
|
281
|
-
});
|
|
282
|
-
}
|
|
283
|
-
/**
|
|
284
|
-
* Get dyes sorted by hue
|
|
285
|
-
*/
|
|
286
|
-
getDyesSortedByHue(ascending = true) {
|
|
287
|
-
this.database.ensureLoaded();
|
|
288
|
-
return [...this.database.getDyesInternal()].sort((a, b) => {
|
|
289
|
-
const hueA = a.hsv.h;
|
|
290
|
-
const hueB = b.hsv.h;
|
|
291
|
-
return ascending ? hueA - hueB : hueB - hueA;
|
|
292
|
-
});
|
|
293
|
-
}
|
|
294
258
|
}
|
|
295
259
|
//# sourceMappingURL=DyeSearch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DyeSearch.js","sourceRoot":"","sources":["../../../src/services/dye/DyeSearch.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"DyeSearch.js","sourceRoot":"","sources":["../../../src/services/dye/DyeSearch.ts"],"names":[],"mappings":"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"}
|