patreon-dl 3.7.1 → 3.8.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 +12 -0
- package/dist/browse/api/CampaignAPIMixin.d.ts +1 -1
- package/dist/browse/api/ContentAPIMixin.d.ts +3 -3
- package/dist/browse/api/FilterAPIMixin.d.ts +1 -1
- package/dist/browse/api/index.d.ts +10 -10
- package/dist/browse/db/CampaignDBMixin.d.ts +3 -3
- package/dist/browse/db/ContentDBMixin.d.ts +13 -13
- package/dist/browse/db/index.d.ts +16 -16
- package/dist/browse/web/assets/index-CtZbx-Du.js +218 -0
- package/dist/browse/web/index.html +1 -1
- package/dist/cli/CommandLineParser.d.ts +4 -0
- package/dist/cli/CommandLineParser.js +65 -32
- package/dist/cli/CommandLineParser.js.map +1 -1
- package/dist/cli/helper/PostList.d.ts +6 -0
- package/dist/cli/helper/PostList.js +106 -0
- package/dist/cli/helper/PostList.js.map +1 -0
- package/dist/cli/index.js +73 -53
- package/dist/cli/index.js.map +1 -1
- package/dist/downloaders/Bootstrap.d.ts +5 -0
- package/dist/downloaders/Bootstrap.js +10 -0
- package/dist/downloaders/Bootstrap.js.map +1 -1
- package/dist/downloaders/Downloader.d.ts +4 -4
- package/dist/downloaders/Downloader.js +5 -58
- package/dist/downloaders/Downloader.js.map +1 -1
- package/dist/downloaders/IncludeCriteriaHelper.d.ts +25 -0
- package/dist/downloaders/IncludeCriteriaHelper.js +160 -0
- package/dist/downloaders/IncludeCriteriaHelper.js.map +1 -0
- package/dist/downloaders/InitialData.js +20 -6
- package/dist/downloaders/InitialData.js.map +1 -1
- package/dist/downloaders/PostDownloader.js +62 -98
- package/dist/downloaders/PostDownloader.js.map +1 -1
- package/dist/downloaders/PostsFetcher.js +4 -2
- package/dist/downloaders/PostsFetcher.js.map +1 -1
- package/dist/downloaders/ProductDownloader.js +31 -21
- package/dist/downloaders/ProductDownloader.js.map +1 -1
- package/dist/downloaders/task/YouTubeDownloadTask.js +1 -3
- package/dist/downloaders/task/YouTubeDownloadTask.js.map +1 -1
- package/dist/parsers/PageParser.js +7 -2
- package/dist/parsers/PageParser.js.map +1 -1
- package/dist/utils/URLHelper.d.ts +4 -0
- package/dist/utils/URLHelper.js +17 -0
- package/dist/utils/URLHelper.js.map +1 -1
- package/dist/utils/YouTubeCredentialsCapturer.js +1 -1
- package/dist/utils/YouTubeCredentialsCapturer.js.map +1 -1
- package/dist/utils/logging/ConsoleLogger.js +5 -0
- package/dist/utils/logging/ConsoleLogger.js.map +1 -1
- package/dist/utils/yt/InnertubeLoader.d.ts +4 -6
- package/dist/utils/yt/InnertubeLoader.js +14 -14
- package/dist/utils/yt/InnertubeLoader.js.map +1 -1
- package/dist/utils/yt/PoToken.js +53 -27
- package/dist/utils/yt/PoToken.js.map +1 -1
- package/package.json +12 -8
- package/dist/browse/web/assets/index-B1h15ViZ.js +0 -218
package/README.md
CHANGED
|
@@ -120,6 +120,8 @@ $ patreon-dl [OPTION]... URL
|
|
|
120
120
|
| `--dry-run` | | Run without writing files to disk (except logs, if any). Intended for testing / debugging. |
|
|
121
121
|
| <code><nobr>--list-tiers <creator></nobr></code> | | <p>List tiers for the given creator(s). Separate multiple creators with a comma.</p>The purpose of this is to let you find out what tier IDs to set for `posts.in.tier` filtering option under `include` section of [configuration file](#configuration-file). |
|
|
122
122
|
| <code><nobr>--list-tiers-uid <user ID></nobr></code> | | Same as `--list-tiers`, but takes user ID instead of vanity. |
|
|
123
|
+
| <code><nobr>--list-posts <creator></nobr></code> | | <p>List posts by the given creator(s). Separate multiple creators with a comma.</p> |
|
|
124
|
+
| <code><nobr>--list-posts-uid <user ID></nobr></code> | | Same as `--list-posts`, but takes user ID instead of vanity. |
|
|
123
125
|
| `--configure-youtube` | | <p>Configure YouTube connection.</p>`patreon-dl` supports downloading embedded YouTube videos. If you have a YouTube Premium account, you can connect `patreon-dl` to it for downloading Premium-quality streams. You will also need to connect to an account if you get a "Login required" error message during download.|
|
|
124
126
|
|
|
125
127
|
### URL
|
|
@@ -150,6 +152,10 @@ https://www.patreon.com/collection/<collection_id>
|
|
|
150
152
|
|
|
151
153
|
```
|
|
152
154
|
|
|
155
|
+
#### Custom URLs
|
|
156
|
+
|
|
157
|
+
Some creators host their Patreon pages on custom domains. You can provide this custom URL to `patreon-dl`, which will download posts from the associated creator.
|
|
158
|
+
|
|
153
159
|
#### Multiple URLs
|
|
154
160
|
|
|
155
161
|
You may specify multiple URLs by separating them with a comma. E.g.:
|
|
@@ -305,6 +311,12 @@ Note the URL shown in the output. Open this URL in a web browser to begin viewin
|
|
|
305
311
|
|
|
306
312
|
## Changelog
|
|
307
313
|
|
|
314
|
+
3.8.0
|
|
315
|
+
- Add support for custom URLs (creators hosting Patreon pages on their own domains) ([@lucasoskorep](https://github.com/lucasoskorep) - [PR #129](https://github.com/patrickkfkan/patreon-dl/pull/129)).
|
|
316
|
+
- Fix YT download errors ([#132](https://github.com/patrickkfkan/patreon-dl/issues/132)).
|
|
317
|
+
- Browse: set title tag based on content ([#127](https://github.com/patrickkfkan/patreon-dl/issues/127)).
|
|
318
|
+
- CLI: add `--list-posts` / `--list-posts-uid` ([#126](https://github.com/patrickkfkan/patreon-dl/issues/126)).
|
|
319
|
+
|
|
308
320
|
3.7.1
|
|
309
321
|
- Check and skip download of Patreon-hosted videos that are protected by DRM; add `include.protectedMedia` / `protected.media` option.
|
|
310
322
|
- Fix campaign not found when targeting collections ([#124](https://github.com/patrickkfkan/patreon-dl/issues/124)).
|
|
@@ -11,7 +11,7 @@ export declare function CampaignAPIMixin<TBase extends APIConstructor>(Base: TBa
|
|
|
11
11
|
withCounts?: false;
|
|
12
12
|
}): Campaign | null;
|
|
13
13
|
getCampaign(params: GetCampaignParams): Campaign | CampaignWithCounts | null;
|
|
14
|
-
"__#
|
|
14
|
+
"__#185@#sanitizeCampaign"(campaign: Campaign): void;
|
|
15
15
|
name: string;
|
|
16
16
|
db: import("../db").DBInstance;
|
|
17
17
|
logger?: import("../..").Logger | null;
|
|
@@ -14,9 +14,9 @@ export declare function ContentAPIMixin<TBase extends APIConstructor>(Base: TBas
|
|
|
14
14
|
} | null;
|
|
15
15
|
getCollectionList(params: GetCollectionListParams): import("../types/Content.js").CollectionList;
|
|
16
16
|
getPostTagList(params: GetPostTagListParams): import("../types/Content.js").PostTagList;
|
|
17
|
-
"__#
|
|
18
|
-
"__#
|
|
19
|
-
"__#
|
|
17
|
+
"__#186@#processPostContentElements"(post: Post): void;
|
|
18
|
+
"__#186@#processInlineMedia"($: CheerioAPI, post: Post): boolean;
|
|
19
|
+
"__#186@#processInlineLinks"($: CheerioAPI): boolean;
|
|
20
20
|
name: string;
|
|
21
21
|
db: import("../db").DBInstance;
|
|
22
22
|
logger?: import("../..").Logger | null;
|
|
@@ -3,7 +3,7 @@ import { type FilterData, type MediaFilterSearchParams, type PostFilterSearchPar
|
|
|
3
3
|
export declare function FilterAPIMixin<TBase extends APIConstructor>(Base: TBase): {
|
|
4
4
|
new (...args: any[]): {
|
|
5
5
|
getPostFilterData(campaignId: string): FilterData<PostFilterSearchParams>;
|
|
6
|
-
"__#
|
|
6
|
+
"__#187@#getPostTypeTitle"(postType: string): "Link" | "Audio" | "Image" | "Video" | "Other" | "Text" | "Podcast" | "Poll";
|
|
7
7
|
getProductFilterData(campaignId: string): FilterData<ProductFilterSearchParams>;
|
|
8
8
|
getMediaFilterData(campaignId: string): FilterData<MediaFilterSearchParams>;
|
|
9
9
|
name: string;
|
|
@@ -10,7 +10,7 @@ export declare class APIBase {
|
|
|
10
10
|
constructor(db: DBInstance, logger?: Logger | null);
|
|
11
11
|
static getInstance(db: DBInstance, logger?: Logger | null): {
|
|
12
12
|
getPostFilterData(campaignId: string): import("../types/Filter.js").FilterData<import("../types/Filter.js").PostFilterSearchParams>;
|
|
13
|
-
"__#
|
|
13
|
+
"__#187@#getPostTypeTitle"(postType: string): "Link" | "Audio" | "Image" | "Video" | "Other" | "Text" | "Podcast" | "Poll";
|
|
14
14
|
getProductFilterData(campaignId: string): import("../types/Filter.js").FilterData<import("../types/Filter.js").ProductFilterSearchParams>;
|
|
15
15
|
getMediaFilterData(campaignId: string): import("../types/Filter.js").FilterData<import("../types/Filter.js").MediaFilterSearchParams>;
|
|
16
16
|
name: string;
|
|
@@ -50,9 +50,9 @@ export declare class APIBase {
|
|
|
50
50
|
} | null;
|
|
51
51
|
getCollectionList(params: import("../types/Content.js").GetCollectionListParams): import("../types/Content.js").CollectionList;
|
|
52
52
|
getPostTagList(params: import("../types/Content.js").GetPostTagListParams): import("../types/Content.js").PostTagList;
|
|
53
|
-
"__#
|
|
54
|
-
"__#
|
|
55
|
-
"__#
|
|
53
|
+
"__#186@#processPostContentElements"(post: import("../../index.js").Post): void;
|
|
54
|
+
"__#186@#processInlineMedia"($: import("cheerio").CheerioAPI, post: import("../../index.js").Post): boolean;
|
|
55
|
+
"__#186@#processInlineLinks"($: import("cheerio").CheerioAPI): boolean;
|
|
56
56
|
name: string;
|
|
57
57
|
db: DBInstance;
|
|
58
58
|
logger?: Logger | null;
|
|
@@ -67,7 +67,7 @@ export declare class APIBase {
|
|
|
67
67
|
withCounts?: false;
|
|
68
68
|
}): import("../../index.js").Campaign | null;
|
|
69
69
|
getCampaign(params: import("../types/Campaign.js").GetCampaignParams): import("../../index.js").Campaign | import("../types/Campaign.js").CampaignWithCounts | null;
|
|
70
|
-
"__#
|
|
70
|
+
"__#185@#sanitizeCampaign"(campaign: import("../../index.js").Campaign): void;
|
|
71
71
|
name: string;
|
|
72
72
|
db: DBInstance;
|
|
73
73
|
logger?: Logger | null;
|
|
@@ -80,7 +80,7 @@ export declare class APIBase {
|
|
|
80
80
|
declare const API: {
|
|
81
81
|
new (...args: any[]): {
|
|
82
82
|
getPostFilterData(campaignId: string): import("../types/Filter.js").FilterData<import("../types/Filter.js").PostFilterSearchParams>;
|
|
83
|
-
"__#
|
|
83
|
+
"__#187@#getPostTypeTitle"(postType: string): "Link" | "Audio" | "Image" | "Video" | "Other" | "Text" | "Podcast" | "Poll";
|
|
84
84
|
getProductFilterData(campaignId: string): import("../types/Filter.js").FilterData<import("../types/Filter.js").ProductFilterSearchParams>;
|
|
85
85
|
getMediaFilterData(campaignId: string): import("../types/Filter.js").FilterData<import("../types/Filter.js").MediaFilterSearchParams>;
|
|
86
86
|
name: string;
|
|
@@ -126,9 +126,9 @@ declare const API: {
|
|
|
126
126
|
} | null;
|
|
127
127
|
getCollectionList(params: import("../types/Content.js").GetCollectionListParams): import("../types/Content.js").CollectionList;
|
|
128
128
|
getPostTagList(params: import("../types/Content.js").GetPostTagListParams): import("../types/Content.js").PostTagList;
|
|
129
|
-
"__#
|
|
130
|
-
"__#
|
|
131
|
-
"__#
|
|
129
|
+
"__#186@#processPostContentElements"(post: import("../../index.js").Post): void;
|
|
130
|
+
"__#186@#processInlineMedia"($: import("cheerio").CheerioAPI, post: import("../../index.js").Post): boolean;
|
|
131
|
+
"__#186@#processInlineLinks"($: import("cheerio").CheerioAPI): boolean;
|
|
132
132
|
name: string;
|
|
133
133
|
db: DBInstance;
|
|
134
134
|
logger?: Logger | null;
|
|
@@ -145,7 +145,7 @@ declare const API: {
|
|
|
145
145
|
withCounts?: false;
|
|
146
146
|
}): import("../../index.js").Campaign | null;
|
|
147
147
|
getCampaign(params: import("../types/Campaign.js").GetCampaignParams): import("../../index.js").Campaign | import("../types/Campaign.js").CampaignWithCounts | null;
|
|
148
|
-
"__#
|
|
148
|
+
"__#185@#sanitizeCampaign"(campaign: import("../../index.js").Campaign): void;
|
|
149
149
|
name: string;
|
|
150
150
|
db: DBInstance;
|
|
151
151
|
logger?: Logger | null;
|
|
@@ -7,10 +7,10 @@ export declare function CampaignDBMixin<TBase extends UserDBConstructor>(Base: T
|
|
|
7
7
|
new (...args: any[]): {
|
|
8
8
|
saveCampaign(campaign: Campaign | null, downloadDate: Date, overwriteIfExists?: boolean): void;
|
|
9
9
|
getCampaign(params: GetCampaignParams): Campaign | null;
|
|
10
|
-
"__#
|
|
11
|
-
"__#
|
|
10
|
+
"__#169@#saveRewards"(campaign: Campaign): void;
|
|
11
|
+
"__#169@#doSaveReward"(campaign: Campaign, reward: Reward): void;
|
|
12
12
|
getCampaignList(params: GetCampaignListParams): CampaignList;
|
|
13
|
-
"__#
|
|
13
|
+
"__#169@#getCampaignWithCounts"(params: GetCampaignParams): CampaignWithCounts | null;
|
|
14
14
|
checkCampaignExists(id: string): boolean;
|
|
15
15
|
saveUser(user: import("../../index.js").User | null): void;
|
|
16
16
|
getUserByID(id: string): import("../../index.js").User | null;
|
|
@@ -5,13 +5,13 @@ import { type CampaignDBConstructor } from './CampaignDBMixin.js';
|
|
|
5
5
|
export declare function ContentDBMixin<TBase extends CampaignDBConstructor>(Base: TBase): {
|
|
6
6
|
new (...args: any[]): {
|
|
7
7
|
saveContent(content: Post | Product): void;
|
|
8
|
-
"__#
|
|
9
|
-
"__#
|
|
10
|
-
"__#
|
|
11
|
-
"__#
|
|
12
|
-
"__#
|
|
13
|
-
"__#
|
|
14
|
-
"__#
|
|
8
|
+
"__#170@#saveContentMedia"(content: Post | Product): void;
|
|
9
|
+
"__#170@#savepostMedia"(post: Post): void;
|
|
10
|
+
"__#170@#saveProductMedia"(product: Product): void;
|
|
11
|
+
"__#170@#doSaveContentMedia"(content: Post | Product, media: Downloadable, mediaIndex: number, isPreview: boolean): void;
|
|
12
|
+
"__#170@#publishedAtToTime"(publishedAt: string | null): number | null;
|
|
13
|
+
"__#170@#savePostTiers"(post: Post): void;
|
|
14
|
+
"__#170@#doSaveTier"(post: Post, tier: Tier): void;
|
|
15
15
|
savePostComments(post: Post, comments: Comment[]): void;
|
|
16
16
|
checkPostCommentsExist(post: Post): boolean;
|
|
17
17
|
getContent(id: string, contentType: "post"): PostWithComments | null;
|
|
@@ -26,7 +26,7 @@ export declare function ContentDBMixin<TBase extends CampaignDBConstructor>(Base
|
|
|
26
26
|
* @param row Must have `details`, `comment_count` and `comments`
|
|
27
27
|
* @returns
|
|
28
28
|
*/
|
|
29
|
-
"__#
|
|
29
|
+
"__#170@#parseContentRowJoinedComments"(row: any): any;
|
|
30
30
|
getContentCountByDate(contentType: ContentType, groupBy: "year" | "month", filter?: {
|
|
31
31
|
campaign?: Campaign | string | null;
|
|
32
32
|
date?: Date | null;
|
|
@@ -50,19 +50,19 @@ export declare function ContentDBMixin<TBase extends CampaignDBConstructor>(Base
|
|
|
50
50
|
collection: Collection;
|
|
51
51
|
campaignId: string;
|
|
52
52
|
} | null;
|
|
53
|
-
"__#
|
|
53
|
+
"__#170@#savePostCollection"(post: Post): void;
|
|
54
54
|
getCollectionList(params: GetCollectionListParams): CollectionList;
|
|
55
55
|
checkCollectionExists(id: string): boolean;
|
|
56
56
|
checkPostTagExists(id: string, campaign: Campaign | null): boolean;
|
|
57
57
|
getPostComments(post: Post | string): Comment[] | null;
|
|
58
|
-
"__#
|
|
58
|
+
"__#170@#savePostTags"(post: Post): void;
|
|
59
59
|
getPostTagList(params: GetPostTagListParams): PostTagList;
|
|
60
60
|
saveCampaign(campaign: Campaign | null, downloadDate: Date, overwriteIfExists?: boolean): void;
|
|
61
61
|
getCampaign(params: import("../types/Campaign").GetCampaignParams): Campaign | null;
|
|
62
|
-
"__#
|
|
63
|
-
"__#
|
|
62
|
+
"__#169@#saveRewards"(campaign: Campaign): void;
|
|
63
|
+
"__#169@#doSaveReward"(campaign: Campaign, reward: import("../../entities").Reward): void;
|
|
64
64
|
getCampaignList(params: import("../types/Campaign").GetCampaignListParams): import("../types/Campaign").CampaignList;
|
|
65
|
-
"__#
|
|
65
|
+
"__#169@#getCampaignWithCounts"(params: import("../types/Campaign").GetCampaignParams): import("../types/Campaign").CampaignWithCounts | null;
|
|
66
66
|
checkCampaignExists(id: string): boolean;
|
|
67
67
|
saveUser(user: import("../../entities").User | null): void;
|
|
68
68
|
getUserByID(id: string): import("../../entities").User | null;
|
|
@@ -45,13 +45,13 @@ declare const DB: {
|
|
|
45
45
|
} & {
|
|
46
46
|
new (...args: any[]): {
|
|
47
47
|
saveContent(content: import("../../index.js").Post | import("../../index.js").Product): void;
|
|
48
|
-
"__#
|
|
49
|
-
"__#
|
|
50
|
-
"__#
|
|
51
|
-
"__#
|
|
52
|
-
"__#
|
|
53
|
-
"__#
|
|
54
|
-
"__#
|
|
48
|
+
"__#170@#saveContentMedia"(content: import("../../index.js").Post | import("../../index.js").Product): void;
|
|
49
|
+
"__#170@#savepostMedia"(post: import("../../index.js").Post): void;
|
|
50
|
+
"__#170@#saveProductMedia"(product: import("../../index.js").Product): void;
|
|
51
|
+
"__#170@#doSaveContentMedia"(content: import("../../index.js").Post | import("../../index.js").Product, media: import("../../index.js").Downloadable, mediaIndex: number, isPreview: boolean): void;
|
|
52
|
+
"__#170@#publishedAtToTime"(publishedAt: string | null): number | null;
|
|
53
|
+
"__#170@#savePostTiers"(post: import("../../index.js").Post): void;
|
|
54
|
+
"__#170@#doSaveTier"(post: import("../../index.js").Post, tier: import("../../index.js").Tier): void;
|
|
55
55
|
savePostComments(post: import("../../index.js").Post, comments: import("../../index.js").Comment[]): void;
|
|
56
56
|
checkPostCommentsExist(post: import("../../index.js").Post): boolean;
|
|
57
57
|
getContent(id: string, contentType: "post"): import("../types/Content.js").PostWithComments | null;
|
|
@@ -61,7 +61,7 @@ declare const DB: {
|
|
|
61
61
|
whereClauses: string[];
|
|
62
62
|
whereValues: any[];
|
|
63
63
|
} | undefined, includeTotal?: boolean): import("../types/Content.js").ContentList<T>;
|
|
64
|
-
"__#
|
|
64
|
+
"__#170@#parseContentRowJoinedComments"(row: any): any;
|
|
65
65
|
getContentCountByDate(contentType: import("../types/Content.js").ContentType, groupBy: "year" | "month", filter?: {
|
|
66
66
|
campaign?: import("../../index.js").Campaign | string | null;
|
|
67
67
|
date?: Date | null;
|
|
@@ -85,19 +85,19 @@ declare const DB: {
|
|
|
85
85
|
collection: import("../../index.js").Collection;
|
|
86
86
|
campaignId: string;
|
|
87
87
|
} | null;
|
|
88
|
-
"__#
|
|
88
|
+
"__#170@#savePostCollection"(post: import("../../index.js").Post): void;
|
|
89
89
|
getCollectionList(params: import("../types/Content.js").GetCollectionListParams): import("../types/Content.js").CollectionList;
|
|
90
90
|
checkCollectionExists(id: string): boolean;
|
|
91
91
|
checkPostTagExists(id: string, campaign: import("../../index.js").Campaign | null): boolean;
|
|
92
92
|
getPostComments(post: import("../../index.js").Post | string): import("../../index.js").Comment[] | null;
|
|
93
|
-
"__#
|
|
93
|
+
"__#170@#savePostTags"(post: import("../../index.js").Post): void;
|
|
94
94
|
getPostTagList(params: import("../types/Content.js").GetPostTagListParams): import("../types/Content.js").PostTagList;
|
|
95
95
|
saveCampaign(campaign: import("../../index.js").Campaign | null, downloadDate: Date, overwriteIfExists?: boolean): void;
|
|
96
96
|
getCampaign(params: import("../types/Campaign.js").GetCampaignParams): import("../../index.js").Campaign | null;
|
|
97
|
-
"__#
|
|
98
|
-
"__#
|
|
97
|
+
"__#169@#saveRewards"(campaign: import("../../index.js").Campaign): void;
|
|
98
|
+
"__#169@#doSaveReward"(campaign: import("../../index.js").Campaign, reward: import("../../index.js").Reward): void;
|
|
99
99
|
getCampaignList(params: import("../types/Campaign.js").GetCampaignListParams): import("../types/Campaign.js").CampaignList;
|
|
100
|
-
"__#
|
|
100
|
+
"__#169@#getCampaignWithCounts"(params: import("../types/Campaign.js").GetCampaignParams): import("../types/Campaign.js").CampaignWithCounts | null;
|
|
101
101
|
checkCampaignExists(id: string): boolean;
|
|
102
102
|
saveUser(user: import("../../index.js").User | null): void;
|
|
103
103
|
getUserByID(id: string): import("../../index.js").User | null;
|
|
@@ -147,10 +147,10 @@ declare const DB: {
|
|
|
147
147
|
new (...args: any[]): {
|
|
148
148
|
saveCampaign(campaign: import("../../index.js").Campaign | null, downloadDate: Date, overwriteIfExists?: boolean): void;
|
|
149
149
|
getCampaign(params: import("../types/Campaign.js").GetCampaignParams): import("../../index.js").Campaign | null;
|
|
150
|
-
"__#
|
|
151
|
-
"__#
|
|
150
|
+
"__#169@#saveRewards"(campaign: import("../../index.js").Campaign): void;
|
|
151
|
+
"__#169@#doSaveReward"(campaign: import("../../index.js").Campaign, reward: import("../../index.js").Reward): void;
|
|
152
152
|
getCampaignList(params: import("../types/Campaign.js").GetCampaignListParams): import("../types/Campaign.js").CampaignList;
|
|
153
|
-
"__#
|
|
153
|
+
"__#169@#getCampaignWithCounts"(params: import("../types/Campaign.js").GetCampaignParams): import("../types/Campaign.js").CampaignWithCounts | null;
|
|
154
154
|
checkCampaignExists(id: string): boolean;
|
|
155
155
|
saveUser(user: import("../../index.js").User | null): void;
|
|
156
156
|
getUserByID(id: string): import("../../index.js").User | null;
|