glitch-javascript-sdk 1.8.0 → 1.8.2
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/dist/cjs/index.js +458 -1
- package/dist/cjs/index.js.map +1 -1
- package/dist/esm/api/Ads.d.ts +31 -0
- package/dist/esm/api/Scheduler.d.ts +17 -0
- package/dist/esm/api/WebsiteAnalytics.d.ts +187 -0
- package/dist/esm/api/index.d.ts +2 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.js +458 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/routes/WebsiteAnalyticsRoute.d.ts +7 -0
- package/dist/esm/util/Session.d.ts +8 -0
- package/dist/index.d.ts +242 -0
- package/package.json +2 -1
- package/src/api/Ads.ts +87 -0
- package/src/api/Scheduler.ts +23 -0
- package/src/api/WebsiteAnalytics.ts +308 -0
- package/src/api/index.ts +3 -1
- package/src/index.ts +3 -1
- package/src/routes/AdsRoute.ts +30 -0
- package/src/routes/SchedulerRoute.ts +2 -0
- package/src/routes/WebsiteAnalyticsRoute.ts +69 -0
- package/src/util/Session.ts +92 -4
package/dist/esm/index.js
CHANGED
|
@@ -6693,6 +6693,35 @@ var AdsRoute = /** @class */ (function () {
|
|
|
6693
6693
|
url: "/ads/campaigns/{campaign_id}/groups/{group_id}/triggers/{trigger_id}",
|
|
6694
6694
|
method: HTTP_METHODS.DELETE,
|
|
6695
6695
|
},
|
|
6696
|
+
// REDDIT TARGETING routes
|
|
6697
|
+
getRedditCarriers: {
|
|
6698
|
+
url: "/ads/reddit/targeting/carriers",
|
|
6699
|
+
method: HTTP_METHODS.GET,
|
|
6700
|
+
},
|
|
6701
|
+
getRedditCommunities: {
|
|
6702
|
+
url: "/ads/reddit/targeting/communities",
|
|
6703
|
+
method: HTTP_METHODS.GET,
|
|
6704
|
+
},
|
|
6705
|
+
searchRedditCommunities: {
|
|
6706
|
+
url: "/ads/reddit/targeting/communities/search",
|
|
6707
|
+
method: HTTP_METHODS.GET,
|
|
6708
|
+
},
|
|
6709
|
+
getRedditDevices: {
|
|
6710
|
+
url: "/ads/reddit/targeting/devices",
|
|
6711
|
+
method: HTTP_METHODS.GET,
|
|
6712
|
+
},
|
|
6713
|
+
getRedditGeolocations: {
|
|
6714
|
+
url: "/ads/reddit/targeting/geolocations",
|
|
6715
|
+
method: HTTP_METHODS.GET,
|
|
6716
|
+
},
|
|
6717
|
+
getRedditInterests: {
|
|
6718
|
+
url: "/ads/reddit/targeting/interests",
|
|
6719
|
+
method: HTTP_METHODS.GET,
|
|
6720
|
+
},
|
|
6721
|
+
getRedditThirdPartyAudiences: {
|
|
6722
|
+
url: "/ads/reddit/targeting/third_party_audiences",
|
|
6723
|
+
method: HTTP_METHODS.GET,
|
|
6724
|
+
},
|
|
6696
6725
|
};
|
|
6697
6726
|
return AdsRoute;
|
|
6698
6727
|
}());
|
|
@@ -6980,6 +7009,51 @@ var Ads = /** @class */ (function () {
|
|
|
6980
7009
|
Ads.listCampaignFundingInstruments = function (campaign_id, params) {
|
|
6981
7010
|
return Requests.processRoute(AdsRoute.routes.getCampaignFundingInstruments, undefined, { campaign_id: campaign_id }, params);
|
|
6982
7011
|
};
|
|
7012
|
+
/**
|
|
7013
|
+
* GET /ads/reddit/targeting/carriers
|
|
7014
|
+
*
|
|
7015
|
+
* Example usage:
|
|
7016
|
+
* Ads.listRedditCarriers({ scheduler_id: 'uuid-of-scheduler', 'page.size': 50 })
|
|
7017
|
+
*/
|
|
7018
|
+
Ads.listRedditCarriers = function (params) {
|
|
7019
|
+
return Requests.processRoute(AdsRoute.routes.getRedditCarriers, undefined, undefined, params);
|
|
7020
|
+
};
|
|
7021
|
+
/**
|
|
7022
|
+
* GET /ads/reddit/targeting/communities?names=sub1,sub2
|
|
7023
|
+
*/
|
|
7024
|
+
Ads.listRedditCommunities = function (params) {
|
|
7025
|
+
return Requests.processRoute(AdsRoute.routes.getRedditCommunities, undefined, undefined, params);
|
|
7026
|
+
};
|
|
7027
|
+
/**
|
|
7028
|
+
* GET /ads/reddit/targeting/communities/search?query=xyz
|
|
7029
|
+
*/
|
|
7030
|
+
Ads.searchRedditCommunities = function (params) {
|
|
7031
|
+
return Requests.processRoute(AdsRoute.routes.searchRedditCommunities, undefined, undefined, params);
|
|
7032
|
+
};
|
|
7033
|
+
/**
|
|
7034
|
+
* GET /ads/reddit/targeting/devices
|
|
7035
|
+
*/
|
|
7036
|
+
Ads.listRedditDevices = function (params) {
|
|
7037
|
+
return Requests.processRoute(AdsRoute.routes.getRedditDevices, undefined, undefined, params);
|
|
7038
|
+
};
|
|
7039
|
+
/**
|
|
7040
|
+
* GET /ads/reddit/targeting/geolocations
|
|
7041
|
+
*/
|
|
7042
|
+
Ads.listRedditGeolocations = function (params) {
|
|
7043
|
+
return Requests.processRoute(AdsRoute.routes.getRedditGeolocations, undefined, undefined, params);
|
|
7044
|
+
};
|
|
7045
|
+
/**
|
|
7046
|
+
* GET /ads/reddit/targeting/interests
|
|
7047
|
+
*/
|
|
7048
|
+
Ads.listRedditInterests = function (params) {
|
|
7049
|
+
return Requests.processRoute(AdsRoute.routes.getRedditInterests, undefined, undefined, params);
|
|
7050
|
+
};
|
|
7051
|
+
/**
|
|
7052
|
+
* GET /ads/reddit/targeting/third_party_audiences
|
|
7053
|
+
*/
|
|
7054
|
+
Ads.listRedditThirdPartyAudiences = function (params) {
|
|
7055
|
+
return Requests.processRoute(AdsRoute.routes.getRedditThirdPartyAudiences, undefined, undefined, params);
|
|
7056
|
+
};
|
|
6983
7057
|
return Ads;
|
|
6984
7058
|
}());
|
|
6985
7059
|
|
|
@@ -12094,6 +12168,7 @@ var SchedulerRoute = /** @class */ (function () {
|
|
|
12094
12168
|
getSchedulePosts: { url: '/schedulers/{scheduler_id}/posts', method: HTTP_METHODS.GET },
|
|
12095
12169
|
// Title Update Routes
|
|
12096
12170
|
listUpdates: { url: '/schedulers/{scheduler_id}/updates', method: HTTP_METHODS.GET },
|
|
12171
|
+
searchUpdates: { url: '/schedulers/{scheduler_id}/updates/search', method: HTTP_METHODS.GET },
|
|
12097
12172
|
createUpdate: { url: '/schedulers/{scheduler_id}/updates', method: HTTP_METHODS.POST },
|
|
12098
12173
|
getUpdate: { url: '/schedulers/{scheduler_id}/updates/{update_id}', method: HTTP_METHODS.GET },
|
|
12099
12174
|
updateUpdate: { url: '/schedulers/{scheduler_id}/updates/{update_id}', method: HTTP_METHODS.PUT },
|
|
@@ -12111,6 +12186,7 @@ var SchedulerRoute = /** @class */ (function () {
|
|
|
12111
12186
|
clearTwitchAuth: { url: '/schedulers/{scheduler_id}/clearTwitchAuth', method: HTTP_METHODS.DELETE },
|
|
12112
12187
|
clearKickAuth: { url: '/schedulers/{scheduler_id}/clearKickAuth', method: HTTP_METHODS.DELETE },
|
|
12113
12188
|
clearRedditAuth: { url: '/schedulers/{scheduler_id}/clearRedditAuth', method: HTTP_METHODS.DELETE },
|
|
12189
|
+
clearRedditAdsAuth: { url: '/schedulers/{scheduler_id}/clearRedditAdsAuth', method: HTTP_METHODS.DELETE },
|
|
12114
12190
|
clearYouTubeAuth: { url: '/schedulers/{scheduler_id}/clearYouTubeAuth', method: HTTP_METHODS.DELETE },
|
|
12115
12191
|
clearPatreonAuth: { url: '/schedulers/{scheduler_id}/clearPatreonAuth', method: HTTP_METHODS.DELETE },
|
|
12116
12192
|
clearPinterestAuth: { url: '/schedulers/{scheduler_id}/clearPinterestAuth', method: HTTP_METHODS.DELETE },
|
|
@@ -12278,6 +12354,18 @@ var Scheduler = /** @class */ (function () {
|
|
|
12278
12354
|
Scheduler.listUpdates = function (scheduler_id, params) {
|
|
12279
12355
|
return Requests.processRoute(SchedulerRoute.routes.listUpdates, {}, { scheduler_id: scheduler_id }, params);
|
|
12280
12356
|
};
|
|
12357
|
+
/**
|
|
12358
|
+
* Search the updates related to a promotion schedule.
|
|
12359
|
+
*
|
|
12360
|
+
* @see https://api.glitch.fun/api/documentation#/Scheduler/searchTitleUpdates
|
|
12361
|
+
*
|
|
12362
|
+
* @param scheduler_id The ID of the promotion schedule.
|
|
12363
|
+
*
|
|
12364
|
+
* @returns promise
|
|
12365
|
+
*/
|
|
12366
|
+
Scheduler.searchUpdates = function (scheduler_id, params) {
|
|
12367
|
+
return Requests.processRoute(SchedulerRoute.routes.listUpdates, {}, { scheduler_id: scheduler_id }, params);
|
|
12368
|
+
};
|
|
12281
12369
|
/**
|
|
12282
12370
|
* Create a new title update for a promotion schedule.
|
|
12283
12371
|
*
|
|
@@ -12417,6 +12505,15 @@ var Scheduler = /** @class */ (function () {
|
|
|
12417
12505
|
Scheduler.clearRedditAuth = function (scheduler_id, params) {
|
|
12418
12506
|
return Requests.processRoute(SchedulerRoute.routes.clearRedditAuth, {}, { scheduler_id: scheduler_id }, params);
|
|
12419
12507
|
};
|
|
12508
|
+
/**
|
|
12509
|
+
* Clear Reddit Ads OAuth credentials from a promotion schedule.
|
|
12510
|
+
*
|
|
12511
|
+
* @param scheduler_id The ID of the promotion schedule.
|
|
12512
|
+
* @returns promise
|
|
12513
|
+
*/
|
|
12514
|
+
Scheduler.clearRedditAdsAuth = function (scheduler_id, params) {
|
|
12515
|
+
return Requests.processRoute(SchedulerRoute.routes.clearRedditAdsAuth, {}, { scheduler_id: scheduler_id }, params);
|
|
12516
|
+
};
|
|
12420
12517
|
/**
|
|
12421
12518
|
* Clear YouTube OAuth credentials from a promotion schedule.
|
|
12422
12519
|
*
|
|
@@ -12889,6 +12986,292 @@ var Hashtags = /** @class */ (function () {
|
|
|
12889
12986
|
return Hashtags;
|
|
12890
12987
|
}());
|
|
12891
12988
|
|
|
12989
|
+
var WebsiteAnalyticsRoute = /** @class */ (function () {
|
|
12990
|
+
function WebsiteAnalyticsRoute() {
|
|
12991
|
+
}
|
|
12992
|
+
WebsiteAnalyticsRoute.routes = {
|
|
12993
|
+
listSessions: {
|
|
12994
|
+
url: '/analytics/sessions',
|
|
12995
|
+
method: HTTP_METHODS.GET
|
|
12996
|
+
},
|
|
12997
|
+
listPageviews: {
|
|
12998
|
+
url: '/analytics/pageviews',
|
|
12999
|
+
method: HTTP_METHODS.GET
|
|
13000
|
+
},
|
|
13001
|
+
listEvents: {
|
|
13002
|
+
url: '/analytics/events',
|
|
13003
|
+
method: HTTP_METHODS.GET
|
|
13004
|
+
},
|
|
13005
|
+
overview: {
|
|
13006
|
+
url: '/analytics/overview',
|
|
13007
|
+
method: HTTP_METHODS.GET
|
|
13008
|
+
},
|
|
13009
|
+
collect: {
|
|
13010
|
+
url: '/analytics/collect',
|
|
13011
|
+
method: HTTP_METHODS.POST
|
|
13012
|
+
},
|
|
13013
|
+
sessionsAverage: {
|
|
13014
|
+
url: '/analytics/sessions/average',
|
|
13015
|
+
method: HTTP_METHODS.GET
|
|
13016
|
+
},
|
|
13017
|
+
sessionsHistogram: {
|
|
13018
|
+
url: '/analytics/sessions/histogram',
|
|
13019
|
+
method: HTTP_METHODS.GET
|
|
13020
|
+
},
|
|
13021
|
+
pageviewsOverTime: {
|
|
13022
|
+
url: '/analytics/pageviews/over-time',
|
|
13023
|
+
method: HTTP_METHODS.GET
|
|
13024
|
+
},
|
|
13025
|
+
topPages: {
|
|
13026
|
+
url: '/analytics/pageviews/top-pages',
|
|
13027
|
+
method: HTTP_METHODS.GET
|
|
13028
|
+
},
|
|
13029
|
+
eventsSummary: {
|
|
13030
|
+
url: '/analytics/events/summary',
|
|
13031
|
+
method: HTTP_METHODS.GET
|
|
13032
|
+
},
|
|
13033
|
+
popularEvents: {
|
|
13034
|
+
url: '/analytics/events/popular',
|
|
13035
|
+
method: HTTP_METHODS.GET
|
|
13036
|
+
},
|
|
13037
|
+
geoDistribution: {
|
|
13038
|
+
url: '/analytics/geo-distribution',
|
|
13039
|
+
method: HTTP_METHODS.GET
|
|
13040
|
+
},
|
|
13041
|
+
deviceBreakdown: {
|
|
13042
|
+
url: '/analytics/device-breakdown',
|
|
13043
|
+
method: HTTP_METHODS.GET
|
|
13044
|
+
},
|
|
13045
|
+
referrers: {
|
|
13046
|
+
url: '/analytics/referrers',
|
|
13047
|
+
method: HTTP_METHODS.GET
|
|
13048
|
+
},
|
|
13049
|
+
utmPerformance: {
|
|
13050
|
+
url: '/analytics/utm-performance',
|
|
13051
|
+
method: HTTP_METHODS.GET
|
|
13052
|
+
}
|
|
13053
|
+
};
|
|
13054
|
+
return WebsiteAnalyticsRoute;
|
|
13055
|
+
}());
|
|
13056
|
+
|
|
13057
|
+
var WebsiteAnalytics = /** @class */ (function () {
|
|
13058
|
+
function WebsiteAnalytics() {
|
|
13059
|
+
}
|
|
13060
|
+
/**
|
|
13061
|
+
* List website analytics sessions with comprehensive filtering
|
|
13062
|
+
*
|
|
13063
|
+
* @param params Filtering options:
|
|
13064
|
+
* - title_id?: string - Filter by title ID
|
|
13065
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13066
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13067
|
+
* - device_type?: 'desktop'|'mobile'|'tablet'|'bot'|'other'
|
|
13068
|
+
* - country_code?: string - 2-letter country code
|
|
13069
|
+
* - is_bot?: boolean - Filter by bot status
|
|
13070
|
+
* - sort?: 'started_at'|'total_duration'|'pageview_count' - Sort field
|
|
13071
|
+
* - order?: 'asc'|'desc' - Sort order
|
|
13072
|
+
* - per_page?: number - Items per page (max 100)
|
|
13073
|
+
* @returns Promise with paginated sessions data
|
|
13074
|
+
*/
|
|
13075
|
+
WebsiteAnalytics.listSessions = function (params) {
|
|
13076
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.listSessions, {}, undefined, params);
|
|
13077
|
+
};
|
|
13078
|
+
/**
|
|
13079
|
+
* Get a paginated list of pageviews with filtering options
|
|
13080
|
+
*
|
|
13081
|
+
* @param params Filtering options:
|
|
13082
|
+
* - title_id?: string - Filter by title ID
|
|
13083
|
+
* - analytics_session_id?: string - Filter by session ID
|
|
13084
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13085
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13086
|
+
* - is_exit?: boolean - Filter by exit pageviews
|
|
13087
|
+
* - sort?: 'occurred_at'|'load_time_ms'|'dom_complete_ms' - Sort field
|
|
13088
|
+
* - order?: 'asc'|'desc' - Sort order
|
|
13089
|
+
* - per_page?: number - Items per page (max 100)
|
|
13090
|
+
* @returns Promise with paginated pageviews data
|
|
13091
|
+
*/
|
|
13092
|
+
WebsiteAnalytics.listPageviews = function (params) {
|
|
13093
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.listPageviews, {}, undefined, params);
|
|
13094
|
+
};
|
|
13095
|
+
/**
|
|
13096
|
+
* Get a paginated list of events with filtering options
|
|
13097
|
+
*
|
|
13098
|
+
* @param params Filtering options:
|
|
13099
|
+
* - title_id?: string - Filter by title ID
|
|
13100
|
+
* - analytics_session_id?: string - Filter by session ID
|
|
13101
|
+
* - event_name?: string - Filter by event name
|
|
13102
|
+
* - event_category?: string - Filter by event category
|
|
13103
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13104
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13105
|
+
* - sort?: 'occurred_at'|'event_name' - Sort field
|
|
13106
|
+
* - order?: 'asc'|'desc' - Sort order
|
|
13107
|
+
* - per_page?: number - Items per page (max 100)
|
|
13108
|
+
* @returns Promise with paginated events data
|
|
13109
|
+
*/
|
|
13110
|
+
WebsiteAnalytics.listEvents = function (params) {
|
|
13111
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.listEvents, {}, undefined, params);
|
|
13112
|
+
};
|
|
13113
|
+
/**
|
|
13114
|
+
* Get an analytics overview with summarized metrics
|
|
13115
|
+
*
|
|
13116
|
+
* @param params Overview options:
|
|
13117
|
+
* - title_id: string - Required title ID
|
|
13118
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13119
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13120
|
+
* - group_by?: 'day'|'week'|'month'|'year' - Grouping period
|
|
13121
|
+
* - include_breakdowns?: boolean - Include detailed breakdowns
|
|
13122
|
+
* @returns Promise with overview data
|
|
13123
|
+
*/
|
|
13124
|
+
WebsiteAnalytics.overview = function (params) {
|
|
13125
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.overview, {}, undefined, params);
|
|
13126
|
+
};
|
|
13127
|
+
/**
|
|
13128
|
+
* Single ingestion endpoint for sessions, pageviews and events
|
|
13129
|
+
*
|
|
13130
|
+
* @param data Analytics data payload with type property:
|
|
13131
|
+
* - type: 'session'|'pageview'|'event' - Type of analytics data
|
|
13132
|
+
* - title_id: string - Title ID
|
|
13133
|
+
* - tracking_token: string - HMAC token for verification
|
|
13134
|
+
* - plus type-specific fields
|
|
13135
|
+
* @returns Promise with acceptance response
|
|
13136
|
+
*/
|
|
13137
|
+
WebsiteAnalytics.collect = function (data) {
|
|
13138
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.collect, data);
|
|
13139
|
+
};
|
|
13140
|
+
/**
|
|
13141
|
+
* Get average session length data with optional grouping
|
|
13142
|
+
*
|
|
13143
|
+
* @param params Filtering options:
|
|
13144
|
+
* - title_id?: string - Filter by title ID
|
|
13145
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13146
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13147
|
+
* - group_by?: 'day'|'week'|'month' - Grouping period
|
|
13148
|
+
* - device_type?: string - Filter by device type
|
|
13149
|
+
* - country_code?: string - Filter by country
|
|
13150
|
+
* @returns Promise with average session data
|
|
13151
|
+
*/
|
|
13152
|
+
WebsiteAnalytics.sessionsAverage = function (params) {
|
|
13153
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.sessionsAverage, {}, undefined, params);
|
|
13154
|
+
};
|
|
13155
|
+
/**
|
|
13156
|
+
* Get session duration histogram data
|
|
13157
|
+
*
|
|
13158
|
+
* @param params Filtering options:
|
|
13159
|
+
* - title_id?: string - Filter by title ID
|
|
13160
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13161
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13162
|
+
* - bucket_size?: number - Duration bucket size in seconds
|
|
13163
|
+
* @returns Promise with histogram data
|
|
13164
|
+
*/
|
|
13165
|
+
WebsiteAnalytics.sessionsHistogram = function (params) {
|
|
13166
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.sessionsHistogram, {}, undefined, params);
|
|
13167
|
+
};
|
|
13168
|
+
/**
|
|
13169
|
+
* Get pageviews over time with optional grouping
|
|
13170
|
+
*
|
|
13171
|
+
* @param params Filtering options:
|
|
13172
|
+
* - title_id?: string - Filter by title ID
|
|
13173
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13174
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13175
|
+
* - group_by?: 'hour'|'day'|'week'|'month' - Grouping period
|
|
13176
|
+
* - path?: string - Filter by specific path
|
|
13177
|
+
* @returns Promise with pageviews over time data
|
|
13178
|
+
*/
|
|
13179
|
+
WebsiteAnalytics.pageviewsOverTime = function (params) {
|
|
13180
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.pageviewsOverTime, {}, undefined, params);
|
|
13181
|
+
};
|
|
13182
|
+
/**
|
|
13183
|
+
* Get top pages by views
|
|
13184
|
+
*
|
|
13185
|
+
* @param params Filtering options:
|
|
13186
|
+
* - title_id?: string - Filter by title ID
|
|
13187
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13188
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13189
|
+
* - limit?: number - Number of top pages to return
|
|
13190
|
+
* @returns Promise with top pages data
|
|
13191
|
+
*/
|
|
13192
|
+
WebsiteAnalytics.topPages = function (params) {
|
|
13193
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.topPages, {}, undefined, params);
|
|
13194
|
+
};
|
|
13195
|
+
/**
|
|
13196
|
+
* Get summary of events
|
|
13197
|
+
*
|
|
13198
|
+
* @param params Filtering options:
|
|
13199
|
+
* - title_id?: string - Filter by title ID
|
|
13200
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13201
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13202
|
+
* - event_category?: string - Filter by event category
|
|
13203
|
+
* @returns Promise with events summary data
|
|
13204
|
+
*/
|
|
13205
|
+
WebsiteAnalytics.eventsSummary = function (params) {
|
|
13206
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.eventsSummary, {}, undefined, params);
|
|
13207
|
+
};
|
|
13208
|
+
/**
|
|
13209
|
+
* Get most popular events
|
|
13210
|
+
*
|
|
13211
|
+
* @param params Filtering options:
|
|
13212
|
+
* - title_id?: string - Filter by title ID
|
|
13213
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13214
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13215
|
+
* - limit?: number - Number of events to return
|
|
13216
|
+
* @returns Promise with popular events data
|
|
13217
|
+
*/
|
|
13218
|
+
WebsiteAnalytics.popularEvents = function (params) {
|
|
13219
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.popularEvents, {}, undefined, params);
|
|
13220
|
+
};
|
|
13221
|
+
/**
|
|
13222
|
+
* Get geographic distribution of visitors
|
|
13223
|
+
*
|
|
13224
|
+
* @param params Filtering options:
|
|
13225
|
+
* - title_id?: string - Filter by title ID
|
|
13226
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13227
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13228
|
+
* - limit?: number - Number of countries to return
|
|
13229
|
+
* @returns Promise with geo distribution data
|
|
13230
|
+
*/
|
|
13231
|
+
WebsiteAnalytics.geoDistribution = function (params) {
|
|
13232
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.geoDistribution, {}, undefined, params);
|
|
13233
|
+
};
|
|
13234
|
+
/**
|
|
13235
|
+
* Get device type breakdown
|
|
13236
|
+
*
|
|
13237
|
+
* @param params Filtering options:
|
|
13238
|
+
* - title_id?: string - Filter by title ID
|
|
13239
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13240
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13241
|
+
* @returns Promise with device breakdown data
|
|
13242
|
+
*/
|
|
13243
|
+
WebsiteAnalytics.deviceBreakdown = function (params) {
|
|
13244
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.deviceBreakdown, {}, undefined, params);
|
|
13245
|
+
};
|
|
13246
|
+
/**
|
|
13247
|
+
* Get top referrers
|
|
13248
|
+
*
|
|
13249
|
+
* @param params Filtering options:
|
|
13250
|
+
* - title_id?: string - Filter by title ID
|
|
13251
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13252
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13253
|
+
* - limit?: number - Number of referrers to return
|
|
13254
|
+
* @returns Promise with referrers data
|
|
13255
|
+
*/
|
|
13256
|
+
WebsiteAnalytics.referrers = function (params) {
|
|
13257
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.referrers, {}, undefined, params);
|
|
13258
|
+
};
|
|
13259
|
+
/**
|
|
13260
|
+
* Get UTM campaign performance
|
|
13261
|
+
*
|
|
13262
|
+
* @param params Filtering options:
|
|
13263
|
+
* - title_id?: string - Filter by title ID
|
|
13264
|
+
* - start_date?: string - Start date (YYYY-MM-DD)
|
|
13265
|
+
* - end_date?: string - End date (YYYY-MM-DD)
|
|
13266
|
+
* - group_by?: 'source'|'medium'|'campaign' - Grouping field
|
|
13267
|
+
* @returns Promise with UTM performance data
|
|
13268
|
+
*/
|
|
13269
|
+
WebsiteAnalytics.utmPerformance = function (params) {
|
|
13270
|
+
return Requests.processRoute(WebsiteAnalyticsRoute.routes.utmPerformance, {}, undefined, params);
|
|
13271
|
+
};
|
|
13272
|
+
return WebsiteAnalytics;
|
|
13273
|
+
}());
|
|
13274
|
+
|
|
12892
13275
|
var Parser = /** @class */ (function () {
|
|
12893
13276
|
function Parser() {
|
|
12894
13277
|
}
|
|
@@ -12912,6 +13295,54 @@ var Parser = /** @class */ (function () {
|
|
|
12912
13295
|
return Parser;
|
|
12913
13296
|
}());
|
|
12914
13297
|
|
|
13298
|
+
// Browser implementation using crypto-js
|
|
13299
|
+
var BrowserCrypto = /** @class */ (function () {
|
|
13300
|
+
function BrowserCrypto() {
|
|
13301
|
+
}
|
|
13302
|
+
BrowserCrypto.prototype.createHmac = function (algorithm, secret) {
|
|
13303
|
+
var CryptoJS = require('crypto-js');
|
|
13304
|
+
var data = '';
|
|
13305
|
+
var hmac = {
|
|
13306
|
+
update: function (updateData) {
|
|
13307
|
+
data = updateData;
|
|
13308
|
+
return hmac;
|
|
13309
|
+
},
|
|
13310
|
+
digest: function (encoding) {
|
|
13311
|
+
if (encoding !== 'hex') {
|
|
13312
|
+
throw new Error('Only hex encoding is supported in browser implementation');
|
|
13313
|
+
}
|
|
13314
|
+
return CryptoJS.HmacSHA256(data, secret).toString(CryptoJS.enc.Hex);
|
|
13315
|
+
}
|
|
13316
|
+
};
|
|
13317
|
+
return hmac;
|
|
13318
|
+
};
|
|
13319
|
+
return BrowserCrypto;
|
|
13320
|
+
}());
|
|
13321
|
+
// Node.js implementation using native crypto
|
|
13322
|
+
var NodeCrypto = /** @class */ (function () {
|
|
13323
|
+
function NodeCrypto() {
|
|
13324
|
+
this.crypto = require('crypto');
|
|
13325
|
+
}
|
|
13326
|
+
NodeCrypto.prototype.createHmac = function (algorithm, secret) {
|
|
13327
|
+
return this.crypto.createHmac(algorithm, secret);
|
|
13328
|
+
};
|
|
13329
|
+
return NodeCrypto;
|
|
13330
|
+
}());
|
|
13331
|
+
// Determine which crypto implementation to use
|
|
13332
|
+
var getCrypto = function () {
|
|
13333
|
+
try {
|
|
13334
|
+
// Check if we're in Node.js environment
|
|
13335
|
+
if (typeof process !== 'undefined' && process.versions && process.versions.node) {
|
|
13336
|
+
return new NodeCrypto();
|
|
13337
|
+
}
|
|
13338
|
+
// Fall back to browser implementation
|
|
13339
|
+
return new BrowserCrypto();
|
|
13340
|
+
}
|
|
13341
|
+
catch (e) {
|
|
13342
|
+
return new BrowserCrypto();
|
|
13343
|
+
}
|
|
13344
|
+
};
|
|
13345
|
+
var crypto = getCrypto();
|
|
12915
13346
|
var Session = /** @class */ (function () {
|
|
12916
13347
|
function Session() {
|
|
12917
13348
|
}
|
|
@@ -12958,6 +13389,31 @@ var Session = /** @class */ (function () {
|
|
|
12958
13389
|
Storage.set(Session._email_key, data.email);
|
|
12959
13390
|
Config.setAuthToken(data.token.access_token);
|
|
12960
13391
|
};
|
|
13392
|
+
/**
|
|
13393
|
+
* Generate a tracking token for analytics collection
|
|
13394
|
+
* @param titleId The title ID to generate token for
|
|
13395
|
+
* @param secret The secret key (should match server config)
|
|
13396
|
+
* @returns HMAC-SHA256 token
|
|
13397
|
+
* @throws Error if crypto operations fail
|
|
13398
|
+
*/
|
|
13399
|
+
Session.generateTrackingToken = function (titleId, secret) {
|
|
13400
|
+
try {
|
|
13401
|
+
if (!titleId) {
|
|
13402
|
+
throw new Error('titleId is required');
|
|
13403
|
+
}
|
|
13404
|
+
if (!secret) {
|
|
13405
|
+
throw new Error('secret is required');
|
|
13406
|
+
}
|
|
13407
|
+
return crypto
|
|
13408
|
+
.createHmac('sha256', secret)
|
|
13409
|
+
.update(titleId)
|
|
13410
|
+
.digest('hex');
|
|
13411
|
+
}
|
|
13412
|
+
catch (error) {
|
|
13413
|
+
console.error('Failed to generate tracking token:', error);
|
|
13414
|
+
throw new Error('Failed to generate tracking token');
|
|
13415
|
+
}
|
|
13416
|
+
};
|
|
12961
13417
|
Session._id_key = 'user_id';
|
|
12962
13418
|
Session._first_name_key = 'user_first_name';
|
|
12963
13419
|
Session._last_name_key = 'user_last_name';
|
|
@@ -13318,7 +13774,8 @@ var Glitch = /** @class */ (function () {
|
|
|
13318
13774
|
Media: Media,
|
|
13319
13775
|
Scheduler: Scheduler,
|
|
13320
13776
|
Funnel: Funnel,
|
|
13321
|
-
SocialStats: SocialStats
|
|
13777
|
+
SocialStats: SocialStats,
|
|
13778
|
+
WebsiteAnalytics: WebsiteAnalytics
|
|
13322
13779
|
};
|
|
13323
13780
|
Glitch.util = {
|
|
13324
13781
|
Requests: Requests,
|