@videts/vide 0.8.0 → 0.9.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.
Files changed (147) hide show
  1. package/README.md +9 -9
  2. package/dist/chunk-2OVLZ27V.mjs +1 -0
  3. package/dist/chunk-3RDTWUHH.mjs +1 -0
  4. package/dist/chunk-6DWWYSH4.mjs +1 -0
  5. package/dist/chunk-G74QBLVV.mjs +1 -0
  6. package/dist/chunk-JRU2FKRB.mjs +2 -0
  7. package/dist/chunk-LPSJOF2I.mjs +2 -0
  8. package/dist/chunk-NA4C7W64.mjs +2 -0
  9. package/dist/chunk-UY5CGRNN.mjs +1 -0
  10. package/dist/chunk-VPH4JIJV.mjs +1 -0
  11. package/dist/chunk-WINCDUN5.mjs +1 -0
  12. package/dist/dash/index.d.ts +3 -9
  13. package/dist/dash/index.js +1 -0
  14. package/dist/dash/index.mjs +1 -2
  15. package/dist/drm/index.d.ts +4 -31
  16. package/dist/drm/index.js +1 -0
  17. package/dist/drm/index.mjs +1 -1
  18. package/dist/hls/index.d.ts +3 -9
  19. package/dist/hls/index.js +1 -0
  20. package/dist/hls/index.mjs +1 -2
  21. package/dist/index.d.ts +2 -2
  22. package/dist/index.js +1 -0
  23. package/dist/index.mjs +1 -1
  24. package/dist/omid/index.d.ts +2 -2
  25. package/dist/omid/index.js +2 -0
  26. package/dist/react/index.d.ts +240 -0
  27. package/dist/react/index.js +2 -0
  28. package/dist/react/index.mjs +2 -0
  29. package/dist/simid/index.d.ts +2 -2
  30. package/dist/simid/index.js +1 -0
  31. package/dist/ssai/index.d.ts +4 -40
  32. package/dist/ssai/index.js +1 -0
  33. package/dist/ssai/index.mjs +1 -1
  34. package/dist/svelte/DashPlugin.svelte +23 -0
  35. package/dist/svelte/DashPlugin.svelte.d.ts +4 -0
  36. package/dist/svelte/DrmPlugin.svelte +20 -0
  37. package/dist/svelte/DrmPlugin.svelte.d.ts +4 -0
  38. package/dist/svelte/HlsPlugin.svelte +23 -0
  39. package/dist/svelte/HlsPlugin.svelte.d.ts +4 -0
  40. package/dist/svelte/SsaiPlugin.svelte +23 -0
  41. package/dist/svelte/SsaiPlugin.svelte.d.ts +4 -0
  42. package/dist/svelte/VastPlugin.svelte +20 -0
  43. package/dist/svelte/VastPlugin.svelte.d.ts +4 -0
  44. package/dist/svelte/VideControls.svelte +22 -0
  45. package/dist/svelte/VideControls.svelte.d.ts +8 -0
  46. package/dist/svelte/VideUI.svelte +49 -0
  47. package/dist/svelte/VideUI.svelte.d.ts +9 -0
  48. package/dist/svelte/Video.svelte +31 -0
  49. package/dist/svelte/Video.svelte.d.ts +10 -0
  50. package/dist/svelte/VmapPlugin.svelte +20 -0
  51. package/dist/svelte/VmapPlugin.svelte.d.ts +4 -0
  52. package/dist/svelte/components/AdCountdown.svelte +37 -0
  53. package/dist/svelte/components/AdCountdown.svelte.d.ts +7 -0
  54. package/dist/svelte/components/AdLabel.svelte +26 -0
  55. package/dist/svelte/components/AdLabel.svelte.d.ts +8 -0
  56. package/dist/svelte/components/AdLearnMore.svelte +42 -0
  57. package/dist/svelte/components/AdLearnMore.svelte.d.ts +9 -0
  58. package/dist/svelte/components/AdOverlay.svelte +46 -0
  59. package/dist/svelte/components/AdOverlay.svelte.d.ts +8 -0
  60. package/dist/svelte/components/AdSkip.svelte +67 -0
  61. package/dist/svelte/components/AdSkip.svelte.d.ts +8 -0
  62. package/dist/svelte/components/BigPlayButton.svelte +46 -0
  63. package/dist/svelte/components/BigPlayButton.svelte.d.ts +8 -0
  64. package/dist/svelte/components/ClickPlay.svelte +76 -0
  65. package/dist/svelte/components/ClickPlay.svelte.d.ts +7 -0
  66. package/dist/svelte/components/ErrorDisplay.svelte +27 -0
  67. package/dist/svelte/components/ErrorDisplay.svelte.d.ts +6 -0
  68. package/dist/svelte/components/FullscreenButton.svelte +65 -0
  69. package/dist/svelte/components/FullscreenButton.svelte.d.ts +9 -0
  70. package/dist/svelte/components/Loader.svelte +11 -0
  71. package/dist/svelte/components/Loader.svelte.d.ts +6 -0
  72. package/dist/svelte/components/MuteButton.svelte +57 -0
  73. package/dist/svelte/components/MuteButton.svelte.d.ts +8 -0
  74. package/dist/svelte/components/PlayButton.svelte +63 -0
  75. package/dist/svelte/components/PlayButton.svelte.d.ts +8 -0
  76. package/dist/svelte/components/Poster.svelte +13 -0
  77. package/dist/svelte/components/Poster.svelte.d.ts +8 -0
  78. package/dist/svelte/components/Progress.svelte +101 -0
  79. package/dist/svelte/components/Progress.svelte.d.ts +6 -0
  80. package/dist/svelte/components/TimeDisplay.svelte +33 -0
  81. package/dist/svelte/components/TimeDisplay.svelte.d.ts +7 -0
  82. package/dist/svelte/components/Volume.svelte +117 -0
  83. package/dist/svelte/components/Volume.svelte.d.ts +8 -0
  84. package/dist/svelte/context.d.ts +6 -0
  85. package/dist/svelte/context.js +10 -0
  86. package/dist/svelte/create-vide-player.svelte.d.ts +2 -0
  87. package/dist/svelte/create-vide-player.svelte.js +22 -0
  88. package/dist/svelte/helpers.d.ts +17 -0
  89. package/dist/svelte/helpers.js +31 -0
  90. package/dist/svelte/icons/IconFullscreenEnter.svelte +3 -0
  91. package/dist/svelte/icons/IconFullscreenEnter.svelte.d.ts +26 -0
  92. package/dist/svelte/icons/IconFullscreenExit.svelte +3 -0
  93. package/dist/svelte/icons/IconFullscreenExit.svelte.d.ts +26 -0
  94. package/dist/svelte/icons/IconPause.svelte +3 -0
  95. package/dist/svelte/icons/IconPause.svelte.d.ts +26 -0
  96. package/dist/svelte/icons/IconPlay.svelte +3 -0
  97. package/dist/svelte/icons/IconPlay.svelte.d.ts +26 -0
  98. package/dist/svelte/icons/IconVolumeHigh.svelte +3 -0
  99. package/dist/svelte/icons/IconVolumeHigh.svelte.d.ts +26 -0
  100. package/dist/svelte/icons/IconVolumeLow.svelte +3 -0
  101. package/dist/svelte/icons/IconVolumeLow.svelte.d.ts +26 -0
  102. package/dist/svelte/icons/IconVolumeMute.svelte +3 -0
  103. package/dist/svelte/icons/IconVolumeMute.svelte.d.ts +26 -0
  104. package/dist/svelte/index.d.ts +42 -0
  105. package/dist/svelte/index.js +39 -0
  106. package/dist/svelte/use-ad-state.svelte.d.ts +7 -0
  107. package/dist/svelte/use-ad-state.svelte.js +40 -0
  108. package/dist/svelte/use-autohide.svelte.d.ts +2 -0
  109. package/dist/svelte/use-autohide.svelte.js +68 -0
  110. package/dist/svelte/use-keyboard.svelte.d.ts +7 -0
  111. package/dist/svelte/use-keyboard.svelte.js +96 -0
  112. package/dist/svelte/use-plugin.svelte.d.ts +15 -0
  113. package/dist/svelte/use-plugin.svelte.js +40 -0
  114. package/dist/svelte/use-vide-event.svelte.d.ts +3 -0
  115. package/dist/svelte/use-vide-event.svelte.js +9 -0
  116. package/dist/{types-vxIcXgJz.d.ts → types-BsEF8iWC.d.ts} +106 -1
  117. package/dist/types-C1_eVsFF.d.ts +49 -0
  118. package/dist/types-C6XFF6w_.d.ts +30 -0
  119. package/dist/types-COeag8fU.d.ts +173 -0
  120. package/dist/types-CwjR99DL.d.ts +10 -0
  121. package/dist/types-DsixuzNX.d.ts +52 -0
  122. package/dist/types-DzY1cmXC.d.ts +10 -0
  123. package/dist/types-SuT99_Z3.d.ts +40 -0
  124. package/dist/ui/index.d.ts +7 -37
  125. package/dist/ui/index.js +1 -0
  126. package/dist/ui/index.mjs +1 -2
  127. package/dist/ui/theme.css +138 -46
  128. package/dist/vast/index.d.ts +188 -4
  129. package/dist/vast/index.js +1 -0
  130. package/dist/vast/index.mjs +1 -1
  131. package/dist/vide.core.global.js +1 -1
  132. package/dist/vide.global.js +2 -2
  133. package/dist/vide.ssai.global.js +1 -1
  134. package/dist/vide.ui.css +138 -46
  135. package/dist/vide.ui.global.js +1 -1
  136. package/dist/vide.vast.global.js +1 -1
  137. package/dist/vide.vmap.global.js +1 -1
  138. package/dist/vmap/index.d.ts +5 -49
  139. package/dist/vmap/index.js +1 -0
  140. package/dist/vmap/index.mjs +1 -1
  141. package/dist/vue/index.d.ts +354 -0
  142. package/dist/vue/index.js +2 -0
  143. package/dist/vue/index.mjs +2 -0
  144. package/package.json +46 -5
  145. package/dist/chunk-726XNUGZ.mjs +0 -1
  146. package/dist/chunk-G4Q7R3SH.mjs +0 -1
  147. package/dist/types-CAJmacV6.d.ts +0 -98
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@videts/vide",
3
- "version": "0.8.0",
3
+ "version": "0.9.2",
4
4
  "description": "Zero-config, web-standard-first modular video player. VAST, VMAP, HLS, DASH, DRM, SSAI, OMID, SIMID — all as plugins. Core under 2KB gzip.",
5
5
  "type": "module",
6
6
  "unpkg": "dist/vide.global.js",
@@ -46,14 +46,28 @@
46
46
  "types": "./dist/ui/index.d.ts",
47
47
  "import": "./dist/ui/index.mjs"
48
48
  },
49
- "./ui/theme.css": "./dist/ui/theme.css"
49
+ "./ui/theme.css": "./dist/ui/theme.css",
50
+ "./react": {
51
+ "types": "./dist/react/index.d.ts",
52
+ "import": "./dist/react/index.mjs"
53
+ },
54
+ "./vue": {
55
+ "types": "./dist/vue/index.d.ts",
56
+ "import": "./dist/vue/index.mjs"
57
+ },
58
+ "./svelte": {
59
+ "types": "./dist/svelte/index.d.ts",
60
+ "svelte": "./dist/svelte/index.js",
61
+ "default": "./dist/svelte/index.js"
62
+ }
50
63
  },
51
64
  "files": [
52
65
  "dist"
53
66
  ],
54
67
  "sideEffects": false,
55
68
  "scripts": {
56
- "build": "tsup",
69
+ "build": "tsup && pnpm build:svelte",
70
+ "build:svelte": "svelte-package -i src/svelte -o dist/svelte && find src -name '*.d.ts' -o -name '*.d.ts.map' | xargs rm -f",
57
71
  "test": "vitest run",
58
72
  "test:watch": "vitest",
59
73
  "test:e2e": "playwright test",
@@ -69,19 +83,34 @@
69
83
  "devDependencies": {
70
84
  "@biomejs/biome": "^1.9.0",
71
85
  "@playwright/test": "^1.58.2",
86
+ "@testing-library/react": "^16.0.0",
87
+ "@types/react": "^19.0.0",
88
+ "@types/react-dom": "^19.0.0",
89
+ "@sveltejs/package": "^2.0.0",
90
+ "@sveltejs/vite-plugin-svelte": "^4.0.0",
91
+ "@testing-library/svelte": "^5.0.0",
92
+ "@vue/test-utils": "^2.4.6",
72
93
  "dashjs": "^4.7.0",
73
94
  "hls.js": "^1.6.15",
74
95
  "jsdom": "^25.0.0",
96
+ "react": "^19.0.0",
97
+ "react-dom": "^19.0.0",
75
98
  "tsup": "^8.0.0",
76
99
  "typedoc": "^0.28.17",
77
100
  "typedoc-plugin-markdown": "^4.10.0",
78
101
  "typescript": "^5.6.0",
79
102
  "vitepress": "^1.6.4",
80
- "vitest": "^2.0.0"
103
+ "vitest": "^2.0.0",
104
+ "svelte": "^5.0.0",
105
+ "vue": "^3.5.29"
81
106
  },
82
107
  "peerDependencies": {
83
108
  "dashjs": "^4.0.0",
84
- "hls.js": "^1.0.0"
109
+ "hls.js": "^1.0.0",
110
+ "react": "^18.0.0 || ^19.0.0",
111
+ "react-dom": "^18.0.0 || ^19.0.0",
112
+ "svelte": "^5.0.0",
113
+ "vue": "^3.3.0"
85
114
  },
86
115
  "peerDependenciesMeta": {
87
116
  "dashjs": {
@@ -89,6 +118,18 @@
89
118
  },
90
119
  "hls.js": {
91
120
  "optional": true
121
+ },
122
+ "react": {
123
+ "optional": true
124
+ },
125
+ "react-dom": {
126
+ "optional": true
127
+ },
128
+ "svelte": {
129
+ "optional": true
130
+ },
131
+ "vue": {
132
+ "optional": true
92
133
  }
93
134
  },
94
135
  "repository": {
@@ -1 +0,0 @@
1
- function C(e){let r=new DOMParser().parseFromString(e,"text/xml");if(r.querySelector("parsererror"))return {version:"",ads:[],errors:["VAST XML parse error"]};let n=r.documentElement;if(n.tagName!=="VAST")return {version:"",ads:[],errors:["Document is not a VAST response"]};let s=n.getAttribute("version")??"",o=A(n,"Error"),a=g(n,"Ad"),c=[];for(let l of a){let u=S(l);u&&c.push(u);}return {version:s,ads:c,errors:o}}function S(e){let t=T(e,"InLine");if(!t)return null;let r=e.getAttribute("id")??"",i=e.getAttribute("sequence"),n=m(i,void 0),s=v(t,"AdSystem"),o=v(t,"AdTitle"),a=k(t,"Impression"),c=A(t,"Error"),l=t.querySelector("Creatives"),u=[];if(l){let d=g(l,"Creative");for(let E of d)u.push(N(E));}let f=x(t),p=F(t);return {id:r,sequence:n,adSystem:s,adTitle:o,impressions:a,creatives:u,errors:c,verifications:f,categories:p}}function x(e){let t=e.querySelector("AdVerifications");if(!t)return;let r=[],i=g(t,"Verification");for(let n of i){let s=n.getAttribute("vendor")??"",o="",a,c=n.querySelector("JavaScriptResource");if(c)o=(c.textContent??"").trim(),a=c.getAttribute("apiFramework")??void 0;else {let f=n.querySelector("ExecutableResource");f&&(o=(f.textContent??"").trim(),a=f.getAttribute("apiFramework")??void 0);}let l=n.querySelector("VerificationParameters"),u=l&&(l.textContent??"").trim()||void 0;r.push({vendor:s,resourceUrl:o,apiFramework:a,parameters:u});}return r.length>0?r:void 0}function F(e){let t=g(e,"Category");if(t.length===0)return;let r=[];for(let i of t){let n=i.getAttribute("authority")??"",s=(i.textContent??"").trim();s&&r.push({authority:n,value:s});}return r.length>0?r:void 0}function N(e){let t=e.getAttribute("id")??void 0,r=e.getAttribute("sequence"),i=m(r,void 0),n=e.querySelector("Linear"),s=n?w(n):null;return {id:t,sequence:i,linear:s}}function w(e){let t=v(e,"Duration"),r=b(t),i=e.getAttribute("skipoffset"),n=i!==null?y(i,r):void 0,s=q(e),o=I(e),a=V(e),c=e.querySelector("VideoClicks"),l=c&&v(c,"ClickThrough")||void 0,u=c?k(c,"ClickTracking"):[];return {duration:r,skipOffset:n,mediaFiles:s,interactiveCreativeFiles:o,trackingEvents:a,clickThrough:l,clickTracking:u}}function q(e){let t=e.querySelector("MediaFiles");if(!t)return [];let r=[],i=g(t,"MediaFile");for(let n of i){let s=(n.textContent??"").trim();if(!s)continue;let o=n.getAttribute("delivery");r.push({url:s,mimeType:n.getAttribute("type")??"",width:m(n.getAttribute("width"),0),height:m(n.getAttribute("height"),0),bitrate:m(n.getAttribute("bitrate"),void 0),delivery:o==="streaming"?"streaming":"progressive"});}return r}function I(e){let t=e.querySelector("MediaFiles");if(!t)return [];let r=[],i=g(t,"InteractiveCreativeFile");for(let n of i){let s=(n.textContent??"").trim();if(!s)continue;let o=n.getAttribute("apiFramework")??"",a=n.getAttribute("variableDuration"),c=a==="true"?true:a==="false"?false:void 0;r.push({url:s,apiFramework:o,variableDuration:c});}return r}var M=new Set(["start","firstQuartile","midpoint","thirdQuartile","complete","pause","resume","skip","loaded","mute","unmute","rewind","playerExpand","playerCollapse","closeLinear","notUsed","otherAdInteraction","creativeView"]);function V(e){let t=h(),r=e.querySelector("TrackingEvents");if(!r)return t;let i=r.querySelectorAll("Tracking");for(let n of i){let s=n.getAttribute("event"),o=(n.textContent??"").trim();if(!(!s||!o))if(s==="progress"){let a=n.getAttribute("offset"),c=a?y(a,0):0;t.progress.push({offset:c,url:o});}else M.has(s)&&t[s].push(o);}return t}function b(e){if(!e)return 0;let t=e.split(":");if(t.length!==3)return 0;let r=Number.parseInt(t[0],10),i=Number.parseInt(t[1],10),n=Number.parseFloat(t[2]);return Number.isNaN(r)||Number.isNaN(i)||Number.isNaN(n)?0:r*3600+i*60+n}function y(e,t){if(e.endsWith("%")){let r=Number.parseFloat(e);return Number.isNaN(r)?0:r/100*t}return b(e)}function g(e,t){let r=[];for(let i=0;i<e.children.length;i++)e.children[i].tagName===t&&r.push(e.children[i]);return r}function T(e,t){for(let r=0;r<e.children.length;r++)if(e.children[r].tagName===t)return e.children[r];return null}function A(e,t){let r=[];for(let i of g(e,t)){let n=(i.textContent??"").trim();n&&r.push(n);}return r}function v(e,t){let r=e.querySelector(t);return r?(r.textContent??"").trim():""}function k(e,t){let r=e.querySelectorAll(t),i=[];for(let n of r){let s=(n.textContent??"").trim();s&&i.push(s);}return i}async function D(e,t){let r=t?.timeout??5e3,i=new AbortController,n=setTimeout(()=>i.abort(),r);try{let s=await fetch(e,{signal:i.signal});if(!s.ok)throw new Error(`VAST fetch failed: ${s.status}`);return await s.text()}finally{clearTimeout(n);}}async function U(e,t){let r=t?.timeout??1e4,i=t?.maxDepth??5,n=Date.now()+r,s=new Set,o=[],a=e;for(let c=0;c<=i;c++){let l=n-Date.now();if(l<=0)return {version:"",ads:[],errors:["VAST resolve timeout"]};if(s.has(a))return {version:"",ads:[],errors:["VAST circular reference detected"]};s.add(a);let u;try{u=await D(a,{timeout:l});}catch(d){return {version:"",ads:[],errors:[d instanceof Error?d.message:String(d)]}}let f=C(u);if(f.ads.length>0)return {version:f.version,ads:f.ads.map(d=>O(d,o)),errors:f.errors};let p=R(u);if(!p)return f;o.push(p),a=p.adTagUri;}return {version:"",ads:[],errors:["VAST wrapper depth limit exceeded"]}}function R(e){let i=new DOMParser().parseFromString(e,"text/xml").documentElement;if(i.tagName!=="VAST")return null;for(let n of g(i,"Ad")){let s=T(n,"Wrapper");if(!s)continue;let o=v(s,"VASTAdTagURI").trim();if(!o)continue;let a=A(s,"Error"),c=k(s,"Impression"),l=h(),u=[],f=s.querySelector("Creatives");if(f)for(let p of g(f,"Creative")){let d=p.querySelector("Linear");if(d){l=V(d);let E=d.querySelector("VideoClicks");E&&(u=k(E,"ClickTracking"));break}}return {adTagUri:o,errors:a,impressions:c,trackingEvents:l,clickTracking:u}}return null}function h(){return {start:[],firstQuartile:[],midpoint:[],thirdQuartile:[],complete:[],pause:[],resume:[],skip:[],loaded:[],mute:[],unmute:[],rewind:[],playerExpand:[],playerCollapse:[],closeLinear:[],notUsed:[],otherAdInteraction:[],creativeView:[],progress:[]}}function L(e,t){let r=h();for(let i of Object.keys(r)){if(i==="progress")continue;let n=r[i];for(let s of e)n.push(...s[i]);n.push(...t[i]);}for(let i of e)r.progress.push(...i.progress);return r.progress.push(...t.progress),r}function O(e,t){if(t.length===0)return e;let r=[...t.flatMap(s=>s.errors),...e.errors],i=[...t.flatMap(s=>s.impressions),...e.impressions],n=e.creatives.map(s=>s.linear?{...s,linear:{...s.linear,trackingEvents:L(t.map(o=>o.trackingEvents),s.linear.trackingEvents),clickTracking:[...t.flatMap(o=>o.clickTracking),...s.linear.clickTracking]}}:s);return {...e,errors:r,impressions:i,creatives:n}}function m(e,t){if(e==null)return t;let r=Number.parseInt(e,10);return Number.isNaN(r)?t:r}export{C as a,D as b,U as c};
@@ -1 +0,0 @@
1
- function c(r){for(let e of r)typeof navigator<"u"&&typeof navigator.sendBeacon=="function"?navigator.sendBeacon(e):new Image().src=e;}function f(r,e){if(e<=0)return null;let t=r/e;return t>=1?"complete":t>=.75?"thirdQuartile":t>=.5?"midpoint":t>=.25?"firstQuartile":r>=0?"start":null}function s(r,e){let t=new Set,o=["start","firstQuartile","midpoint","thirdQuartile","complete"];return a=>{let n=f(a,r);if(!n||t.has(n))return;let l=o.indexOf(n);for(let i=0;i<=l;i++){let u=o[i];t.has(u)||(t.add(u),e(u));}}}export{c as a,f as b,s as c};
@@ -1,98 +0,0 @@
1
- import { P as Player } from './types-vxIcXgJz.js';
2
-
3
- interface VastResponse {
4
- version: string;
5
- ads: VastAd[];
6
- errors: string[];
7
- }
8
- interface VastAd {
9
- id: string;
10
- sequence?: number | undefined;
11
- adSystem: string;
12
- adTitle: string;
13
- impressions: string[];
14
- creatives: VastCreative[];
15
- errors: string[];
16
- verifications?: AdVerification[] | undefined;
17
- categories?: AdCategory[] | undefined;
18
- }
19
- interface AdVerification {
20
- vendor: string;
21
- resourceUrl: string;
22
- apiFramework?: string | undefined;
23
- parameters?: string | undefined;
24
- }
25
- interface AdCategory {
26
- authority: string;
27
- value: string;
28
- }
29
- interface VastCreative {
30
- id?: string | undefined;
31
- sequence?: number | undefined;
32
- linear: VastLinear | null;
33
- }
34
- interface VastLinear {
35
- duration: number;
36
- skipOffset?: number | undefined;
37
- mediaFiles: VastMediaFile[];
38
- interactiveCreativeFiles: InteractiveCreativeFile[];
39
- trackingEvents: VastTrackingEvents;
40
- clickThrough?: string | undefined;
41
- clickTracking: string[];
42
- }
43
- interface VastMediaFile {
44
- url: string;
45
- mimeType: string;
46
- width: number;
47
- height: number;
48
- bitrate?: number | undefined;
49
- delivery: "progressive" | "streaming";
50
- }
51
- interface InteractiveCreativeFile {
52
- url: string;
53
- apiFramework: string;
54
- variableDuration?: boolean | undefined;
55
- }
56
- interface VastProgressEvent {
57
- offset: number;
58
- url: string;
59
- }
60
- interface VastTrackingEvents {
61
- start: string[];
62
- firstQuartile: string[];
63
- midpoint: string[];
64
- thirdQuartile: string[];
65
- complete: string[];
66
- pause: string[];
67
- resume: string[];
68
- skip: string[];
69
- loaded: string[];
70
- mute: string[];
71
- unmute: string[];
72
- rewind: string[];
73
- playerExpand: string[];
74
- playerCollapse: string[];
75
- closeLinear: string[];
76
- notUsed: string[];
77
- otherAdInteraction: string[];
78
- creativeView: string[];
79
- progress: VastProgressEvent[];
80
- }
81
- /** Plugin scoped to a single ad. Created per-ad, cleaned up on ad end. */
82
- interface AdPlugin {
83
- name: string;
84
- setup(player: Player, ad: VastAd): (() => void) | undefined;
85
- }
86
- interface VastPluginOptions {
87
- tagUrl: string;
88
- timeout?: number | undefined;
89
- allowSkip?: boolean | undefined;
90
- /** Create per-ad plugins. Called once per ad with the parsed VastAd. */
91
- adPlugins?: ((ad: VastAd) => AdPlugin[]) | undefined;
92
- }
93
- interface ResolveOptions {
94
- timeout?: number | undefined;
95
- maxDepth?: number | undefined;
96
- }
97
-
98
- export type { AdCategory as A, ResolveOptions as R, VastResponse as V, VastPluginOptions as a, AdPlugin as b, AdVerification as c, VastProgressEvent as d, VastAd as e };