@bprotsyk/aso-core 2.1.21 → 2.1.24
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 +1 -1
- package/docs/assets/highlight.css +22 -22
- package/docs/assets/main.js +58 -58
- package/docs/assets/style.css +1279 -1279
- package/docs/enums/PanelUserAccessScope.html +126 -126
- package/docs/functions/ASO_v0.toDefault.html +80 -80
- package/docs/functions/ASO_v1.toDefault.html +80 -80
- package/docs/functions/ASO_v2.toDefault.html +78 -78
- package/docs/functions/ASO_v3.toDefault.html +77 -77
- package/docs/functions/ASO_v4.toDefault.html +75 -75
- package/docs/functions/ASO_v5.toDefault.html +76 -76
- package/docs/functions/ColoredText.html +92 -92
- package/docs/functions/ShapeDiv.html +109 -109
- package/docs/index.html +82 -82
- package/docs/interfaces/ASOConfigFetch.IUsageLogEntry.html +1413 -1413
- package/docs/interfaces/ASOConfigFetch.IUsageLogRequest.html +103 -103
- package/docs/interfaces/ASOConfigFetch.IUsageLogResponse.html +108 -108
- package/docs/interfaces/ASO_v0.IAuthorizationActionMapping.html +145 -145
- package/docs/interfaces/ASO_v0.IColoredSpan.html +89 -89
- package/docs/interfaces/ASO_v0.IColoredSpanMapping.html +89 -89
- package/docs/interfaces/ASO_v0.IColoredString.html +89 -89
- package/docs/interfaces/ASO_v0.IColoredStringMapping.html +89 -89
- package/docs/interfaces/ASO_v0.IConfig.html +556 -556
- package/docs/interfaces/ASO_v0.IConfigMapping.html +229 -229
- package/docs/interfaces/ASO_v0.ILocalization.html +516 -516
- package/docs/interfaces/ASO_v0.ILocalizationMap.html +77 -77
- package/docs/interfaces/ASO_v0.ILocalizationMapping.html +502 -502
- package/docs/interfaces/ASO_v0.IOfferResult.html +103 -103
- package/docs/interfaces/ASO_v0.IOfferResultEmoji.html +82 -82
- package/docs/interfaces/ASO_v0.IOfferResultMapping.html +117 -117
- package/docs/interfaces/ASO_v0.IOfferSectionMapping.html +108 -108
- package/docs/interfaces/ASO_v0.IOffersSection.html +96 -96
- package/docs/interfaces/ASO_v0.ISectionPalette.html +152 -152
- package/docs/interfaces/ASO_v0.ISectionPaletteMapping.html +152 -152
- package/docs/interfaces/ASO_v1.IAuthorizationActionMapping.html +145 -145
- package/docs/interfaces/ASO_v1.IColoredSpan.html +89 -89
- package/docs/interfaces/ASO_v1.IColoredSpanMapping.html +89 -89
- package/docs/interfaces/ASO_v1.IColoredString.html +89 -89
- package/docs/interfaces/ASO_v1.IColoredStringMapping.html +89 -89
- package/docs/interfaces/ASO_v1.IConfig.html +549 -549
- package/docs/interfaces/ASO_v1.IConfigMapping.html +229 -229
- package/docs/interfaces/ASO_v1.ILocalization.html +481 -481
- package/docs/interfaces/ASO_v1.ILocalizationMap.html +77 -77
- package/docs/interfaces/ASO_v1.ILocalizationMapping.html +481 -481
- package/docs/interfaces/ASO_v1.IOfferResult.html +103 -103
- package/docs/interfaces/ASO_v1.IOfferResultEmoji.html +82 -82
- package/docs/interfaces/ASO_v1.IOfferResultMapping.html +117 -117
- package/docs/interfaces/ASO_v1.IOfferSectionMapping.html +108 -108
- package/docs/interfaces/ASO_v1.IOffersSection.html +101 -101
- package/docs/interfaces/ASO_v1.ISectionPalette.html +152 -152
- package/docs/interfaces/ASO_v1.ISectionPaletteMapping.html +152 -152
- package/docs/interfaces/ASO_v2.IAuthorizationActionMapping.html +138 -138
- package/docs/interfaces/ASO_v2.IColoredSpanMapping.html +89 -89
- package/docs/interfaces/ASO_v2.IColoredString.html +89 -89
- package/docs/interfaces/ASO_v2.IColoredStringMapping.html +89 -89
- package/docs/interfaces/ASO_v2.IConfig.html +493 -493
- package/docs/interfaces/ASO_v2.IConfigMapping.html +201 -201
- package/docs/interfaces/ASO_v2.ILocalization.html +474 -474
- package/docs/interfaces/ASO_v2.ILocalizationMap.html +75 -75
- package/docs/interfaces/ASO_v2.ILocalizationMapping.html +362 -362
- package/docs/interfaces/ASO_v2.IOfferResult.html +110 -110
- package/docs/interfaces/ASO_v2.IOfferResultMapping.html +117 -117
- package/docs/interfaces/ASO_v2.IOfferSectionMapping.html +108 -108
- package/docs/interfaces/ASO_v2.IOffersSection.html +101 -101
- package/docs/interfaces/ASO_v2.ISectionPalette.html +152 -152
- package/docs/interfaces/ASO_v2.ISectionPaletteMapping.html +152 -152
- package/docs/interfaces/ASO_v3.IAuthorizationActionMapping.html +138 -138
- package/docs/interfaces/ASO_v3.IColoredSpanMapping.html +89 -89
- package/docs/interfaces/ASO_v3.IColoredString.html +89 -89
- package/docs/interfaces/ASO_v3.IColoredStringMapping.html +89 -89
- package/docs/interfaces/ASO_v3.IConfig.html +514 -514
- package/docs/interfaces/ASO_v3.IConfigMapping.html +208 -208
- package/docs/interfaces/ASO_v3.ILocalization.html +446 -446
- package/docs/interfaces/ASO_v3.ILocalizationMap.html +74 -74
- package/docs/interfaces/ASO_v3.ILocalizationMapping.html +341 -341
- package/docs/interfaces/ASO_v3.IOfferResultMapping.html +117 -117
- package/docs/interfaces/ASO_v3.IOfferSectionMapping.html +108 -108
- package/docs/interfaces/ASO_v3.IOffersSection.html +101 -101
- package/docs/interfaces/ASO_v3.ISectionPalette.html +152 -152
- package/docs/interfaces/ASO_v3.ISectionPaletteMapping.html +152 -152
- package/docs/interfaces/ASO_v4.IAuthorizationActionMapping.html +138 -138
- package/docs/interfaces/ASO_v4.IColoredSpanMapping.html +89 -89
- package/docs/interfaces/ASO_v4.IColoredString.html +89 -89
- package/docs/interfaces/ASO_v4.IColoredStringMapping.html +89 -89
- package/docs/interfaces/ASO_v4.IConfig.html +514 -514
- package/docs/interfaces/ASO_v4.IConfigMapping.html +131 -131
- package/docs/interfaces/ASO_v4.ILocalization.html +369 -369
- package/docs/interfaces/ASO_v4.ILocalizationMap.html +72 -72
- package/docs/interfaces/ASO_v4.ILocalizationMapping.html +257 -257
- package/docs/interfaces/ASO_v4.IOfferResultMapping.html +117 -117
- package/docs/interfaces/ASO_v4.IOfferSectionMapping.html +89 -89
- package/docs/interfaces/ASO_v4.LocalizedString.html +82 -82
- package/docs/interfaces/ASO_v5.IAuthorizationActionMapping.html +138 -138
- package/docs/interfaces/ASO_v5.IColoredSpan.html +89 -89
- package/docs/interfaces/ASO_v5.IColoredSpanMapping.html +89 -89
- package/docs/interfaces/ASO_v5.IColoredString.html +89 -89
- package/docs/interfaces/ASO_v5.IColoredStringMapping.html +89 -89
- package/docs/interfaces/ASO_v5.IConfig.html +542 -542
- package/docs/interfaces/ASO_v5.IConfigMapping.html +159 -159
- package/docs/interfaces/ASO_v5.ILocalization.html +411 -411
- package/docs/interfaces/ASO_v5.ILocalizationMap.html +73 -73
- package/docs/interfaces/ASO_v5.ILocalizationMapping.html +299 -299
- package/docs/interfaces/ASO_v5.IOfferResultMapping.html +117 -117
- package/docs/interfaces/ASO_v5.IOfferSectionMapping.html +89 -89
- package/docs/interfaces/ASO_v5.LocalizedString.html +82 -82
- package/docs/interfaces/IAsoConfigResponse.html +81 -81
- package/docs/interfaces/IAsoCustomizedOffer.html +116 -116
- package/docs/interfaces/IAsoDefaultConfig.html +443 -443
- package/docs/interfaces/IAsoOfferResponse.html +81 -81
- package/docs/interfaces/IAsoSection.html +88 -88
- package/docs/interfaces/IAsoSingleOffer.html +88 -88
- package/docs/interfaces/IAuthToken.html +102 -102
- package/docs/interfaces/IColoredTextProps.html +74 -74
- package/docs/interfaces/IFlashApp.html +144 -144
- package/docs/interfaces/IFlashAppListItem.html +88 -88
- package/docs/interfaces/IGradient.html +95 -95
- package/docs/interfaces/IOffer.html +137 -137
- package/docs/interfaces/IOfferWallAuthConfig.html +130 -130
- package/docs/interfaces/IOfferWallAuthLocalization.html +102 -102
- package/docs/interfaces/IOfferWallAuthSubmitRequest.html +74 -74
- package/docs/interfaces/IOfferWallAuthSubmitResponse.html +74 -74
- package/docs/interfaces/IOfferWallHomeDialogData.html +95 -95
- package/docs/interfaces/IOfferWallOffer.html +109 -109
- package/docs/interfaces/IOfferWallResponse.html +81 -81
- package/docs/interfaces/IOfferWallSection.html +88 -88
- package/docs/interfaces/IPanelUser.html +1405 -1405
- package/docs/interfaces/IPush.html +95 -95
- package/docs/interfaces/IShape.html +102 -102
- package/docs/interfaces/IStroke.html +81 -81
- package/docs/interfaces/IUpsertFlashAppRequest.html +214 -214
- package/docs/interfaces/IUpsertFlashAppResponse.html +81 -81
- package/docs/modules/ASOConfigFetch.html +63 -63
- package/docs/modules/ASO_v0.html +96 -96
- package/docs/modules/ASO_v1.html +96 -96
- package/docs/modules/ASO_v2.html +92 -92
- package/docs/modules/ASO_v3.html +90 -90
- package/docs/modules/ASO_v4.html +86 -86
- package/docs/modules/ASO_v5.html +88 -88
- package/docs/modules.html +133 -133
- package/docs/variables/FlashAppSchema.html +83 -83
- package/docs/variables/PanelUserSchema.html +83 -83
- package/lib/app/app-integration.d.ts +53 -53
- package/lib/app/app-integration.js +63 -63
- package/lib/app/app-list-item.d.ts +5 -5
- package/lib/app/app-list-item.js +2 -2
- package/lib/app/app-type.d.ts +4 -4
- package/lib/app/app-type.js +8 -8
- package/lib/app/app.d.ts +213 -206
- package/lib/app/app.js +184 -173
- package/lib/general/cloudflare-domain.d.ts +42 -42
- package/lib/general/cloudflare-domain.js +12 -12
- package/lib/general/domain.d.ts +108 -108
- package/lib/general/domain.js +61 -61
- package/lib/general/namecheap-domain.d.ts +85 -85
- package/lib/general/namecheap-domain.js +14 -14
- package/lib/general/push.d.ts +6 -6
- package/lib/general/push.js +2 -2
- package/lib/general/queue.d.ts +2 -2
- package/lib/general/queue.js +1 -1
- package/lib/general/shape.d.ts +18 -18
- package/lib/general/shape.js +36 -36
- package/lib/index.d.ts +26 -26
- package/lib/index.js +69 -69
- package/lib/keitaro/keitaro-campaign.d.ts +31 -31
- package/lib/keitaro/keitaro-campaign.js +5 -5
- package/lib/keitaro/keitaro-domain.d.ts +6 -6
- package/lib/keitaro/keitaro-domain.js +2 -2
- package/lib/keitaro/keitaro-offer.d.ts +7 -7
- package/lib/keitaro/keitaro-offer.js +2 -2
- package/lib/keitaro/keitaro-stream.d.ts +20 -20
- package/lib/keitaro/keitaro-stream.js +2 -2
- package/lib/network/keitaro/http.d.ts +2 -2
- package/lib/network/keitaro/http.js +12 -12
- package/lib/network/keitaro/keitaro-service.d.ts +50 -50
- package/lib/network/keitaro/keitaro-service.js +261 -261
- package/lib/offers/list.d.ts +37 -37
- package/lib/offers/list.js +12 -12
- package/lib/offers/offer.d.ts +91 -91
- package/lib/offers/offer.js +42 -42
- package/lib/offers/offerwall/offerwall-home-dialog-data.d.ts +6 -6
- package/lib/offers/offerwall/offerwall-home-dialog-data.js +2 -2
- package/lib/offers/offerwall/offerwall-offer.d.ts +12 -12
- package/lib/offers/offerwall/offerwall-offer.js +2 -2
- package/lib/offers/offerwall/offerwall-response.d.ts +6 -6
- package/lib/offers/offerwall/offerwall-response.js +2 -2
- package/lib/offers/offerwall/offerwall-section.d.ts +6 -6
- package/lib/offers/offerwall/offerwall-section.js +2 -2
- package/lib/offers/section.d.ts +47 -47
- package/lib/offers/section.js +20 -20
- package/lib/panel/auth.d.ts +9 -9
- package/lib/panel/auth.js +2 -2
- package/lib/panel/flash/upsert-flash-app-request.d.ts +31 -29
- package/lib/panel/flash/upsert-flash-app-request.js +2 -2
- package/lib/panel/user.d.ts +46 -46
- package/lib/panel/user.js +28 -28
- package/lib/templates/nginx-template.conf +35 -35
- package/lib/templates/nginx-template.d.ts +1 -1
- package/lib/templates/nginx-template.js +39 -39
- package/lib/templates/nginx-template.ts +35 -35
- package/lib/utils/general.d.ts +11 -11
- package/lib/utils/general.js +40 -40
- package/lib/utils/huawei/converter.d.ts +2 -2
- package/lib/utils/huawei/converter.js +53 -53
- package/lib/utils/keitaro-utils.d.ts +15 -15
- package/lib/utils/keitaro-utils.js +569 -569
- package/lib/utils/server-util.js +303 -303
- package/package.json +51 -51
- package/src/app/app-integration.ts +66 -66
- package/src/app/app-list-item.ts +4 -4
- package/src/app/app-type.ts +3 -3
- package/src/app/app.ts +346 -333
- package/src/general/cloudflare-domain.ts +44 -44
- package/src/general/domain.ts +105 -105
- package/src/general/namecheap-domain.ts +63 -63
- package/src/general/push.ts +5 -5
- package/src/general/queue.ts +4 -4
- package/src/general/shape.tsx +55 -55
- package/src/index.ts +32 -32
- package/src/keitaro/keitaro-campaign.ts +35 -35
- package/src/keitaro/keitaro-domain.ts +5 -5
- package/src/keitaro/keitaro-offer.ts +6 -6
- package/src/keitaro/keitaro-stream.ts +19 -19
- package/src/network/keitaro/http.ts +8 -8
- package/src/network/keitaro/keitaro-service.ts +323 -323
- package/src/offers/list.ts +19 -19
- package/src/offers/offer.ts +80 -80
- package/src/offers/offerwall/offerwall-home-dialog-data.ts +6 -6
- package/src/offers/offerwall/offerwall-offer.ts +12 -12
- package/src/offers/offerwall/offerwall-response.ts +7 -7
- package/src/offers/offerwall/offerwall-section.ts +7 -7
- package/src/offers/section.ts +29 -29
- package/src/panel/auth.ts +9 -9
- package/src/panel/flash/upsert-flash-app-request.ts +39 -37
- package/src/panel/user.ts +38 -38
- package/src/templates/nginx-template.ts +35 -35
- package/src/utils/data.csv +65 -65
- package/src/utils/general.ts +36 -36
- package/src/utils/huawei/converter.ts +55 -55
- package/src/utils/keitaro-utils.ts +661 -661
- package/src/utils/map-apps.json +4747 -4747
- package/src/utils/server-util.ts +368 -368
- package/src/utils/update-postbacks.js +27 -27
- package/tsconfig.json +20 -20
|
@@ -1,261 +1,261 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.KeitaroService = exports.upsertStreamToCampaign = void 0;
|
|
7
|
-
const http_1 = __importDefault(require("./http"));
|
|
8
|
-
const keitaro_utils_1 = require("../../utils/keitaro-utils");
|
|
9
|
-
const general_1 = require("../../utils/general");
|
|
10
|
-
async function getStreamsByCampaignId(campaignId) {
|
|
11
|
-
const { data: streams } = await http_1.default.get(`campaigns/${campaignId}/streams`);
|
|
12
|
-
return streams;
|
|
13
|
-
}
|
|
14
|
-
async function getAllCampaigns() {
|
|
15
|
-
const { data: campaigns } = await http_1.default.get('campaigns');
|
|
16
|
-
return campaigns;
|
|
17
|
-
}
|
|
18
|
-
async function cloneStreams(originalCampaignId, streamPositionsToClone, campaignRegExp) {
|
|
19
|
-
// Get the original campaign's streams
|
|
20
|
-
const originalStreams = await getStreamsByCampaignId(originalCampaignId);
|
|
21
|
-
// Filter the original streams by the given stream positions to clone
|
|
22
|
-
const streamsToClone = originalStreams.filter(stream => streamPositionsToClone.includes(stream.position));
|
|
23
|
-
// Get a list of all campaigns
|
|
24
|
-
const allCampaigns = await getAllCampaigns();
|
|
25
|
-
// Filter the campaigns by the given RegExp
|
|
26
|
-
const matchingCampaigns = allCampaigns.filter(campaign => campaignRegExp.exec(campaign.name) && campaign.id != originalCampaignId);
|
|
27
|
-
// console.log(matchingCampaigns)
|
|
28
|
-
// For each matching campaign, clone the streams
|
|
29
|
-
for (const matchingCampaign of matchingCampaigns) {
|
|
30
|
-
for (const streamToClone of streamsToClone) {
|
|
31
|
-
await http_1.default.post('streams', {
|
|
32
|
-
name: streamToClone.name,
|
|
33
|
-
campaign_id: matchingCampaign.id,
|
|
34
|
-
schema: streamToClone.schema,
|
|
35
|
-
type: streamToClone.type,
|
|
36
|
-
action_type: streamToClone.action_type,
|
|
37
|
-
weight: 100,
|
|
38
|
-
offers: streamToClone.offers.map((offer) => {
|
|
39
|
-
return {
|
|
40
|
-
offer_id: offer.offer_id,
|
|
41
|
-
share: 100
|
|
42
|
-
};
|
|
43
|
-
}),
|
|
44
|
-
filters: streamToClone.filters.map((filter) => {
|
|
45
|
-
return {
|
|
46
|
-
name: filter.name,
|
|
47
|
-
mode: filter.mode,
|
|
48
|
-
payload: filter.payload
|
|
49
|
-
};
|
|
50
|
-
}),
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
async function updateCampaign(id, payload) {
|
|
56
|
-
await http_1.default.put(`campaigns/${id}`, payload);
|
|
57
|
-
}
|
|
58
|
-
async function createStreamForMatchingCampaigns(streamPartialPayload, offerId, campaignRegExp, avoidGroup) {
|
|
59
|
-
// Get a list of all campaigns
|
|
60
|
-
const allCampaigns = await getAllCampaigns();
|
|
61
|
-
// Filter the campaigns by the given RegExp
|
|
62
|
-
const matchingCampaigns = allCampaigns.filter(campaign => (avoidGroup ? campaign.group_id != avoidGroup : true) && campaignRegExp.exec(campaign.name));
|
|
63
|
-
// console.log(matchingCampaigns)
|
|
64
|
-
// For each matching campaign, clone the streams
|
|
65
|
-
for (const matchingCampaign of matchingCampaigns) {
|
|
66
|
-
let streams = await getStreamsByCampaignId(matchingCampaign.id);
|
|
67
|
-
let identicalStream = streams.find((stream) => stream.name.includes(offerId));
|
|
68
|
-
if (identicalStream) {
|
|
69
|
-
await http_1.default.put(`streams/${identicalStream.id}`, {
|
|
70
|
-
campaign_id: matchingCampaign.id,
|
|
71
|
-
...streamPartialPayload
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
else {
|
|
75
|
-
await http_1.default.post('streams', {
|
|
76
|
-
campaign_id: matchingCampaign.id,
|
|
77
|
-
...streamPartialPayload
|
|
78
|
-
});
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
async function getAllOffers() {
|
|
83
|
-
const { data: offers } = await http_1.default.get('offers');
|
|
84
|
-
return offers;
|
|
85
|
-
}
|
|
86
|
-
async function findKeitaroOffers(filter) {
|
|
87
|
-
let offers = await getAllOffers();
|
|
88
|
-
if (filter.caption)
|
|
89
|
-
offers = offers.filter((o) => o.name.includes(filter.caption));
|
|
90
|
-
if (filter.keitaroId)
|
|
91
|
-
offers = offers.filter((o) => o.id == filter.keitaroId);
|
|
92
|
-
if (filter.name)
|
|
93
|
-
offers = offers.filter((o) => o.name.includes(filter.name));
|
|
94
|
-
return offers;
|
|
95
|
-
}
|
|
96
|
-
async function getOfferByKeitaroId(id) {
|
|
97
|
-
const { data: offer } = await http_1.default.get(`offers/${id}`);
|
|
98
|
-
return offer;
|
|
99
|
-
}
|
|
100
|
-
async function updateOffer(offer) {
|
|
101
|
-
const { data: o } = await http_1.default.put(`offers/${offer.id}`, offer);
|
|
102
|
-
return o;
|
|
103
|
-
}
|
|
104
|
-
function createStreamPartialPayload(keitaroOfferId, offerName, offerId, offerGeo) {
|
|
105
|
-
return {
|
|
106
|
-
name: `${offerName} ${offerGeo} (${offerId})`,
|
|
107
|
-
schema: "landings",
|
|
108
|
-
type: "regular",
|
|
109
|
-
action_type: "http",
|
|
110
|
-
weight: 100,
|
|
111
|
-
offers: [{
|
|
112
|
-
offer_id: keitaroOfferId,
|
|
113
|
-
share: 100,
|
|
114
|
-
state: "active"
|
|
115
|
-
}],
|
|
116
|
-
filters: [{
|
|
117
|
-
name: "sub_id_15",
|
|
118
|
-
mode: "accept",
|
|
119
|
-
payload: [offerId]
|
|
120
|
-
}],
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
async function addOfferToKeitaro(offer, affiliateId, link, avoidGroup, groupId) {
|
|
124
|
-
// TODO look if offer already exists by offer.name
|
|
125
|
-
let allOffers = await getAllOffers();
|
|
126
|
-
let identicalOffer = allOffers.find((o) => { return o.name.includes(offer.name); });
|
|
127
|
-
let keitaroOfferId;
|
|
128
|
-
if (identicalOffer) {
|
|
129
|
-
keitaroOfferId = identicalOffer.id;
|
|
130
|
-
}
|
|
131
|
-
else {
|
|
132
|
-
let offerPayload = {
|
|
133
|
-
name: `${offer.caption} ${offer.geo} (${offer.name})`,
|
|
134
|
-
group_id: groupId || 1,
|
|
135
|
-
action_payload: link,
|
|
136
|
-
affiliate_network_id: affiliateId,
|
|
137
|
-
country: [offer.geo],
|
|
138
|
-
action_type: "http",
|
|
139
|
-
offer_type: "external",
|
|
140
|
-
payout_auto: true,
|
|
141
|
-
payout_upsell: true,
|
|
142
|
-
};
|
|
143
|
-
const { data: keitaroOffer } = await http_1.default.post(`offers`, offerPayload);
|
|
144
|
-
keitaroOfferId = keitaroOffer.id;
|
|
145
|
-
}
|
|
146
|
-
let streamPartialPayload = createStreamPartialPayload(keitaroOfferId, offer.caption, offer.name, offer.geo);
|
|
147
|
-
await createStreamForMatchingCampaigns(streamPartialPayload, offer.name, /◈/, avoidGroup);
|
|
148
|
-
}
|
|
149
|
-
async function createCampaign(campaignData) {
|
|
150
|
-
let { data: campaign } = await http_1.default.post(`/campaigns`, campaignData);
|
|
151
|
-
return campaign;
|
|
152
|
-
}
|
|
153
|
-
async function getCampaignById(id) {
|
|
154
|
-
const { data: campaign } = await http_1.default.get(`/campaigns/${id}`);
|
|
155
|
-
return campaign;
|
|
156
|
-
}
|
|
157
|
-
async function upsertStreamToCampaign(campaign, stream) {
|
|
158
|
-
let streams = await getStreamsByCampaignId(campaign.id);
|
|
159
|
-
let identicalStream = streams.find((s) => stream.name == s.name);
|
|
160
|
-
if (identicalStream) {
|
|
161
|
-
console.log(`Found identical! Name: ${stream.name}`);
|
|
162
|
-
await http_1.default.put(`streams/${identicalStream.id}`, {
|
|
163
|
-
campaign_id: campaign.id,
|
|
164
|
-
...stream
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
else {
|
|
168
|
-
await http_1.default.post('streams', {
|
|
169
|
-
campaign_id: campaign.id,
|
|
170
|
-
...stream
|
|
171
|
-
});
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
exports.upsertStreamToCampaign = upsertStreamToCampaign;
|
|
175
|
-
async function cloneOWCampaign(app) {
|
|
176
|
-
let name = `#${app.id} [◈])`;
|
|
177
|
-
let allCampaigns = await getAllCampaigns();
|
|
178
|
-
let matchingCampaign = allCampaigns.filter((c) => c.name.includes(`#${app.id} [◈]`));
|
|
179
|
-
if (matchingCampaign.length > 0)
|
|
180
|
-
return matchingCampaign[0];
|
|
181
|
-
const { data: campaigns } = await http_1.default.post(`/campaigns/2673/clone`);
|
|
182
|
-
if (campaigns.length == 0)
|
|
183
|
-
throw Error("Campaign cloning falied");
|
|
184
|
-
let clonedCampaign = campaigns[0];
|
|
185
|
-
let allDomains = await exports.KeitaroService.getDomains(true);
|
|
186
|
-
if (!allDomains) {
|
|
187
|
-
throw Error(`Failed to get all domains list`);
|
|
188
|
-
}
|
|
189
|
-
const domain = allDomains[Math.floor(Math.random() * allDomains.length)];
|
|
190
|
-
let payload = {
|
|
191
|
-
name: name,
|
|
192
|
-
traffic_source_id: keitaro_utils_1.TRAFFIC_SOURCE_ID_FLASH_AI,
|
|
193
|
-
domain_id: domain.id,
|
|
194
|
-
parameters: (0, keitaro_utils_1.prepareOWCampaignParameters)(app)
|
|
195
|
-
};
|
|
196
|
-
const { data: campaign } = await http_1.default.put(`/campaigns/${clonedCampaign.id}`, payload);
|
|
197
|
-
return campaign;
|
|
198
|
-
}
|
|
199
|
-
async function cloneDCampaign(app) {
|
|
200
|
-
let name = `D #${app.id} (${app.bundle})`;
|
|
201
|
-
let allCampaigns = await getAllCampaigns();
|
|
202
|
-
let matchingCampaign = allCampaigns.filter((c) => c.name.includes(`D #${app.id}`));
|
|
203
|
-
if (matchingCampaign.length > 0)
|
|
204
|
-
return matchingCampaign[0];
|
|
205
|
-
const { data: campaigns } = await http_1.default.post(`/campaigns/2693/clone`);
|
|
206
|
-
if (campaigns.length == 0)
|
|
207
|
-
throw Error("Campaign cloning falied");
|
|
208
|
-
let clonedCampaign = campaigns[0];
|
|
209
|
-
let allDomains = await exports.KeitaroService.getDomains(true);
|
|
210
|
-
if (!allDomains) {
|
|
211
|
-
throw Error(`Failed to get all domains list`);
|
|
212
|
-
}
|
|
213
|
-
const domain = allDomains[Math.floor(Math.random() * allDomains.length)];
|
|
214
|
-
let payload = {
|
|
215
|
-
name: name,
|
|
216
|
-
traffic_source_id: keitaro_utils_1.TRAFFIC_SOURCE_ID_FLASH_AI,
|
|
217
|
-
domain_id: domain.id,
|
|
218
|
-
group_id: 93,
|
|
219
|
-
};
|
|
220
|
-
const { data: campaign } = await http_1.default.put(`/campaigns/${clonedCampaign.id}`, payload);
|
|
221
|
-
return campaign;
|
|
222
|
-
}
|
|
223
|
-
async function changeCampaignsGroup(fromId, toId, exceptForCampaignIds, onlyForCampaignIds) {
|
|
224
|
-
let campaigns = await getAllCampaigns();
|
|
225
|
-
const matchingCampaigns = campaigns.filter(campaign => campaign.group_id == fromId
|
|
226
|
-
&& exceptForCampaignIds.length > 0 ? !exceptForCampaignIds.includes(campaign.id) : onlyForCampaignIds?.includes(campaign.id));
|
|
227
|
-
for (let campaign of matchingCampaigns) {
|
|
228
|
-
await updateCampaign(campaign.id, { group_id: toId });
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
// Domain
|
|
232
|
-
async function getDomains(onlyActive) {
|
|
233
|
-
const { data: domains } = await http_1.default.get(`/domains`);
|
|
234
|
-
return onlyActive ? domains.filter((d) => d.network_status == "active") : domains;
|
|
235
|
-
}
|
|
236
|
-
async function getProfitForTimeRange(from, to) {
|
|
237
|
-
let fromString = (0, general_1.convertMillisToDate)(from);
|
|
238
|
-
let toString = (0, general_1.convertMillisToDate)(to);
|
|
239
|
-
let { data: data } = await http_1.default.post(`/report/build`, {
|
|
240
|
-
range: {
|
|
241
|
-
from: fromString,
|
|
242
|
-
to: toString,
|
|
243
|
-
timezone: 'Europe/Kyiv'
|
|
244
|
-
},
|
|
245
|
-
metrics: ['profit']
|
|
246
|
-
});
|
|
247
|
-
return data.rows[0].profit;
|
|
248
|
-
}
|
|
249
|
-
async function getProfitForTodayAndYesterday() {
|
|
250
|
-
let timestamps = (0, general_1.getTimestampsForTodayAndYesterday)();
|
|
251
|
-
let today = await exports.KeitaroService.getProfitForTimeRange(timestamps.today.start, timestamps.today.end);
|
|
252
|
-
let yesterday = await exports.KeitaroService.getProfitForTimeRange(timestamps.yesterday.start, timestamps.yesterday.end);
|
|
253
|
-
return {
|
|
254
|
-
today: today,
|
|
255
|
-
yesterday: yesterday
|
|
256
|
-
};
|
|
257
|
-
}
|
|
258
|
-
exports.KeitaroService = {
|
|
259
|
-
getStreamsByCampaignId, updateCampaign, getAllCampaigns, getAllOffers, cloneStreams, addOfferToKeitaro, getOfferByKeitaroId, getDomains, createCampaign, getCampaignById, upsertStreamToCampaign, cloneOWCampaign,
|
|
260
|
-
updateOffer, changeCampaignsGroup, getProfitForTimeRange, getProfitForTodayAndYesterday, cloneDCampaign, findKeitaroOffers
|
|
261
|
-
};
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.KeitaroService = exports.upsertStreamToCampaign = void 0;
|
|
7
|
+
const http_1 = __importDefault(require("./http"));
|
|
8
|
+
const keitaro_utils_1 = require("../../utils/keitaro-utils");
|
|
9
|
+
const general_1 = require("../../utils/general");
|
|
10
|
+
async function getStreamsByCampaignId(campaignId) {
|
|
11
|
+
const { data: streams } = await http_1.default.get(`campaigns/${campaignId}/streams`);
|
|
12
|
+
return streams;
|
|
13
|
+
}
|
|
14
|
+
async function getAllCampaigns() {
|
|
15
|
+
const { data: campaigns } = await http_1.default.get('campaigns');
|
|
16
|
+
return campaigns;
|
|
17
|
+
}
|
|
18
|
+
async function cloneStreams(originalCampaignId, streamPositionsToClone, campaignRegExp) {
|
|
19
|
+
// Get the original campaign's streams
|
|
20
|
+
const originalStreams = await getStreamsByCampaignId(originalCampaignId);
|
|
21
|
+
// Filter the original streams by the given stream positions to clone
|
|
22
|
+
const streamsToClone = originalStreams.filter(stream => streamPositionsToClone.includes(stream.position));
|
|
23
|
+
// Get a list of all campaigns
|
|
24
|
+
const allCampaigns = await getAllCampaigns();
|
|
25
|
+
// Filter the campaigns by the given RegExp
|
|
26
|
+
const matchingCampaigns = allCampaigns.filter(campaign => campaignRegExp.exec(campaign.name) && campaign.id != originalCampaignId);
|
|
27
|
+
// console.log(matchingCampaigns)
|
|
28
|
+
// For each matching campaign, clone the streams
|
|
29
|
+
for (const matchingCampaign of matchingCampaigns) {
|
|
30
|
+
for (const streamToClone of streamsToClone) {
|
|
31
|
+
await http_1.default.post('streams', {
|
|
32
|
+
name: streamToClone.name,
|
|
33
|
+
campaign_id: matchingCampaign.id,
|
|
34
|
+
schema: streamToClone.schema,
|
|
35
|
+
type: streamToClone.type,
|
|
36
|
+
action_type: streamToClone.action_type,
|
|
37
|
+
weight: 100,
|
|
38
|
+
offers: streamToClone.offers.map((offer) => {
|
|
39
|
+
return {
|
|
40
|
+
offer_id: offer.offer_id,
|
|
41
|
+
share: 100
|
|
42
|
+
};
|
|
43
|
+
}),
|
|
44
|
+
filters: streamToClone.filters.map((filter) => {
|
|
45
|
+
return {
|
|
46
|
+
name: filter.name,
|
|
47
|
+
mode: filter.mode,
|
|
48
|
+
payload: filter.payload
|
|
49
|
+
};
|
|
50
|
+
}),
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async function updateCampaign(id, payload) {
|
|
56
|
+
await http_1.default.put(`campaigns/${id}`, payload);
|
|
57
|
+
}
|
|
58
|
+
async function createStreamForMatchingCampaigns(streamPartialPayload, offerId, campaignRegExp, avoidGroup) {
|
|
59
|
+
// Get a list of all campaigns
|
|
60
|
+
const allCampaigns = await getAllCampaigns();
|
|
61
|
+
// Filter the campaigns by the given RegExp
|
|
62
|
+
const matchingCampaigns = allCampaigns.filter(campaign => (avoidGroup ? campaign.group_id != avoidGroup : true) && campaignRegExp.exec(campaign.name));
|
|
63
|
+
// console.log(matchingCampaigns)
|
|
64
|
+
// For each matching campaign, clone the streams
|
|
65
|
+
for (const matchingCampaign of matchingCampaigns) {
|
|
66
|
+
let streams = await getStreamsByCampaignId(matchingCampaign.id);
|
|
67
|
+
let identicalStream = streams.find((stream) => stream.name.includes(offerId));
|
|
68
|
+
if (identicalStream) {
|
|
69
|
+
await http_1.default.put(`streams/${identicalStream.id}`, {
|
|
70
|
+
campaign_id: matchingCampaign.id,
|
|
71
|
+
...streamPartialPayload
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
await http_1.default.post('streams', {
|
|
76
|
+
campaign_id: matchingCampaign.id,
|
|
77
|
+
...streamPartialPayload
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async function getAllOffers() {
|
|
83
|
+
const { data: offers } = await http_1.default.get('offers');
|
|
84
|
+
return offers;
|
|
85
|
+
}
|
|
86
|
+
async function findKeitaroOffers(filter) {
|
|
87
|
+
let offers = await getAllOffers();
|
|
88
|
+
if (filter.caption)
|
|
89
|
+
offers = offers.filter((o) => o.name.includes(filter.caption));
|
|
90
|
+
if (filter.keitaroId)
|
|
91
|
+
offers = offers.filter((o) => o.id == filter.keitaroId);
|
|
92
|
+
if (filter.name)
|
|
93
|
+
offers = offers.filter((o) => o.name.includes(filter.name));
|
|
94
|
+
return offers;
|
|
95
|
+
}
|
|
96
|
+
async function getOfferByKeitaroId(id) {
|
|
97
|
+
const { data: offer } = await http_1.default.get(`offers/${id}`);
|
|
98
|
+
return offer;
|
|
99
|
+
}
|
|
100
|
+
async function updateOffer(offer) {
|
|
101
|
+
const { data: o } = await http_1.default.put(`offers/${offer.id}`, offer);
|
|
102
|
+
return o;
|
|
103
|
+
}
|
|
104
|
+
function createStreamPartialPayload(keitaroOfferId, offerName, offerId, offerGeo) {
|
|
105
|
+
return {
|
|
106
|
+
name: `${offerName} ${offerGeo} (${offerId})`,
|
|
107
|
+
schema: "landings",
|
|
108
|
+
type: "regular",
|
|
109
|
+
action_type: "http",
|
|
110
|
+
weight: 100,
|
|
111
|
+
offers: [{
|
|
112
|
+
offer_id: keitaroOfferId,
|
|
113
|
+
share: 100,
|
|
114
|
+
state: "active"
|
|
115
|
+
}],
|
|
116
|
+
filters: [{
|
|
117
|
+
name: "sub_id_15",
|
|
118
|
+
mode: "accept",
|
|
119
|
+
payload: [offerId]
|
|
120
|
+
}],
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
async function addOfferToKeitaro(offer, affiliateId, link, avoidGroup, groupId) {
|
|
124
|
+
// TODO look if offer already exists by offer.name
|
|
125
|
+
let allOffers = await getAllOffers();
|
|
126
|
+
let identicalOffer = allOffers.find((o) => { return o.name.includes(offer.name); });
|
|
127
|
+
let keitaroOfferId;
|
|
128
|
+
if (identicalOffer) {
|
|
129
|
+
keitaroOfferId = identicalOffer.id;
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
let offerPayload = {
|
|
133
|
+
name: `${offer.caption} ${offer.geo} (${offer.name})`,
|
|
134
|
+
group_id: groupId || 1,
|
|
135
|
+
action_payload: link,
|
|
136
|
+
affiliate_network_id: affiliateId,
|
|
137
|
+
country: [offer.geo],
|
|
138
|
+
action_type: "http",
|
|
139
|
+
offer_type: "external",
|
|
140
|
+
payout_auto: true,
|
|
141
|
+
payout_upsell: true,
|
|
142
|
+
};
|
|
143
|
+
const { data: keitaroOffer } = await http_1.default.post(`offers`, offerPayload);
|
|
144
|
+
keitaroOfferId = keitaroOffer.id;
|
|
145
|
+
}
|
|
146
|
+
let streamPartialPayload = createStreamPartialPayload(keitaroOfferId, offer.caption, offer.name, offer.geo);
|
|
147
|
+
await createStreamForMatchingCampaigns(streamPartialPayload, offer.name, /◈/, avoidGroup);
|
|
148
|
+
}
|
|
149
|
+
async function createCampaign(campaignData) {
|
|
150
|
+
let { data: campaign } = await http_1.default.post(`/campaigns`, campaignData);
|
|
151
|
+
return campaign;
|
|
152
|
+
}
|
|
153
|
+
async function getCampaignById(id) {
|
|
154
|
+
const { data: campaign } = await http_1.default.get(`/campaigns/${id}`);
|
|
155
|
+
return campaign;
|
|
156
|
+
}
|
|
157
|
+
async function upsertStreamToCampaign(campaign, stream) {
|
|
158
|
+
let streams = await getStreamsByCampaignId(campaign.id);
|
|
159
|
+
let identicalStream = streams.find((s) => stream.name == s.name);
|
|
160
|
+
if (identicalStream) {
|
|
161
|
+
console.log(`Found identical! Name: ${stream.name}`);
|
|
162
|
+
await http_1.default.put(`streams/${identicalStream.id}`, {
|
|
163
|
+
campaign_id: campaign.id,
|
|
164
|
+
...stream
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
else {
|
|
168
|
+
await http_1.default.post('streams', {
|
|
169
|
+
campaign_id: campaign.id,
|
|
170
|
+
...stream
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.upsertStreamToCampaign = upsertStreamToCampaign;
|
|
175
|
+
async function cloneOWCampaign(app) {
|
|
176
|
+
let name = `#${app.id} [◈])`;
|
|
177
|
+
let allCampaigns = await getAllCampaigns();
|
|
178
|
+
let matchingCampaign = allCampaigns.filter((c) => c.name.includes(`#${app.id} [◈]`));
|
|
179
|
+
if (matchingCampaign.length > 0)
|
|
180
|
+
return matchingCampaign[0];
|
|
181
|
+
const { data: campaigns } = await http_1.default.post(`/campaigns/2673/clone`);
|
|
182
|
+
if (campaigns.length == 0)
|
|
183
|
+
throw Error("Campaign cloning falied");
|
|
184
|
+
let clonedCampaign = campaigns[0];
|
|
185
|
+
let allDomains = await exports.KeitaroService.getDomains(true);
|
|
186
|
+
if (!allDomains) {
|
|
187
|
+
throw Error(`Failed to get all domains list`);
|
|
188
|
+
}
|
|
189
|
+
const domain = allDomains[Math.floor(Math.random() * allDomains.length)];
|
|
190
|
+
let payload = {
|
|
191
|
+
name: name,
|
|
192
|
+
traffic_source_id: keitaro_utils_1.TRAFFIC_SOURCE_ID_FLASH_AI,
|
|
193
|
+
domain_id: domain.id,
|
|
194
|
+
parameters: (0, keitaro_utils_1.prepareOWCampaignParameters)(app)
|
|
195
|
+
};
|
|
196
|
+
const { data: campaign } = await http_1.default.put(`/campaigns/${clonedCampaign.id}`, payload);
|
|
197
|
+
return campaign;
|
|
198
|
+
}
|
|
199
|
+
async function cloneDCampaign(app) {
|
|
200
|
+
let name = `D #${app.id} (${app.bundle})`;
|
|
201
|
+
let allCampaigns = await getAllCampaigns();
|
|
202
|
+
let matchingCampaign = allCampaigns.filter((c) => c.name.includes(`D #${app.id}`));
|
|
203
|
+
if (matchingCampaign.length > 0)
|
|
204
|
+
return matchingCampaign[0];
|
|
205
|
+
const { data: campaigns } = await http_1.default.post(`/campaigns/2693/clone`);
|
|
206
|
+
if (campaigns.length == 0)
|
|
207
|
+
throw Error("Campaign cloning falied");
|
|
208
|
+
let clonedCampaign = campaigns[0];
|
|
209
|
+
let allDomains = await exports.KeitaroService.getDomains(true);
|
|
210
|
+
if (!allDomains) {
|
|
211
|
+
throw Error(`Failed to get all domains list`);
|
|
212
|
+
}
|
|
213
|
+
const domain = allDomains[Math.floor(Math.random() * allDomains.length)];
|
|
214
|
+
let payload = {
|
|
215
|
+
name: name,
|
|
216
|
+
traffic_source_id: keitaro_utils_1.TRAFFIC_SOURCE_ID_FLASH_AI,
|
|
217
|
+
domain_id: domain.id,
|
|
218
|
+
group_id: 93,
|
|
219
|
+
};
|
|
220
|
+
const { data: campaign } = await http_1.default.put(`/campaigns/${clonedCampaign.id}`, payload);
|
|
221
|
+
return campaign;
|
|
222
|
+
}
|
|
223
|
+
async function changeCampaignsGroup(fromId, toId, exceptForCampaignIds, onlyForCampaignIds) {
|
|
224
|
+
let campaigns = await getAllCampaigns();
|
|
225
|
+
const matchingCampaigns = campaigns.filter(campaign => campaign.group_id == fromId
|
|
226
|
+
&& exceptForCampaignIds.length > 0 ? !exceptForCampaignIds.includes(campaign.id) : onlyForCampaignIds?.includes(campaign.id));
|
|
227
|
+
for (let campaign of matchingCampaigns) {
|
|
228
|
+
await updateCampaign(campaign.id, { group_id: toId });
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
// Domain
|
|
232
|
+
async function getDomains(onlyActive) {
|
|
233
|
+
const { data: domains } = await http_1.default.get(`/domains`);
|
|
234
|
+
return onlyActive ? domains.filter((d) => d.network_status == "active") : domains;
|
|
235
|
+
}
|
|
236
|
+
async function getProfitForTimeRange(from, to) {
|
|
237
|
+
let fromString = (0, general_1.convertMillisToDate)(from);
|
|
238
|
+
let toString = (0, general_1.convertMillisToDate)(to);
|
|
239
|
+
let { data: data } = await http_1.default.post(`/report/build`, {
|
|
240
|
+
range: {
|
|
241
|
+
from: fromString,
|
|
242
|
+
to: toString,
|
|
243
|
+
timezone: 'Europe/Kyiv'
|
|
244
|
+
},
|
|
245
|
+
metrics: ['profit']
|
|
246
|
+
});
|
|
247
|
+
return data.rows[0].profit;
|
|
248
|
+
}
|
|
249
|
+
async function getProfitForTodayAndYesterday() {
|
|
250
|
+
let timestamps = (0, general_1.getTimestampsForTodayAndYesterday)();
|
|
251
|
+
let today = await exports.KeitaroService.getProfitForTimeRange(timestamps.today.start, timestamps.today.end);
|
|
252
|
+
let yesterday = await exports.KeitaroService.getProfitForTimeRange(timestamps.yesterday.start, timestamps.yesterday.end);
|
|
253
|
+
return {
|
|
254
|
+
today: today,
|
|
255
|
+
yesterday: yesterday
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
exports.KeitaroService = {
|
|
259
|
+
getStreamsByCampaignId, updateCampaign, getAllCampaigns, getAllOffers, cloneStreams, addOfferToKeitaro, getOfferByKeitaroId, getDomains, createCampaign, getCampaignById, upsertStreamToCampaign, cloneOWCampaign,
|
|
260
|
+
updateOffer, changeCampaignsGroup, getProfitForTimeRange, getProfitForTodayAndYesterday, cloneDCampaign, findKeitaroOffers
|
|
261
|
+
};
|
package/lib/offers/list.d.ts
CHANGED
|
@@ -1,37 +1,37 @@
|
|
|
1
|
-
/// <reference types="mongoose/types/aggregate" />
|
|
2
|
-
/// <reference types="mongoose/types/callback" />
|
|
3
|
-
/// <reference types="mongoose/types/collection" />
|
|
4
|
-
/// <reference types="mongoose/types/connection" />
|
|
5
|
-
/// <reference types="mongoose/types/cursor" />
|
|
6
|
-
/// <reference types="mongoose/types/document" />
|
|
7
|
-
/// <reference types="mongoose/types/error" />
|
|
8
|
-
/// <reference types="mongoose/types/expressions" />
|
|
9
|
-
/// <reference types="mongoose/types/helpers" />
|
|
10
|
-
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
-
/// <reference types="mongoose/types/indexes" />
|
|
12
|
-
/// <reference types="mongoose/types/models" />
|
|
13
|
-
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
-
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
-
/// <reference types="mongoose/types/populate" />
|
|
16
|
-
/// <reference types="mongoose/types/query" />
|
|
17
|
-
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
-
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
-
/// <reference types="mongoose/types/session" />
|
|
20
|
-
/// <reference types="mongoose/types/types" />
|
|
21
|
-
/// <reference types="mongoose/types/utility" />
|
|
22
|
-
/// <reference types="mongoose/types/validation" />
|
|
23
|
-
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
-
/// <reference types="mongoose/types/inferschematype" />
|
|
25
|
-
import { Schema } from "mongoose";
|
|
26
|
-
export interface ISectionsList {
|
|
27
|
-
id: number;
|
|
28
|
-
content: IAppOffersSection[];
|
|
29
|
-
}
|
|
30
|
-
export interface IAppOffersSection {
|
|
31
|
-
sectionId: number;
|
|
32
|
-
offerIdsOrdered: number[];
|
|
33
|
-
}
|
|
34
|
-
export declare const SectionsListSchema: Schema<any, import("mongoose").Model<any, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, {
|
|
35
|
-
id: number;
|
|
36
|
-
content: any[];
|
|
37
|
-
}>;
|
|
1
|
+
/// <reference types="mongoose/types/aggregate" />
|
|
2
|
+
/// <reference types="mongoose/types/callback" />
|
|
3
|
+
/// <reference types="mongoose/types/collection" />
|
|
4
|
+
/// <reference types="mongoose/types/connection" />
|
|
5
|
+
/// <reference types="mongoose/types/cursor" />
|
|
6
|
+
/// <reference types="mongoose/types/document" />
|
|
7
|
+
/// <reference types="mongoose/types/error" />
|
|
8
|
+
/// <reference types="mongoose/types/expressions" />
|
|
9
|
+
/// <reference types="mongoose/types/helpers" />
|
|
10
|
+
/// <reference types="mongoose/types/middlewares" />
|
|
11
|
+
/// <reference types="mongoose/types/indexes" />
|
|
12
|
+
/// <reference types="mongoose/types/models" />
|
|
13
|
+
/// <reference types="mongoose/types/mongooseoptions" />
|
|
14
|
+
/// <reference types="mongoose/types/pipelinestage" />
|
|
15
|
+
/// <reference types="mongoose/types/populate" />
|
|
16
|
+
/// <reference types="mongoose/types/query" />
|
|
17
|
+
/// <reference types="mongoose/types/schemaoptions" />
|
|
18
|
+
/// <reference types="mongoose/types/schematypes" />
|
|
19
|
+
/// <reference types="mongoose/types/session" />
|
|
20
|
+
/// <reference types="mongoose/types/types" />
|
|
21
|
+
/// <reference types="mongoose/types/utility" />
|
|
22
|
+
/// <reference types="mongoose/types/validation" />
|
|
23
|
+
/// <reference types="mongoose/types/virtuals" />
|
|
24
|
+
/// <reference types="mongoose/types/inferschematype" />
|
|
25
|
+
import { Schema } from "mongoose";
|
|
26
|
+
export interface ISectionsList {
|
|
27
|
+
id: number;
|
|
28
|
+
content: IAppOffersSection[];
|
|
29
|
+
}
|
|
30
|
+
export interface IAppOffersSection {
|
|
31
|
+
sectionId: number;
|
|
32
|
+
offerIdsOrdered: number[];
|
|
33
|
+
}
|
|
34
|
+
export declare const SectionsListSchema: Schema<any, import("mongoose").Model<any, any, any, any, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, {
|
|
35
|
+
id: number;
|
|
36
|
+
content: any[];
|
|
37
|
+
}>;
|
package/lib/offers/list.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SectionsListSchema = void 0;
|
|
4
|
-
const mongoose_1 = require("mongoose");
|
|
5
|
-
exports.SectionsListSchema = new mongoose_1.Schema({
|
|
6
|
-
id: {
|
|
7
|
-
type: Number,
|
|
8
|
-
unique: true,
|
|
9
|
-
required: true
|
|
10
|
-
},
|
|
11
|
-
content: [Object],
|
|
12
|
-
});
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SectionsListSchema = void 0;
|
|
4
|
+
const mongoose_1 = require("mongoose");
|
|
5
|
+
exports.SectionsListSchema = new mongoose_1.Schema({
|
|
6
|
+
id: {
|
|
7
|
+
type: Number,
|
|
8
|
+
unique: true,
|
|
9
|
+
required: true
|
|
10
|
+
},
|
|
11
|
+
content: [Object],
|
|
12
|
+
});
|