@hopeplayer/core 1.0.14 → 1.0.16
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/HopePlayerElement.d.ts +57 -0
- package/dist/HopePlayerElement.d.ts.map +1 -1
- package/dist/chunks/{index-BTBAxNjr.js → index-BXSND_xN.js} +2 -2
- package/dist/chunks/{index-BTBAxNjr.js.map → index-BXSND_xN.js.map} +1 -1
- package/dist/chunks/index-BbRYOSvk.js +261 -0
- package/dist/chunks/index-BbRYOSvk.js.map +1 -0
- package/dist/chunks/{index-Dy0Th0is.js → index-C3BQGcT3.js} +2 -2
- package/dist/chunks/{index-Dy0Th0is.js.map → index-C3BQGcT3.js.map} +1 -1
- package/dist/chunks/{index-C2c71cGP.js → index-CBX7bn-G.js} +2 -2
- package/dist/chunks/{index-C2c71cGP.js.map → index-CBX7bn-G.js.map} +1 -1
- package/dist/chunks/{index-CaMVTgh0.js → index-CDPrkLq0.js} +55 -68
- package/dist/chunks/index-CDPrkLq0.js.map +1 -0
- package/dist/chunks/index-CWLyz1fp.js +415 -0
- package/dist/chunks/index-CWLyz1fp.js.map +1 -0
- package/dist/chunks/index-Ch3ep-eJ.js +245 -0
- package/dist/chunks/index-Ch3ep-eJ.js.map +1 -0
- package/dist/chunks/{index-DtqNHU7Y.js → index-D3Z7ZDLJ.js} +2 -2
- package/dist/chunks/{index-DtqNHU7Y.js.map → index-D3Z7ZDLJ.js.map} +1 -1
- package/dist/chunks/{index-Dz0E1YPE.js → index-DEv3YqLg.js} +1374 -908
- package/dist/chunks/index-DEv3YqLg.js.map +1 -0
- package/dist/chunks/{index-BCMVXNL0.js → index-DITXYcHx.js} +68 -96
- package/dist/chunks/index-DITXYcHx.js.map +1 -0
- package/dist/chunks/index-Miba3PD_.js +387 -0
- package/dist/chunks/index-Miba3PD_.js.map +1 -0
- package/dist/chunks/{index-DcVUXkXo.js → index-e00_M05B.js} +2 -2
- package/dist/chunks/{index-DcVUXkXo.js.map → index-e00_M05B.js.map} +1 -1
- package/dist/chunks/loadGpt-CmiAy366.js +18 -0
- package/dist/chunks/loadGpt-CmiAy366.js.map +1 -0
- package/dist/controls/SettingsMenu.d.ts +4 -0
- package/dist/controls/SettingsMenu.d.ts.map +1 -1
- package/dist/hls/SourceManager.d.ts +10 -0
- package/dist/hls/SourceManager.d.ts.map +1 -1
- package/dist/hls/sourceGroups.d.ts +19 -0
- package/dist/hls/sourceGroups.d.ts.map +1 -0
- package/dist/hope-player.js +1 -1
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/types.d.ts +22 -0
- package/dist/i18n/types.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/plugins/ad-triggers/AdTriggers.d.ts +99 -0
- package/dist/plugins/ad-triggers/AdTriggers.d.ts.map +1 -0
- package/dist/plugins/ad-triggers/index.d.ts +7 -0
- package/dist/plugins/ad-triggers/index.d.ts.map +1 -0
- package/dist/plugins/ads/AdsController.d.ts +8 -0
- package/dist/plugins/ads/AdsController.d.ts.map +1 -1
- package/dist/plugins/cast/CastController.d.ts +107 -0
- package/dist/plugins/cast/CastController.d.ts.map +1 -0
- package/dist/plugins/cast/RemoteMediaProxy.d.ts +41 -0
- package/dist/plugins/cast/RemoteMediaProxy.d.ts.map +1 -0
- package/dist/plugins/cast/castSdk.d.ts +160 -0
- package/dist/plugins/cast/castSdk.d.ts.map +1 -0
- package/dist/plugins/cast/index.d.ts +7 -0
- package/dist/plugins/cast/index.d.ts.map +1 -0
- package/dist/plugins/pause-ad/loadGpt.d.ts +2 -0
- package/dist/plugins/pause-ad/loadGpt.d.ts.map +1 -1
- package/dist/plugins/rewarded/RewardedUnlock.d.ts +68 -0
- package/dist/plugins/rewarded/RewardedUnlock.d.ts.map +1 -0
- package/dist/plugins/rewarded/gpt.d.ts +12 -0
- package/dist/plugins/rewarded/gpt.d.ts.map +1 -0
- package/dist/plugins/rewarded/index.d.ts +7 -0
- package/dist/plugins/rewarded/index.d.ts.map +1 -0
- package/dist/plugins/sponsorship/SponsorshipLayer.d.ts +73 -0
- package/dist/plugins/sponsorship/SponsorshipLayer.d.ts.map +1 -0
- package/dist/plugins/sponsorship/index.d.ts +7 -0
- package/dist/plugins/sponsorship/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +375 -1
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunks/index-BCMVXNL0.js.map +0 -1
- package/dist/chunks/index-CaMVTgh0.js.map +0 -1
- package/dist/chunks/index-Dz0E1YPE.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CastController.d.ts","sourceRoot":"","sources":["../../../src/plugins/cast/CastController.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/** Uzak oynatıcıya (TV) giden komutlar. */
|
|
2
|
+
export interface RemoteCommands {
|
|
3
|
+
play(): void;
|
|
4
|
+
pause(): void;
|
|
5
|
+
seek(time: number): void;
|
|
6
|
+
setVolume(volume: number): void;
|
|
7
|
+
setMuted(muted: boolean): void;
|
|
8
|
+
}
|
|
9
|
+
export interface RemoteState {
|
|
10
|
+
paused: boolean;
|
|
11
|
+
currentTime: number;
|
|
12
|
+
duration: number;
|
|
13
|
+
volume: number;
|
|
14
|
+
muted: boolean;
|
|
15
|
+
ended: boolean;
|
|
16
|
+
}
|
|
17
|
+
/** <video>'nun gerçek (prototip) değeri — vekil kuruluyken de. */
|
|
18
|
+
export declare function nativeGet<K extends 'currentTime' | 'duration' | 'paused' | 'ended'>(video: HTMLVideoElement, key: K): HTMLMediaElement[K];
|
|
19
|
+
/**
|
|
20
|
+
* Cast sırasında `<video>` örneğinin oynatma yüzeyini (paused, currentTime, play(), volume…) TV'ye bağlar ve TV'den
|
|
21
|
+
* gelen durumu olay olarak (play / pause / timeupdate / volumechange…) yayar. Böylece kontrol çubuğu, seek bar,
|
|
22
|
+
* klavye kısayolları ve eklentiler hiç değişmeden TV'yi yönetir. Kaldırılınca örnek özellikleri silinir, prototip
|
|
23
|
+
* (gerçek video) geri gelir.
|
|
24
|
+
*/
|
|
25
|
+
export declare class RemoteMediaProxy {
|
|
26
|
+
private readonly video;
|
|
27
|
+
private readonly commands;
|
|
28
|
+
private state;
|
|
29
|
+
private pendingSeek;
|
|
30
|
+
private seekTimer;
|
|
31
|
+
private installed;
|
|
32
|
+
constructor(video: HTMLVideoElement, commands: RemoteCommands, initial: RemoteState);
|
|
33
|
+
get current(): Readonly<RemoteState>;
|
|
34
|
+
install(): void;
|
|
35
|
+
uninstall(): void;
|
|
36
|
+
/** TV'den gelen durum — değişen alanlar için olay yayar. */
|
|
37
|
+
update(patch: Partial<RemoteState>): void;
|
|
38
|
+
private seek;
|
|
39
|
+
private fire;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=RemoteMediaProxy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RemoteMediaProxy.d.ts","sourceRoot":"","sources":["../../../src/plugins/cast/RemoteMediaProxy.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,MAAM,WAAW,cAAc;IAC3B,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IACxB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAClB;AAeD,kEAAkE;AAClE,wBAAgB,SAAS,CAAC,CAAC,SAAS,aAAa,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAGzI;AAED;;;;;GAKG;AACH,qBAAa,gBAAgB;IAOrB,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAP7B,OAAO,CAAC,KAAK,CAAc;IAC3B,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,SAAS,CAA8C;IAC/D,OAAO,CAAC,SAAS,CAAS;gBAGL,KAAK,EAAE,gBAAgB,EACvB,QAAQ,EAAE,cAAc,EACzC,OAAO,EAAE,WAAW;IAKxB,IAAI,OAAO,IAAI,QAAQ,CAAC,WAAW,CAAC,CAEnC;IAED,OAAO,IAAI,IAAI;IA6Cf,SAAS,IAAI,IAAI;IASjB,4DAA4D;IAC5D,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI;IAmBzC,OAAO,CAAC,IAAI;IAkBZ,OAAO,CAAC,IAAI;CAGf"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Cast Web Sender SDK (CAF) — kullanılan yüzeyin minimal tipleri ve yükleyicisi.
|
|
3
|
+
* https://developers.google.com/cast/docs/web_sender
|
|
4
|
+
*/
|
|
5
|
+
export interface CastImage {
|
|
6
|
+
url: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CastMediaMetadata {
|
|
9
|
+
metadataType?: number;
|
|
10
|
+
title?: string;
|
|
11
|
+
subtitle?: string;
|
|
12
|
+
artist?: string;
|
|
13
|
+
albumName?: string;
|
|
14
|
+
images?: CastImage[];
|
|
15
|
+
}
|
|
16
|
+
export interface CastTrack {
|
|
17
|
+
trackContentId?: string;
|
|
18
|
+
trackContentType?: string;
|
|
19
|
+
subtype?: string;
|
|
20
|
+
name?: string;
|
|
21
|
+
language?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface CastVastAdsRequest {
|
|
24
|
+
adTagUrl?: string;
|
|
25
|
+
}
|
|
26
|
+
export interface CastBreakClip {
|
|
27
|
+
vastAdsRequest?: CastVastAdsRequest;
|
|
28
|
+
}
|
|
29
|
+
export interface CastMediaInfo {
|
|
30
|
+
contentId: string;
|
|
31
|
+
contentType: string;
|
|
32
|
+
streamType?: string;
|
|
33
|
+
metadata?: CastMediaMetadata;
|
|
34
|
+
tracks?: CastTrack[];
|
|
35
|
+
hlsSegmentFormat?: string;
|
|
36
|
+
hlsVideoSegmentFormat?: string;
|
|
37
|
+
vmapAdsRequest?: CastVastAdsRequest;
|
|
38
|
+
breakClips?: CastBreakClip[];
|
|
39
|
+
breaks?: unknown[];
|
|
40
|
+
}
|
|
41
|
+
export interface CastLoadRequest {
|
|
42
|
+
currentTime?: number;
|
|
43
|
+
autoplay?: boolean;
|
|
44
|
+
activeTrackIds?: number[];
|
|
45
|
+
}
|
|
46
|
+
export interface CastSessionLike {
|
|
47
|
+
loadMedia(request: CastLoadRequest): Promise<unknown>;
|
|
48
|
+
getCastDevice(): {
|
|
49
|
+
friendlyName?: string;
|
|
50
|
+
};
|
|
51
|
+
getMediaSession(): {
|
|
52
|
+
media?: {
|
|
53
|
+
contentId?: string;
|
|
54
|
+
};
|
|
55
|
+
} | null;
|
|
56
|
+
}
|
|
57
|
+
export interface RemotePlayerLike {
|
|
58
|
+
isConnected: boolean;
|
|
59
|
+
isMediaLoaded: boolean;
|
|
60
|
+
isPaused: boolean;
|
|
61
|
+
currentTime: number;
|
|
62
|
+
duration: number;
|
|
63
|
+
volumeLevel: number;
|
|
64
|
+
isMuted: boolean;
|
|
65
|
+
playerState: string | null;
|
|
66
|
+
isPlayingBreak: boolean;
|
|
67
|
+
}
|
|
68
|
+
export interface RemotePlayerControllerLike {
|
|
69
|
+
addEventListener(type: string, fn: (e: {
|
|
70
|
+
field: string;
|
|
71
|
+
value: unknown;
|
|
72
|
+
}) => void): void;
|
|
73
|
+
removeEventListener(type: string, fn: (e: {
|
|
74
|
+
field: string;
|
|
75
|
+
value: unknown;
|
|
76
|
+
}) => void): void;
|
|
77
|
+
playOrPause(): void;
|
|
78
|
+
seek(): void;
|
|
79
|
+
setVolumeLevel(): void;
|
|
80
|
+
muteOrUnmute(): void;
|
|
81
|
+
stop(): void;
|
|
82
|
+
}
|
|
83
|
+
export interface CastContextLike {
|
|
84
|
+
setOptions(options: Record<string, unknown>): void;
|
|
85
|
+
addEventListener(type: string, fn: (e: {
|
|
86
|
+
castState?: string;
|
|
87
|
+
sessionState?: string;
|
|
88
|
+
session?: CastSessionLike;
|
|
89
|
+
}) => void): void;
|
|
90
|
+
removeEventListener(type: string, fn: (e: {
|
|
91
|
+
castState?: string;
|
|
92
|
+
sessionState?: string;
|
|
93
|
+
session?: CastSessionLike;
|
|
94
|
+
}) => void): void;
|
|
95
|
+
requestSession(): Promise<unknown>;
|
|
96
|
+
getCurrentSession(): CastSessionLike | null;
|
|
97
|
+
getCastState(): string;
|
|
98
|
+
endCurrentSession(stopCasting: boolean): void;
|
|
99
|
+
}
|
|
100
|
+
type Ctor<T> = new (...args: never[]) => T;
|
|
101
|
+
/** `window.cast.framework` + `window.chrome.cast` — yalnızca kullandıklarımız. */
|
|
102
|
+
export interface CastApi {
|
|
103
|
+
framework: {
|
|
104
|
+
CastContext: {
|
|
105
|
+
getInstance(): CastContextLike;
|
|
106
|
+
};
|
|
107
|
+
CastContextEventType: {
|
|
108
|
+
CAST_STATE_CHANGED: string;
|
|
109
|
+
SESSION_STATE_CHANGED: string;
|
|
110
|
+
};
|
|
111
|
+
RemotePlayer: Ctor<RemotePlayerLike>;
|
|
112
|
+
RemotePlayerController: new (player: RemotePlayerLike) => RemotePlayerControllerLike;
|
|
113
|
+
RemotePlayerEventType: {
|
|
114
|
+
ANY_CHANGE: string;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
chrome: {
|
|
118
|
+
AutoJoinPolicy: {
|
|
119
|
+
ORIGIN_SCOPED: string;
|
|
120
|
+
};
|
|
121
|
+
media: {
|
|
122
|
+
DEFAULT_MEDIA_RECEIVER_APP_ID: string;
|
|
123
|
+
MediaInfo: new (contentId: string, contentType: string) => CastMediaInfo;
|
|
124
|
+
GenericMediaMetadata: Ctor<CastMediaMetadata>;
|
|
125
|
+
MusicTrackMediaMetadata: Ctor<CastMediaMetadata>;
|
|
126
|
+
LoadRequest: new (media: CastMediaInfo) => CastLoadRequest;
|
|
127
|
+
Track: new (trackId: number, type: string) => CastTrack;
|
|
128
|
+
TrackType: {
|
|
129
|
+
TEXT: string;
|
|
130
|
+
};
|
|
131
|
+
TextTrackType: {
|
|
132
|
+
SUBTITLES: string;
|
|
133
|
+
};
|
|
134
|
+
StreamType: {
|
|
135
|
+
BUFFERED: string;
|
|
136
|
+
LIVE: string;
|
|
137
|
+
};
|
|
138
|
+
VastAdsRequest: Ctor<CastVastAdsRequest>;
|
|
139
|
+
BreakClip: new (id: string) => CastBreakClip;
|
|
140
|
+
Break: new (id: string, breakClipIds: string[], position: number) => unknown;
|
|
141
|
+
HlsSegmentFormat?: {
|
|
142
|
+
TS: string;
|
|
143
|
+
FMP4: string;
|
|
144
|
+
AAC: string;
|
|
145
|
+
};
|
|
146
|
+
HlsVideoSegmentFormat?: {
|
|
147
|
+
MPEG2_TS: string;
|
|
148
|
+
FMP4: string;
|
|
149
|
+
};
|
|
150
|
+
};
|
|
151
|
+
Image: new (url: string) => CastImage;
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Cast SDK'yı bir kez yükler. Yalnızca Chromium tarayıcılarda (Chrome / Edge) ve güvenli bağlamda (HTTPS) denenir;
|
|
156
|
+
* diğerlerinde ya da SDK "Cast yok" derse null — buton hiç görünmez.
|
|
157
|
+
*/
|
|
158
|
+
export declare function loadCastSdk(): Promise<CastApi | null>;
|
|
159
|
+
export {};
|
|
160
|
+
//# sourceMappingURL=castSdk.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"castSdk.d.ts","sourceRoot":"","sources":["../../../src/plugins/cast/castSdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { CastController, type CastMedia, type CastPlayerContext } from './CastController';
|
|
2
|
+
import type { CastOptions } from '../../types';
|
|
3
|
+
/** TV'ye yayını kurar (Google Cast / AirPlay / Remote Playback — her biri seçenekle açılır). */
|
|
4
|
+
export declare function installCast(ctx: CastPlayerContext, options: CastOptions): CastController;
|
|
5
|
+
export { CastController };
|
|
6
|
+
export type { CastMedia, CastPlayerContext };
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/cast/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,SAAS,EAAE,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,gGAAgG;AAChG,wBAAgB,WAAW,CAAC,GAAG,EAAE,iBAAiB,EAAE,OAAO,EAAE,WAAW,GAAG,cAAc,CAExF;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -20,6 +20,8 @@ export interface GoogleTag {
|
|
|
20
20
|
push(fn: () => void): void;
|
|
21
21
|
};
|
|
22
22
|
defineSlot(adUnitPath: string, sizes: Array<[number, number]>, divId: string): GptSlot | null;
|
|
23
|
+
/** Out-of-page slot: boyutsuz; içerik (ör. özel HTML, tam sayfa kreatif) Ad Manager'da belirlenir. */
|
|
24
|
+
defineOutOfPageSlot(adUnitPath: string, divId: string): GptSlot | null;
|
|
23
25
|
pubads(): GptPubAds;
|
|
24
26
|
enableServices(): void;
|
|
25
27
|
display(divId: string): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loadGpt.d.ts","sourceRoot":"","sources":["../../../src/plugins/pause-ad/loadGpt.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,MAAM,WAAW,OAAO;IACpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IACtC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IAC7D,gBAAgB,IAAI,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,SAAS;IACtB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI,CAAC;IAChG,mBAAmB,CAAC,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI,CAAC;IACpG,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChC,qBAAqB,IAAI,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;KAAE,CAAC;IACxD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IAC9F,MAAM,IAAI,SAAS,CAAC;IACpB,cAAc,IAAI,IAAI,CAAC;IACvB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;CAC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,SAAS,CAAC,EAAE,SAAS,CAAC;KACzB;CACJ;AAKD,0GAA0G;AAC1G,wBAAgB,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAmB5C"}
|
|
1
|
+
{"version":3,"file":"loadGpt.d.ts","sourceRoot":"","sources":["../../../src/plugins/pause-ad/loadGpt.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,MAAM,WAAW,OAAO;IACpB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC;IACtC,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,OAAO,CAAC;IAC7D,gBAAgB,IAAI,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,SAAS;IACtB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI,CAAC;IAChG,mBAAmB,CAAC,CAAC,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,uBAAuB,KAAK,IAAI,GAAG,IAAI,CAAC;IACpG,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChC,qBAAqB,IAAI,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,SAAS;IACtB,GAAG,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,GAAG;QAAE,IAAI,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI,CAAA;KAAE,CAAC;IACxD,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IAC9F,sGAAsG;IACtG,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;IACvE,MAAM,IAAI,SAAS,CAAC;IACpB,cAAc,IAAI,IAAI,CAAC;IACvB,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,YAAY,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;CAC5C;AAED,OAAO,CAAC,MAAM,CAAC;IACX,UAAU,MAAM;QACZ,SAAS,CAAC,EAAE,SAAS,CAAC;KACzB;CACJ;AAKD,0GAA0G;AAC1G,wBAAgB,OAAO,IAAI,OAAO,CAAC,SAAS,CAAC,CAmB5C"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import type { RewardedUnlockOptions } from '../../types';
|
|
2
|
+
import type { HopeLocaleStrings } from '../../i18n/types';
|
|
3
|
+
export interface RewardedUnlockContext {
|
|
4
|
+
hostEl: HTMLElement;
|
|
5
|
+
videoEl: HTMLVideoElement;
|
|
6
|
+
/** Onay penceresinin ekleneceği alan (video alanı). */
|
|
7
|
+
overlayEl: HTMLElement;
|
|
8
|
+
/** Buton kontrollerle birlikte görünüp gizlensin diye kontrol katmanına eklenir. */
|
|
9
|
+
chromeEl: HTMLElement;
|
|
10
|
+
i18n: HopeLocaleStrings;
|
|
11
|
+
log(entry: {
|
|
12
|
+
message: string;
|
|
13
|
+
details?: Record<string, string | number | boolean | undefined>;
|
|
14
|
+
}): void;
|
|
15
|
+
play(): void;
|
|
16
|
+
exitFullscreen(): void;
|
|
17
|
+
/** Kilitli kalitelerin en yükseği (ör. "1080p") — yoksa null (buton gizlenir). */
|
|
18
|
+
lockedQualityLabel(): string | null;
|
|
19
|
+
/** İçeriğin kimliği (kaynak listesi) — kalite değişince değişmez, başka video yüklenince değişir. */
|
|
20
|
+
contentKey(): string;
|
|
21
|
+
/** Kilit açıldı / geri geldi: player menüleri yeniden kurar; `upgrade` → en iyi kaliteye geç. */
|
|
22
|
+
onLockChange(upgrade: boolean): void;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Ödüllü reklamla kalite kilidi. Akış (Google'ın ödüllü reklam politikasına göre): kullanıcı kilitli bir kaliteye ya da
|
|
26
|
+
* "Yüksek kaliteyi aç" butonuna dokunur → ödülü açıkça yazan onay penceresi → yalnızca "Reklamı izle" ile reklam istenir
|
|
27
|
+
* → ödül verildiyse kilit açılır. Vazgeçmek videoyu izlemeyi engellemez (düşük kalitede devam eder).
|
|
28
|
+
*/
|
|
29
|
+
export declare class RewardedUnlock {
|
|
30
|
+
private readonly ctx;
|
|
31
|
+
private options;
|
|
32
|
+
private readonly button;
|
|
33
|
+
private dialog;
|
|
34
|
+
private toast;
|
|
35
|
+
private toastTimer;
|
|
36
|
+
private phase;
|
|
37
|
+
/** 'video' modunda kilidin açık olduğu içerik (kaynak listesi — kalite dosyası değil). */
|
|
38
|
+
private videoUnlockedKey;
|
|
39
|
+
private lastKey;
|
|
40
|
+
constructor(ctx: RewardedUnlockContext, options: RewardedUnlockOptions);
|
|
41
|
+
update(options: RewardedUnlockOptions): void;
|
|
42
|
+
private get maxFreeHeight();
|
|
43
|
+
private get storageKey();
|
|
44
|
+
private get unlockFor();
|
|
45
|
+
get unlocked(): boolean;
|
|
46
|
+
private grant;
|
|
47
|
+
/** Player için: bu yükseklikteki kalite kilitli mi? */
|
|
48
|
+
isLocked(height: number | null): boolean;
|
|
49
|
+
/** Kaynak değişti: 'video' modunda kilit yeniden kapanır; süreli kilit dolduysa menüler güncellenir. */
|
|
50
|
+
private readonly onSourceChange;
|
|
51
|
+
/** Player kalite listesi değişince çağırır: buton yalnızca kilitli kalite varken görünür. */
|
|
52
|
+
onQualitiesChanged(): void;
|
|
53
|
+
/** Kilitli kaliteye ya da butona dokunuldu: onay penceresi. */
|
|
54
|
+
requestUnlock(): void;
|
|
55
|
+
private watch;
|
|
56
|
+
private resumeAfterDialog;
|
|
57
|
+
/** Reklam hazırlanırken "Vazgeç" — sağlayıcıya iletilir (GPT slotu temizlenir). */
|
|
58
|
+
private abort;
|
|
59
|
+
private runProvider;
|
|
60
|
+
private fill;
|
|
61
|
+
private showDialog;
|
|
62
|
+
private dismiss;
|
|
63
|
+
private closeDialog;
|
|
64
|
+
private showToast;
|
|
65
|
+
refreshLabels(): void;
|
|
66
|
+
destroy(): void;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=RewardedUnlock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RewardedUnlock.d.ts","sourceRoot":"","sources":["../../../src/plugins/rewarded/RewardedUnlock.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAI1D,MAAM,WAAW,qBAAqB;IAClC,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,uDAAuD;IACvD,SAAS,EAAE,WAAW,CAAC;IACvB,oFAAoF;IACpF,QAAQ,EAAE,WAAW,CAAC;IACtB,IAAI,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;IACvG,IAAI,IAAI,IAAI,CAAC;IACb,cAAc,IAAI,IAAI,CAAC;IACvB,kFAAkF;IAClF,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAAC;IACpC,qGAAqG;IACrG,UAAU,IAAI,MAAM,CAAC;IACrB,iGAAiG;IACjG,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;CACxC;AASD;;;;GAIG;AACH,qBAAa,cAAc;IAYnB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAXxB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAoB;IAC3C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,KAAK,CAA+B;IAC5C,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,KAAK,CAAiB;IAC9B,0FAA0F;IAC1F,OAAO,CAAC,gBAAgB,CAAuB;IAC/C,OAAO,CAAC,OAAO,CAAM;gBAGA,GAAG,EAAE,qBAAqB,EAC3C,OAAO,EAAE,qBAAqB;IAmBlC,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,IAAI;IAS5C,OAAO,KAAK,aAAa,GAGxB;IAED,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,KAAK,SAAS,GAGpB;IAED,IAAI,QAAQ,IAAI,OAAO,CAUtB;IAED,OAAO,CAAC,KAAK;IAYb,uDAAuD;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO;IAKxC,wGAAwG;IACxG,OAAO,CAAC,QAAQ,CAAC,cAAc,CAK7B;IAEF,6FAA6F;IAC7F,kBAAkB,IAAI,IAAI;IAS1B,+DAA+D;IAC/D,aAAa,IAAI,IAAI;YAOP,KAAK;IAuDnB,OAAO,CAAC,iBAAiB,CAAS;IAClC,mFAAmF;IACnF,OAAO,CAAC,KAAK,CAAgC;YAE/B,WAAW;IAczB,OAAO,CAAC,IAAI;IAQZ,OAAO,CAAC,UAAU;IAkElB,OAAO,CAAC,OAAO;IAQf,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,SAAS;IAgBjB,aAAa,IAAI,IAAI;IAKrB,OAAO,IAAI,IAAI;CAQlB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { RewardedResult } from '../../types';
|
|
2
|
+
/**
|
|
3
|
+
* GPT web rewarded akışı (Google'ın örneğiyle aynı): slot tanımla → display → `rewardedSlotReady` gelince göster →
|
|
4
|
+
* `rewardedSlotGranted` ödül → `rewardedSlotClosed` kapandı → slotu yok et. Kullanıcı onayı bu fonksiyon çağrılmadan
|
|
5
|
+
* ÖNCE alınmış olmalı (player'ın onay penceresi).
|
|
6
|
+
*
|
|
7
|
+
* `timeoutMs` betiğin yüklenmesi DAHİL en baştan sayar: GPT hiç yüklenemez ya da çalışmazsa (engelleyici, ağ,
|
|
8
|
+
* sertifika) da 'nofill' döner — bekleme ekranı asla takılı kalmaz. `signal` iptal edilirse (kullanıcı "Vazgeç") slot
|
|
9
|
+
* temizlenip 'closed' döner. Reklam görünür olduktan sonra zaman aşımı işlemez; kapanışı GPT bildirir.
|
|
10
|
+
*/
|
|
11
|
+
export declare function showGptRewarded(adUnitPath: string, timeoutMs: number, signal?: AbortSignal): Promise<RewardedResult>;
|
|
12
|
+
//# sourceMappingURL=gpt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gpt.d.ts","sourceRoot":"","sources":["../../../src/plugins/rewarded/gpt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAmDlD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,cAAc,CAAC,CAsFpH"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RewardedUnlock, type RewardedUnlockContext } from './RewardedUnlock';
|
|
2
|
+
import type { RewardedUnlockOptions } from '../../types';
|
|
3
|
+
/** Ödüllü reklamla kalite kilidini kurar. */
|
|
4
|
+
export declare function installRewardedUnlock(ctx: RewardedUnlockContext, options: RewardedUnlockOptions): RewardedUnlock;
|
|
5
|
+
export { RewardedUnlock };
|
|
6
|
+
export type { RewardedUnlockContext };
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/rewarded/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAEzD,6CAA6C;AAC7C,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,qBAAqB,EAAE,OAAO,EAAE,qBAAqB,GAAG,cAAc,CAEhH;AAED,OAAO,EAAE,cAAc,EAAE,CAAC;AAC1B,YAAY,EAAE,qBAAqB,EAAE,CAAC"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { SponsorshipConfig, SponsorshipOptions } from '../../types';
|
|
2
|
+
import type { HopeLocaleStrings } from '../../i18n/types';
|
|
3
|
+
export interface SponsorshipContext {
|
|
4
|
+
hostEl: HTMLElement;
|
|
5
|
+
videoEl: HTMLVideoElement;
|
|
6
|
+
/** Logo ve giriş kartının ekleneceği alan (video alanı). */
|
|
7
|
+
overlayEl: HTMLElement;
|
|
8
|
+
i18n: HopeLocaleStrings;
|
|
9
|
+
log(entry: {
|
|
10
|
+
message: string;
|
|
11
|
+
fatal?: boolean;
|
|
12
|
+
details?: Record<string, string | number | boolean | undefined>;
|
|
13
|
+
}): void;
|
|
14
|
+
}
|
|
15
|
+
/** API yanıtını doğrular, geçersiz alanları atar; katman kapalıysa null. */
|
|
16
|
+
export declare function normalizeSponsorship(raw: unknown): SponsorshipConfig | null;
|
|
17
|
+
/**
|
|
18
|
+
* Sponsorluk katmanı: `endpoint`'ten JSON çeker (SponsorshipConfig), player renklerini değiştirir, köşeye logo koyar,
|
|
19
|
+
* oynatma başlarken "X sunar" kartını gösterir. Canlıda `refreshSeconds` ile kampanya değişimi izlenir. API hatasında
|
|
20
|
+
* son geçerli ayar korunur; hiç alınamadıysa katman kapalı kalır — player normal çalışır.
|
|
21
|
+
*/
|
|
22
|
+
export declare class SponsorshipLayer {
|
|
23
|
+
private readonly ctx;
|
|
24
|
+
private options;
|
|
25
|
+
private config;
|
|
26
|
+
private logoEl;
|
|
27
|
+
private introEl;
|
|
28
|
+
private introTimer;
|
|
29
|
+
private refreshTimer;
|
|
30
|
+
/** Player boyutu / kontrol düzeni değişince logo kontrollerin üstüne binmesin diye yeniden konumlanır. */
|
|
31
|
+
private readonly resizeObserver;
|
|
32
|
+
/** Uygulanan tema değişkenlerinin önceki satır içi değerleri — katman kalkınca geri yüklenir. */
|
|
33
|
+
private previousTokens;
|
|
34
|
+
/** Gösterim pikseli kampanya başına bir kez. */
|
|
35
|
+
private impressed;
|
|
36
|
+
/** Kampanya başına giriş gösterim sayısı. */
|
|
37
|
+
private introCount;
|
|
38
|
+
/** Son girişten bu yana gerçek izleme süresi (ms) — intro.repeatMinutes için. */
|
|
39
|
+
private watchedSinceIntro;
|
|
40
|
+
private lastTick;
|
|
41
|
+
private readonly tickTimer;
|
|
42
|
+
private destroyed;
|
|
43
|
+
private requestSeq;
|
|
44
|
+
constructor(ctx: SponsorshipContext, options: SponsorshipOptions);
|
|
45
|
+
update(options: SponsorshipOptions): void;
|
|
46
|
+
/** Şu an uygulanan kampanya (yoksa null). */
|
|
47
|
+
get current(): SponsorshipConfig | null;
|
|
48
|
+
private scheduleRefresh;
|
|
49
|
+
private buildUrl;
|
|
50
|
+
private load;
|
|
51
|
+
private apply;
|
|
52
|
+
private key;
|
|
53
|
+
private applyTheme;
|
|
54
|
+
private renderLogo;
|
|
55
|
+
/**
|
|
56
|
+
* Logo kontrollerin üstüne binmesin: sağ üstte (dar player'da ayarlar / PiP oraya taşınır) üst çubuğun soluna,
|
|
57
|
+
* altta seek bar'ın hemen üstüne yerleşir. Dar player'da logo en fazla 48 px.
|
|
58
|
+
*/
|
|
59
|
+
private positionLogo;
|
|
60
|
+
/** Oynatma başladı: kampanya başına bir kez gösterim pikseli + "X sunar" kartı. */
|
|
61
|
+
private readonly onPlay;
|
|
62
|
+
/**
|
|
63
|
+
* intro.repeatMinutes: yalnızca gerçekten izlenirken sayar (oynuyor, sekme önde, reklam yok); süre dolunca giriş
|
|
64
|
+
* tekrar gösterilir — maxShows'a kadar.
|
|
65
|
+
*/
|
|
66
|
+
private readonly tick;
|
|
67
|
+
private showIntro;
|
|
68
|
+
/** Lineer reklam sırasında logo / giriş gizlenir (reklamın üstüne binmesin). */
|
|
69
|
+
private readonly onAdStart;
|
|
70
|
+
private readonly onAdEnd;
|
|
71
|
+
destroy(): void;
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=SponsorshipLayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SponsorshipLayer.d.ts","sourceRoot":"","sources":["../../../src/plugins/sponsorship/SponsorshipLayer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACzE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,gBAAgB,CAAC;IAC1B,4DAA4D;IAC5D,SAAS,EAAE,WAAW,CAAC;IACvB,IAAI,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,KAAK,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,CAAA;KAAE,GAAG,IAAI,CAAC;CAC3H;AAiCD,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,OAAO,GAAG,iBAAiB,GAAG,IAAI,CAuC3E;AAWD;;;;GAIG;AACH,qBAAa,gBAAgB;IAuBrB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAtBxB,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,MAAM,CAAmD;IACjE,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,YAAY,CAA+C;IACnE,0GAA0G;IAC1G,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAwB;IACvD,iGAAiG;IACjG,OAAO,CAAC,cAAc,CAA6B;IACnD,gDAAgD;IAChD,OAAO,CAAC,SAAS,CAAqB;IACtC,6CAA6C;IAC7C,OAAO,CAAC,UAAU,CAA6B;IAC/C,iFAAiF;IACjF,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,QAAQ,CAAK;IACrB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiC;IAC3D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,UAAU,CAAK;gBAGF,GAAG,EAAE,kBAAkB,EACxC,OAAO,EAAE,kBAAkB;IAgB/B,MAAM,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI;IAQzC,6CAA6C;IAC7C,IAAI,OAAO,IAAI,iBAAiB,GAAG,IAAI,CAEtC;IAED,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,QAAQ;YAMF,IAAI;IAqBlB,OAAO,CAAC,KAAK;IAcb,OAAO,CAAC,GAAG;IAIX,OAAO,CAAC,UAAU;IAiBlB,OAAO,CAAC,UAAU;IA2ClB;;;OAGG;IACH,OAAO,CAAC,YAAY;IAqBpB,mFAAmF;IACnF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAUrB;IAEF;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,IAAI,CAgBnB;IAEF,OAAO,CAAC,SAAS;IAqCjB,gFAAgF;IAChF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAGxB;IAEF,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGtB;IAEF,OAAO,IAAI,IAAI;CAgBlB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { SponsorshipLayer, normalizeSponsorship, type SponsorshipContext } from './SponsorshipLayer';
|
|
2
|
+
import type { SponsorshipOptions } from '../../types';
|
|
3
|
+
/** Sponsorluk katmanını kurar (ayarları `endpoint`'ten alır). */
|
|
4
|
+
export declare function installSponsorship(ctx: SponsorshipContext, options: SponsorshipOptions): SponsorshipLayer;
|
|
5
|
+
export { SponsorshipLayer, normalizeSponsorship };
|
|
6
|
+
export type { SponsorshipContext };
|
|
7
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/sponsorship/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACrG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAEtD,iEAAiE;AACjE,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,kBAAkB,EAAE,OAAO,EAAE,kBAAkB,GAAG,gBAAgB,CAEzG;AAED,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,CAAC;AAClD,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|