curseforge-js 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.
Files changed (90) hide show
  1. package/README.md +164 -0
  2. package/dist/client/categories.d.ts +13 -0
  3. package/dist/client/categories.d.ts.map +1 -0
  4. package/dist/client/categories.js +18 -0
  5. package/dist/client/categories.js.map +1 -0
  6. package/dist/client/core.d.ts +16 -0
  7. package/dist/client/core.d.ts.map +1 -0
  8. package/dist/client/core.js +62 -0
  9. package/dist/client/core.js.map +1 -0
  10. package/dist/client/curseforge.d.ts +27 -0
  11. package/dist/client/curseforge.d.ts.map +1 -0
  12. package/dist/client/curseforge.js +35 -0
  13. package/dist/client/curseforge.js.map +1 -0
  14. package/dist/client/files.d.ts +19 -0
  15. package/dist/client/files.d.ts.map +1 -0
  16. package/dist/client/files.js +32 -0
  17. package/dist/client/files.js.map +1 -0
  18. package/dist/client/fingerprints.d.ts +12 -0
  19. package/dist/client/fingerprints.d.ts.map +1 -0
  20. package/dist/client/fingerprints.js +24 -0
  21. package/dist/client/fingerprints.js.map +1 -0
  22. package/dist/client/games.d.ts +19 -0
  23. package/dist/client/games.d.ts.map +1 -0
  24. package/dist/client/games.js +32 -0
  25. package/dist/client/games.js.map +1 -0
  26. package/dist/client/index.d.ts +9 -0
  27. package/dist/client/index.d.ts.map +1 -0
  28. package/dist/client/index.js +9 -0
  29. package/dist/client/index.js.map +1 -0
  30. package/dist/client/minecraft.d.ts +16 -0
  31. package/dist/client/minecraft.d.ts.map +1 -0
  32. package/dist/client/minecraft.js +28 -0
  33. package/dist/client/minecraft.js.map +1 -0
  34. package/dist/client/mods.d.ts +19 -0
  35. package/dist/client/mods.d.ts.map +1 -0
  36. package/dist/client/mods.js +45 -0
  37. package/dist/client/mods.js.map +1 -0
  38. package/dist/client.d.ts +2 -0
  39. package/dist/client.d.ts.map +1 -0
  40. package/dist/client.js +2 -0
  41. package/dist/client.js.map +1 -0
  42. package/dist/errors.d.ts +13 -0
  43. package/dist/errors.d.ts.map +1 -0
  44. package/dist/errors.js +14 -0
  45. package/dist/errors.js.map +1 -0
  46. package/dist/index.d.ts +5 -0
  47. package/dist/index.d.ts.map +1 -0
  48. package/dist/index.js +5 -0
  49. package/dist/index.js.map +1 -0
  50. package/dist/types/base.d.ts +49 -0
  51. package/dist/types/base.d.ts.map +1 -0
  52. package/dist/types/base.js +2 -0
  53. package/dist/types/base.js.map +1 -0
  54. package/dist/types/categories.d.ts +35 -0
  55. package/dist/types/categories.d.ts.map +1 -0
  56. package/dist/types/categories.js +2 -0
  57. package/dist/types/categories.js.map +1 -0
  58. package/dist/types/files.d.ts +146 -0
  59. package/dist/types/files.d.ts.map +1 -0
  60. package/dist/types/files.js +51 -0
  61. package/dist/types/files.js.map +1 -0
  62. package/dist/types/fingerprints.d.ts +44 -0
  63. package/dist/types/fingerprints.d.ts.map +1 -0
  64. package/dist/types/fingerprints.js +2 -0
  65. package/dist/types/fingerprints.js.map +1 -0
  66. package/dist/types/games.d.ts +70 -0
  67. package/dist/types/games.d.ts.map +1 -0
  68. package/dist/types/games.js +30 -0
  69. package/dist/types/games.js.map +1 -0
  70. package/dist/types/index.d.ts +8 -0
  71. package/dist/types/index.d.ts.map +1 -0
  72. package/dist/types/index.js +8 -0
  73. package/dist/types/index.js.map +1 -0
  74. package/dist/types/minecraft.d.ts +84 -0
  75. package/dist/types/minecraft.d.ts.map +1 -0
  76. package/dist/types/minecraft.js +22 -0
  77. package/dist/types/minecraft.js.map +1 -0
  78. package/dist/types/mods.d.ts +171 -0
  79. package/dist/types/mods.d.ts.map +1 -0
  80. package/dist/types/mods.js +31 -0
  81. package/dist/types/mods.js.map +1 -0
  82. package/dist/types.d.ts +2 -0
  83. package/dist/types.d.ts.map +1 -0
  84. package/dist/types.js +2 -0
  85. package/dist/types.js.map +1 -0
  86. package/dist/utils/request.d.ts +21 -0
  87. package/dist/utils/request.d.ts.map +1 -0
  88. package/dist/utils/request.js +96 -0
  89. package/dist/utils/request.js.map +1 -0
  90. package/package.json +62 -0
@@ -0,0 +1,8 @@
1
+ export * from './base.js';
2
+ export * from './categories.js';
3
+ export * from './files.js';
4
+ export * from './fingerprints.js';
5
+ export * from './games.js';
6
+ export * from './minecraft.js';
7
+ export * from './mods.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from './base.js';
2
+ export * from './categories.js';
3
+ export * from './files.js';
4
+ export * from './fingerprints.js';
5
+ export * from './games.js';
6
+ export * from './minecraft.js';
7
+ export * from './mods.js';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,84 @@
1
+ import type { GameVersionStatus, GameVersionTypeStatus } from './games.js';
2
+ /** A Minecraft mod loader kind. */
3
+ export declare enum ModLoaderType {
4
+ Any = 0,
5
+ Forge = 1,
6
+ Cauldron = 2,
7
+ LiteLoader = 3,
8
+ Fabric = 4,
9
+ Quilt = 5,
10
+ NeoForge = 6
11
+ }
12
+ /** Install method used by a Minecraft mod loader version. */
13
+ export declare enum ModLoaderInstallMethod {
14
+ ForgeInstaller = 1,
15
+ ForgeJarInstall = 2,
16
+ ForgeInstaller_v2 = 3,
17
+ FabricInstaller = 4,
18
+ QuiltInstaller = 5,
19
+ NeoForgeInstaller = 6
20
+ }
21
+ /** A single Minecraft game version. */
22
+ export interface MinecraftGameVersion {
23
+ id: number;
24
+ gameVersionId: number;
25
+ versionString: string;
26
+ jarDownloadUrl: string;
27
+ jsonDownloadUrl: string;
28
+ approved: boolean;
29
+ dateModified: string;
30
+ gameVersionTypeId: number;
31
+ gameVersionStatus: GameVersionStatus;
32
+ gameVersionTypeStatus: GameVersionTypeStatus;
33
+ }
34
+ /** A condensed entry describing the latest/recommended version of a Minecraft mod loader. */
35
+ export interface MinecraftModLoaderIndex {
36
+ name: string;
37
+ gameVersion: string;
38
+ latest: boolean;
39
+ recommended: boolean;
40
+ dateModified: string;
41
+ type: ModLoaderType;
42
+ }
43
+ /** Full details for a specific Minecraft mod loader version. */
44
+ export interface MinecraftModLoaderVersion {
45
+ id: number;
46
+ gameVersionId: number;
47
+ minecraftGameVersionId: number;
48
+ forgeVersion: string;
49
+ name: string;
50
+ type: ModLoaderType;
51
+ downloadUrl: string;
52
+ filename: string;
53
+ installMethod: ModLoaderInstallMethod;
54
+ latest: boolean;
55
+ recommended: boolean;
56
+ approved: boolean;
57
+ dateModified: string;
58
+ mavenVersionString: string;
59
+ versionJson: string;
60
+ librariesInstallLocation: string;
61
+ minecraftVersion: string;
62
+ additionalFilesJson: string;
63
+ modLoaderGameVersionId: number;
64
+ modLoaderGameVersionTypeId: number;
65
+ modLoaderGameVersionStatus: GameVersionStatus;
66
+ modLoaderGameVersionTypeStatus: GameVersionTypeStatus;
67
+ mcGameVersionId: number;
68
+ mcGameVersionTypeId: number;
69
+ mcGameVersionStatus: GameVersionStatus;
70
+ mcGameVersionTypeStatus: GameVersionTypeStatus;
71
+ installProfileJson: string;
72
+ }
73
+ /** Query parameters for {@link MinecraftApi.getVersions}. */
74
+ export interface GetMinecraftVersionsOptions {
75
+ sortDescending?: boolean;
76
+ }
77
+ /** Query parameters for {@link MinecraftApi.getModLoaders}. */
78
+ export interface GetMinecraftModLoadersOptions {
79
+ /** Filter mod loaders by Minecraft game version. */
80
+ version?: string;
81
+ /** Include all mod loaders, not just the latest/recommended ones. */
82
+ includeAll?: boolean;
83
+ }
84
+ //# sourceMappingURL=minecraft.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minecraft.d.ts","sourceRoot":"","sources":["../../src/types/minecraft.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAE3E,mCAAmC;AACnC,oBAAY,aAAa;IACvB,GAAG,IAAI;IACP,KAAK,IAAI;IACT,QAAQ,IAAI;IACZ,UAAU,IAAI;IACd,MAAM,IAAI;IACV,KAAK,IAAI;IACT,QAAQ,IAAI;CACb;AAED,6DAA6D;AAC7D,oBAAY,sBAAsB;IAChC,cAAc,IAAI;IAClB,eAAe,IAAI;IACnB,iBAAiB,IAAI;IACrB,eAAe,IAAI;IACnB,cAAc,IAAI;IAClB,iBAAiB,IAAI;CACtB;AAED,uCAAuC;AACvC,MAAM,WAAW,oBAAoB;IACnC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,qBAAqB,EAAE,qBAAqB,CAAC;CAC9C;AAED,6FAA6F;AAC7F,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,gEAAgE;AAChE,MAAM,WAAW,yBAAyB;IACxC,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,aAAa,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,sBAAsB,CAAC;IACtC,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,wBAAwB,EAAE,MAAM,CAAC;IACjC,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,0BAA0B,EAAE,MAAM,CAAC;IACnC,0BAA0B,EAAE,iBAAiB,CAAC;IAC9C,8BAA8B,EAAE,qBAAqB,CAAC;IACtD,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,mBAAmB,EAAE,iBAAiB,CAAC;IACvC,uBAAuB,EAAE,qBAAqB,CAAC;IAC/C,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,6DAA6D;AAC7D,MAAM,WAAW,2BAA2B;IAC1C,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,+DAA+D;AAC/D,MAAM,WAAW,6BAA6B;IAC5C,oDAAoD;IACpD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,qEAAqE;IACrE,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB"}
@@ -0,0 +1,22 @@
1
+ /** A Minecraft mod loader kind. */
2
+ export var ModLoaderType;
3
+ (function (ModLoaderType) {
4
+ ModLoaderType[ModLoaderType["Any"] = 0] = "Any";
5
+ ModLoaderType[ModLoaderType["Forge"] = 1] = "Forge";
6
+ ModLoaderType[ModLoaderType["Cauldron"] = 2] = "Cauldron";
7
+ ModLoaderType[ModLoaderType["LiteLoader"] = 3] = "LiteLoader";
8
+ ModLoaderType[ModLoaderType["Fabric"] = 4] = "Fabric";
9
+ ModLoaderType[ModLoaderType["Quilt"] = 5] = "Quilt";
10
+ ModLoaderType[ModLoaderType["NeoForge"] = 6] = "NeoForge";
11
+ })(ModLoaderType || (ModLoaderType = {}));
12
+ /** Install method used by a Minecraft mod loader version. */
13
+ export var ModLoaderInstallMethod;
14
+ (function (ModLoaderInstallMethod) {
15
+ ModLoaderInstallMethod[ModLoaderInstallMethod["ForgeInstaller"] = 1] = "ForgeInstaller";
16
+ ModLoaderInstallMethod[ModLoaderInstallMethod["ForgeJarInstall"] = 2] = "ForgeJarInstall";
17
+ ModLoaderInstallMethod[ModLoaderInstallMethod["ForgeInstaller_v2"] = 3] = "ForgeInstaller_v2";
18
+ ModLoaderInstallMethod[ModLoaderInstallMethod["FabricInstaller"] = 4] = "FabricInstaller";
19
+ ModLoaderInstallMethod[ModLoaderInstallMethod["QuiltInstaller"] = 5] = "QuiltInstaller";
20
+ ModLoaderInstallMethod[ModLoaderInstallMethod["NeoForgeInstaller"] = 6] = "NeoForgeInstaller";
21
+ })(ModLoaderInstallMethod || (ModLoaderInstallMethod = {}));
22
+ //# sourceMappingURL=minecraft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"minecraft.js","sourceRoot":"","sources":["../../src/types/minecraft.ts"],"names":[],"mappings":"AAEA,mCAAmC;AACnC,MAAM,CAAN,IAAY,aAQX;AARD,WAAY,aAAa;IACvB,+CAAO,CAAA;IACP,mDAAS,CAAA;IACT,yDAAY,CAAA;IACZ,6DAAc,CAAA;IACd,qDAAU,CAAA;IACV,mDAAS,CAAA;IACT,yDAAY,CAAA;AACd,CAAC,EARW,aAAa,KAAb,aAAa,QAQxB;AAED,6DAA6D;AAC7D,MAAM,CAAN,IAAY,sBAOX;AAPD,WAAY,sBAAsB;IAChC,uFAAkB,CAAA;IAClB,yFAAmB,CAAA;IACnB,6FAAqB,CAAA;IACrB,yFAAmB,CAAA;IACnB,uFAAkB,CAAA;IAClB,6FAAqB,CAAA;AACvB,CAAC,EAPW,sBAAsB,KAAtB,sBAAsB,QAOjC"}
@@ -0,0 +1,171 @@
1
+ import type { Category } from './categories.js';
2
+ import type { File, FileIndex } from './files.js';
3
+ import type { ModLoaderType } from './minecraft.js';
4
+ import type { PaginationOptions } from './base.js';
5
+ /** The approval status of a mod. */
6
+ export declare enum ModStatus {
7
+ New = 1,
8
+ ChangesRequired = 2,
9
+ UnderSoftReview = 3,
10
+ Approved = 4,
11
+ Rejected = 5,
12
+ ChangesMade = 6,
13
+ Inactive = 7,
14
+ Abandoned = 8,
15
+ Deleted = 9,
16
+ UnderReview = 10
17
+ }
18
+ /** Field to sort mod search results by. */
19
+ export declare enum ModsSearchSortField {
20
+ Featured = 1,
21
+ Popularity = 2,
22
+ LastUpdated = 3,
23
+ Name = 4,
24
+ Author = 5,
25
+ TotalDownloads = 6,
26
+ Category = 7,
27
+ GameVersion = 8,
28
+ EarlyAccess = 9,
29
+ FeaturedReleased = 10,
30
+ ReleasedDate = 11,
31
+ Rating = 12
32
+ }
33
+ /** Sort direction for mod search results. */
34
+ export type SortOrder = 'asc' | 'desc';
35
+ /** Relevant external links for a mod. */
36
+ export interface ModLinks {
37
+ websiteUrl: string;
38
+ wikiUrl: string;
39
+ issuesUrl: string;
40
+ sourceUrl: string;
41
+ }
42
+ /** An author of a mod. */
43
+ export interface ModAuthor {
44
+ id: number;
45
+ name: string;
46
+ url: string;
47
+ }
48
+ /** An image asset (logo or screenshot) belonging to a mod. */
49
+ export interface ModAsset {
50
+ id: number;
51
+ modId: number;
52
+ title: string;
53
+ description: string;
54
+ thumbnailUrl: string;
55
+ url: string;
56
+ }
57
+ /** A mod (project) on CurseForge. */
58
+ export interface Mod {
59
+ /** The mod id. */
60
+ id: number;
61
+ /** The game id this mod is for. */
62
+ gameId: number;
63
+ /** The name of the mod. */
64
+ name: string;
65
+ /** The mod slug that would appear in the URL. */
66
+ slug: string;
67
+ /** Relevant links for the mod, such as issue tracker and wiki. */
68
+ links: ModLinks;
69
+ /** Mod summary. */
70
+ summary: string;
71
+ /** Current mod status. */
72
+ status: ModStatus;
73
+ /** Number of downloads for the mod. */
74
+ downloadCount: number;
75
+ /** Whether the mod is included in the featured mods list. */
76
+ isFeatured: boolean;
77
+ /** The main category of the mod as chosen by its author. */
78
+ primaryCategoryId: number;
79
+ /** List of the mod's categories. */
80
+ categories: Category[];
81
+ /** The class id this mod belongs to. */
82
+ classId: number | null;
83
+ /** List of the mod's authors. */
84
+ authors: ModAuthor[];
85
+ /** The mod's logo asset. */
86
+ logo: ModAsset;
87
+ /** List of screenshot assets. */
88
+ screenshots: ModAsset[];
89
+ /** The id of the mod's main file. */
90
+ mainFileId: number;
91
+ /** List of the mod's latest files. */
92
+ latestFiles: File[];
93
+ /** File related details for the latest files of the mod. */
94
+ latestFilesIndexes: FileIndex[];
95
+ /** File related details for the latest early access files of the mod. */
96
+ latestEarlyAccessFilesIndexes: FileIndex[];
97
+ /** The creation date of the mod. */
98
+ dateCreated: string;
99
+ /** The last time the mod was modified. */
100
+ dateModified: string;
101
+ /** The release date of the mod. */
102
+ dateReleased: string;
103
+ /** Whether the mod is allowed to be distributed. */
104
+ allowModDistribution: boolean | null;
105
+ /** The mod's popularity rank for its game. */
106
+ gamePopularityRank: number;
107
+ /** Whether the mod is available for search (false if experimental, deleted, or alpha-only). */
108
+ isAvailable: boolean;
109
+ /** The mod's thumbs up count. */
110
+ thumbsUpCount: number;
111
+ /** The mod's rating. */
112
+ rating: number | null;
113
+ }
114
+ /** Featured, popular, and recently updated mods. */
115
+ export interface FeaturedModsResponse {
116
+ featured: Mod[];
117
+ popular: Mod[];
118
+ recentlyUpdated: Mod[];
119
+ }
120
+ /** Query parameters for {@link ModsApi.search}. */
121
+ export interface SearchModsOptions extends PaginationOptions {
122
+ /** Filter by game id. */
123
+ gameId: number;
124
+ /** Filter by section id, discoverable via {@link CategoriesApi.list} with `classesOnly`. */
125
+ classId?: number;
126
+ /** Filter by category id. */
127
+ categoryId?: number;
128
+ /** Filter by a list of category ids. Overrides `categoryId`. Maximum of 10 ids. */
129
+ categoryIds?: number[];
130
+ /** Filter by game version string. */
131
+ gameVersion?: string;
132
+ /** Filter by a list of game version strings. Overrides `gameVersion`. Maximum of 4. */
133
+ gameVersions?: string[];
134
+ /** Filter by free text search in mod name and author. */
135
+ searchFilter?: string;
136
+ /** Field to sort results by. */
137
+ sortField?: ModsSearchSortField;
138
+ /** Sort direction. */
139
+ sortOrder?: SortOrder;
140
+ /** Filter mods associated with the given mod loader. Must be used with `gameVersion`. */
141
+ modLoaderType?: ModLoaderType;
142
+ /** Filter by a list of mod loader types. Overrides `modLoaderType`. Maximum of 5. */
143
+ modLoaderTypes?: ModLoaderType[];
144
+ /** Filter mods with files tagged with versions of the given game version type id. */
145
+ gameVersionTypeId?: number;
146
+ /** Filter mods where the given author id is a member. */
147
+ authorId?: number;
148
+ /** Filter mods where the given author id is the primary/owning author. */
149
+ primaryAuthorId?: number;
150
+ /** Filter by slug. Combined with `classId`, this results in a unique result. */
151
+ slug?: string;
152
+ }
153
+ /** Query parameters for {@link ModsApi.getDescription}. */
154
+ export interface GetModDescriptionOptions {
155
+ raw?: boolean;
156
+ stripped?: boolean;
157
+ markup?: boolean;
158
+ }
159
+ /** Request body for {@link ModsApi.getMods}. */
160
+ export interface GetModsByIdsListRequestBody {
161
+ /** List of mod ids. All mods must belong to the same game. */
162
+ modIds: number[];
163
+ filterPcOnly?: boolean | null;
164
+ }
165
+ /** Request body for {@link ModsApi.getFeatured}. */
166
+ export interface GetFeaturedModsRequestBody {
167
+ gameId: number;
168
+ excludedModIds?: number[];
169
+ gameVersionTypeId?: number | null;
170
+ }
171
+ //# sourceMappingURL=mods.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mods.d.ts","sourceRoot":"","sources":["../../src/types/mods.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEnD,oCAAoC;AACpC,oBAAY,SAAS;IACnB,GAAG,IAAI;IACP,eAAe,IAAI;IACnB,eAAe,IAAI;IACnB,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,WAAW,IAAI;IACf,QAAQ,IAAI;IACZ,SAAS,IAAI;IACb,OAAO,IAAI;IACX,WAAW,KAAK;CACjB;AAED,2CAA2C;AAC3C,oBAAY,mBAAmB;IAC7B,QAAQ,IAAI;IACZ,UAAU,IAAI;IACd,WAAW,IAAI;IACf,IAAI,IAAI;IACR,MAAM,IAAI;IACV,cAAc,IAAI;IAClB,QAAQ,IAAI;IACZ,WAAW,IAAI;IACf,WAAW,IAAI;IACf,gBAAgB,KAAK;IACrB,YAAY,KAAK;IACjB,MAAM,KAAK;CACZ;AAED,6CAA6C;AAC7C,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,CAAC;AAEvC,yCAAyC;AACzC,MAAM,WAAW,QAAQ;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,0BAA0B;AAC1B,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;CACb;AAED,8DAA8D;AAC9D,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qCAAqC;AACrC,MAAM,WAAW,GAAG;IAClB,kBAAkB;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,mCAAmC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,IAAI,EAAE,MAAM,CAAC;IACb,kEAAkE;IAClE,KAAK,EAAE,QAAQ,CAAC;IAChB,mBAAmB;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,0BAA0B;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,6DAA6D;IAC7D,UAAU,EAAE,OAAO,CAAC;IACpB,4DAA4D;IAC5D,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oCAAoC;IACpC,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvB,wCAAwC;IACxC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,iCAAiC;IACjC,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,4BAA4B;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,iCAAiC;IACjC,WAAW,EAAE,QAAQ,EAAE,CAAC;IACxB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,sCAAsC;IACtC,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,4DAA4D;IAC5D,kBAAkB,EAAE,SAAS,EAAE,CAAC;IAChC,yEAAyE;IACzE,6BAA6B,EAAE,SAAS,EAAE,CAAC;IAC3C,oCAAoC;IACpC,WAAW,EAAE,MAAM,CAAC;IACpB,0CAA0C;IAC1C,YAAY,EAAE,MAAM,CAAC;IACrB,mCAAmC;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,oBAAoB,EAAE,OAAO,GAAG,IAAI,CAAC;IACrC,8CAA8C;IAC9C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,+FAA+F;IAC/F,WAAW,EAAE,OAAO,CAAC;IACrB,iCAAiC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,wBAAwB;IACxB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,oDAAoD;AACpD,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,OAAO,EAAE,GAAG,EAAE,CAAC;IACf,eAAe,EAAE,GAAG,EAAE,CAAC;CACxB;AAED,mDAAmD;AACnD,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,yBAAyB;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mFAAmF;IACnF,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qCAAqC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,yDAAyD;IACzD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gCAAgC;IAChC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,sBAAsB;IACtB,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,yFAAyF;IACzF,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,qFAAqF;IACrF,cAAc,CAAC,EAAE,aAAa,EAAE,CAAC;IACjC,qFAAqF;IACrF,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gFAAgF;IAChF,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,2DAA2D;AAC3D,MAAM,WAAW,wBAAwB;IACvC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,gDAAgD;AAChD,MAAM,WAAW,2BAA2B;IAC1C,8DAA8D;IAC9D,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC/B;AAED,oDAAoD;AACpD,MAAM,WAAW,0BAA0B;IACzC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC"}
@@ -0,0 +1,31 @@
1
+ /** The approval status of a mod. */
2
+ export var ModStatus;
3
+ (function (ModStatus) {
4
+ ModStatus[ModStatus["New"] = 1] = "New";
5
+ ModStatus[ModStatus["ChangesRequired"] = 2] = "ChangesRequired";
6
+ ModStatus[ModStatus["UnderSoftReview"] = 3] = "UnderSoftReview";
7
+ ModStatus[ModStatus["Approved"] = 4] = "Approved";
8
+ ModStatus[ModStatus["Rejected"] = 5] = "Rejected";
9
+ ModStatus[ModStatus["ChangesMade"] = 6] = "ChangesMade";
10
+ ModStatus[ModStatus["Inactive"] = 7] = "Inactive";
11
+ ModStatus[ModStatus["Abandoned"] = 8] = "Abandoned";
12
+ ModStatus[ModStatus["Deleted"] = 9] = "Deleted";
13
+ ModStatus[ModStatus["UnderReview"] = 10] = "UnderReview";
14
+ })(ModStatus || (ModStatus = {}));
15
+ /** Field to sort mod search results by. */
16
+ export var ModsSearchSortField;
17
+ (function (ModsSearchSortField) {
18
+ ModsSearchSortField[ModsSearchSortField["Featured"] = 1] = "Featured";
19
+ ModsSearchSortField[ModsSearchSortField["Popularity"] = 2] = "Popularity";
20
+ ModsSearchSortField[ModsSearchSortField["LastUpdated"] = 3] = "LastUpdated";
21
+ ModsSearchSortField[ModsSearchSortField["Name"] = 4] = "Name";
22
+ ModsSearchSortField[ModsSearchSortField["Author"] = 5] = "Author";
23
+ ModsSearchSortField[ModsSearchSortField["TotalDownloads"] = 6] = "TotalDownloads";
24
+ ModsSearchSortField[ModsSearchSortField["Category"] = 7] = "Category";
25
+ ModsSearchSortField[ModsSearchSortField["GameVersion"] = 8] = "GameVersion";
26
+ ModsSearchSortField[ModsSearchSortField["EarlyAccess"] = 9] = "EarlyAccess";
27
+ ModsSearchSortField[ModsSearchSortField["FeaturedReleased"] = 10] = "FeaturedReleased";
28
+ ModsSearchSortField[ModsSearchSortField["ReleasedDate"] = 11] = "ReleasedDate";
29
+ ModsSearchSortField[ModsSearchSortField["Rating"] = 12] = "Rating";
30
+ })(ModsSearchSortField || (ModsSearchSortField = {}));
31
+ //# sourceMappingURL=mods.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mods.js","sourceRoot":"","sources":["../../src/types/mods.ts"],"names":[],"mappings":"AAKA,oCAAoC;AACpC,MAAM,CAAN,IAAY,SAWX;AAXD,WAAY,SAAS;IACnB,uCAAO,CAAA;IACP,+DAAmB,CAAA;IACnB,+DAAmB,CAAA;IACnB,iDAAY,CAAA;IACZ,iDAAY,CAAA;IACZ,uDAAe,CAAA;IACf,iDAAY,CAAA;IACZ,mDAAa,CAAA;IACb,+CAAW,CAAA;IACX,wDAAgB,CAAA;AAClB,CAAC,EAXW,SAAS,KAAT,SAAS,QAWpB;AAED,2CAA2C;AAC3C,MAAM,CAAN,IAAY,mBAaX;AAbD,WAAY,mBAAmB;IAC7B,qEAAY,CAAA;IACZ,yEAAc,CAAA;IACd,2EAAe,CAAA;IACf,6DAAQ,CAAA;IACR,iEAAU,CAAA;IACV,iFAAkB,CAAA;IAClB,qEAAY,CAAA;IACZ,2EAAe,CAAA;IACf,2EAAe,CAAA;IACf,sFAAqB,CAAA;IACrB,8EAAiB,CAAA;IACjB,kEAAW,CAAA;AACb,CAAC,EAbW,mBAAmB,KAAnB,mBAAmB,QAa9B"}
@@ -0,0 +1,2 @@
1
+ export * from './types/index.js';
2
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export * from './types/index.js';
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /** Strips trailing slashes from a base URL. */
2
+ export declare function normalizeBaseUrl(baseUrl: string): string;
3
+ /** Appends query parameters to a URL, skipping null and undefined values. */
4
+ export declare function appendQuery(url: URL, query?: object): URL;
5
+ /** Constructs the full API URL for a given path and optional query parameters. */
6
+ export declare function buildApiUrl(baseUrl: string, path: string, query?: object): string;
7
+ /** Serializes an array as a JSON-bracket-encoded string, e.g. `[1,2,3]`, as expected by CurseForge list query parameters such as `categoryIds`, `gameVersions`, and `modLoaderTypes`. */
8
+ export declare function toArrayParam<T>(values: T[] | undefined): string | undefined;
9
+ /** Returns true if the value is a plain object (not an array, FormData, or Blob). */
10
+ export declare function isPlainObject(value: unknown): value is Record<string, unknown>;
11
+ /** Returns true if the value can be used directly as a fetch request body. */
12
+ export declare function isRawBody(value: unknown): value is BodyInit;
13
+ /** Serializes a plain object body as JSON and sets Content-Type if not already set. */
14
+ export declare function withJsonBody(init: Omit<RequestInit, 'body'> & {
15
+ body?: BodyInit | object | object[] | null;
16
+ }): RequestInit;
17
+ /** Extracts a human-readable message from an API error response body. */
18
+ export declare function extractErrorMessage(body: unknown, status: number): string;
19
+ /** Attempts to parse the error response body as JSON, falling back to text. */
20
+ export declare function parseErrorBody(response: Response): Promise<unknown>;
21
+ //# sourceMappingURL=request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"AAEA,+CAA+C;AAC/C,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAMxD;AAED,6EAA6E;AAC7E,wBAAgB,WAAW,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,GAAG,CAczD;AAED,kFAAkF;AAClF,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAIjF;AAED,yLAAyL;AACzL,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAG3E;AAED,qFAAqF;AACrF,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ9E;AAED,8EAA8E;AAC9E,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAS3D;AAED,uFAAuF;AACvF,wBAAgB,YAAY,CAC1B,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;CAAE,GAC/E,WAAW,CAqBb;AAED,yEAAyE;AACzE,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAazE;AAED,+EAA+E;AAC/E,wBAAsB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAMzE"}
@@ -0,0 +1,96 @@
1
+ /** Strips trailing slashes from a base URL. */
2
+ export function normalizeBaseUrl(baseUrl) {
3
+ if (!baseUrl || typeof baseUrl !== 'string') {
4
+ throw new TypeError('baseUrl must be a non-empty string');
5
+ }
6
+ return baseUrl.replace(/\/+$/, '');
7
+ }
8
+ /** Appends query parameters to a URL, skipping null and undefined values. */
9
+ export function appendQuery(url, query) {
10
+ if (!query)
11
+ return url;
12
+ for (const [key, rawValue] of Object.entries(query)) {
13
+ if (rawValue == null)
14
+ continue;
15
+ const values = Array.isArray(rawValue) ? rawValue : [rawValue];
16
+ for (const value of values) {
17
+ if (value == null)
18
+ continue;
19
+ url.searchParams.append(key, String(value));
20
+ }
21
+ }
22
+ return url;
23
+ }
24
+ /** Constructs the full API URL for a given path and optional query parameters. */
25
+ export function buildApiUrl(baseUrl, path, query) {
26
+ const trimmedPath = path.replace(/^\/+/, '');
27
+ const url = new URL(`${normalizeBaseUrl(baseUrl)}/${trimmedPath}`);
28
+ return appendQuery(url, query).toString();
29
+ }
30
+ /** Serializes an array as a JSON-bracket-encoded string, e.g. `[1,2,3]`, as expected by CurseForge list query parameters such as `categoryIds`, `gameVersions`, and `modLoaderTypes`. */
31
+ export function toArrayParam(values) {
32
+ if (values == null)
33
+ return undefined;
34
+ return `[${values.map((value) => JSON.stringify(value)).join(',')}]`;
35
+ }
36
+ /** Returns true if the value is a plain object (not an array, FormData, or Blob). */
37
+ export function isPlainObject(value) {
38
+ return (typeof value === 'object' &&
39
+ value !== null &&
40
+ !Array.isArray(value) &&
41
+ !(value instanceof FormData) &&
42
+ !(value instanceof Blob));
43
+ }
44
+ /** Returns true if the value can be used directly as a fetch request body. */
45
+ export function isRawBody(value) {
46
+ return (typeof value === 'string' ||
47
+ value instanceof FormData ||
48
+ value instanceof URLSearchParams ||
49
+ value instanceof Blob ||
50
+ value instanceof ArrayBuffer ||
51
+ ArrayBuffer.isView(value));
52
+ }
53
+ /** Serializes a plain object body as JSON and sets Content-Type if not already set. */
54
+ export function withJsonBody(init) {
55
+ const { body, headers, ...rest } = init;
56
+ const resolvedHeaders = new Headers(headers);
57
+ if (body == null) {
58
+ return { ...rest, headers: resolvedHeaders };
59
+ }
60
+ if (isRawBody(body)) {
61
+ return { ...rest, headers: resolvedHeaders, body };
62
+ }
63
+ if (!resolvedHeaders.has('Content-Type')) {
64
+ resolvedHeaders.set('Content-Type', 'application/json');
65
+ }
66
+ return {
67
+ ...rest,
68
+ headers: resolvedHeaders,
69
+ body: JSON.stringify(body),
70
+ };
71
+ }
72
+ /** Extracts a human-readable message from an API error response body. */
73
+ export function extractErrorMessage(body, status) {
74
+ if (body && typeof body === 'object') {
75
+ const record = body;
76
+ const error = record['error'];
77
+ if (error && typeof error === 'object') {
78
+ const message = error['message'];
79
+ if (typeof message === 'string' && message.length > 0)
80
+ return message;
81
+ }
82
+ const message = record['message'];
83
+ if (typeof message === 'string' && message.length > 0)
84
+ return message;
85
+ }
86
+ return `HTTP ${status}`;
87
+ }
88
+ /** Attempts to parse the error response body as JSON, falling back to text. */
89
+ export async function parseErrorBody(response) {
90
+ const contentType = response.headers.get('content-type') ?? '';
91
+ if (contentType.includes('application/json')) {
92
+ return response.json().catch(() => null);
93
+ }
94
+ return response.text().catch(() => null);
95
+ }
96
+ //# sourceMappingURL=request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.js","sourceRoot":"","sources":["../../src/utils/request.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "curseforge-js",
3
+ "version": "1.0.0",
4
+ "description": "Framework-agnostic JavaScript API client for the CurseForge API",
5
+ "type": "module",
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "default": "./dist/index.js"
10
+ }
11
+ },
12
+ "files": [
13
+ "dist/"
14
+ ],
15
+ "keywords": [
16
+ "curseforge",
17
+ "minecraft",
18
+ "mods",
19
+ "api"
20
+ ],
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "https://github.com/creeperkatze/curseforge-js"
24
+ },
25
+ "author": "Creeperkatze",
26
+ "license": "AGPL-3.0-only",
27
+ "engines": {
28
+ "node": ">=18"
29
+ },
30
+ "devDependencies": {
31
+ "@eslint/js": "^10.0.1",
32
+ "@lucide/vue": "^1.20.0",
33
+ "@tailwindcss/vite": "^4.3.1",
34
+ "@types/node": "^25.9.3",
35
+ "@vitest/coverage-v8": "^2.1.9",
36
+ "concurrently": "^10.0.3",
37
+ "eslint": "^10.5.0",
38
+ "globals": "^17.6.0",
39
+ "tailwindcss": "^4.3.1",
40
+ "typedoc": "^0.28.19",
41
+ "typedoc-plugin-markdown": "^4.12.0",
42
+ "typescript": "^5.9.3",
43
+ "typescript-eslint": "^8.61.1",
44
+ "vite-svg-loader": "^5.1.1",
45
+ "vitepress": "^1.6.4",
46
+ "vitest": "^2.1.9"
47
+ },
48
+ "scripts": {
49
+ "build": "tsc",
50
+ "docs:api": "typedoc --options typedoc.json",
51
+ "docs:dev": "concurrently -n typedoc,vitepress -c yellow,cyan \"typedoc --options typedoc.json --watch\" \"vitepress dev docs\"",
52
+ "docs:build": "pnpm docs:api && vitepress build docs",
53
+ "docs:preview": "vitepress preview docs",
54
+ "lint": "eslint .",
55
+ "lint:fix": "eslint . --fix",
56
+ "test": "vitest run",
57
+ "test:coverage": "vitest run --coverage",
58
+ "release:patch": "pnpm version patch && git push && git push --tags",
59
+ "release:minor": "pnpm version minor && git push && git push --tags",
60
+ "release:major": "pnpm version major && git push && git push --tags"
61
+ }
62
+ }