@xivdyetools/types 1.0.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.
- package/LICENSE +37 -0
- package/README.md +272 -0
- package/dist/api/index.d.ts +11 -0
- package/dist/api/index.d.ts.map +1 -0
- package/dist/api/index.js +9 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/moderation.d.ts +53 -0
- package/dist/api/moderation.d.ts.map +1 -0
- package/dist/api/moderation.js +9 -0
- package/dist/api/moderation.js.map +1 -0
- package/dist/api/price.d.ts +38 -0
- package/dist/api/price.d.ts.map +1 -0
- package/dist/api/price.js +9 -0
- package/dist/api/price.js.map +1 -0
- package/dist/api/response.d.ts +41 -0
- package/dist/api/response.d.ts.map +1 -0
- package/dist/api/response.js +9 -0
- package/dist/api/response.js.map +1 -0
- package/dist/auth/discord.d.ts +60 -0
- package/dist/auth/discord.d.ts.map +1 -0
- package/dist/auth/discord.js +9 -0
- package/dist/auth/discord.js.map +1 -0
- package/dist/auth/index.d.ts +13 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +9 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/jwt.d.ts +68 -0
- package/dist/auth/jwt.d.ts.map +1 -0
- package/dist/auth/jwt.js +9 -0
- package/dist/auth/jwt.js.map +1 -0
- package/dist/auth/provider.d.ts +37 -0
- package/dist/auth/provider.d.ts.map +1 -0
- package/dist/auth/provider.js +9 -0
- package/dist/auth/provider.js.map +1 -0
- package/dist/auth/response.d.ts +74 -0
- package/dist/auth/response.d.ts.map +1 -0
- package/dist/auth/response.js +9 -0
- package/dist/auth/response.js.map +1 -0
- package/dist/auth/xivauth.d.ts +90 -0
- package/dist/auth/xivauth.d.ts.map +1 -0
- package/dist/auth/xivauth.js +9 -0
- package/dist/auth/xivauth.js.map +1 -0
- package/dist/color/branded.d.ts +108 -0
- package/dist/color/branded.d.ts.map +1 -0
- package/dist/color/branded.js +94 -0
- package/dist/color/branded.js.map +1 -0
- package/dist/color/colorblind.d.ts +57 -0
- package/dist/color/colorblind.d.ts.map +1 -0
- package/dist/color/colorblind.js +9 -0
- package/dist/color/colorblind.js.map +1 -0
- package/dist/color/index.d.ts +12 -0
- package/dist/color/index.d.ts.map +1 -0
- package/dist/color/index.js +9 -0
- package/dist/color/index.js.map +1 -0
- package/dist/color/rgb.d.ts +32 -0
- package/dist/color/rgb.d.ts.map +1 -0
- package/dist/color/rgb.js +9 -0
- package/dist/color/rgb.js.map +1 -0
- package/dist/dye/database.d.ts +23 -0
- package/dist/dye/database.d.ts.map +1 -0
- package/dist/dye/database.js +9 -0
- package/dist/dye/database.js.map +1 -0
- package/dist/dye/dye.d.ts +66 -0
- package/dist/dye/dye.d.ts.map +1 -0
- package/dist/dye/dye.js +9 -0
- package/dist/dye/dye.js.map +1 -0
- package/dist/dye/index.d.ts +10 -0
- package/dist/dye/index.d.ts.map +1 -0
- package/dist/dye/index.js +9 -0
- package/dist/dye/index.js.map +1 -0
- package/dist/error/app-error.d.ts +52 -0
- package/dist/error/app-error.d.ts.map +1 -0
- package/dist/error/app-error.js +56 -0
- package/dist/error/app-error.js.map +1 -0
- package/dist/error/codes.d.ts +37 -0
- package/dist/error/codes.d.ts.map +1 -0
- package/dist/error/codes.js +40 -0
- package/dist/error/codes.js.map +1 -0
- package/dist/error/index.d.ts +11 -0
- package/dist/error/index.d.ts.map +1 -0
- package/dist/error/index.js +10 -0
- package/dist/error/index.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +22 -0
- package/dist/index.js.map +1 -0
- package/dist/localization/index.d.ts +78 -0
- package/dist/localization/index.d.ts.map +1 -0
- package/dist/localization/index.js +9 -0
- package/dist/localization/index.js.map +1 -0
- package/dist/preset/community.d.ts +90 -0
- package/dist/preset/community.d.ts.map +1 -0
- package/dist/preset/community.js +9 -0
- package/dist/preset/community.js.map +1 -0
- package/dist/preset/core.d.ts +87 -0
- package/dist/preset/core.d.ts.map +1 -0
- package/dist/preset/core.js +9 -0
- package/dist/preset/core.js.map +1 -0
- package/dist/preset/index.d.ts +12 -0
- package/dist/preset/index.d.ts.map +1 -0
- package/dist/preset/index.js +9 -0
- package/dist/preset/index.js.map +1 -0
- package/dist/preset/request.d.ts +43 -0
- package/dist/preset/request.d.ts.map +1 -0
- package/dist/preset/request.js +9 -0
- package/dist/preset/request.js.map +1 -0
- package/dist/preset/response.d.ts +92 -0
- package/dist/preset/response.d.ts.map +1 -0
- package/dist/preset/response.js +9 -0
- package/dist/preset/response.js.map +1 -0
- package/dist/utility/index.d.ts +71 -0
- package/dist/utility/index.d.ts.map +1 -0
- package/dist/utility/index.js +20 -0
- package/dist/utility/index.js.map +1 -0
- package/package.json +73 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xivdyetools/types - Community Preset Types
|
|
3
|
+
*
|
|
4
|
+
* Types for community-submitted presets with moderation data.
|
|
5
|
+
*
|
|
6
|
+
* @module preset/community
|
|
7
|
+
*/
|
|
8
|
+
import type { PresetCategory, PresetStatus } from './core.js';
|
|
9
|
+
/**
|
|
10
|
+
* Stores pre-edit values for moderation revert capability
|
|
11
|
+
*
|
|
12
|
+
* When a preset is edited, the previous values are stored here
|
|
13
|
+
* so moderators can revert if needed.
|
|
14
|
+
*/
|
|
15
|
+
export interface PresetPreviousValues {
|
|
16
|
+
/** Previous preset name */
|
|
17
|
+
name: string;
|
|
18
|
+
/** Previous description */
|
|
19
|
+
description: string;
|
|
20
|
+
/** Previous tags array */
|
|
21
|
+
tags: string[];
|
|
22
|
+
/** Previous dye IDs array */
|
|
23
|
+
dyes: number[];
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Community preset with voting and moderation data
|
|
27
|
+
*
|
|
28
|
+
* Extended version of PresetPalette for API responses, including
|
|
29
|
+
* author information, vote counts, and moderation status.
|
|
30
|
+
*/
|
|
31
|
+
export interface CommunityPreset {
|
|
32
|
+
/** Unique identifier (UUID) */
|
|
33
|
+
id: string;
|
|
34
|
+
/** Display name */
|
|
35
|
+
name: string;
|
|
36
|
+
/** Brief description */
|
|
37
|
+
description: string;
|
|
38
|
+
/** Category this preset belongs to */
|
|
39
|
+
category_id: PresetCategory;
|
|
40
|
+
/** Array of dye item IDs (2-5 dyes) */
|
|
41
|
+
dyes: number[];
|
|
42
|
+
/** Searchable tags */
|
|
43
|
+
tags: string[];
|
|
44
|
+
/** Discord user ID of author (null for curated presets) */
|
|
45
|
+
author_discord_id: string | null;
|
|
46
|
+
/** Display name of author at submission time */
|
|
47
|
+
author_name: string | null;
|
|
48
|
+
/** Number of votes */
|
|
49
|
+
vote_count: number;
|
|
50
|
+
/** Moderation status */
|
|
51
|
+
status: PresetStatus;
|
|
52
|
+
/** True for official/curated presets */
|
|
53
|
+
is_curated: boolean;
|
|
54
|
+
/** ISO 8601 creation timestamp */
|
|
55
|
+
created_at: string;
|
|
56
|
+
/** ISO 8601 last update timestamp */
|
|
57
|
+
updated_at: string;
|
|
58
|
+
/**
|
|
59
|
+
* Sorted dye IDs signature for duplicate detection
|
|
60
|
+
* Format: comma-separated sorted dye IDs (e.g., "1,5,12,45")
|
|
61
|
+
*/
|
|
62
|
+
dye_signature?: string;
|
|
63
|
+
/** Previous values for revert capability (if edited) */
|
|
64
|
+
previous_values?: PresetPreviousValues | null;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Data required to submit a new preset
|
|
68
|
+
*/
|
|
69
|
+
export interface PresetSubmission {
|
|
70
|
+
/** Name (2-50 characters) */
|
|
71
|
+
name: string;
|
|
72
|
+
/** Description (10-200 characters) */
|
|
73
|
+
description: string;
|
|
74
|
+
/** Category */
|
|
75
|
+
category_id: PresetCategory;
|
|
76
|
+
/** Array of dye item IDs (2-5 dyes) */
|
|
77
|
+
dyes: number[];
|
|
78
|
+
/** Tags (0-10 tags, max 30 chars each) */
|
|
79
|
+
tags: string[];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Extended submission with author info (for authenticated submissions)
|
|
83
|
+
*/
|
|
84
|
+
export interface AuthenticatedPresetSubmission extends PresetSubmission {
|
|
85
|
+
/** Submitter's Discord user ID */
|
|
86
|
+
author_discord_id: string;
|
|
87
|
+
/** Submitter's display name */
|
|
88
|
+
author_name: string;
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=community.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community.d.ts","sourceRoot":"","sources":["../../src/preset/community.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IAEpB,0BAA0B;IAC1B,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf,6BAA6B;IAC7B,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IAEX,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IAEb,wBAAwB;IACxB,WAAW,EAAE,MAAM,CAAC;IAEpB,sCAAsC;IACtC,WAAW,EAAE,cAAc,CAAC;IAE5B,uCAAuC;IACvC,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf,sBAAsB;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf,2DAA2D;IAC3D,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAEjC,gDAAgD;IAChD,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAE3B,sBAAsB;IACtB,UAAU,EAAE,MAAM,CAAC;IAEnB,wBAAwB;IACxB,MAAM,EAAE,YAAY,CAAC;IAErB,wCAAwC;IACxC,UAAU,EAAE,OAAO,CAAC;IAEpB,kCAAkC;IAClC,UAAU,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,wDAAwD;IACxD,eAAe,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC/C;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IAEb,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAC;IAEpB,eAAe;IACf,WAAW,EAAE,cAAc,CAAC;IAE5B,uCAAuC;IACvC,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf,0CAA0C;IAC1C,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,gBAAgB;IACrE,kCAAkC;IAClC,iBAAiB,EAAE,MAAM,CAAC;IAE1B,+BAA+B;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community.js","sourceRoot":"","sources":["../../src/preset/community.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xivdyetools/types - Preset Core Types
|
|
3
|
+
*
|
|
4
|
+
* Core preset palette type definitions.
|
|
5
|
+
*
|
|
6
|
+
* @module preset/core
|
|
7
|
+
*/
|
|
8
|
+
import type { Dye } from '../dye/dye.js';
|
|
9
|
+
/**
|
|
10
|
+
* Preset palette category identifiers
|
|
11
|
+
*/
|
|
12
|
+
export type PresetCategory = 'jobs' | 'grand-companies' | 'seasons' | 'events' | 'aesthetics' | 'community';
|
|
13
|
+
/**
|
|
14
|
+
* Status of a preset submission in the moderation workflow
|
|
15
|
+
*/
|
|
16
|
+
export type PresetStatus = 'pending' | 'approved' | 'rejected' | 'flagged';
|
|
17
|
+
/**
|
|
18
|
+
* Sort options for preset listings
|
|
19
|
+
*/
|
|
20
|
+
export type PresetSortOption = 'popular' | 'recent' | 'name';
|
|
21
|
+
/**
|
|
22
|
+
* Metadata for a preset category
|
|
23
|
+
*/
|
|
24
|
+
export interface CategoryMeta {
|
|
25
|
+
/** Category identifier */
|
|
26
|
+
id?: string;
|
|
27
|
+
/** Display name (may be localized) */
|
|
28
|
+
name: string;
|
|
29
|
+
/** Category description */
|
|
30
|
+
description: string;
|
|
31
|
+
/** Optional icon/emoji */
|
|
32
|
+
icon?: string | null;
|
|
33
|
+
/** True if this is a curated (official) category */
|
|
34
|
+
is_curated?: boolean;
|
|
35
|
+
/** Display order for sorting */
|
|
36
|
+
display_order?: number;
|
|
37
|
+
/** Number of presets in this category */
|
|
38
|
+
preset_count?: number;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* A preset color palette
|
|
42
|
+
*
|
|
43
|
+
* Represents a curated or user-created color palette using FFXIV dyes.
|
|
44
|
+
*/
|
|
45
|
+
export interface PresetPalette {
|
|
46
|
+
/** Unique identifier (e.g., "job-rdm", "season-autumn", or UUID for community) */
|
|
47
|
+
id: string;
|
|
48
|
+
/** Display name (e.g., "Red Mage") */
|
|
49
|
+
name: string;
|
|
50
|
+
/** Category this preset belongs to */
|
|
51
|
+
category: PresetCategory;
|
|
52
|
+
/** Brief description of the palette */
|
|
53
|
+
description: string;
|
|
54
|
+
/** Array of dye itemIDs (2-5 dyes) */
|
|
55
|
+
dyes: number[];
|
|
56
|
+
/** Searchable tags */
|
|
57
|
+
tags: string[];
|
|
58
|
+
/** Credit for community submissions */
|
|
59
|
+
author?: string;
|
|
60
|
+
/** Version for future updates */
|
|
61
|
+
version?: string;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Preset with resolved Dye objects
|
|
65
|
+
*
|
|
66
|
+
* Used when displaying a preset with full dye information.
|
|
67
|
+
*/
|
|
68
|
+
export interface ResolvedPreset extends PresetPalette {
|
|
69
|
+
/** Full Dye objects for each dye ID (null if dye not found) */
|
|
70
|
+
resolvedDyes: (Dye | null)[];
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Full preset data structure
|
|
74
|
+
*
|
|
75
|
+
* The complete preset database including all categories and palettes.
|
|
76
|
+
*/
|
|
77
|
+
export interface PresetData {
|
|
78
|
+
/** Data format version */
|
|
79
|
+
version: string;
|
|
80
|
+
/** Last update timestamp (ISO 8601) */
|
|
81
|
+
lastUpdated: string;
|
|
82
|
+
/** Category metadata */
|
|
83
|
+
categories: Record<PresetCategory, CategoryMeta>;
|
|
84
|
+
/** All preset palettes */
|
|
85
|
+
palettes: PresetPalette[];
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=core.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/preset/core.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC;;GAEG;AACH,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,iBAAiB,GACjB,SAAS,GACT,QAAQ,GACR,YAAY,GACZ,WAAW,CAAC;AAEhB;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAE3E;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE7D;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,0BAA0B;IAC1B,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IAEb,2BAA2B;IAC3B,WAAW,EAAE,MAAM,CAAC;IAEpB,0BAA0B;IAC1B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAErB,oDAAoD;IACpD,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,gCAAgC;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,EAAE,EAAE,MAAM,CAAC;IAEX,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IAEb,sCAAsC;IACtC,QAAQ,EAAE,cAAc,CAAC;IAEzB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IAEpB,sCAAsC;IACtC,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf,sBAAsB;IACtB,IAAI,EAAE,MAAM,EAAE,CAAC;IAEf,uCAAuC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAe,SAAQ,aAAa;IACnD,+DAA+D;IAC/D,YAAY,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC;CAC9B;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,0BAA0B;IAC1B,OAAO,EAAE,MAAM,CAAC;IAEhB,uCAAuC;IACvC,WAAW,EAAE,MAAM,CAAC;IAEpB,wBAAwB;IACxB,UAAU,EAAE,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAEjD,0BAA0B;IAC1B,QAAQ,EAAE,aAAa,EAAE,CAAC;CAC3B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/preset/core.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xivdyetools/types - Preset Module
|
|
3
|
+
*
|
|
4
|
+
* Preset palette type definitions for curated and community presets.
|
|
5
|
+
*
|
|
6
|
+
* @module preset
|
|
7
|
+
*/
|
|
8
|
+
export type { PresetCategory, PresetStatus, PresetSortOption, CategoryMeta, PresetPalette, ResolvedPreset, PresetData, } from './core.js';
|
|
9
|
+
export type { PresetPreviousValues, CommunityPreset, PresetSubmission, AuthenticatedPresetSubmission, } from './community.js';
|
|
10
|
+
export type { PresetFilters, PresetEditRequest } from './request.js';
|
|
11
|
+
export type { PresetListResponse, PresetSubmitResponse, PresetEditResponse, VoteResponse, ModerationResponse, CategoryListResponse, } from './response.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/preset/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,YAAY,EACV,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,cAAc,EACd,UAAU,GACX,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,6BAA6B,GAC9B,MAAM,gBAAgB,CAAC;AAGxB,YAAY,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGrE,YAAY,EACV,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,YAAY,EACZ,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/preset/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xivdyetools/types - Preset Request Types
|
|
3
|
+
*
|
|
4
|
+
* Types for preset API requests.
|
|
5
|
+
*
|
|
6
|
+
* @module preset/request
|
|
7
|
+
*/
|
|
8
|
+
import type { PresetCategory, PresetStatus, PresetSortOption } from './core.js';
|
|
9
|
+
/**
|
|
10
|
+
* Filters for listing presets
|
|
11
|
+
*/
|
|
12
|
+
export interface PresetFilters {
|
|
13
|
+
/** Filter by category */
|
|
14
|
+
category?: PresetCategory;
|
|
15
|
+
/** Search term (searches name, description, tags) */
|
|
16
|
+
search?: string;
|
|
17
|
+
/** Filter by moderation status */
|
|
18
|
+
status?: PresetStatus;
|
|
19
|
+
/** Sort order */
|
|
20
|
+
sort?: PresetSortOption;
|
|
21
|
+
/** Page number (1-indexed) */
|
|
22
|
+
page?: number;
|
|
23
|
+
/** Results per page (default: 20, max: 50) */
|
|
24
|
+
limit?: number;
|
|
25
|
+
/** Filter by curated status */
|
|
26
|
+
is_curated?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Request body for editing a preset
|
|
30
|
+
*
|
|
31
|
+
* All fields are optional - only provided fields will be updated.
|
|
32
|
+
*/
|
|
33
|
+
export interface PresetEditRequest {
|
|
34
|
+
/** New name (2-50 characters) */
|
|
35
|
+
name?: string;
|
|
36
|
+
/** New description (10-200 characters) */
|
|
37
|
+
description?: string;
|
|
38
|
+
/** New dye IDs (2-5 dyes) */
|
|
39
|
+
dyes?: number[];
|
|
40
|
+
/** New tags (0-10 tags, max 30 chars each) */
|
|
41
|
+
tags?: string[];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=request.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/preset/request.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,kCAAkC;IAClC,MAAM,CAAC,EAAE,YAAY,CAAC;IAEtB,iBAAiB;IACjB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IAExB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,8CAA8C;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,+BAA+B;IAC/B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,0CAA0C;IAC1C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,8CAA8C;IAC9C,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/preset/request.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xivdyetools/types - Preset Response Types
|
|
3
|
+
*
|
|
4
|
+
* Types for preset API responses.
|
|
5
|
+
*
|
|
6
|
+
* @module preset/response
|
|
7
|
+
*/
|
|
8
|
+
import type { CategoryMeta } from './core.js';
|
|
9
|
+
import type { CommunityPreset } from './community.js';
|
|
10
|
+
/**
|
|
11
|
+
* Response when listing presets
|
|
12
|
+
*/
|
|
13
|
+
export interface PresetListResponse {
|
|
14
|
+
/** Array of presets */
|
|
15
|
+
presets: CommunityPreset[];
|
|
16
|
+
/** Total count (for pagination) */
|
|
17
|
+
total: number;
|
|
18
|
+
/** Current page number */
|
|
19
|
+
page: number;
|
|
20
|
+
/** Results per page */
|
|
21
|
+
limit: number;
|
|
22
|
+
/** True if more pages available */
|
|
23
|
+
has_more: boolean;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Response when submitting a preset
|
|
27
|
+
*/
|
|
28
|
+
export interface PresetSubmitResponse {
|
|
29
|
+
/** Whether the operation succeeded */
|
|
30
|
+
success: boolean;
|
|
31
|
+
/** The created preset (if new) */
|
|
32
|
+
preset?: CommunityPreset;
|
|
33
|
+
/** The existing preset (if duplicate found) */
|
|
34
|
+
duplicate?: CommunityPreset;
|
|
35
|
+
/** Whether a vote was added to duplicate */
|
|
36
|
+
vote_added?: boolean;
|
|
37
|
+
/** Moderation result */
|
|
38
|
+
moderation_status?: 'approved' | 'pending';
|
|
39
|
+
/** Error message (if success is false) */
|
|
40
|
+
error?: string;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Response from preset edit endpoint
|
|
44
|
+
*/
|
|
45
|
+
export interface PresetEditResponse {
|
|
46
|
+
/** Whether the operation succeeded */
|
|
47
|
+
success: boolean;
|
|
48
|
+
/** The updated preset */
|
|
49
|
+
preset?: CommunityPreset;
|
|
50
|
+
/** Moderation result (if content needed review) */
|
|
51
|
+
moderation_status?: 'approved' | 'pending';
|
|
52
|
+
/** Duplicate info (if edit would create duplicate) */
|
|
53
|
+
duplicate?: {
|
|
54
|
+
id: string;
|
|
55
|
+
name: string;
|
|
56
|
+
author_name: string | null;
|
|
57
|
+
};
|
|
58
|
+
/** Error message (if success is false) */
|
|
59
|
+
error?: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Response when voting on a preset
|
|
63
|
+
*/
|
|
64
|
+
export interface VoteResponse {
|
|
65
|
+
/** Whether the operation succeeded */
|
|
66
|
+
success: boolean;
|
|
67
|
+
/** Updated vote count */
|
|
68
|
+
new_vote_count: number;
|
|
69
|
+
/** True if user already voted */
|
|
70
|
+
already_voted?: boolean;
|
|
71
|
+
/** Error message (if success is false) */
|
|
72
|
+
error?: string;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Response from moderation actions
|
|
76
|
+
*/
|
|
77
|
+
export interface ModerationResponse {
|
|
78
|
+
/** Whether the operation succeeded */
|
|
79
|
+
success: boolean;
|
|
80
|
+
/** The updated preset */
|
|
81
|
+
preset?: CommunityPreset;
|
|
82
|
+
/** Error message (if success is false) */
|
|
83
|
+
error?: string;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Response when listing categories
|
|
87
|
+
*/
|
|
88
|
+
export interface CategoryListResponse {
|
|
89
|
+
/** Array of category metadata */
|
|
90
|
+
categories: CategoryMeta[];
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=response.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/preset/response.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,uBAAuB;IACvB,OAAO,EAAE,eAAe,EAAE,CAAC;IAE3B,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IAEd,0BAA0B;IAC1B,IAAI,EAAE,MAAM,CAAC;IAEb,uBAAuB;IACvB,KAAK,EAAE,MAAM,CAAC;IAEd,mCAAmC;IACnC,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IAEjB,kCAAkC;IAClC,MAAM,CAAC,EAAE,eAAe,CAAC;IAEzB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B,4CAA4C;IAC5C,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB,wBAAwB;IACxB,iBAAiB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAE3C,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IAEjB,yBAAyB;IACzB,MAAM,CAAC,EAAE,eAAe,CAAC;IAEzB,mDAAmD;IACnD,iBAAiB,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAE3C,sDAAsD;IACtD,SAAS,CAAC,EAAE;QACV,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;KAC5B,CAAC;IAEF,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IAEjB,yBAAyB;IACzB,cAAc,EAAE,MAAM,CAAC;IAEvB,iCAAiC;IACjC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,sCAAsC;IACtC,OAAO,EAAE,OAAO,CAAC;IAEjB,yBAAyB;IACzB,MAAM,CAAC,EAAE,eAAe,CAAC;IAEzB,0CAA0C;IAC1C,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,iCAAiC;IACjC,UAAU,EAAE,YAAY,EAAE,CAAC;CAC5B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/preset/response.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xivdyetools/types - Utility Types
|
|
3
|
+
*
|
|
4
|
+
* Generic utility types for common patterns.
|
|
5
|
+
*
|
|
6
|
+
* @module utility
|
|
7
|
+
*/
|
|
8
|
+
import type { AppError } from '../error/app-error.js';
|
|
9
|
+
/**
|
|
10
|
+
* Generic result type for operations that might fail
|
|
11
|
+
*
|
|
12
|
+
* Use this for functions that can return either a value or an error,
|
|
13
|
+
* avoiding exceptions for expected failure cases.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* function parseColor(hex: string): Result<RGB> {
|
|
18
|
+
* if (!isValidHex(hex)) {
|
|
19
|
+
* return { ok: false, error: new AppError('INVALID_HEX', 'Invalid hex color') };
|
|
20
|
+
* }
|
|
21
|
+
* return { ok: true, value: hexToRgb(hex) };
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* const result = parseColor('#ff0000');
|
|
25
|
+
* if (result.ok) {
|
|
26
|
+
* console.log(result.value); // RGB object
|
|
27
|
+
* } else {
|
|
28
|
+
* console.error(result.error.message);
|
|
29
|
+
* }
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export type Result<T, E = AppError> = {
|
|
33
|
+
ok: true;
|
|
34
|
+
value: T;
|
|
35
|
+
} | {
|
|
36
|
+
ok: false;
|
|
37
|
+
error: E;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Async result type
|
|
41
|
+
*
|
|
42
|
+
* Promise wrapper around Result for async operations.
|
|
43
|
+
*/
|
|
44
|
+
export type AsyncResult<T, E = AppError> = Promise<Result<T, E>>;
|
|
45
|
+
/**
|
|
46
|
+
* Nullable type
|
|
47
|
+
*
|
|
48
|
+
* Value that can be T or null.
|
|
49
|
+
*/
|
|
50
|
+
export type Nullable<T> = T | null;
|
|
51
|
+
/**
|
|
52
|
+
* Optional type
|
|
53
|
+
*
|
|
54
|
+
* Value that can be T or undefined.
|
|
55
|
+
*/
|
|
56
|
+
export type Optional<T> = T | undefined;
|
|
57
|
+
/**
|
|
58
|
+
* Type guard for checking if a Result is successful
|
|
59
|
+
*/
|
|
60
|
+
export declare function isOk<T, E>(result: Result<T, E>): result is {
|
|
61
|
+
ok: true;
|
|
62
|
+
value: T;
|
|
63
|
+
};
|
|
64
|
+
/**
|
|
65
|
+
* Type guard for checking if a Result is an error
|
|
66
|
+
*/
|
|
67
|
+
export declare function isErr<T, E>(result: Result<T, E>): result is {
|
|
68
|
+
ok: false;
|
|
69
|
+
error: E;
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utility/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,IAC9B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC;AAE5B;;;;GAIG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,EAAE,CAAC,GAAG,QAAQ,IAAI,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AAEjE;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAEnC;;;;GAIG;AACH,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC;AAExC;;GAEG;AACH,wBAAgB,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAEjF;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,MAAM,IAAI;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAEnF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @xivdyetools/types - Utility Types
|
|
3
|
+
*
|
|
4
|
+
* Generic utility types for common patterns.
|
|
5
|
+
*
|
|
6
|
+
* @module utility
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Type guard for checking if a Result is successful
|
|
10
|
+
*/
|
|
11
|
+
export function isOk(result) {
|
|
12
|
+
return result.ok;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Type guard for checking if a Result is an error
|
|
16
|
+
*/
|
|
17
|
+
export function isErr(result) {
|
|
18
|
+
return !result.ok;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utility/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoDH;;GAEG;AACH,MAAM,UAAU,IAAI,CAAO,MAAoB;IAC7C,OAAO,MAAM,CAAC,EAAE,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,KAAK,CAAO,MAAoB;IAC9C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;AACpB,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@xivdyetools/types",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Shared TypeScript type definitions for the xivdyetools ecosystem",
|
|
5
|
+
"author": "XIV Dye Tools",
|
|
6
|
+
"license": "MIT",
|
|
7
|
+
"type": "module",
|
|
8
|
+
"main": "dist/index.js",
|
|
9
|
+
"types": "dist/index.d.ts",
|
|
10
|
+
"exports": {
|
|
11
|
+
".": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"import": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"./color": {
|
|
16
|
+
"types": "./dist/color/index.d.ts",
|
|
17
|
+
"import": "./dist/color/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./dye": {
|
|
20
|
+
"types": "./dist/dye/index.d.ts",
|
|
21
|
+
"import": "./dist/dye/index.js"
|
|
22
|
+
},
|
|
23
|
+
"./preset": {
|
|
24
|
+
"types": "./dist/preset/index.d.ts",
|
|
25
|
+
"import": "./dist/preset/index.js"
|
|
26
|
+
},
|
|
27
|
+
"./auth": {
|
|
28
|
+
"types": "./dist/auth/index.d.ts",
|
|
29
|
+
"import": "./dist/auth/index.js"
|
|
30
|
+
},
|
|
31
|
+
"./api": {
|
|
32
|
+
"types": "./dist/api/index.d.ts",
|
|
33
|
+
"import": "./dist/api/index.js"
|
|
34
|
+
},
|
|
35
|
+
"./error": {
|
|
36
|
+
"types": "./dist/error/index.d.ts",
|
|
37
|
+
"import": "./dist/error/index.js"
|
|
38
|
+
},
|
|
39
|
+
"./localization": {
|
|
40
|
+
"types": "./dist/localization/index.d.ts",
|
|
41
|
+
"import": "./dist/localization/index.js"
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
"files": [
|
|
45
|
+
"dist",
|
|
46
|
+
"README.md"
|
|
47
|
+
],
|
|
48
|
+
"sideEffects": false,
|
|
49
|
+
"scripts": {
|
|
50
|
+
"build": "tsc -p tsconfig.build.json",
|
|
51
|
+
"type-check": "tsc --noEmit",
|
|
52
|
+
"clean": "rimraf dist",
|
|
53
|
+
"prepublishOnly": "npm run clean && npm run build"
|
|
54
|
+
},
|
|
55
|
+
"devDependencies": {
|
|
56
|
+
"typescript": "^5.3.2",
|
|
57
|
+
"rimraf": "^5.0.5"
|
|
58
|
+
},
|
|
59
|
+
"engines": {
|
|
60
|
+
"node": ">=18.0.0"
|
|
61
|
+
},
|
|
62
|
+
"keywords": [
|
|
63
|
+
"xivdyetools",
|
|
64
|
+
"ffxiv",
|
|
65
|
+
"dyes",
|
|
66
|
+
"typescript",
|
|
67
|
+
"types"
|
|
68
|
+
],
|
|
69
|
+
"repository": {
|
|
70
|
+
"type": "git",
|
|
71
|
+
"url": "https://github.com/xivdyetools/xivdyetools-types.git"
|
|
72
|
+
}
|
|
73
|
+
}
|