@ifunny/ifunny-api-types 0.1.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 (50) hide show
  1. package/CHANGELOG.md +31 -0
  2. package/LICENSE +121 -0
  3. package/README.md +2 -0
  4. package/dist/index.d.ts +376 -0
  5. package/dist/index.d.ts.map +1 -0
  6. package/dist/index.js +20 -0
  7. package/dist/index.js.map +1 -0
  8. package/dist/payloads/client.js +13 -0
  9. package/dist/payloads/client.js.map +1 -0
  10. package/dist/payloads/index.js +20 -0
  11. package/dist/payloads/index.js.map +1 -0
  12. package/dist/payloads/post.js +38 -0
  13. package/dist/payloads/post.js.map +1 -0
  14. package/dist/payloads/user.js +59 -0
  15. package/dist/payloads/user.js.map +1 -0
  16. package/dist/payloads/util.js +3 -0
  17. package/dist/payloads/util.js.map +1 -0
  18. package/dist/rest/explore.js +11 -0
  19. package/dist/rest/explore.js.map +1 -0
  20. package/dist/rest/index.js +19 -0
  21. package/dist/rest/index.js.map +1 -0
  22. package/dist/rest/issues.js +3 -0
  23. package/dist/rest/issues.js.map +1 -0
  24. package/dist/utils/index.js +18 -0
  25. package/dist/utils/index.js.map +1 -0
  26. package/dist/utils/util.js +3 -0
  27. package/dist/utils/util.js.map +1 -0
  28. package/package.json +46 -0
  29. package/types/index.d.ts +4 -0
  30. package/types/index.d.ts.map +1 -0
  31. package/types/payloads/client.d.ts +79 -0
  32. package/types/payloads/client.d.ts.map +1 -0
  33. package/types/payloads/index.d.ts +4 -0
  34. package/types/payloads/index.d.ts.map +1 -0
  35. package/types/payloads/post.d.ts +372 -0
  36. package/types/payloads/post.d.ts.map +1 -0
  37. package/types/payloads/user.d.ts +339 -0
  38. package/types/payloads/user.d.ts.map +1 -0
  39. package/types/payloads/util.d.ts +18 -0
  40. package/types/payloads/util.d.ts.map +1 -0
  41. package/types/rest/explore.d.ts +13 -0
  42. package/types/rest/explore.d.ts.map +1 -0
  43. package/types/rest/index.d.ts +3 -0
  44. package/types/rest/index.d.ts.map +1 -0
  45. package/types/rest/issues.d.ts +16 -0
  46. package/types/rest/issues.d.ts.map +1 -0
  47. package/types/utils/index.d.ts +2 -0
  48. package/types/utils/index.d.ts.map +1 -0
  49. package/types/utils/util.d.ts +53 -0
  50. package/types/utils/util.d.ts.map +1 -0
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NICK_COLORS = exports.BAN_TYPES = exports.RANKS = exports.MESSAGING_PRIVACY_STATUS = void 0;
4
+ /**
5
+ * `public` anyone can create a direct message the user\
6
+ * `subscribers` only subscribers can create a direct message with the user\
7
+ * `closed` only the user can create direct messages\
8
+ * ? Backend does not check this status on requests as of 5/28/22
9
+ */
10
+ var MESSAGING_PRIVACY_STATUS;
11
+ (function (MESSAGING_PRIVACY_STATUS) {
12
+ MESSAGING_PRIVACY_STATUS["PUBLIC"] = "public";
13
+ MESSAGING_PRIVACY_STATUS["SUBSCRIBERS"] = "subscribers";
14
+ MESSAGING_PRIVACY_STATUS["CLOSED"] = "closed";
15
+ })(MESSAGING_PRIVACY_STATUS = exports.MESSAGING_PRIVACY_STATUS || (exports.MESSAGING_PRIVACY_STATUS = {}));
16
+ /**
17
+ * All current MemeRanks from the API
18
+ */
19
+ var RANKS;
20
+ (function (RANKS) {
21
+ RANKS["MEME_EXPLORER"] = "Meme explorer";
22
+ RANKS["MEME_BRO"] = "Meme bro";
23
+ RANKS["MEME_DADDY"] = "Meme daddy";
24
+ RANKS["DANK_MEMER"] = "Dank memer";
25
+ RANKS["MEME_MASTER_BAKER"] = "Meme master baker";
26
+ RANKS["DEEP_FRIED_MEMER"] = "Deep fried memer";
27
+ RANKS["SAUCY_MEMER"] = "Saucy memer";
28
+ RANKS["ORIGINAL_MEME_GANGSTER"] = "Original Meme Gangster";
29
+ RANKS["MEME_DEMON"] = "Meme demon";
30
+ RANKS["STEAL_BEAMS_OF_MEMES"] = "Steal beams of memes";
31
+ RANKS["MEME_DEALER"] = "Meme dealer";
32
+ RANKS["IFUNNY_VETERAN"] = "iFunny Veteran";
33
+ /**
34
+ * Final MemeExperience rank
35
+ */
36
+ RANKS["CHEFS_MEME_AGENT"] = "Chef's meme agent";
37
+ })(RANKS = exports.RANKS || (exports.RANKS = {}));
38
+ // TODO: Discover more ban types
39
+ /**
40
+ * Known ban types
41
+ */
42
+ var BAN_TYPES;
43
+ (function (BAN_TYPES) {
44
+ BAN_TYPES["COLLECTIVE_SHADOW"] = "collective";
45
+ })(BAN_TYPES = exports.BAN_TYPES || (exports.BAN_TYPES = {}));
46
+ // TODO: Find all nick colors.
47
+ /**
48
+ * Known nick colors
49
+ */
50
+ var NICK_COLORS;
51
+ (function (NICK_COLORS) {
52
+ NICK_COLORS["BRIGHT_GREEN"] = "55FF00";
53
+ NICK_COLORS["BETA_TESTER"] = "55FF00";
54
+ NICK_COLORS["MAROON"] = "660000";
55
+ NICK_COLORS["RED"] = "ff3e52";
56
+ NICK_COLORS["PURPLE"] = "a078f0";
57
+ NICK_COLORS["ORANGE"] = "e0b400";
58
+ })(NICK_COLORS = exports.NICK_COLORS || (exports.NICK_COLORS = {}));
59
+ //# sourceMappingURL=user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user.js","sourceRoot":"","sources":["../../src/payloads/user.ts"],"names":[],"mappings":";;;AAqIA;;;;;GAKG;AACH,IAAY,wBAIX;AAJD,WAAY,wBAAwB;IACnC,6CAAiB,CAAA;IACjB,uDAA2B,CAAA;IAC3B,6CAAiB,CAAA;AAClB,CAAC,EAJW,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAInC;AAgCD;;GAEG;AACH,IAAY,KAiBX;AAjBD,WAAY,KAAK;IAChB,wCAA+B,CAAA;IAC/B,8BAAqB,CAAA;IACrB,kCAAyB,CAAA;IACzB,kCAAyB,CAAA;IACzB,gDAAuC,CAAA;IACvC,8CAAqC,CAAA;IACrC,oCAA2B,CAAA;IAC3B,0DAAiD,CAAA;IACjD,kCAAyB,CAAA;IACzB,sDAA6C,CAAA;IAC7C,oCAA2B,CAAA;IAC3B,0CAAiC,CAAA;IACjC;;OAEG;IACH,+CAAsC,CAAA;AACvC,CAAC,EAjBW,KAAK,GAAL,aAAK,KAAL,aAAK,QAiBhB;AAID,gCAAgC;AAChC;;GAEG;AACH,IAAY,SAEX;AAFD,WAAY,SAAS;IACpB,6CAAgC,CAAA;AACjC,CAAC,EAFW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAEpB;AAsHD,8BAA8B;AAC9B;;GAEG;AACH,IAAY,WAOX;AAPD,WAAY,WAAW;IACtB,sCAAuB,CAAA;IACvB,qCAA0B,CAAA;IAC1B,gCAAiB,CAAA;IACjB,6BAAc,CAAA;IACd,gCAAiB,CAAA;IACjB,gCAAiB,CAAA;AAClB,CAAC,EAPW,WAAW,GAAX,mBAAW,KAAX,mBAAW,QAOtB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/payloads/util.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EXPLORE_TAB_IDS = void 0;
4
+ exports.EXPLORE_TAB_IDS = {
5
+ Best: 2,
6
+ Memes: 3,
7
+ Users: 4,
8
+ Chats: 5,
9
+ Channels: 6,
10
+ };
11
+ //# sourceMappingURL=explore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"explore.js","sourceRoot":"","sources":["../../src/rest/explore.ts"],"names":[],"mappings":";;;AAMa,QAAA,eAAe,GAAG;IAC9B,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,QAAQ,EAAE,CAAC;CACF,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./explore"), exports);
18
+ __exportStar(require("./issues"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rest/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,4CAA0B;AAC1B,2CAAyB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=issues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/rest/issues.ts"],"names":[],"mappings":""}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./util"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../src/utils/util.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "@ifunny/ifunny-api-types",
3
+ "version": "0.1.0",
4
+ "description": "iFunny API typings for use in bot library creaion.",
5
+ "main": "dist/index.js",
6
+ "types": "types",
7
+ "scripts": {
8
+ "build-js": "tsc",
9
+ "build": "npm run build-js && npm run changelog",
10
+ "changelog": "auto-changelog -p && git add CHANGELOG.md",
11
+ "test": "tsc --noEmit",
12
+ "link": "npm run build && npm link"
13
+ },
14
+ "repository": {
15
+ "type": "git",
16
+ "url": "git+https://github.com/ifunny-co/ifunny-api-types.git"
17
+ },
18
+ "keywords": [
19
+ "ifunny",
20
+ "types",
21
+ "typescript"
22
+ ],
23
+ "author": "MakeShiftArtist <makeshiftdevelopment@gmail.com> (https://github.com/makeshiftartist)",
24
+ "license": "CC0-1.0",
25
+ "bugs": {
26
+ "url": "https://github.com/ifunny-co/ifunny-api-types/issues"
27
+ },
28
+ "homepage": "https://github.com/ifunny-co/ifunny-api-types#readme",
29
+ "devDependencies": {
30
+ "@types/node": "^17.0.36",
31
+ "auto-changelog": "^2.4.0",
32
+ "typescript": "^4.7.2"
33
+ },
34
+ "auto-changelog": {
35
+ "template": "changelog-template.hbs",
36
+ "hideEmptyReleases": true,
37
+ "commitLimit": false,
38
+ "unreleased": true,
39
+ "replaceText": {
40
+ "[Ff]eat:": "",
41
+ "[Ff]ix:": "",
42
+ "[Bb]reak:": "",
43
+ "[Dd]oc:": ""
44
+ }
45
+ }
46
+ }
@@ -0,0 +1,4 @@
1
+ export * from "./payloads";
2
+ export * from "./rest";
3
+ export * from "./utils";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,79 @@
1
+ import { APIUserBase } from "./user";
2
+ /**
3
+ * The user data retrieved from `/account`
4
+ */
5
+ export interface APIClientUser extends APIUserBase {
6
+ /**
7
+ * Is the client blocked from using chats
8
+ */
9
+ is_blocked_in_messenger: boolean;
10
+ /**
11
+ * Is safe mode enabled
12
+ */
13
+ safe_mode: boolean;
14
+ /**
15
+ * Is the client a moderator of iFunny
16
+ */
17
+ is_moderator: boolean;
18
+ /**
19
+ * Is the client an iFunny staff member
20
+ */
21
+ is_ifunny_team_member: boolean;
22
+ /**
23
+ * Does the Client have unnotified bans
24
+ */
25
+ have_unnotified_bans: boolean;
26
+ /**
27
+ * Does the client have unnotified strikes
28
+ */
29
+ have_unnotified_strikes: boolean;
30
+ /**
31
+ * Does the client have unnotified achievements
32
+ */
33
+ have_unnotified_achievements: boolean;
34
+ /**
35
+ * Does the client have unnotified levels
36
+ */
37
+ have_unnotified_levels: boolean;
38
+ /**
39
+ * Does the client still need to set up their account
40
+ */
41
+ need_account_setup: boolean;
42
+ /**
43
+ * Hometown of the client. Can be an empty string
44
+ */
45
+ hometown: string;
46
+ /**
47
+ * Location of the client. Can be an empty string
48
+ */
49
+ location: string;
50
+ /**
51
+ * The Clinet's sex
52
+ */
53
+ sex: APIClientUserSex;
54
+ /**
55
+ * `YYYY-MM-DD`
56
+ */
57
+ birth_date: string;
58
+ /**
59
+ * The email attached to the Client's account
60
+ */
61
+ email: string;
62
+ }
63
+ /**
64
+ * All current genders (sex) for the Client
65
+ */
66
+ export declare enum API_SEX {
67
+ MALE = "male",
68
+ FEMALE = "female",
69
+ OTHER = "other"
70
+ }
71
+ /**
72
+ * Possible sex types for the Client
73
+ */
74
+ export declare type APIClientUserSex = `${API_SEX}`;
75
+ /**
76
+ * Alias for {@link APIClientUserSex}
77
+ */
78
+ export declare type APIClientUserGender = APIClientUserSex;
79
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/payloads/client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAErC;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,WAAW;IACjD;;OAEG;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;OAEG;IACH,YAAY,EAAE,OAAO,CAAC;IACtB;;OAEG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAC/B;;OAEG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;OAEG;IACH,uBAAuB,EAAE,OAAO,CAAC;IACjC;;OAEG;IACH,4BAA4B,EAAE,OAAO,CAAC;IACtC;;OAEG;IACH,sBAAsB,EAAE,OAAO,CAAC;IAChC;;OAEG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,GAAG,EAAE,gBAAgB,CAAC;IACtB;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,oBAAY,OAAO;IAClB,IAAI,SAAS;IACb,MAAM,WAAW;IACjB,KAAK,UAAU;CACf;AAED;;GAEG;AACH,oBAAY,gBAAgB,GAAG,GAAG,OAAO,EAAE,CAAC;AAE5C;;GAEG;AACH,oBAAY,mBAAmB,GAAG,gBAAgB,CAAC"}
@@ -0,0 +1,4 @@
1
+ export * from "./post";
2
+ export * from "./user";
3
+ export * from "./client";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/payloads/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,QAAQ,CAAC;AACvB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,372 @@
1
+ import { HexCode, Size, Timestamp } from "../utils/util";
2
+ import { APIUser, APIUserNums } from "./user";
3
+ /**
4
+ * JSON data of an iFunny Post
5
+ */
6
+ export interface APIPostBase<Type extends APIPostType = APIPostType> {
7
+ /**
8
+ * Unique id of the post.\
9
+ * Typically 9 characters long
10
+ */
11
+ id: string;
12
+ /**
13
+ * The type of the post.
14
+ */
15
+ type: Type;
16
+ /**
17
+ * Content url of the post.
18
+ */
19
+ url: string;
20
+ /**
21
+ * If the post uses the old watermark or the new one
22
+ */
23
+ old_watermark: boolean;
24
+ /**
25
+ * In-app share url.
26
+ * @example
27
+ * `https://ifunny.co/picture/${post.id}`
28
+ * `https://ifunny.co/video/${post.id}`
29
+ */
30
+ link: string;
31
+ /**
32
+ * The title of the post
33
+ */
34
+ title: string;
35
+ /**
36
+ * Fixed title of the post
37
+ * @example
38
+ * `Gif memes ${post.id} by ${post.creator.nick}`
39
+ * `Picture memes ${post.id} by ${post.creator.nick}: ${post.num.comments} comments`
40
+ */
41
+ fixed_title: string;
42
+ /**
43
+ * Array of tags on the post
44
+ */
45
+ tags: string[];
46
+ /**
47
+ * The publish state of the post
48
+ */
49
+ state: APIPostState;
50
+ /**
51
+ * {@link Timestamp} of when the post was created
52
+ */
53
+ date_create: Timestamp;
54
+ /**
55
+ * {@link Timestamp} of when the Post was published
56
+ */
57
+ publish_at: Timestamp;
58
+ /**
59
+ * Is the post smiled by the Client
60
+ */
61
+ is_smiled: boolean;
62
+ /**
63
+ * Is the post unsmiled by the Client
64
+ */
65
+ is_unsmiled: boolean;
66
+ /**
67
+ * Is the post removed by iFunny
68
+ */
69
+ is_abused: boolean;
70
+ /**
71
+ * Is the post featured by iFunny
72
+ */
73
+ is_featured: boolean;
74
+ /**
75
+ * Is the post republished by the Client
76
+ */
77
+ is_republished: boolean;
78
+ /**
79
+ * Is the post pinned by the creator
80
+ */
81
+ is_pinned: boolean;
82
+ /**
83
+ * Background color of the post.
84
+ */
85
+ bg_color: HexCode;
86
+ /**
87
+ * The {@link APIPostThumbnail thumbnail} of the post
88
+ */
89
+ thumb: APIPostThumbnail;
90
+ /**
91
+ * A post's {@link APIPostCopyright copyright} data
92
+ */
93
+ copyright: APIPostCopyright;
94
+ /**
95
+ * The {@link APIPostNums numbers} on the post.
96
+ */
97
+ num: APIPostNums;
98
+ /**
99
+ * The author of the post
100
+ */
101
+ creator: APIPostCreator;
102
+ /**
103
+ * Size of the post
104
+ */
105
+ size: Size;
106
+ /**
107
+ * The post's visibility
108
+ */
109
+ visibility: APIPostVisibility;
110
+ /**
111
+ * ? Don't know what this is
112
+ */
113
+ shot_status: APIPostShotStatus;
114
+ /**
115
+ * ? Don't know what this does
116
+ */
117
+ fast_start: boolean;
118
+ /**
119
+ * @example
120
+ * `https://ifunny.co/picture/${post.id}`
121
+ */
122
+ canonical_url: string;
123
+ /**
124
+ * Can the post be boosted still
125
+ */
126
+ can_be_boosted: boolean;
127
+ }
128
+ export declare enum POST_VISIBILITIES {
129
+ PUBLIC = "public"
130
+ }
131
+ export declare type APIPostVisibility = `${POST_VISIBILITIES}`;
132
+ export declare enum SHOT_STATUSES {
133
+ APPROVED = "approved"
134
+ }
135
+ export declare type APIPostShotStatus = `${SHOT_STATUSES}`;
136
+ /**
137
+ * All currently known post types
138
+ */
139
+ export declare enum POST_TYPES {
140
+ PIC = "pic",
141
+ VIDEO_CLIP = "video_clip",
142
+ GIF = "gif",
143
+ GIF_CAPTION = "gif_caption",
144
+ CAPTION = "caption",
145
+ VINE = "vine",
146
+ COMICS = "comics",
147
+ MEME = "mem"
148
+ }
149
+ /**
150
+ * Possible post types
151
+ */
152
+ export declare type APIPostType = `${POST_TYPES}`;
153
+ export declare enum POST_STATES {
154
+ PUBLISHED = "published"
155
+ }
156
+ export declare type APIPostState = `${POST_STATES}`;
157
+ /**
158
+ * Author of a Post\
159
+ * Only includes info also in the user object
160
+ */
161
+ export declare type APIPostCreatorBase = Pick<APIUser, "id" | "nick" | "photo" | "is_verified" | "is_banned" | "is_deleted" | "is_in_subscriptions" | "is_in_subscribers" | "is_blocked" | "nick_color" | "original_nick">;
162
+ /**
163
+ * The creator object for a post
164
+ */
165
+ export interface APIPostCreator extends APIPostCreatorBase {
166
+ /**
167
+ * Only includes subscription and subscriber count
168
+ */
169
+ num: APIPostCreatorNum;
170
+ /**
171
+ * Total amount of posts the creator has. For some reason this is not in the nums object for creators
172
+ */
173
+ total_posts: number;
174
+ }
175
+ /**
176
+ * Alias for {@link APIPostCreator}
177
+ */
178
+ export declare type APIPostAuthor = APIPostCreator;
179
+ /**
180
+ * Num object for Post Creator.\
181
+ * total_posts is in the creator object for some reason
182
+ */
183
+ export declare type APIPostCreatorNum = Pick<APIUserNums, "subscribers" | "subscriptions">;
184
+ /**
185
+ * Numbers attatched to a post
186
+ */
187
+ export interface APIPostNums {
188
+ /**
189
+ * The amount of smiles the post has
190
+ */
191
+ smiles: number;
192
+ /**
193
+ * The amount of unsmiles the post has
194
+ */
195
+ unsmiles: number;
196
+ /**
197
+ * How many smiles came from users visiting the creators profile
198
+ */
199
+ guest_smiles: number;
200
+ /**
201
+ * How many comments are on the post
202
+ */
203
+ comments: number;
204
+ /**
205
+ * How many views the post has
206
+ */
207
+ views: number;
208
+ /**
209
+ * How many republishes the post has
210
+ */
211
+ republished: number;
212
+ /**
213
+ * How many shares the post has.\
214
+ * ? Increases from the share url if the share url is different from the web_url
215
+ */
216
+ shares: number;
217
+ }
218
+ /**
219
+ * Copyright data for a post.
220
+ */
221
+ export interface APIPostCopyright {
222
+ /**
223
+ * Note about the copyright
224
+ */
225
+ note?: string;
226
+ /**
227
+ * URL of original source
228
+ */
229
+ url?: string;
230
+ }
231
+ /**
232
+ * The Thumbnail object returned from the API\
233
+ * @example
234
+ * ```ts
235
+ * APIPostThumbnail.url = `https://imageproxy.ifunny.co/${params}/images/${content_id}.jpg`
236
+ * APIPostThumbnail.webp_url = `https://imageproxy.ifunny.co/${params}/images/${content_id}.webp
237
+ * ```
238
+ * Content URL params:\
239
+ * `crop:x-{number}` crops `number` pixels from bottom of the image\
240
+ * `crop:x+{number}` leaves `number` pixels at the top, and crops the rest\
241
+ * `crop:square` makes the image a square aspect ratio\
242
+ * `resize:{number}` changes the size of the image\
243
+ * `quality:{number}` changes the image quality\
244
+ *
245
+ *
246
+ * ? Bottom iFunny watermarks are 20 pixels tall\
247
+ * ? `crop:x-20` crops the watermakr from an image
248
+ */
249
+ export interface APIPostThumbnail {
250
+ /**
251
+ * crop:x-20,crop:square,resize:65x,quality:90x75\
252
+ * `jpg`
253
+ */
254
+ small_url: string;
255
+ /**
256
+ * crop:x-20,crop:square,resize:160x,quality:90x75\
257
+ * `jpg`
258
+ */
259
+ url: string;
260
+ /**
261
+ * crop:x-20,crop:square,resize:320x,quality:90x75\
262
+ * `jpg`
263
+ */
264
+ large_url: string;
265
+ /**
266
+ * crop:x-20,resize:640x,quality:90x75\
267
+ * `jpg`
268
+ */
269
+ x640_url: string;
270
+ /**
271
+ * crop:x-20,resize:640x,quality:90x75
272
+ */
273
+ webp_url: string;
274
+ /**
275
+ * crop:x-20,crop:square,resize:320x,quality:90
276
+ */
277
+ large_webp_url: string;
278
+ /**
279
+ * crop:x-20,resize:640x,quality:90
280
+ */
281
+ x640_webp_url: string;
282
+ /**
283
+ * crop:x-20,resize:320x,crop:x800,quality:90x75
284
+ */
285
+ proportional_url: string;
286
+ /**
287
+ * crop:x-20,resize:320x,crop:x800,quality:90
288
+ */
289
+ proportional_webp_url: string;
290
+ /**
291
+ * The proportional size of the image
292
+ */
293
+ proportional_size: Size;
294
+ }
295
+ export interface APIPicturePost extends APIPostBase<"pic"> {
296
+ pic: {
297
+ /**
298
+ * webp format url of the post
299
+ */
300
+ webp_url: string;
301
+ };
302
+ }
303
+ /**
304
+ * A video post object
305
+ */
306
+ export interface APIVideoPost extends APIPostBase<"video_clip"> {
307
+ video_clip: APIPostVideoData;
308
+ }
309
+ /**
310
+ * A gif post
311
+ */
312
+ export interface APIGifPost extends APIPostBase<"gif"> {
313
+ gif: APIPostGifData;
314
+ }
315
+ /**
316
+ * A gif caption post
317
+ */
318
+ export interface APIGifCaptionPost extends APIPostBase<"gif_caption"> {
319
+ gif: APIPostGifCaptionData;
320
+ }
321
+ /**
322
+ * A caption post
323
+ */
324
+ export interface APICaptionPost extends APIPostBase<"caption"> {
325
+ caption: APIPostCaptionData;
326
+ }
327
+ export interface APIVinePost extends APIPostBase<"vine"> {
328
+ }
329
+ export interface APIComicsPost extends APIPostBase<"comics"> {
330
+ }
331
+ export interface APIMemePost extends APIPostBase<"mem"> {
332
+ }
333
+ export interface APIPostVideoData {
334
+ screen_url: string;
335
+ bytes: number;
336
+ source_type: "user";
337
+ duration: 0;
338
+ }
339
+ export declare enum VIDEO_SOURCE_TYPES {
340
+ USER = "user"
341
+ }
342
+ export declare type APIVideoPostSourceType = `${VIDEO_SOURCE_TYPES}`;
343
+ export declare type APIPostGifCaptionData = APIPostGifData & APIPostCaptionData;
344
+ export interface APIPostCaptionData {
345
+ /**
346
+ * The caption of the post
347
+ */
348
+ caption: string;
349
+ }
350
+ export interface APIPostGifData {
351
+ /**
352
+ * JPEG url of the post
353
+ */
354
+ screen_url: string;
355
+ /**
356
+ * How many bytes the post is
357
+ */
358
+ bytes: number;
359
+ /**
360
+ * Url of the post in MP4 format
361
+ */
362
+ mp4_url: string;
363
+ /**
364
+ * How many bytes the mp4 version is
365
+ */
366
+ mp4_bytes: number;
367
+ }
368
+ /**
369
+ * All possible Post Objects
370
+ */
371
+ export declare type APIPost = APIPicturePost | APIVideoPost | APIGifPost | APIGifCaptionPost | APICaptionPost | APIVinePost | APIComicsPost | APIMemePost;
372
+ //# sourceMappingURL=post.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"post.d.ts","sourceRoot":"","sources":["../../src/payloads/post.ts"],"names":[],"mappings":"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"}