@anitrack/patreon-wrapper 1.4.6 → 1.5.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/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  🌄 You can also simulates sandbox of fake Patrons for development and code testing purposes
6
6
 
7
- 🍊 This package was also used in [AniTrack](https://anitrack.co) Discord Bot
7
+ 🍊 This package was previously used in [AniTrack](https://anitrack.co) before switching to a real payment gateway
8
8
 
9
9
  ## Table of Contents
10
10
 
package/lib/index.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- declare type Auth = {
1
+ export type PatronStatus = 'active_patron' | 'declined_patron' | 'former_patron';
2
+ export type PatronAPIAuth = {
2
3
  AccessToken: string;
3
4
  CampaignID: string;
4
5
  };
5
- declare type PatronType = {
6
+ export type PatronType = {
6
7
  displayId: string;
7
8
  displayName: string;
8
9
  emailAddress: string;
@@ -10,7 +11,7 @@ declare type PatronType = {
10
11
  subscription: {
11
12
  note: string;
12
13
  currentEntitled: {
13
- status: 'active_patron' | 'declined_patron';
14
+ status: PatronStatus;
14
15
  tier: {
15
16
  id: string;
16
17
  title: string;
@@ -34,7 +35,7 @@ declare type PatronType = {
34
35
  };
35
36
  };
36
37
  };
37
- declare type SandboxOptions = {
38
+ export type SandboxOptions = {
38
39
  displayId: string;
39
40
  displayName: string;
40
41
  emailAddress: string;
@@ -45,7 +46,7 @@ declare type SandboxOptions = {
45
46
  cents: number;
46
47
  willPayCents: number;
47
48
  lifetimeCents: number;
48
- patronStatus: 'active_patron' | 'declined_patron';
49
+ patronStatus: PatronStatus;
49
50
  firstCharge: string;
50
51
  nextCharge: string;
51
52
  lastCharge: string;
@@ -65,16 +66,15 @@ export declare class Patreon {
65
66
  private static _AccessToken;
66
67
  private static _CampaignID;
67
68
  private static _SandboxPatrons;
68
- static Authorization(AuthInformation: Auth): void;
69
+ static Authorization(AuthCredentials: PatronAPIAuth): void;
69
70
  private static FetchAPI;
70
- private static CleanQueryURL;
71
- static FetchPatrons(filters?: Array<'active_patron' | 'declined_patron'>, pageSize?: number): Promise<PatronType[]>;
72
- protected static _SandboxAdd(Patron: SandboxOptions): void;
73
- protected static _SandboxGet(): SandboxOptions[];
71
+ private static CleanURL;
72
+ static FetchPatrons(filters?: Array<PatronStatus>, pageSize?: number): Promise<PatronType[]>;
73
+ protected static _SandboxAddPatron(Patron: SandboxOptions): void;
74
+ protected static _SandboxGetPatron(): SandboxOptions[];
74
75
  }
75
76
  export declare class Sandbox extends Patreon {
76
- static GetFakePatrons(): SandboxOptions[];
77
- static AppendPatron(Patron: SandboxOptions): void;
77
+ static GetSandboxPatrons(): SandboxOptions[];
78
+ static AddSandboxPatron(Patron: SandboxOptions): void;
78
79
  }
79
- export {};
80
80
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,aAAK,IAAI,GAAG;IACR,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,aAAK,UAAU,GAAG;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,UAAU,EAAE,OAAO,CAAA;IACnB,YAAY,EAAE;QACV,IAAI,EAAE,MAAM,CAAA;QACZ,eAAe,EAAE;YACb,MAAM,EAAE,eAAe,GAAG,iBAAiB,CAAA;YAC3C,IAAI,EAAE;gBACF,EAAE,EAAE,MAAM,CAAA;gBACV,KAAK,EAAE,MAAM,CAAA;aAChB,CAAA;YACD,KAAK,EAAE,MAAM,CAAA;YACb,YAAY,EAAE,MAAM,CAAA;YACpB,aAAa,EAAE,MAAM,CAAA;YACrB,WAAW,EAAE,MAAM,CAAA;YACnB,UAAU,EAAE,MAAM,CAAA;YAClB,UAAU,EAAE,MAAM,CAAA;SACrB,CAAA;KACJ,CAAA;IACD,eAAe,EAAE;QACb,OAAO,EAAE;YACL,EAAE,EAAE,MAAM,CAAA;YACV,GAAG,EAAE,MAAM,CAAA;SACd,CAAA;QACD,OAAO,EAAE;YACL,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;YACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;SACrB,CAAA;KACJ,CAAA;CACJ,CAAA;AAED,aAAK,cAAc,GAAG;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,WAAW,EAAE,MAAM,CAAA;IACnB,YAAY,EAAE,MAAM,CAAA;IACpB,IAAI,EAAE;QACF,EAAE,EAAE,MAAM,CAAA;QACV,KAAK,EAAE,MAAM,CAAA;KAChB,CAAA;IACD,KAAK,EAAE,MAAM,CAAA;IACb,YAAY,EAAE,MAAM,CAAA;IACpB,aAAa,EAAE,MAAM,CAAA;IACrB,YAAY,EAAE,eAAe,GAAG,iBAAiB,CAAA;IACjD,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,MAAM,CAAA;IAClB,UAAU,EAAE,MAAM,CAAA;IAClB,eAAe,EAAE;QACb,OAAO,EAAE;YACL,EAAE,EAAE,MAAM,CAAA;YACV,GAAG,EAAE,MAAM,CAAA;SACd,CAAA;QACD,OAAO,EAAE;YACL,EAAE,EAAE,MAAM,GAAG,IAAI,CAAA;YACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;SACrB,CAAA;KACJ,CAAA;CACJ,CAAA;AAED,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAmD;IAEtE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAQ;IACnC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAQ;IAElC,OAAO,CAAC,MAAM,CAAC,eAAe,CAA4B;WAE5C,aAAa,CAAC,eAAe,EAAE,IAAI;mBAgB5B,QAAQ;IAe7B,OAAO,CAAC,MAAM,CAAC,aAAa;WAOR,YAAY,CAC5B,OAAO,GAAE,KAAK,CAAC,eAAe,GAAG,iBAAiB,CAAqB,EACvE,QAAQ,GAAE,MAAY;IA2H1B,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,cAAc;IAInD,SAAS,CAAC,MAAM,CAAC,WAAW;CAO/B;AAED,qBAAa,OAAQ,SAAQ,OAAO;WAClB,cAAc;WAId,YAAY,CAAC,MAAM,EAAE,cAAc;CAGpD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GAClB,eAAe,GACf,iBAAiB,GACjB,eAAe,CAAC;AAEtB,MAAM,MAAM,aAAa,GAAG;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,EAAE;QACV,IAAI,EAAE,MAAM,CAAC;QACb,eAAe,EAAE;YACb,MAAM,EAAE,YAAY,CAAC;YACrB,IAAI,EAAE;gBACF,EAAE,EAAE,MAAM,CAAC;gBACX,KAAK,EAAE,MAAM,CAAC;aACjB,CAAC;YACF,KAAK,EAAE,MAAM,CAAC;YACd,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,MAAM,CAAC;YACtB,WAAW,EAAE,MAAM,CAAC;YACpB,UAAU,EAAE,MAAM,CAAC;YACnB,UAAU,EAAE,MAAM,CAAC;SACtB,CAAC;KACL,CAAC;IACF,eAAe,EAAE;QACb,OAAO,EAAE;YACL,EAAE,EAAE,MAAM,CAAC;YACX,GAAG,EAAE,MAAM,CAAC;SACf,CAAC;QACF,OAAO,EAAE;YACL,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;YAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;SACtB,CAAC;KACL,CAAC;CACL,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE;QACF,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,YAAY,CAAC;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE;QACb,OAAO,EAAE;YACL,EAAE,EAAE,MAAM,CAAC;YACX,GAAG,EAAE,MAAM,CAAC;SACf,CAAC;QACF,OAAO,EAAE;YACL,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;YAClB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;SACtB,CAAC;KACL,CAAC;CACL,CAAC;AAEF,qBAAa,OAAO;IAChB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAoD;IAEvE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAS;IACpC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAS;IACnC,OAAO,CAAC,MAAM,CAAC,eAAe,CAA6B;WAE7C,aAAa,CAAC,eAAe,EAAE,aAAa;mBAWrC,QAAQ;IAe7B,OAAO,CAAC,MAAM,CAAC,QAAQ;WAOH,YAAY,CAC5B,OAAO,GAAE,KAAK,CAAC,YAAY,CAAqB,EAChD,QAAQ,GAAE,MAAY;IA8H1B,SAAS,CAAC,MAAM,CAAC,iBAAiB,CAAC,MAAM,EAAE,cAAc;IAIzD,SAAS,CAAC,MAAM,CAAC,iBAAiB;CAOrC;AAED,qBAAa,OAAQ,SAAQ,OAAO;WAClB,iBAAiB;WAIjB,gBAAgB,CAAC,MAAM,EAAE,cAAc;CAGxD"}
package/lib/index.js CHANGED
@@ -6,16 +6,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Sandbox = exports.Patreon = void 0;
7
7
  const axios_1 = __importDefault(require("axios"));
8
8
  class Patreon {
9
- static Authorization(AuthInformation) {
10
- if (!AuthInformation.AccessToken || !AuthInformation.CampaignID) {
9
+ static Authorization(AuthCredentials) {
10
+ if (!AuthCredentials.AccessToken || !AuthCredentials.CampaignID) {
11
11
  throw new Error('AccessToken and CampaignID are required on Authorization');
12
12
  }
13
- else if (typeof AuthInformation.AccessToken != 'string' ||
14
- typeof AuthInformation.CampaignID != 'string') {
15
- throw new Error('Invalid input, not a type of String');
16
- }
17
- this._AccessToken = AuthInformation.AccessToken;
18
- this._CampaignID = AuthInformation.CampaignID;
13
+ this._AccessToken = AuthCredentials.AccessToken;
14
+ this._CampaignID = AuthCredentials.CampaignID;
19
15
  }
20
16
  static async FetchAPI(URI) {
21
17
  if (!this._AccessToken || !this._CampaignID) {
@@ -28,94 +24,96 @@ class Patreon {
28
24
  throw new Error('Fetch API Failed...' + err);
29
25
  });
30
26
  }
31
- static CleanQueryURL(query) {
27
+ static CleanURL(query) {
32
28
  query = query.replaceAll('[', '%5B').replaceAll(']', '%5D');
33
29
  query = query.replaceAll(' ', '');
34
30
  return query;
35
31
  }
36
32
  static async FetchPatrons(filters = ['active_patron'], pageSize = 450) {
37
- const res = await this.FetchAPI(this.CleanQueryURL(`campaigns/${this._CampaignID}/` +
33
+ const { data } = await this.FetchAPI(this.CleanURL(`campaigns/${this._CampaignID}/` +
38
34
  `members ? include = user, currently_entitled_tiers & page[count] = ${pageSize} & fields[member] = campaign_lifetime_support_cents, currently_entitled_amount_cents, email, full_name, is_follower, last_charge_date, last_charge_status, lifetime_support_cents, next_charge_date, note, patron_status, pledge_cadence, pledge_relationship_start, will_pay_amount_cents & fields[user] = social_connections & fields[tier] = title`));
39
- var Patrons = [];
40
- if (!res?.data?.data)
41
- return [];
42
- if (res.data.data.length == 0)
35
+ const Patrons = [];
36
+ const PatreonAPIPatrons = data?.data || [];
37
+ if (PatreonAPIPatrons.length == 0)
43
38
  return [];
44
- // Processing Fake Sandbox Patrons
45
- this._SandboxPatrons.forEach((Patron) => Patrons.push({
46
- displayId: Patron.displayId,
47
- displayName: Patron.displayName,
48
- emailAddress: Patron.emailAddress,
49
- isFollower: false,
50
- subscription: {
51
- note: 'Sandbox',
52
- currentEntitled: {
53
- status: Patron.patronStatus,
54
- tier: {
55
- id: Patron.tier.id,
56
- title: Patron.tier.title,
39
+ // Format Sandbox Patrons
40
+ for (let x = 0; x < this._SandboxPatrons.length; x++) {
41
+ const Patron = this._SandboxPatrons[x];
42
+ Patrons.push({
43
+ displayId: Patron.displayId,
44
+ displayName: Patron.displayName,
45
+ emailAddress: Patron.emailAddress,
46
+ isFollower: false,
47
+ subscription: {
48
+ note: 'Sandbox',
49
+ currentEntitled: {
50
+ status: Patron.patronStatus,
51
+ tier: {
52
+ id: Patron.tier.id,
53
+ title: Patron.tier.title,
54
+ },
55
+ cents: Patron.cents,
56
+ willPayCents: Patron.willPayCents,
57
+ lifetimeCents: Patron.lifetimeCents,
58
+ firstCharge: Patron.firstCharge,
59
+ nextCharge: Patron.nextCharge,
60
+ lastCharge: Patron.lastCharge,
57
61
  },
58
- cents: Patron.cents,
59
- willPayCents: Patron.willPayCents,
60
- lifetimeCents: Patron.lifetimeCents,
61
- firstCharge: Patron.firstCharge,
62
- nextCharge: Patron.nextCharge,
63
- lastCharge: Patron.lastCharge,
64
- },
65
- },
66
- mediaConnection: {
67
- patreon: {
68
- id: Patron.mediaConnection.patreon.id,
69
- url: Patron.mediaConnection.patreon.url,
70
62
  },
71
- discord: {
72
- id: Patron?.mediaConnection?.discord?.id
73
- ? Patron?.mediaConnection?.discord?.id
74
- : null,
75
- url: Patron?.mediaConnection?.discord?.url
76
- ? Patron?.mediaConnection?.discord?.id
77
- : null,
63
+ mediaConnection: {
64
+ patreon: {
65
+ id: Patron.mediaConnection.patreon.id,
66
+ url: Patron.mediaConnection.patreon.url,
67
+ },
68
+ discord: {
69
+ id: Patron?.mediaConnection?.discord?.id
70
+ ? Patron?.mediaConnection?.discord?.id
71
+ : null,
72
+ url: Patron?.mediaConnection?.discord?.url
73
+ ? Patron?.mediaConnection?.discord?.id
74
+ : null,
75
+ },
78
76
  },
79
- },
80
- }));
81
- // Processing Real Patrons
82
- res.data.data.forEach((Patron) => {
83
- if (!filters.includes(Patron.attributes.patron_status))
84
- return;
85
- var socialInfo = res.data.included.find((includePatron) => includePatron.id == Patron.relationships.user.data.id &&
86
- includePatron.type === 'user');
87
- var tierInfo = res.data.included.find((includePatron) => includePatron.id ==
88
- Patron.relationships.currently_entitled_tiers?.data[0]
89
- ?.id && includePatron.type === 'tier');
77
+ });
78
+ }
79
+ // Format Real Patrons
80
+ for (let x = 0; x < PatreonAPIPatrons.length; x++) {
81
+ const Relationships = PatreonAPIPatrons[x].relationships;
82
+ const Attributes = PatreonAPIPatrons[x].attributes;
83
+ if (!filters.includes(Attributes.patron_status))
84
+ continue;
85
+ const socialInfo = data.included.find((patron) => patron.id == Relationships.user.data.id &&
86
+ patron.type === 'user');
87
+ const tierInfo = data.included.find((patron) => patron.id ==
88
+ Relationships.currently_entitled_tiers?.data[0]?.id &&
89
+ patron.type === 'tier');
90
90
  Patrons.push({
91
- displayId: Patron.relationships.user.data.id,
92
- displayName: Patron.attributes.full_name,
93
- emailAddress: Patron.attributes.email,
94
- isFollower: Patron.attributes.is_follower,
91
+ displayId: Relationships.user.data.id,
92
+ displayName: Attributes.full_name,
93
+ emailAddress: Attributes.email,
94
+ isFollower: Attributes.is_follower,
95
95
  subscription: {
96
- note: Patron.attributes.note,
96
+ note: Attributes.note,
97
97
  currentEntitled: {
98
- status: Patron.attributes.patron_status,
98
+ status: Attributes.patron_status,
99
99
  tier: {
100
100
  id: tierInfo ? tierInfo.id : null,
101
- title: tierInfo ? tierInfo.attributes.title : null,
101
+ title: tierInfo ? tierInfo.Attributes.title : null,
102
102
  },
103
- cents: Patron.attributes.currently_entitled_amount_cents !=
104
- 0
105
- ? Patron.attributes
106
- .currently_entitled_amount_cents
103
+ cents: Attributes.currently_entitled_amount_cents != 0
104
+ ? Attributes.currently_entitled_amount_cents
107
105
  : null,
108
- willPayCents: Patron.attributes.will_pay_amount_cents,
109
- lifetimeCents: Patron.attributes.lifetime_support_cents,
110
- firstCharge: Patron.attributes.pledge_relationship_start,
111
- nextCharge: Patron.attributes.next_charge_date,
112
- lastCharge: Patron.attributes.last_charge_date,
106
+ willPayCents: Attributes.will_pay_amount_cents,
107
+ lifetimeCents: Attributes.lifetime_support_cents,
108
+ firstCharge: Attributes.pledge_relationship_start,
109
+ nextCharge: Attributes.next_charge_date,
110
+ lastCharge: Attributes.last_charge_date,
113
111
  },
114
112
  },
115
113
  mediaConnection: {
116
114
  patreon: {
117
- id: Patron.relationships.user.data.id,
118
- url: Patron.relationships.user.links.related,
115
+ id: Relationships.user.data.id,
116
+ url: Relationships.user.links.related,
119
117
  },
120
118
  discord: {
121
119
  id: socialInfo?.attributes?.social_connections?.discord
@@ -132,13 +130,13 @@ class Patreon {
132
130
  },
133
131
  },
134
132
  });
135
- });
133
+ }
136
134
  return Patrons;
137
135
  }
138
- static _SandboxAdd(Patron) {
136
+ static _SandboxAddPatron(Patron) {
139
137
  this._SandboxPatrons.push(Patron);
140
138
  }
141
- static _SandboxGet() {
139
+ static _SandboxGetPatron() {
142
140
  return this._SandboxPatrons;
143
141
  }
144
142
  }
@@ -146,11 +144,11 @@ exports.Patreon = Patreon;
146
144
  Patreon._URL = 'https://www.patreon.com/api/oauth2/v2/';
147
145
  Patreon._SandboxPatrons = [];
148
146
  class Sandbox extends Patreon {
149
- static GetFakePatrons() {
150
- return super._SandboxGet();
147
+ static GetSandboxPatrons() {
148
+ return super._SandboxGetPatron();
151
149
  }
152
- static AppendPatron(Patron) {
153
- super._SandboxAdd(Patron);
150
+ static AddSandboxPatron(Patron) {
151
+ super._SandboxAddPatron(Patron);
154
152
  }
155
153
  }
156
154
  exports.Sandbox = Sandbox;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,36 +1,36 @@
1
- {
2
- "name": "@anitrack/patreon-wrapper",
3
- "version": "1.4.6",
4
- "description": "Universal Patron API v2 wrapper that simplifies the API's response for easier usage and lower response complexity",
5
- "main": "lib/index.js",
6
- "types": "lib",
7
- "scripts": {
8
- "build": "tsc -p .",
9
- "dev": "tsc-watch --onSuccess \"node lib/devTEST.js\""
10
- },
11
- "repository": {
12
- "type": "git",
13
- "url": "git://github.com/AniTrack/patreon-wrapper.git"
14
- },
15
- "author": "AniTrack",
16
- "keywords": [
17
- "patreon",
18
- "discord",
19
- "api"
20
- ],
21
- "license": "MIT",
22
- "bugs": {
23
- "url": "https://github.com/AniTrack/patreon-wrapper/issues"
24
- },
25
- "homepage": "https://github.com/AniTrack/patreon-wrapper#readme",
26
- "dependencies": {
27
- "axios": "^0.27.2"
28
- },
29
- "publishConfig": {
30
- "access": "public"
31
- },
32
- "devDependencies": {
33
- "ts-node": "^10.7.0",
34
- "typescript": "^4.6.4"
35
- }
36
- }
1
+ {
2
+ "name": "@anitrack/patreon-wrapper",
3
+ "version": "1.5.0",
4
+ "description": "Universal Patron API v2 wrapper that simplifies the API's response for easier usage and lower response complexity",
5
+ "main": "lib/index.js",
6
+ "types": "lib",
7
+ "scripts": {
8
+ "build": "tsc -p .",
9
+ "dev": "tsc-watch --onSuccess \"node lib/devTEST.js\""
10
+ },
11
+ "repository": {
12
+ "type": "git",
13
+ "url": "git://github.com/AniTrack/patreon-wrapper.git"
14
+ },
15
+ "author": "AniTrack",
16
+ "keywords": [
17
+ "patreon",
18
+ "discord",
19
+ "api"
20
+ ],
21
+ "license": "MIT",
22
+ "bugs": {
23
+ "url": "https://github.com/AniTrack/patreon-wrapper/issues"
24
+ },
25
+ "homepage": "https://github.com/AniTrack/patreon-wrapper#readme",
26
+ "dependencies": {
27
+ "axios": "^0.27.2"
28
+ },
29
+ "publishConfig": {
30
+ "access": "public"
31
+ },
32
+ "devDependencies": {
33
+ "ts-node": "^10.7.0",
34
+ "typescript": "^4.6.4"
35
+ }
36
+ }
package/src/index.ts CHANGED
@@ -1,134 +1,135 @@
1
- import axios from 'axios'
1
+ import axios from 'axios';
2
2
 
3
- type Auth = {
4
- AccessToken: string
5
- CampaignID: string
6
- }
3
+ export type PatronStatus =
4
+ | 'active_patron'
5
+ | 'declined_patron'
6
+ | 'former_patron';
7
+
8
+ export type PatronAPIAuth = {
9
+ AccessToken: string;
10
+ CampaignID: string;
11
+ };
7
12
 
8
- type PatronType = {
9
- displayId: string
10
- displayName: string
11
- emailAddress: string
12
- isFollower: boolean
13
+ export type PatronType = {
14
+ displayId: string;
15
+ displayName: string;
16
+ emailAddress: string;
17
+ isFollower: boolean;
13
18
  subscription: {
14
- note: string
19
+ note: string;
15
20
  currentEntitled: {
16
- status: 'active_patron' | 'declined_patron'
21
+ status: PatronStatus;
17
22
  tier: {
18
- id: string
19
- title: string
20
- }
21
- cents: number
22
- willPayCents: number
23
- lifetimeCents: number
24
- firstCharge: string
25
- nextCharge: string
26
- lastCharge: string
27
- }
28
- }
23
+ id: string;
24
+ title: string;
25
+ };
26
+ cents: number;
27
+ willPayCents: number;
28
+ lifetimeCents: number;
29
+ firstCharge: string;
30
+ nextCharge: string;
31
+ lastCharge: string;
32
+ };
33
+ };
29
34
  mediaConnection: {
30
35
  patreon: {
31
- id: string
32
- url: string
33
- }
36
+ id: string;
37
+ url: string;
38
+ };
34
39
  discord: {
35
- id: string | null
36
- url: string | null
37
- }
38
- }
39
- }
40
+ id: string | null;
41
+ url: string | null;
42
+ };
43
+ };
44
+ };
40
45
 
41
- type SandboxOptions = {
42
- displayId: string
43
- displayName: string
44
- emailAddress: string
46
+ export type SandboxOptions = {
47
+ displayId: string;
48
+ displayName: string;
49
+ emailAddress: string;
45
50
  tier: {
46
- id: string
47
- title: string
48
- }
49
- cents: number
50
- willPayCents: number
51
- lifetimeCents: number
52
- patronStatus: 'active_patron' | 'declined_patron'
53
- firstCharge: string
54
- nextCharge: string
55
- lastCharge: string
51
+ id: string;
52
+ title: string;
53
+ };
54
+ cents: number;
55
+ willPayCents: number;
56
+ lifetimeCents: number;
57
+ patronStatus: PatronStatus;
58
+ firstCharge: string;
59
+ nextCharge: string;
60
+ lastCharge: string;
56
61
  mediaConnection: {
57
62
  patreon: {
58
- id: string
59
- url: string
60
- }
63
+ id: string;
64
+ url: string;
65
+ };
61
66
  discord: {
62
- id: string | null
63
- url: string | null
64
- }
65
- }
66
- }
67
+ id: string | null;
68
+ url: string | null;
69
+ };
70
+ };
71
+ };
67
72
 
68
73
  export class Patreon {
69
- private static _URL: string = 'https://www.patreon.com/api/oauth2/v2/'
70
-
71
- private static _AccessToken: string
72
- private static _CampaignID: string
74
+ private static _URL: string = 'https://www.patreon.com/api/oauth2/v2/';
73
75
 
74
- private static _SandboxPatrons: Array<SandboxOptions> = []
76
+ private static _AccessToken: string;
77
+ private static _CampaignID: string;
78
+ private static _SandboxPatrons: Array<SandboxOptions> = [];
75
79
 
76
- public static Authorization(AuthInformation: Auth) {
77
- if (!AuthInformation.AccessToken || !AuthInformation.CampaignID) {
80
+ public static Authorization(AuthCredentials: PatronAPIAuth) {
81
+ if (!AuthCredentials.AccessToken || !AuthCredentials.CampaignID) {
78
82
  throw new Error(
79
83
  'AccessToken and CampaignID are required on Authorization'
80
- )
81
- } else if (
82
- typeof AuthInformation.AccessToken != 'string' ||
83
- typeof AuthInformation.CampaignID != 'string'
84
- ) {
85
- throw new Error('Invalid input, not a type of String')
84
+ );
86
85
  }
87
86
 
88
- this._AccessToken = AuthInformation.AccessToken
89
- this._CampaignID = AuthInformation.CampaignID
87
+ this._AccessToken = AuthCredentials.AccessToken;
88
+ this._CampaignID = AuthCredentials.CampaignID;
90
89
  }
91
90
 
92
91
  private static async FetchAPI(URI: string) {
93
92
  if (!this._AccessToken || !this._CampaignID) {
94
93
  throw new Error(
95
94
  'AccessToken and CampaignID are required on Authorization'
96
- )
95
+ );
97
96
  }
98
97
 
99
98
  return await axios(this._URL + URI, {
100
99
  method: 'GET',
101
100
  headers: { Authorization: 'Bearer ' + this._AccessToken },
102
101
  }).catch((err: Error) => {
103
- throw new Error('Fetch API Failed...' + err)
104
- })
102
+ throw new Error('Fetch API Failed...' + err);
103
+ });
105
104
  }
106
105
 
107
- private static CleanQueryURL(query: string) {
108
- query = query.replaceAll('[', '%5B').replaceAll(']', '%5D')
109
- query = query.replaceAll(' ', '')
106
+ private static CleanURL(query: string) {
107
+ query = query.replaceAll('[', '%5B').replaceAll(']', '%5D');
108
+ query = query.replaceAll(' ', '');
110
109
 
111
- return query
110
+ return query;
112
111
  }
113
112
 
114
113
  public static async FetchPatrons(
115
- filters: Array<'active_patron' | 'declined_patron'> = ['active_patron'],
114
+ filters: Array<PatronStatus> = ['active_patron'],
116
115
  pageSize: number = 450
117
116
  ) {
118
- const res: any = await this.FetchAPI(
119
- this.CleanQueryURL(
117
+ const { data } = await this.FetchAPI(
118
+ this.CleanURL(
120
119
  `campaigns/${this._CampaignID}/` +
121
120
  `members ? include = user, currently_entitled_tiers & page[count] = ${pageSize} & fields[member] = campaign_lifetime_support_cents, currently_entitled_amount_cents, email, full_name, is_follower, last_charge_date, last_charge_status, lifetime_support_cents, next_charge_date, note, patron_status, pledge_cadence, pledge_relationship_start, will_pay_amount_cents & fields[user] = social_connections & fields[tier] = title`
122
121
  )
123
- )
122
+ );
123
+
124
+ const Patrons: Array<PatronType> = [];
125
+ const PatreonAPIPatrons = data?.data || [];
124
126
 
125
- var Patrons: Array<PatronType> = []
127
+ if (PatreonAPIPatrons.length == 0) return [];
126
128
 
127
- if (!res?.data?.data) return []
128
- if (res.data.data.length == 0) return []
129
+ // Format Sandbox Patrons
130
+ for (let x = 0; x < this._SandboxPatrons.length; x++) {
131
+ const Patron = this._SandboxPatrons[x];
129
132
 
130
- // Processing Fake Sandbox Patrons
131
- this._SandboxPatrons.forEach((Patron: SandboxOptions) =>
132
133
  Patrons.push({
133
134
  displayId: Patron.displayId,
134
135
  displayName: Patron.displayName,
@@ -164,57 +165,57 @@ export class Patreon {
164
165
  : null,
165
166
  },
166
167
  },
167
- })
168
- )
168
+ });
169
+ }
169
170
 
170
- // Processing Real Patrons
171
- res.data.data.forEach((Patron: any) => {
172
- if (!filters.includes(Patron.attributes.patron_status)) return
171
+ // Format Real Patrons
172
+ for (let x = 0; x < PatreonAPIPatrons.length; x++) {
173
+ const Relationships = PatreonAPIPatrons[x].relationships;
174
+ const Attributes = PatreonAPIPatrons[x].attributes;
173
175
 
174
- var socialInfo = res.data.included.find(
175
- (includePatron: any) =>
176
- includePatron.id == Patron.relationships.user.data.id &&
177
- includePatron.type === 'user'
178
- )
176
+ if (!filters.includes(Attributes.patron_status)) continue;
179
177
 
180
- var tierInfo = res.data.included.find(
181
- (includePatron: any) =>
182
- includePatron.id ==
183
- Patron.relationships.currently_entitled_tiers?.data[0]
184
- ?.id && includePatron.type === 'tier'
185
- )
178
+ const socialInfo = data.included.find(
179
+ (patron: any) =>
180
+ patron.id == Relationships.user.data.id &&
181
+ patron.type === 'user'
182
+ );
183
+
184
+ const tierInfo = data.included.find(
185
+ (patron: any) =>
186
+ patron.id ==
187
+ Relationships.currently_entitled_tiers?.data[0]?.id &&
188
+ patron.type === 'tier'
189
+ );
186
190
 
187
191
  Patrons.push({
188
- displayId: Patron.relationships.user.data.id,
189
- displayName: Patron.attributes.full_name,
190
- emailAddress: Patron.attributes.email,
191
- isFollower: Patron.attributes.is_follower,
192
+ displayId: Relationships.user.data.id,
193
+ displayName: Attributes.full_name,
194
+ emailAddress: Attributes.email,
195
+ isFollower: Attributes.is_follower,
192
196
  subscription: {
193
- note: Patron.attributes.note,
197
+ note: Attributes.note,
194
198
  currentEntitled: {
195
- status: Patron.attributes.patron_status,
199
+ status: Attributes.patron_status,
196
200
  tier: {
197
201
  id: tierInfo ? tierInfo.id : null,
198
- title: tierInfo ? tierInfo.attributes.title : null,
202
+ title: tierInfo ? tierInfo.Attributes.title : null,
199
203
  },
200
204
  cents:
201
- Patron.attributes.currently_entitled_amount_cents !=
202
- 0
203
- ? Patron.attributes
204
- .currently_entitled_amount_cents
205
+ Attributes.currently_entitled_amount_cents != 0
206
+ ? Attributes.currently_entitled_amount_cents
205
207
  : null,
206
- willPayCents: Patron.attributes.will_pay_amount_cents,
207
- lifetimeCents: Patron.attributes.lifetime_support_cents,
208
- firstCharge:
209
- Patron.attributes.pledge_relationship_start,
210
- nextCharge: Patron.attributes.next_charge_date,
211
- lastCharge: Patron.attributes.last_charge_date,
208
+ willPayCents: Attributes.will_pay_amount_cents,
209
+ lifetimeCents: Attributes.lifetime_support_cents,
210
+ firstCharge: Attributes.pledge_relationship_start,
211
+ nextCharge: Attributes.next_charge_date,
212
+ lastCharge: Attributes.last_charge_date,
212
213
  },
213
214
  },
214
215
  mediaConnection: {
215
216
  patreon: {
216
- id: Patron.relationships.user.data.id,
217
- url: Patron.relationships.user.links.related,
217
+ id: Relationships.user.data.id,
218
+ url: Relationships.user.links.related,
218
219
  },
219
220
  discord: {
220
221
  id: socialInfo?.attributes?.social_connections?.discord
@@ -231,17 +232,18 @@ export class Patreon {
231
232
  : null,
232
233
  },
233
234
  },
234
- })
235
- })
236
- return Patrons
235
+ });
236
+ }
237
+
238
+ return Patrons;
237
239
  }
238
240
 
239
- protected static _SandboxAdd(Patron: SandboxOptions) {
240
- this._SandboxPatrons.push(Patron)
241
+ protected static _SandboxAddPatron(Patron: SandboxOptions) {
242
+ this._SandboxPatrons.push(Patron);
241
243
  }
242
244
 
243
- protected static _SandboxGet() {
244
- return this._SandboxPatrons
245
+ protected static _SandboxGetPatron() {
246
+ return this._SandboxPatrons;
245
247
  }
246
248
 
247
249
  // public static FetchPatron() {}
@@ -250,11 +252,11 @@ export class Patreon {
250
252
  }
251
253
 
252
254
  export class Sandbox extends Patreon {
253
- public static GetFakePatrons() {
254
- return super._SandboxGet()
255
+ public static GetSandboxPatrons() {
256
+ return super._SandboxGetPatron();
255
257
  }
256
258
 
257
- public static AppendPatron(Patron: SandboxOptions) {
258
- super._SandboxAdd(Patron)
259
+ public static AddSandboxPatron(Patron: SandboxOptions) {
260
+ super._SandboxAddPatron(Patron);
259
261
  }
260
262
  }