@clickview/exchange 0.63.0-rc.0 → 0.63.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/dist/.vite/manifest.json +525 -525
- package/dist/bundles.json +1 -1
- package/dist/en.json +1 -1
- package/dist/scripts/{XXzDL37Y.chunk.js → -x9MMtVv.chunk.js} +2 -2
- package/dist/scripts/{XXzDL37Y.chunk.js.map → -x9MMtVv.chunk.js.map} +1 -1
- package/dist/scripts/{BRJldyG42.chunk.js → 4oWF2EyV2.chunk.js} +2 -2
- package/dist/scripts/{BRJldyG42.chunk.js.map → 4oWF2EyV2.chunk.js.map} +1 -1
- package/dist/scripts/{Bbv7q795.chunk.js → 5Z0rGCy2.chunk.js} +2 -2
- package/dist/scripts/{Bbv7q795.chunk.js.map → 5Z0rGCy2.chunk.js.map} +1 -1
- package/dist/scripts/{Buz0cl_A2.chunk.js → 8vJGuJF-2.chunk.js} +2 -2
- package/dist/scripts/{Buz0cl_A2.chunk.js.map → 8vJGuJF-2.chunk.js.map} +1 -1
- package/dist/scripts/{DHyCd_bU2.chunk.js → B0jhFNam2.chunk.js} +3 -3
- package/dist/scripts/{DHyCd_bU2.chunk.js.map → B0jhFNam2.chunk.js.map} +1 -1
- package/dist/scripts/{C56J8vQn2.chunk.js → B3tq0EFi2.chunk.js} +2 -2
- package/dist/scripts/{C56J8vQn2.chunk.js.map → B3tq0EFi2.chunk.js.map} +1 -1
- package/dist/scripts/{z3xPIUA8.chunk.js → B6EmIhMh.chunk.js} +2 -2
- package/dist/scripts/{z3xPIUA8.chunk.js.map → B6EmIhMh.chunk.js.map} +1 -1
- package/dist/scripts/{CvGdC4sR2.chunk.js → BEgLlK2Z2.chunk.js} +2 -2
- package/dist/scripts/{CvGdC4sR2.chunk.js.map → BEgLlK2Z2.chunk.js.map} +1 -1
- package/dist/scripts/{DZzghMqE2.chunk.js → BEyI0jsC2.chunk.js} +2 -2
- package/dist/scripts/{DZzghMqE2.chunk.js.map → BEyI0jsC2.chunk.js.map} +1 -1
- package/dist/scripts/{hZmx1ZBr.chunk.js → BHzUOyzG.chunk.js} +2 -2
- package/dist/scripts/{hZmx1ZBr.chunk.js.map → BHzUOyzG.chunk.js.map} +1 -1
- package/dist/scripts/{CBskpS-O.chunk.js → BI2S4EFA.chunk.js} +2 -2
- package/dist/scripts/{CBskpS-O.chunk.js.map → BI2S4EFA.chunk.js.map} +1 -1
- package/dist/scripts/{_yGE4YHL2.chunk.js → BTsePUCN2.chunk.js} +2 -2
- package/dist/scripts/{_yGE4YHL2.chunk.js.map → BTsePUCN2.chunk.js.map} +1 -1
- package/dist/scripts/{CSI2paIO2.chunk.js → BaXT2aKo2.chunk.js} +2 -2
- package/dist/scripts/{CSI2paIO2.chunk.js.map → BaXT2aKo2.chunk.js.map} +1 -1
- package/dist/scripts/{CmvWR08f.chunk.js → BibFbDqs.chunk.js} +2 -2
- package/dist/scripts/{CmvWR08f.chunk.js.map → BibFbDqs.chunk.js.map} +1 -1
- package/dist/scripts/{DUcxhK9t.chunk.js → BjzONPz9.chunk.js} +2 -2
- package/dist/scripts/{DUcxhK9t.chunk.js.map → BjzONPz9.chunk.js.map} +1 -1
- package/dist/scripts/{DRwPcxvr.chunk.js → BnbM9YhY.chunk.js} +2 -2
- package/dist/scripts/{DRwPcxvr.chunk.js.map → BnbM9YhY.chunk.js.map} +1 -1
- package/dist/scripts/{l5SFnLQO.chunk.js → BrEvIvRP.chunk.js} +2 -2
- package/dist/scripts/{l5SFnLQO.chunk.js.map → BrEvIvRP.chunk.js.map} +1 -1
- package/dist/scripts/{CcQK2DGq2.chunk.js → C1guWVFU2.chunk.js} +2 -2
- package/dist/scripts/{CcQK2DGq2.chunk.js.map → C1guWVFU2.chunk.js.map} +1 -1
- package/dist/scripts/{BWVFXuZ42.chunk.js → C3K3VtRR2.chunk.js} +2 -2
- package/dist/scripts/{BWVFXuZ42.chunk.js.map → C3K3VtRR2.chunk.js.map} +1 -1
- package/dist/scripts/{lWeC_K_B.chunk.js → CAJOpkKZ.chunk.js} +2 -2
- package/dist/scripts/{lWeC_K_B.chunk.js.map → CAJOpkKZ.chunk.js.map} +1 -1
- package/dist/scripts/{feXppHqr.chunk.js → CAOBwDbU.chunk.js} +2 -2
- package/dist/scripts/{feXppHqr.chunk.js.map → CAOBwDbU.chunk.js.map} +1 -1
- package/dist/scripts/{BTP30DaC.chunk.js → CAQAUQMB.chunk.js} +2 -2
- package/dist/scripts/{BTP30DaC.chunk.js.map → CAQAUQMB.chunk.js.map} +1 -1
- package/dist/scripts/{4onqOCbS.chunk.js → CAoPaL8M.chunk.js} +2 -2
- package/dist/scripts/{4onqOCbS.chunk.js.map → CAoPaL8M.chunk.js.map} +1 -1
- package/dist/scripts/{YL1EBDd_.chunk.js → CCvXN2-C.chunk.js} +2 -2
- package/dist/scripts/{YL1EBDd_.chunk.js.map → CCvXN2-C.chunk.js.map} +1 -1
- package/dist/scripts/{D7MdAl-52.chunk.js → CDXcKno52.chunk.js} +2 -2
- package/dist/scripts/{D7MdAl-52.chunk.js.map → CDXcKno52.chunk.js.map} +1 -1
- package/dist/scripts/{B1_Y3iw-.chunk.js → CGLWqKaa.chunk.js} +2 -2
- package/dist/scripts/{B1_Y3iw-.chunk.js.map → CGLWqKaa.chunk.js.map} +1 -1
- package/dist/scripts/{BX4WdpiX.chunk.js → CHQN7xOX.chunk.js} +2 -2
- package/dist/scripts/{BX4WdpiX.chunk.js.map → CHQN7xOX.chunk.js.map} +1 -1
- package/dist/scripts/{3OI-aLOc.chunk.js → CSbvS-Cl.chunk.js} +2 -2
- package/dist/scripts/{3OI-aLOc.chunk.js.map → CSbvS-Cl.chunk.js.map} +1 -1
- package/dist/scripts/{CWY-sFVd.chunk.js → CYFRcx63.chunk.js} +2 -2
- package/dist/scripts/{CWY-sFVd.chunk.js.map → CYFRcx63.chunk.js.map} +1 -1
- package/dist/scripts/{DfMfBgzn2.chunk.js → CeeAb-HT2.chunk.js} +2 -2
- package/dist/scripts/{DfMfBgzn2.chunk.js.map → CeeAb-HT2.chunk.js.map} +1 -1
- package/dist/scripts/{DspWTyv22.chunk.js → Cllrumah2.chunk.js} +2 -2
- package/dist/scripts/{DspWTyv22.chunk.js.map → Cllrumah2.chunk.js.map} +1 -1
- package/dist/scripts/{CPzPIQB92.chunk.js → CoK2sqzN2.chunk.js} +2 -2
- package/dist/scripts/{CPzPIQB92.chunk.js.map → CoK2sqzN2.chunk.js.map} +1 -1
- package/dist/scripts/{DUVTdegJ.chunk.js → CsrTrVKj.chunk.js} +2 -2
- package/dist/scripts/{DUVTdegJ.chunk.js.map → CsrTrVKj.chunk.js.map} +1 -1
- package/dist/scripts/{C-mZmrh2.chunk.js → CuE3TVwa.chunk.js} +2 -2
- package/dist/scripts/{C-mZmrh2.chunk.js.map → CuE3TVwa.chunk.js.map} +1 -1
- package/dist/scripts/{D9yYpvIx.chunk.js → D-ivDlyL.chunk.js} +2 -2
- package/dist/scripts/{D9yYpvIx.chunk.js.map → D-ivDlyL.chunk.js.map} +1 -1
- package/dist/scripts/{ZgHZpHus2.chunk.js → D36Shrdb2.chunk.js} +2 -2
- package/dist/scripts/{ZgHZpHus2.chunk.js.map → D36Shrdb2.chunk.js.map} +1 -1
- package/dist/scripts/{DiivzK1E.chunk.js → D3Jgk2dT.chunk.js} +2 -2
- package/dist/scripts/{DiivzK1E.chunk.js.map → D3Jgk2dT.chunk.js.map} +1 -1
- package/dist/scripts/{DDU0lRB02.chunk.js → D6EZoO4S2.chunk.js} +2 -2
- package/dist/scripts/{DDU0lRB02.chunk.js.map → D6EZoO4S2.chunk.js.map} +1 -1
- package/dist/scripts/{Ca1aJXXk.chunk.js → DDO16-at.chunk.js} +2 -2
- package/dist/scripts/{Ca1aJXXk.chunk.js.map → DDO16-at.chunk.js.map} +1 -1
- package/dist/scripts/{DQhm12vh2.chunk.js → DGRBUJ6T2.chunk.js} +2 -2
- package/dist/scripts/{DQhm12vh2.chunk.js.map → DGRBUJ6T2.chunk.js.map} +1 -1
- package/dist/scripts/{PVFChK662.chunk.js → DGy73Ett2.chunk.js} +2 -2
- package/dist/scripts/{PVFChK662.chunk.js.map → DGy73Ett2.chunk.js.map} +1 -1
- package/dist/scripts/{BhygUKHG2.chunk.js → DHV6S1fA2.chunk.js} +2 -2
- package/dist/scripts/{BhygUKHG2.chunk.js.map → DHV6S1fA2.chunk.js.map} +1 -1
- package/dist/scripts/{ClJxBHin2.chunk.js → DM0JzOpR2.chunk.js} +2 -2
- package/dist/scripts/{ClJxBHin2.chunk.js.map → DM0JzOpR2.chunk.js.map} +1 -1
- package/dist/scripts/{Ovy1FgPr2.chunk.js → DOuiFwIH2.chunk.js} +2 -2
- package/dist/scripts/{Ovy1FgPr2.chunk.js.map → DOuiFwIH2.chunk.js.map} +1 -1
- package/dist/scripts/{C5zVzLiv.chunk.js → DRZvc_n5.chunk.js} +2 -2
- package/dist/scripts/{C5zVzLiv.chunk.js.map → DRZvc_n5.chunk.js.map} +1 -1
- package/dist/scripts/{e-cJ9kRJ.chunk.js → DUCTNoXj.chunk.js} +2 -2
- package/dist/scripts/{e-cJ9kRJ.chunk.js.map → DUCTNoXj.chunk.js.map} +1 -1
- package/dist/scripts/{MsShPjH12.chunk.js → Da2KHzN02.chunk.js} +2 -2
- package/dist/scripts/{MsShPjH12.chunk.js.map → Da2KHzN02.chunk.js.map} +1 -1
- package/dist/scripts/{VrblzwSV.chunk.js → DklryBsJ.chunk.js} +2 -2
- package/dist/scripts/{VrblzwSV.chunk.js.map → DklryBsJ.chunk.js.map} +1 -1
- package/dist/scripts/{V1sSszjJ.chunk.js → DsA2RTbF.chunk.js} +2 -2
- package/dist/scripts/{V1sSszjJ.chunk.js.map → DsA2RTbF.chunk.js.map} +1 -1
- package/dist/scripts/{kAq4UzUo.chunk.js → Dsmr6Wly.chunk.js} +2 -2
- package/dist/scripts/{kAq4UzUo.chunk.js.map → Dsmr6Wly.chunk.js.map} +1 -1
- package/dist/scripts/{PVKBLI-T2.chunk.js → DsolW3Wd2.chunk.js} +2 -2
- package/dist/scripts/{PVKBLI-T2.chunk.js.map → DsolW3Wd2.chunk.js.map} +1 -1
- package/dist/scripts/{C4y3yewN.chunk.js → UK8sD-oL.chunk.js} +2 -2
- package/dist/scripts/{C4y3yewN.chunk.js.map → UK8sD-oL.chunk.js.map} +1 -1
- package/dist/scripts/{C79TzhHV.chunk.js → aXgcldgY.chunk.js} +2 -2
- package/dist/scripts/{C79TzhHV.chunk.js.map → aXgcldgY.chunk.js.map} +1 -1
- package/dist/scripts/{app-DddMB3QD.js → app-lnmpv5W4.js} +3 -3
- package/dist/scripts/app-lnmpv5W4.js.map +1 -0
- package/dist/scripts/{CRtOlUhH.chunk.js → c2oA1XgG.chunk.js} +2 -2
- package/dist/scripts/{CRtOlUhH.chunk.js.map → c2oA1XgG.chunk.js.map} +1 -1
- package/dist/scripts/{CKC7r8Ck2.chunk.js → dkfSCDWH2.chunk.js} +2 -2
- package/dist/scripts/{CKC7r8Ck2.chunk.js.map → dkfSCDWH2.chunk.js.map} +1 -1
- package/dist/scripts/{Dwhojt8g2.chunk.js → jErHNuXU2.chunk.js} +2 -2
- package/dist/scripts/{Dwhojt8g2.chunk.js.map → jErHNuXU2.chunk.js.map} +1 -1
- package/dist/scripts/{BXh_8LxI2.chunk.js → mkasrghR2.chunk.js} +2 -2
- package/dist/scripts/{BXh_8LxI2.chunk.js.map → mkasrghR2.chunk.js.map} +1 -1
- package/dist/scripts/{D2D0ku9V2.chunk.js → s776Po8a2.chunk.js} +2 -2
- package/dist/scripts/{D2D0ku9V2.chunk.js.map → s776Po8a2.chunk.js.map} +1 -1
- package/package.json +1 -1
- package/dist/scripts/app-DddMB3QD.js.map +0 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{y as e}from"./TJBzqR6k.chunk.js";import{t}from"./CrBD6Z4s.chunk.js";import{Q as n,c as r,s as i,tt as a}from"./app-
|
|
2
|
-
//# sourceMappingURL=
|
|
1
|
+
import{y as e}from"./TJBzqR6k.chunk.js";import{t}from"./CrBD6Z4s.chunk.js";import{Q as n,c as r,s as i,tt as a}from"./app-lnmpv5W4.js";import{t as o}from"./CTTruW3_2.chunk.js";import{t as s}from"./D2DuwJJH2.chunk.js";var c=function(e){return e.Series=`series`,e.Playlist=`playlist`,e.Widget=`widget`,e.Folder=`category`,e.CategoryTree=`categoryTree`,e}({}),l={sharedVideo:(e,n)=>t.urlBuilder(`/api/objects/${e}`,{shareId:n,query:r.VIDEO}),publicVideo:(e,n)=>t.urlBuilder(`/api/objects/${e}`,{query:`thumbnail,_canBeConsumed,series,season,_rating,libraries{typeId:[17]}`,permissionFilterOption:s.StripMetadata,shareId:n}),getVideosById:e=>t.urlBuilder(`{gateway}/v1/objects`,{"query.video":r.VIDEO_COLLECTION,"query.clip":r.CLIP_COLLECTION,"query.interactive":r.INTERACTIVE_COLLECTION,id:e}),relatedVideos:e=>{let{videoId:n,context:i,collectionId:a,moviesAndTv:o,limit:s}=e,l={videoId:n,limit:s,query:r.VIDEO_COLLECTION};return i&&(i===c.Widget?l[`context.widgetId`]=a:(l[`context.collectionType`]=i,l[`context.collectionId`]=a)),o&&(l[`context.moviesAndTv`]=!0),t.urlBuilder(`{gateway}/v1/suggestions/related-videos`,l)}},u={video(e,n){return{url:t.urlBuilder(`{gateway}/v1/objects/${e}`,{query:r.VIDEO,permissionFilterOption:n}),publicUrl:t.urlBuilder(`/api/objects/${e}`,{query:i.VIDEO,permissionFilterOption:n}),key:`videos:${e}:${n}`}},publicVideo(e,t,n,r){return{url:l.publicVideo(e,t),key:`videos:${e}:public:${t}`,bootstrapName:`shared:object:${e}`,success:n,error:r}},sharedVideo(e,t,n,r){return{url:l.sharedVideo(e,t),key:`shared:video:${e}`,success:n,error:r}},myVideos(e,n){let{VIDEO_COLLECTION:i,CLIP_COLLECTION:c,INTERACTIVE:l}=r,u={query:`(${`videos[${i}]{libraries.typeid:${a.WorkspaceCollection}}`}|${`clips[${c}]`}|${`interactives[${l}]{status:[${o.Published},${o.Draft}]}`}){orderbydesc:id}`,permissionFilterOption:s.StripMetadata};return n&&(u.cursor=n),{url:t.urlBuilder(`{gateway}/v1/objects/${e}/members`,u),key:`my:videos:${n}`}},videos(e,t){return{url:l.getVideosById(e),key:`videos:by:id:${e.join(`,`)}`,success:t}},watchHistoryVideos(e,t){return{url:l.getVideosById(e),key:`watch:history:videos:by:id:${e.join(`,`)}`,success:t}},updateVideo(t,n,r,i,a){return{key:`update:video:${t}`,url:`{gateway}/v1/objects/${t}`,type:e.PUT,data:n,success:r,error:i,always:a}},videoRatings(e,t){let n=e.map(e=>`id=${e}`);if(n.length)return{url:`/api/domain/v2/objects?query=rating&${n.join(`&`)}`,key:`video:ratings:by:id:${e.join(`,`)}`,normalizeOptions:{namespace:t}}},videoMixinAssocs(e,n){if(e.map(e=>`id=${e}`).length)return{url:t.urlBuilder(`{gateway}/v1/objects`,{query:`interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks`,id:e}),publicUrl:t.urlBuilder(`/api/objects`,{query:`interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks`,id:e}),key:`video:mixin:assocs:${e.join(`,`)}`,normalizeOptions:{namespace:n}}},getRestrictions(e){let t=e.slice().sort();return{url:`/api/domain/v1/restrictedobjects?objectTypeId=${a.Video}${t.map(e=>`&objectId=${e}`).join(``)}`,key:`restrictions:${t.join(`,`)}`,normalizeOptions:{namespace:`domain`,idAttribute:`objectId`}}},delete(t,n,r){return{url:`{gateway}/v1/objects/${t}`,key:`delete:video:${t}`,type:e.DELETE,success:n,error:r,invalidationKeys:[`videos`,`search`]}},deleteBulk(t,n,r,i,a){let o=t.map(e=>`videoIds=${e}`).join(`&`);return{url:`/api/domain/v1/libraries/${n}/videos?${[`categoryId=${r}`,`${o}`].join(`&`)}`,key:`delete:bulk:video:${t.join(`:`)}:${n}:${r}`,type:e.DELETE,success:i,error:a,invalidationKeys:[`videos`,`search`]}},relatedVideos(e){let{videoId:t,context:n,collectionId:r,moviesAndTv:i}=e;return{url:l.relatedVideos(e),key:`related:videos:${t}:${n}:${r}:${i}`}},collectionVideos(e,i,a,c,l,u){let d=n.getVideoSortParam(i),{VIDEO_COLLECTION:f,CLIP_COLLECTION:p,INTERACTIVE:m}=r,h={query:`(${`videos[${f}]`}|${`clips[${p}]`}|${`interactives[${m}]{status:[${o.Published},${o.Draft}]}`})${d?`{${d}}`:``}`,permissionFilterOption:s.FilterOut,...a?{cursor:a}:{}},g=[`folder`,`videos`,e,a,i].filter(e=>!!e).join(`:`);return{url:t.urlBuilder(`{gateway}/v1/objects/${e}/members`,h),key:g,success:c,error:l,always:u}},pointsOfInterest(e,n,r,i,a){let o={query:`{limit:100}`,cursor:n};return{url:t.urlBuilder(`{gateway}/v1/objects/${e}/pointsofinterest`,o),publicUrl:t.urlBuilder(`/api/objects/${e}/pointsofinterest`,o),key:`pointsofinterest:${e}${n?`:${n}`:``}`,success:r,error:i,always:a}},regionAlternatives(e,t,n,r){return{url:`/api/objects/videos/${e}/region-alternatives`,publicUrl:`/api/objects/videos/${e}/region-alternatives`,key:`video:regionAlternatives:${e}`,normalize:!1,success:t,error:n,always:r}}};export{u as t};
|
|
2
|
+
//# sourceMappingURL=s776Po8a2.chunk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"D2D0ku9V2.chunk.js","names":[],"sources":["../../../../libs/shared/src/enums/RelatedVideosContext.ts","../../../../libs/shared/src/flight-requests/VideoRequests.ts"],"sourcesContent":["export enum RelatedVideosContext {\n Series = 'series',\n Playlist = 'playlist',\n Widget = 'widget',\n Folder = 'category',\n CategoryTree = 'categoryTree'\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { PointOfInterestCollection, UpdateVideoRequest, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { RegionAlternative } from 'libs/shared/interfaces/models/RegionAlternative';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nconst endpoints = {\n sharedVideo: (id: string, shareId: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n shareId,\n query: SharedWithStatements.VIDEO\n }),\n\n publicVideo: (id: string, shareId?: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n // Query statement here is coupled with ClickView.Lite.Common\\Services\\OpenGraph\\OpenGraphService.cs\n // in lite. If you update this, please update both.\n query: 'thumbnail,_canBeConsumed,series,season,_rating,libraries{typeId:[17]}',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n shareId\n }),\n\n getVideosById: (ids: string[]) => {\n return UrlHelper.urlBuilder('{gateway}/v1/objects', {\n 'query.video': SharedWithStatements.VIDEO_COLLECTION,\n 'query.clip': SharedWithStatements.CLIP_COLLECTION,\n 'query.interactive': SharedWithStatements.INTERACTIVE_COLLECTION,\n 'id': ids\n });\n },\n\n relatedVideos: (options: {\n videoId: string,\n context?: RelatedVideosContext,\n collectionId?: string,\n moviesAndTv?: boolean,\n limit: number\n }) => {\n const { videoId, context, collectionId, moviesAndTv, limit } = options;\n\n const params: HashObject = {\n videoId,\n limit,\n query: SharedWithStatements.VIDEO_COLLECTION\n };\n\n if (context) {\n if (context === RelatedVideosContext.Widget) {\n params['context.widgetId'] = collectionId;\n } else {\n params['context.collectionType'] = context;\n params['context.collectionId'] = collectionId;\n }\n }\n\n if (moviesAndTv)\n params['context.moviesAndTv'] = true;\n\n return UrlHelper.urlBuilder('{gateway}/v1/suggestions/related-videos', params);\n }\n};\n\nexport const VideoRequests = {\n video(id: string, permissionFilterOption?: PermissionFilterOption): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: SharedWithStatements.VIDEO,\n permissionFilterOption\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: PublicWithStatement.VIDEO,\n permissionFilterOption\n }),\n key: `videos:${id}:${permissionFilterOption}`\n };\n },\n\n publicVideo(\n id: string,\n shareId?: string,\n success?: (video: Video) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n url: endpoints.publicVideo(id, shareId),\n key: `videos:${id}:public:${shareId}`,\n bootstrapName: `shared:object:${id}`,\n success,\n error\n };\n },\n\n sharedVideo(\n id: string,\n shareId: string,\n success?: (video: Video) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n url: endpoints.sharedVideo(id, shareId),\n key: `shared:video:${id}`,\n success,\n error\n };\n },\n\n myVideos(userId: string, cursor: string): Flight.Request {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const videoQuery = `videos[${VIDEO_COLLECTION}]{libraries.typeid:${MasterType.WorkspaceCollection}}`;\n const clipQuery = `clips[${CLIP_COLLECTION}]`;\n const interactiveQuery = `interactives[${INTERACTIVE}]{status:[${CurationStatus.Published},${CurationStatus.Draft}]}`;\n\n const params: HashObject = {\n query: `(${videoQuery}|${clipQuery}|${interactiveQuery}){orderbydesc:id}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${userId}/members`, params),\n key: `my:videos:${cursor}`\n };\n },\n\n videos(ids: string[], success?: (videos: Video[]) => void): Flight.Request {\n return {\n url: endpoints.getVideosById(ids),\n key: `videos:by:id:${ids.join(',')}`,\n success\n };\n },\n\n watchHistoryVideos(\n ids: string[],\n success?: (videos: Video[]) => void\n ): Flight.Request {\n return {\n url: endpoints.getVideosById(ids),\n key: `watch:history:videos:by:id:${ids.join(',')}`,\n success\n };\n },\n\n updateVideo(\n id: string,\n data: UpdateVideoRequest,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: `update:video:${id}`,\n url: `{gateway}/v1/objects/${id}`,\n type: HttpVerbs.PUT,\n data,\n success,\n error,\n always\n };\n },\n\n /**\n * This is simply an example to show the prototype for useVideoMixin\n * eventually there will be endpoints in domain that let us fetch members\n * without fetching the objects properties, so we can fetch stuff like\n * hasInteractives and isFavourited as subsequent calls\n */\n videoRatings(ids: string[], namespace?: string): Flight.Request {\n const params = ids.map(i => `id=${i}`);\n\n if (!params.length)\n return;\n\n return {\n url: `/api/domain/v2/objects?query=rating&${params.join('&')}`,\n key: `video:ratings:by:id:${ids.join(',')}`,\n normalizeOptions: {\n namespace\n }\n };\n },\n\n videoMixinAssocs(ids: string[], namespace?: string): Flight.PublicRequest {\n const params = ids.map(i => `id=${i}`);\n\n if (!params.length)\n return;\n\n /**\n * IMPORTANT!\n * \n * This request is used for BOTH clips and videos. This means these requests will fail if you\n * add assocs in the future that are not supported for both object types. If you find yourself in this\n * case, what you should do is:\n * \n * 1. Consider whether clips should support the assoc that you're hydrating for videos. In most cases,\n * I think they should, as we want clips and videos to basically support the same fields and metadata.\n * 2. If the above is false or can't be done right now, you will need to create a separate request for clips\n * and update the logic in useVideoMixin to handle this.\n */\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/objects', {\n query: 'interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks',\n id: ids\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects`, {\n query: 'interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks',\n id: ids\n }),\n /**\n * We are intentionally NOT sorting the IDs here. This is because `useVideoMixin` wants to provide\n * the IDs in their original order so that the cache key here doesn't change for subsequent calls.\n * \n * Here is an example of a problem that would occur if we were sorting: say we search for something,\n * and load the first page of 25 results. The videos and clips here would have their IDs sorted in the cache\n * key, then fetched. Then, we scrolled down and fetched the next 25, leading to 50 IDs in the array. If we\n * sort the IDs in the key, the keys would change from the first request, leading to all of the videos/clips\n * from the first request being fetched a second time unnecessarily. Every time you'd fetch a new page, you'd\n * be making multiple unnecessary API calls.\n * \n * TL;DR: Don't sort the IDs here, `useVideoMixin` will handle that.\n */\n key: `video:mixin:assocs:${ids.join(',')}`,\n normalizeOptions: {\n namespace\n }\n };\n },\n\n getRestrictions(videoIds: string[]): Flight.Request {\n const sortedIds = videoIds.slice().sort();\n\n return {\n url: '/api/domain/v1/restrictedobjects' +\n `?objectTypeId=${MasterType.Video}${sortedIds.map(id => `&objectId=${id}`).join('')}`,\n key: `restrictions:${sortedIds.join(',')}`,\n normalizeOptions: {\n namespace: 'domain',\n idAttribute: 'objectId'\n }\n };\n },\n\n delete(videoId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}`,\n key: `delete:video:${videoId}`,\n type: HttpVerbs.DELETE,\n success,\n error,\n invalidationKeys: [ 'videos', 'search' ]\n };\n },\n\n deleteBulk(\n videoId: string[],\n libraryId: string,\n categoryId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n const videoIds = videoId.map(id => `videoIds=${id}`).join('&');\n const params = [\n `categoryId=${categoryId}`,\n `${videoIds}`\n ].join('&');\n\n return {\n url: `/api/domain/v1/libraries/${libraryId}/videos?${params}`,\n key: `delete:bulk:video:${videoId.join(':')}:${libraryId}:${categoryId}`,\n type: HttpVerbs.DELETE,\n success,\n error,\n invalidationKeys: [ 'videos', 'search' ]\n };\n },\n\n relatedVideos(options: {\n videoId: string,\n context?: RelatedVideosContext,\n collectionId?: string,\n moviesAndTv?: boolean,\n /**\n * This limit is intentionall not in the key. See useGetRelatedVideos for an explanation\n */\n limit: number\n }): Flight.Request {\n const { videoId, context, collectionId, moviesAndTv } = options;\n\n return {\n url: endpoints.relatedVideos(options),\n key: `related:videos:${videoId}:${context}:${collectionId}:${moviesAndTv}`\n };\n },\n\n collectionVideos(\n collectionId: string,\n sort?: VideoSortType,\n cursor?: string,\n success?: (data: VideoCollection) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const videoQuery = `videos[${VIDEO_COLLECTION}]`;\n const clipQuery = `clips[${CLIP_COLLECTION}]`;\n const interactiveQuery = `interactives[${INTERACTIVE}]{status:[${CurationStatus.Published},${CurationStatus.Draft}]}`;\n\n const params: HashObject = {\n query: `(${videoQuery}|${clipQuery}|${interactiveQuery})${sortFilter ? `{${sortFilter}}` : ''}`,\n permissionFilterOption: PermissionFilterOption.FilterOut,\n ...(cursor ? { cursor } : {})\n };\n\n const key = [ 'folder', 'videos', collectionId, cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${collectionId}/members`, params),\n key,\n success,\n error,\n always\n };\n },\n\n pointsOfInterest(\n videoId: string,\n cursor?: string,\n success?: (data: PointOfInterestCollection) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.PublicRequest {\n const queryStringObj = { query: '{limit:100}', cursor };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}/pointsofinterest`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/pointsofinterest`, queryStringObj),\n key: `pointsofinterest:${videoId}${cursor ? `:${cursor}` : ''}`,\n success,\n error,\n always\n };\n },\n\n regionAlternatives(\n videoId: string,\n success?: (data: RegionAlternative[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.PublicRequest {\n return {\n url: `/api/objects/videos/${videoId}/region-alternatives`,\n publicUrl: `/api/objects/videos/${videoId}/region-alternatives`,\n key: `video:regionAlternatives:${videoId}`,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"s776Po8a2.chunk.js","names":[],"sources":["../../../../libs/shared/src/enums/RelatedVideosContext.ts","../../../../libs/shared/src/flight-requests/VideoRequests.ts"],"sourcesContent":["export enum RelatedVideosContext {\n Series = 'series',\n Playlist = 'playlist',\n Widget = 'widget',\n Folder = 'category',\n CategoryTree = 'categoryTree'\n}\n","import { HttpVerbs } from 'libs/common/backbone/enums/HttpVerbs';\nimport { Xhr } from 'libs/common/backbone/interfaces/Xhr';\nimport { UrlHelper } from 'libs/common/backbone/utils/UrlHelper';\nimport { Flight } from 'libs/common/flight';\nimport { HashObject } from 'libs/common/react/interfaces';\n\nimport { PublicWithStatement, SharedWithStatements } from 'libs/shared/constants/WithStatements';\nimport { CurationStatus } from 'libs/shared/enums/CurationStatus';\nimport { MasterType } from 'libs/shared/enums/MasterType';\nimport { PermissionFilterOption } from 'libs/shared/enums/PermissionFilterOption';\nimport { RelatedVideosContext } from 'libs/shared/enums/RelatedVideosContext';\nimport { VideoSortType } from 'libs/shared/enums/VideoSortType';\nimport { PointOfInterestCollection, UpdateVideoRequest, Video, VideoCollection } from 'libs/shared/interfaces';\nimport { RegionAlternative } from 'libs/shared/interfaces/models/RegionAlternative';\nimport { VideoSortHelper } from 'libs/shared/utils/VideoSortHelper';\n\nconst endpoints = {\n sharedVideo: (id: string, shareId: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n shareId,\n query: SharedWithStatements.VIDEO\n }),\n\n publicVideo: (id: string, shareId?: string) => UrlHelper.urlBuilder(`/api/objects/${id}`, {\n // Query statement here is coupled with ClickView.Lite.Common\\Services\\OpenGraph\\OpenGraphService.cs\n // in lite. If you update this, please update both.\n query: 'thumbnail,_canBeConsumed,series,season,_rating,libraries{typeId:[17]}',\n permissionFilterOption: PermissionFilterOption.StripMetadata,\n shareId\n }),\n\n getVideosById: (ids: string[]) => {\n return UrlHelper.urlBuilder('{gateway}/v1/objects', {\n 'query.video': SharedWithStatements.VIDEO_COLLECTION,\n 'query.clip': SharedWithStatements.CLIP_COLLECTION,\n 'query.interactive': SharedWithStatements.INTERACTIVE_COLLECTION,\n 'id': ids\n });\n },\n\n relatedVideos: (options: {\n videoId: string,\n context?: RelatedVideosContext,\n collectionId?: string,\n moviesAndTv?: boolean,\n limit: number\n }) => {\n const { videoId, context, collectionId, moviesAndTv, limit } = options;\n\n const params: HashObject = {\n videoId,\n limit,\n query: SharedWithStatements.VIDEO_COLLECTION\n };\n\n if (context) {\n if (context === RelatedVideosContext.Widget) {\n params['context.widgetId'] = collectionId;\n } else {\n params['context.collectionType'] = context;\n params['context.collectionId'] = collectionId;\n }\n }\n\n if (moviesAndTv)\n params['context.moviesAndTv'] = true;\n\n return UrlHelper.urlBuilder('{gateway}/v1/suggestions/related-videos', params);\n }\n};\n\nexport const VideoRequests = {\n video(id: string, permissionFilterOption?: PermissionFilterOption): Flight.PublicRequest {\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${id}`, {\n query: SharedWithStatements.VIDEO,\n permissionFilterOption\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${id}`, {\n query: PublicWithStatement.VIDEO,\n permissionFilterOption\n }),\n key: `videos:${id}:${permissionFilterOption}`\n };\n },\n\n publicVideo(\n id: string,\n shareId?: string,\n success?: (video: Video) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n url: endpoints.publicVideo(id, shareId),\n key: `videos:${id}:public:${shareId}`,\n bootstrapName: `shared:object:${id}`,\n success,\n error\n };\n },\n\n sharedVideo(\n id: string,\n shareId: string,\n success?: (video: Video) => void,\n error?: (xhr: Xhr) => void\n ): Flight.Request {\n return {\n url: endpoints.sharedVideo(id, shareId),\n key: `shared:video:${id}`,\n success,\n error\n };\n },\n\n myVideos(userId: string, cursor: string): Flight.Request {\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const videoQuery = `videos[${VIDEO_COLLECTION}]{libraries.typeid:${MasterType.WorkspaceCollection}}`;\n const clipQuery = `clips[${CLIP_COLLECTION}]`;\n const interactiveQuery = `interactives[${INTERACTIVE}]{status:[${CurationStatus.Published},${CurationStatus.Draft}]}`;\n\n const params: HashObject = {\n query: `(${videoQuery}|${clipQuery}|${interactiveQuery}){orderbydesc:id}`,\n permissionFilterOption: PermissionFilterOption.StripMetadata\n };\n\n if (cursor)\n params.cursor = cursor;\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${userId}/members`, params),\n key: `my:videos:${cursor}`\n };\n },\n\n videos(ids: string[], success?: (videos: Video[]) => void): Flight.Request {\n return {\n url: endpoints.getVideosById(ids),\n key: `videos:by:id:${ids.join(',')}`,\n success\n };\n },\n\n watchHistoryVideos(\n ids: string[],\n success?: (videos: Video[]) => void\n ): Flight.Request {\n return {\n url: endpoints.getVideosById(ids),\n key: `watch:history:videos:by:id:${ids.join(',')}`,\n success\n };\n },\n\n updateVideo(\n id: string,\n data: UpdateVideoRequest,\n success?: () => void,\n error?: () => void,\n always?: () => void\n ): Flight.Request {\n return {\n key: `update:video:${id}`,\n url: `{gateway}/v1/objects/${id}`,\n type: HttpVerbs.PUT,\n data,\n success,\n error,\n always\n };\n },\n\n /**\n * This is simply an example to show the prototype for useVideoMixin\n * eventually there will be endpoints in domain that let us fetch members\n * without fetching the objects properties, so we can fetch stuff like\n * hasInteractives and isFavourited as subsequent calls\n */\n videoRatings(ids: string[], namespace?: string): Flight.Request {\n const params = ids.map(i => `id=${i}`);\n\n if (!params.length)\n return;\n\n return {\n url: `/api/domain/v2/objects?query=rating&${params.join('&')}`,\n key: `video:ratings:by:id:${ids.join(',')}`,\n normalizeOptions: {\n namespace\n }\n };\n },\n\n videoMixinAssocs(ids: string[], namespace?: string): Flight.PublicRequest {\n const params = ids.map(i => `id=${i}`);\n\n if (!params.length)\n return;\n\n /**\n * IMPORTANT!\n * \n * This request is used for BOTH clips and videos. This means these requests will fail if you\n * add assocs in the future that are not supported for both object types. If you find yourself in this\n * case, what you should do is:\n * \n * 1. Consider whether clips should support the assoc that you're hydrating for videos. In most cases,\n * I think they should, as we want clips and videos to basically support the same fields and metadata.\n * 2. If the above is false or can't be done right now, you will need to create a separate request for clips\n * and update the logic in useVideoMixin to handle this.\n */\n return {\n url: UrlHelper.urlBuilder('{gateway}/v1/objects', {\n query: 'interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks',\n id: ids\n }),\n publicUrl: UrlHelper.urlBuilder(`/api/objects`, {\n query: 'interactives{limit:100},resources{limit:100},links{limit:100},_hasCurriculumLinks',\n id: ids\n }),\n /**\n * We are intentionally NOT sorting the IDs here. This is because `useVideoMixin` wants to provide\n * the IDs in their original order so that the cache key here doesn't change for subsequent calls.\n * \n * Here is an example of a problem that would occur if we were sorting: say we search for something,\n * and load the first page of 25 results. The videos and clips here would have their IDs sorted in the cache\n * key, then fetched. Then, we scrolled down and fetched the next 25, leading to 50 IDs in the array. If we\n * sort the IDs in the key, the keys would change from the first request, leading to all of the videos/clips\n * from the first request being fetched a second time unnecessarily. Every time you'd fetch a new page, you'd\n * be making multiple unnecessary API calls.\n * \n * TL;DR: Don't sort the IDs here, `useVideoMixin` will handle that.\n */\n key: `video:mixin:assocs:${ids.join(',')}`,\n normalizeOptions: {\n namespace\n }\n };\n },\n\n getRestrictions(videoIds: string[]): Flight.Request {\n const sortedIds = videoIds.slice().sort();\n\n return {\n url: '/api/domain/v1/restrictedobjects' +\n `?objectTypeId=${MasterType.Video}${sortedIds.map(id => `&objectId=${id}`).join('')}`,\n key: `restrictions:${sortedIds.join(',')}`,\n normalizeOptions: {\n namespace: 'domain',\n idAttribute: 'objectId'\n }\n };\n },\n\n delete(videoId: string, success?: () => void, error?: () => void): Flight.Request {\n return {\n url: `{gateway}/v1/objects/${videoId}`,\n key: `delete:video:${videoId}`,\n type: HttpVerbs.DELETE,\n success,\n error,\n invalidationKeys: [ 'videos', 'search' ]\n };\n },\n\n deleteBulk(\n videoId: string[],\n libraryId: string,\n categoryId: string,\n success?: () => void,\n error?: () => void\n ): Flight.Request {\n const videoIds = videoId.map(id => `videoIds=${id}`).join('&');\n const params = [\n `categoryId=${categoryId}`,\n `${videoIds}`\n ].join('&');\n\n return {\n url: `/api/domain/v1/libraries/${libraryId}/videos?${params}`,\n key: `delete:bulk:video:${videoId.join(':')}:${libraryId}:${categoryId}`,\n type: HttpVerbs.DELETE,\n success,\n error,\n invalidationKeys: [ 'videos', 'search' ]\n };\n },\n\n relatedVideos(options: {\n videoId: string,\n context?: RelatedVideosContext,\n collectionId?: string,\n moviesAndTv?: boolean,\n /**\n * This limit is intentionall not in the key. See useGetRelatedVideos for an explanation\n */\n limit: number\n }): Flight.Request {\n const { videoId, context, collectionId, moviesAndTv } = options;\n\n return {\n url: endpoints.relatedVideos(options),\n key: `related:videos:${videoId}:${context}:${collectionId}:${moviesAndTv}`\n };\n },\n\n collectionVideos(\n collectionId: string,\n sort?: VideoSortType,\n cursor?: string,\n success?: (data: VideoCollection) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.Request {\n const sortFilter = VideoSortHelper.getVideoSortParam(sort);\n const { VIDEO_COLLECTION, CLIP_COLLECTION, INTERACTIVE } = SharedWithStatements;\n\n const videoQuery = `videos[${VIDEO_COLLECTION}]`;\n const clipQuery = `clips[${CLIP_COLLECTION}]`;\n const interactiveQuery = `interactives[${INTERACTIVE}]{status:[${CurationStatus.Published},${CurationStatus.Draft}]}`;\n\n const params: HashObject = {\n query: `(${videoQuery}|${clipQuery}|${interactiveQuery})${sortFilter ? `{${sortFilter}}` : ''}`,\n permissionFilterOption: PermissionFilterOption.FilterOut,\n ...(cursor ? { cursor } : {})\n };\n\n const key = [ 'folder', 'videos', collectionId, cursor, sort ].filter(k => !!k).join(':');\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${collectionId}/members`, params),\n key,\n success,\n error,\n always\n };\n },\n\n pointsOfInterest(\n videoId: string,\n cursor?: string,\n success?: (data: PointOfInterestCollection) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.PublicRequest {\n const queryStringObj = { query: '{limit:100}', cursor };\n\n return {\n url: UrlHelper.urlBuilder(`{gateway}/v1/objects/${videoId}/pointsofinterest`, queryStringObj),\n publicUrl: UrlHelper.urlBuilder(`/api/objects/${videoId}/pointsofinterest`, queryStringObj),\n key: `pointsofinterest:${videoId}${cursor ? `:${cursor}` : ''}`,\n success,\n error,\n always\n };\n },\n\n regionAlternatives(\n videoId: string,\n success?: (data: RegionAlternative[]) => void,\n error?: (xhr: Xhr) => void,\n always?: () => void\n ): Flight.PublicRequest {\n return {\n url: `/api/objects/videos/${videoId}/region-alternatives`,\n publicUrl: `/api/objects/videos/${videoId}/region-alternatives`,\n key: `video:regionAlternatives:${videoId}`,\n normalize: false,\n success,\n error,\n always\n };\n }\n};\n"],"mappings":"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"}
|