@video-lab/embed-helper 3.1.0 → 4.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -24
- package/dist/index.cjs +6 -25
- package/dist/index.d.cts +2 -9
- package/dist/index.d.mts +2 -9
- package/dist/index.iife.js +1 -1
- package/dist/index.mjs +7 -26
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
Video Lab Player 的静态 iframe 宿主侧事件监听器。
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
给允许 iframe 与页面脚本、但没有 npm 构建链的 CMS / Markdown / 论坛宿主使用:让宿主页面订阅
|
|
6
|
+
iframe 里播放器广播出来的契约事件。宿主页面必须允许 `<script>` 与 `postMessage`;如果只能保留
|
|
7
|
+
`<iframe>`,播放器仍可运行,但不能使用本 helper 收事件。
|
|
6
8
|
|
|
7
9
|
只依赖 [`@video-lab/protocol`](https://www.npmjs.com/package/@video-lab/protocol),无框架依赖。
|
|
8
10
|
|
|
@@ -13,7 +15,12 @@ Video Lab Player 的静态 iframe 宿主侧事件监听器。
|
|
|
13
15
|
`helper.js` 和 iframe 地址位于同一部署根目录。以下的 `player.example.com` 仅为占位符,实际地址由内部部署配置提供:
|
|
14
16
|
|
|
15
17
|
```html
|
|
16
|
-
<iframe
|
|
18
|
+
<iframe
|
|
19
|
+
id="article-player"
|
|
20
|
+
title="文章视频播放器"
|
|
21
|
+
allow="autoplay; fullscreen; picture-in-picture; encrypted-media; screen-wake-lock"
|
|
22
|
+
allowfullscreen
|
|
23
|
+
></iframe>
|
|
17
24
|
<script src="https://player.example.com/helper.js"></script>
|
|
18
25
|
<script>
|
|
19
26
|
const iframe = document.getElementById('article-player')
|
|
@@ -22,9 +29,14 @@ Video Lab Player 的静态 iframe 宿主侧事件监听器。
|
|
|
22
29
|
origin: 'https://player.example.com',
|
|
23
30
|
iframe,
|
|
24
31
|
})
|
|
25
|
-
player.on('ended', () => { location.href = nextUrl })
|
|
32
|
+
const offEnded = player.on('ended', () => { location.href = nextUrl })
|
|
26
33
|
// 订阅完成后再开始加载,静态事件不回放。
|
|
27
|
-
iframe.src = 'https://player.example.com/?src=...&autoplay=1'
|
|
34
|
+
iframe.src = 'https://player.example.com/?src=...&autoplay=1&muted=1'
|
|
35
|
+
|
|
36
|
+
window.addEventListener('pagehide', () => {
|
|
37
|
+
offEnded()
|
|
38
|
+
player.destroy()
|
|
39
|
+
}, { once: true })
|
|
28
40
|
</script>
|
|
29
41
|
```
|
|
30
42
|
|
|
@@ -32,15 +44,23 @@ Video Lab Player 的静态 iframe 宿主侧事件监听器。
|
|
|
32
44
|
|
|
33
45
|
```bash
|
|
34
46
|
pnpm add @video-lab/embed-helper
|
|
47
|
+
# 只有需要会话 QoE / 错误归一时再安装;它不发送 HTTP。
|
|
48
|
+
pnpm add @video-lab/telemetry
|
|
35
49
|
```
|
|
36
50
|
|
|
37
51
|
<!-- doc-snippet-preamble
|
|
38
|
-
declare const
|
|
39
|
-
declare
|
|
40
|
-
declare function
|
|
52
|
+
declare const BUILD_SHA: string
|
|
53
|
+
declare function enqueueRecord(input: unknown): void
|
|
54
|
+
declare function enqueueSummary(input: unknown): void
|
|
41
55
|
-->
|
|
42
56
|
```ts
|
|
43
57
|
import { createEmbedListener } from '@video-lab/embed-helper'
|
|
58
|
+
import { createTelemetrySession } from '@video-lab/telemetry'
|
|
59
|
+
|
|
60
|
+
const iframe = document.querySelector('#article-player')
|
|
61
|
+
const progressBar = document.querySelector('#progress')
|
|
62
|
+
if (!(iframe instanceof HTMLIFrameElement)) throw new Error('iframe 未找到')
|
|
63
|
+
if (!(progressBar instanceof HTMLElement)) throw new Error('进度条未找到')
|
|
44
64
|
|
|
45
65
|
const player = createEmbedListener({
|
|
46
66
|
// 传入内部部署的播放器 origin,过滤不受信任的消息来源。
|
|
@@ -53,35 +73,40 @@ const unsubscribe = player.on('timeupdate', ({ time, duration }) => {
|
|
|
53
73
|
progressBar.style.width = `${(time / duration) * 100}%`
|
|
54
74
|
})
|
|
55
75
|
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
76
|
+
const telemetry = createTelemetrySession({
|
|
77
|
+
application: { name: 'cms-host', release: BUILD_SHA },
|
|
78
|
+
// sink 是本地队列入口;容量、批量、重试和 HTTP 仍由宿主实现。
|
|
79
|
+
sink: { onRecord: enqueueRecord, onSummary: enqueueSummary },
|
|
59
80
|
})
|
|
60
81
|
|
|
61
|
-
const
|
|
62
|
-
// 新版 iframe
|
|
63
|
-
//
|
|
64
|
-
|
|
82
|
+
const unsubscribeTelemetry = player.onAny((event) => {
|
|
83
|
+
// 新版 iframe 的 event.delivery 保留生产端 session、ID、时间与 sequence。
|
|
84
|
+
// telemetry 在本地归一,不能在这里直接逐条 fetch / analytics.track。
|
|
85
|
+
telemetry.record(event)
|
|
65
86
|
})
|
|
66
87
|
|
|
67
88
|
player.on('error', (err) => {
|
|
68
89
|
// err.code 是 protocol 注册的 E_* 错误码
|
|
69
90
|
})
|
|
70
91
|
|
|
71
|
-
//
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
92
|
+
// 页面离开时再清理;不要在订阅完成后立即销毁 listener。
|
|
93
|
+
window.addEventListener('pagehide', () => {
|
|
94
|
+
unsubscribe()
|
|
95
|
+
unsubscribeTelemetry()
|
|
96
|
+
player.destroy()
|
|
97
|
+
telemetry.finish({ reason: 'page_unload' })
|
|
98
|
+
}, { once: true })
|
|
75
99
|
```
|
|
76
100
|
|
|
101
|
+
单页应用应在组件或路由的卸载钩子中执行同一组清理,而不是等待整个页面触发 `pagehide`。
|
|
102
|
+
|
|
77
103
|
## API
|
|
78
104
|
|
|
79
105
|
| 成员 | 说明 |
|
|
80
106
|
|:---|:---|
|
|
81
107
|
| `createEmbedListener(options?)` | 创建监听器。`options.origin` 白名单(省略=接受任意 origin,仍过 schema 校验);`options.iframe` 可选实例归属;`options.target` 挂载目标,默认 `window` |
|
|
82
108
|
| `listener.on(event, handler)` | 订阅事件,返回退订函数 |
|
|
83
|
-
| `listener.onAny(handler)` |
|
|
84
|
-
| `listener.onDelivered(handler)` | 订阅带生产端 `session`、`deliveryId`、发生时间和 `sequence` 的完整事件;旧 iframe 不会调用它 |
|
|
109
|
+
| `listener.onAny(handler)` | 订阅全部 `PlayerEvent`;新版 iframe 的事件顶层带 `delivery`,旧版可缺省;不应逐条直接发网络 |
|
|
85
110
|
| `listener.off(event, handler)` | 退订(需传订阅时的同一 handler 引用) |
|
|
86
111
|
| `listener.destroy()` | 卸载 `message` 监听并清空所有订阅 |
|
|
87
112
|
|
|
@@ -92,10 +117,18 @@ player.destroy()
|
|
|
92
117
|
- **只收不发**——本包只订阅事件,不下发命令。静态 iframe 场景没有命令通道,要控制播放请改用 [`@video-lab/react-frame`](https://www.npmjs.com/package/@video-lab/react-frame) 或 [`@video-lab/vue-frame`](https://www.npmjs.com/package/@video-lab/vue-frame)
|
|
93
118
|
- **所有消息过 Zod schema 校验**,非法消息静默丢弃
|
|
94
119
|
- **SSR 安全**——取不到 `window` 时整体 no-op,不抛错
|
|
95
|
-
- **只转发订阅后的事件**——不缓存 `ready` / `playablechange` / `sourceroute` 等历史状态。`createEmbedListener()` 返回本身不是订阅完成:每个 `on` / `onAny`
|
|
120
|
+
- **只转发订阅后的事件**——不缓存 `ready` / `playablechange` / `sourceroute` 等历史状态。`createEmbedListener()` 返回本身不是订阅完成:每个 `on` / `onAny` 成功返回后才开始接收未来事件。需要开始即采集时,先创建 listener 并完成**全部**订阅,再设置 iframe `src`。
|
|
96
121
|
- **iframe DOM 生命周期不是播放器状态**——`iframe.onload` 只说明 iframe 文档导航完成,不能证明播放器 `ready`、媒体可播放或 source 未出错;`onerror` 也不能替代契约 `error`。晚 attach 后需要可信现态或要下发命令时,升级到 React/Vue iframe。
|
|
97
122
|
- **origin 不是实例身份**——同页多个来自同一 origin 的静态 iframe 时,为每一张 iframe 创建一个 `createEmbedListener({ origin, iframe })`。helper 会同时校验 `origin`、`event.source === iframe.contentWindow` 与 protocol envelope;source 归属不能替代来源或 schema 校验。
|
|
98
|
-
- **默认全局监听器不猜实例**——`SentinelEmbed.on()`
|
|
123
|
+
- **默认全局监听器不猜实例**——`SentinelEmbed.on()` 只为旧接入保留全局广播语义,不作为生产接入默认方案。即使页面当前只有一张 iframe,也应使用 `SentinelEmbed.createEmbedListener({ origin, iframe })`,避免后续增加同源播放器时静默串事件。
|
|
124
|
+
|
|
125
|
+
### 高频与遥测
|
|
126
|
+
|
|
127
|
+
`onAny()` 是本地回调,不是“一次回调发一次 HTTP”的授权。`timeupdate` 常见约为
|
|
128
|
+
4 次/秒;直接在完整事件订阅器中调用 `fetch()`、`analytics.track()` 或错误平台 breadcrumb,会造成不必要的
|
|
129
|
+
网络与存储压力。需要错误、QoE、行为和恢复的会话事实时,将 `onAny()` 接入
|
|
130
|
+
[`@video-lab/telemetry`](https://www.npmjs.com/package/@video-lab/telemetry) 的 `record()`;旧 iframe 缺少
|
|
131
|
+
`delivery` 时遥测会标记去重不可验证。宿主仍负责有界队列、批量、限并发、有限重试和上传失败指标。
|
|
99
132
|
|
|
100
133
|
## 相关
|
|
101
134
|
|
|
@@ -105,7 +138,16 @@ MIT
|
|
|
105
138
|
|
|
106
139
|
## 错误 UI 接管
|
|
107
140
|
|
|
108
|
-
通过 iframe URL 参数 `showErrorOverlay=0` 关闭默认错误文字、背景和 Retry
|
|
141
|
+
通过 iframe URL 参数 `showErrorOverlay=0` 关闭默认错误文字、背景和 Retry。省略时保持开启,错误事件与恢复能力不受影响;宿主自行决定提示文案和样式。本项仅初始化读取,改变时须重新挂载。纯 iframe 标签需另接 helper 才能订阅事件。
|
|
142
|
+
|
|
143
|
+
## Loading UI 接管
|
|
144
|
+
|
|
145
|
+
静态 iframe URL 使用 `showDefaultLoadingOverlay=0` 关闭 SDK 默认 Loading;省略时保持开启。
|
|
146
|
+
设置 `showLoadingText=1` 会在默认转圈下显示状态文字,省略时只显示转圈;关闭默认 Loading 时文字也隐藏。
|
|
147
|
+
默认错误动作按钮可用 `errorButtonBackground=%23dc2626` 与 `errorButtonForeground=%23ffffff` 调整背景和文字色;按钮动作及文案仍由播放器状态决定。
|
|
148
|
+
该参数只控制默认视觉与 ARIA,不关闭 `playablechange`、恢复调度或其他事件。静态 URL 不能传
|
|
149
|
+
React renderer 或 Vue slot,因此需要品牌 Loading 时,应由 iframe 外的宿主 DOM 渲染,并在终态时让位给
|
|
150
|
+
错误或业务 CTA。`showLoadingOverlay` 已删除,不再解析。
|
|
109
151
|
|
|
110
152
|
## 内置控件按需隐藏
|
|
111
153
|
|
|
@@ -113,7 +155,7 @@ MIT
|
|
|
113
155
|
八个可选键为 `play`、`progress`、`time`、`volume`、`playbackRate`、`fullscreen`、`cssFullscreen`、`pip`。
|
|
114
156
|
false 隐藏入口,true/省略保留平台默认;`controls=false` 整体关闭优先。隐藏不禁用既有命令,
|
|
115
157
|
运行时修改须由宿主显式重建,不增加 PiP RPC。
|
|
116
|
-
iframe
|
|
158
|
+
iframe 须使用支持该功能、已部署的精确版本;旧 iframe 可能忽略新配置。
|
|
117
159
|
八个键对应 URL 参数 `controlPlay`、`controlProgress`、`controlTime`、`controlVolume`、`controlPlaybackRate`、`controlFullscreen`、`controlCssFullscreen`、`controlPip`,接受 0/false、1/true/空串;非法值整体拒绝。
|
|
118
160
|
|
|
119
161
|
## 宿主网页全屏
|
package/dist/index.cjs
CHANGED
|
@@ -45,10 +45,7 @@ function createEmbedListener(options = {}) {
|
|
|
45
45
|
function dispatch(evt) {
|
|
46
46
|
const { event, payload } = evt;
|
|
47
47
|
for (const handler of anyHandlers) try {
|
|
48
|
-
handler(
|
|
49
|
-
event,
|
|
50
|
-
payload
|
|
51
|
-
});
|
|
48
|
+
handler(evt);
|
|
52
49
|
} catch {}
|
|
53
50
|
const set = handlers.get(event);
|
|
54
51
|
if (!set) return;
|
|
@@ -60,7 +57,6 @@ function createEmbedListener(options = {}) {
|
|
|
60
57
|
}
|
|
61
58
|
const handlers = /* @__PURE__ */ new Map();
|
|
62
59
|
const anyHandlers = /* @__PURE__ */ new Set();
|
|
63
|
-
const deliveredHandlers = /* @__PURE__ */ new Set();
|
|
64
60
|
const onMessage = (ev) => {
|
|
65
61
|
const msg = ev;
|
|
66
62
|
if (allowed && !allowed.has(msg.origin)) return;
|
|
@@ -71,19 +67,15 @@ function createEmbedListener(options = {}) {
|
|
|
71
67
|
return;
|
|
72
68
|
}
|
|
73
69
|
if (parsed.data.type !== "event") return;
|
|
74
|
-
dispatch(parsed.data.
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
event: parsed.data.payload,
|
|
70
|
+
dispatch(parsed.data.producerSessionId !== void 0 && parsed.data.sequence !== void 0 ? {
|
|
71
|
+
...parsed.data.payload,
|
|
72
|
+
delivery: {
|
|
78
73
|
producerSessionId: parsed.data.producerSessionId,
|
|
79
74
|
deliveryId: parsed.data.id,
|
|
80
75
|
occurredAtMs: parsed.data.timestamp,
|
|
81
76
|
sequence: parsed.data.sequence
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
handler(delivered);
|
|
85
|
-
} catch {}
|
|
86
|
-
}
|
|
77
|
+
}
|
|
78
|
+
} : parsed.data.payload);
|
|
87
79
|
};
|
|
88
80
|
target?.addEventListener("message", onMessage);
|
|
89
81
|
const off = (event, handler) => {
|
|
@@ -102,20 +94,14 @@ function createEmbedListener(options = {}) {
|
|
|
102
94
|
anyHandlers.add(handler);
|
|
103
95
|
return () => anyHandlers.delete(handler);
|
|
104
96
|
};
|
|
105
|
-
const onDelivered = (handler) => {
|
|
106
|
-
deliveredHandlers.add(handler);
|
|
107
|
-
return () => deliveredHandlers.delete(handler);
|
|
108
|
-
};
|
|
109
97
|
const destroy = () => {
|
|
110
98
|
target?.removeEventListener("message", onMessage);
|
|
111
99
|
handlers.clear();
|
|
112
100
|
anyHandlers.clear();
|
|
113
|
-
deliveredHandlers.clear();
|
|
114
101
|
};
|
|
115
102
|
return {
|
|
116
103
|
on,
|
|
117
104
|
onAny,
|
|
118
|
-
onDelivered,
|
|
119
105
|
off,
|
|
120
106
|
destroy
|
|
121
107
|
};
|
|
@@ -313,10 +299,6 @@ function on(event, handler) {
|
|
|
313
299
|
function onAny(handler) {
|
|
314
300
|
return getDefault().onAny(handler);
|
|
315
301
|
}
|
|
316
|
-
/** 用默认单例订阅带 producer delivery 证据的事件。 */
|
|
317
|
-
function onDelivered(handler) {
|
|
318
|
-
return getDefault().onDelivered(handler);
|
|
319
|
-
}
|
|
320
302
|
/** 用默认单例退订。传入订阅时的同一个 handler 引用 */
|
|
321
303
|
function off(event, handler) {
|
|
322
304
|
getDefault().off(event, handler);
|
|
@@ -333,4 +315,3 @@ exports.destroy = destroy;
|
|
|
333
315
|
exports.off = off;
|
|
334
316
|
exports.on = on;
|
|
335
317
|
exports.onAny = onAny;
|
|
336
|
-
exports.onDelivered = onDelivered;
|
package/dist/index.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EventName, PageFullscreenAdapter, PageFullscreenAdapter as PageFullscreenAdapter$1, PlayerEvent } from "@video-lab/protocol";
|
|
2
2
|
//#region src/create-embed-listener.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* 事件名 → payload 的映射,直接从 protocol 的 {@link PlayerEvent} 联合推出,
|
|
@@ -9,8 +9,6 @@ type EventPayloadMap = { [E in PlayerEvent as E['event']]: E['payload']; };
|
|
|
9
9
|
type EmbedEventHandler<K extends EventName> = (payload: EventPayloadMap[K]) => void;
|
|
10
10
|
/** 完整的契约事件处理器,供遥测适配器使用;不裁剪 payload。 */
|
|
11
11
|
type EmbedAnyEventHandler = (event: PlayerEvent) => void;
|
|
12
|
-
/** 完整投递处理器;只接收带生产端证据的新版 iframe 事件。 */
|
|
13
|
-
type EmbedDeliveredEventHandler = (event: DeliveredPlayerEvent) => void;
|
|
14
12
|
interface EmbedListenerOptions {
|
|
15
13
|
/**
|
|
16
14
|
* 只接受这些 origin 广播来的事件。省略 = 接受任意 origin(仍然要过 schema 校验)。
|
|
@@ -33,8 +31,6 @@ interface EmbedListener {
|
|
|
33
31
|
* 订阅所有随后到达的播放器事件。不会重放调用前已经广播的历史事件;返回退订函数。
|
|
34
32
|
*/
|
|
35
33
|
onAny(handler: EmbedAnyEventHandler): () => void;
|
|
36
|
-
/** 订阅带 producer session、时钟与 sequence 的完整投递流。 */
|
|
37
|
-
onDelivered(handler: EmbedDeliveredEventHandler): () => void;
|
|
38
34
|
/**
|
|
39
35
|
* 订阅某个随后到达的播放器事件。不会重放调用前已经广播的历史事件;返回退订函数。
|
|
40
36
|
*/
|
|
@@ -83,12 +79,9 @@ declare function createPageFullscreenController(options: PageFullscreenControlle
|
|
|
83
79
|
declare function on<K extends EventName>(event: K, handler: EmbedEventHandler<K>): () => void;
|
|
84
80
|
/** 用默认单例订阅随后到达的完整契约事件。不回放历史事件;返回退订函数。 */
|
|
85
81
|
declare function onAny(handler: EmbedAnyEventHandler): () => void;
|
|
86
|
-
/** 用默认单例订阅带 producer delivery 证据的事件。 */
|
|
87
|
-
declare function onDelivered(handler: EmbedDeliveredEventHandler): () => void;
|
|
88
82
|
/** 用默认单例退订。传入订阅时的同一个 handler 引用 */
|
|
89
83
|
declare function off<K extends EventName>(event: K, handler: EmbedEventHandler<K>): void;
|
|
90
84
|
/** 卸载默认单例的 `window` 监听并清空订阅。下次 `on` 会重新创建 */
|
|
91
85
|
declare function destroy(): void;
|
|
92
86
|
//#endregion
|
|
93
|
-
export { type EmbedAnyEventHandler, type
|
|
94
|
-
//# sourceMappingURL=index.d.cts.map
|
|
87
|
+
export { type EmbedAnyEventHandler, type EmbedEventHandler, type EmbedListener, type EmbedListenerOptions, type EventPayloadMap, type PageFullscreenAdapter, type PageFullscreenControllerOptions, createEmbedListener, createPageFullscreenController, destroy, off, on, onAny };
|
package/dist/index.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { EventName, PageFullscreenAdapter, PageFullscreenAdapter as PageFullscreenAdapter$1, PlayerEvent } from "@video-lab/protocol";
|
|
2
2
|
//#region src/create-embed-listener.d.ts
|
|
3
3
|
/**
|
|
4
4
|
* 事件名 → payload 的映射,直接从 protocol 的 {@link PlayerEvent} 联合推出,
|
|
@@ -9,8 +9,6 @@ type EventPayloadMap = { [E in PlayerEvent as E['event']]: E['payload']; };
|
|
|
9
9
|
type EmbedEventHandler<K extends EventName> = (payload: EventPayloadMap[K]) => void;
|
|
10
10
|
/** 完整的契约事件处理器,供遥测适配器使用;不裁剪 payload。 */
|
|
11
11
|
type EmbedAnyEventHandler = (event: PlayerEvent) => void;
|
|
12
|
-
/** 完整投递处理器;只接收带生产端证据的新版 iframe 事件。 */
|
|
13
|
-
type EmbedDeliveredEventHandler = (event: DeliveredPlayerEvent) => void;
|
|
14
12
|
interface EmbedListenerOptions {
|
|
15
13
|
/**
|
|
16
14
|
* 只接受这些 origin 广播来的事件。省略 = 接受任意 origin(仍然要过 schema 校验)。
|
|
@@ -33,8 +31,6 @@ interface EmbedListener {
|
|
|
33
31
|
* 订阅所有随后到达的播放器事件。不会重放调用前已经广播的历史事件;返回退订函数。
|
|
34
32
|
*/
|
|
35
33
|
onAny(handler: EmbedAnyEventHandler): () => void;
|
|
36
|
-
/** 订阅带 producer session、时钟与 sequence 的完整投递流。 */
|
|
37
|
-
onDelivered(handler: EmbedDeliveredEventHandler): () => void;
|
|
38
34
|
/**
|
|
39
35
|
* 订阅某个随后到达的播放器事件。不会重放调用前已经广播的历史事件;返回退订函数。
|
|
40
36
|
*/
|
|
@@ -83,12 +79,9 @@ declare function createPageFullscreenController(options: PageFullscreenControlle
|
|
|
83
79
|
declare function on<K extends EventName>(event: K, handler: EmbedEventHandler<K>): () => void;
|
|
84
80
|
/** 用默认单例订阅随后到达的完整契约事件。不回放历史事件;返回退订函数。 */
|
|
85
81
|
declare function onAny(handler: EmbedAnyEventHandler): () => void;
|
|
86
|
-
/** 用默认单例订阅带 producer delivery 证据的事件。 */
|
|
87
|
-
declare function onDelivered(handler: EmbedDeliveredEventHandler): () => void;
|
|
88
82
|
/** 用默认单例退订。传入订阅时的同一个 handler 引用 */
|
|
89
83
|
declare function off<K extends EventName>(event: K, handler: EmbedEventHandler<K>): void;
|
|
90
84
|
/** 卸载默认单例的 `window` 监听并清空订阅。下次 `on` 会重新创建 */
|
|
91
85
|
declare function destroy(): void;
|
|
92
86
|
//#endregion
|
|
93
|
-
export { type EmbedAnyEventHandler, type
|
|
94
|
-
//# sourceMappingURL=index.d.mts.map
|
|
87
|
+
export { type EmbedAnyEventHandler, type EmbedEventHandler, type EmbedListener, type EmbedListenerOptions, type EventPayloadMap, type PageFullscreenAdapter, type PageFullscreenControllerOptions, createEmbedListener, createPageFullscreenController, destroy, off, on, onAny };
|
package/dist/index.iife.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var SentinelEmbed=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(t||={});var n;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(n||={});let r=t.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),i=e=>{switch(typeof e){case`undefined`:return r.undefined;case`string`:return r.string;case`number`:return Number.isNaN(e)?r.nan:r.number;case`boolean`:return r.boolean;case`function`:return r.function;case`bigint`:return r.bigint;case`symbol`:return r.symbol;case`object`:return Array.isArray(e)?r.array:e===null?r.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?r.promise:typeof Map<`u`&&e instanceof Map?r.map:typeof Set<`u`&&e instanceof Set?r.set:typeof Date<`u`&&e instanceof Date?r.date:r.object;default:return r.unknown}},a=t.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]);var o=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){let n=i.path[r];r===i.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(this),n}static assert(t){if(!(t instanceof e))throw Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,t.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=e=>e.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};o.create=e=>new o(e);let s=(e,n)=>{let i;switch(e.code){case a.invalid_type:i=e.received===r.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case a.invalid_literal:i=`Invalid literal value, expected ${JSON.stringify(e.expected,t.jsonStringifyReplacer)}`;break;case a.unrecognized_keys:i=`Unrecognized key(s) in object: ${t.joinValues(e.keys,`, `)}`;break;case a.invalid_union:i=`Invalid input`;break;case a.invalid_union_discriminator:i=`Invalid discriminator value. Expected ${t.joinValues(e.options)}`;break;case a.invalid_enum_value:i=`Invalid enum value. Expected ${t.joinValues(e.options)}, received '${e.received}'`;break;case a.invalid_arguments:i=`Invalid function arguments`;break;case a.invalid_return_type:i=`Invalid function return type`;break;case a.invalid_date:i=`Invalid date`;break;case a.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(i=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(i=`${i} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?i=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?i=`Invalid input: must end with "${e.validation.endsWith}"`:t.assertNever(e.validation):i=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case a.too_small:i=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case a.too_big:i=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case a.custom:i=`Invalid input`;break;case a.invalid_intersection_types:i=`Intersection results could not be merged`;break;case a.not_multiple_of:i=`Number must be a multiple of ${e.multipleOf}`;break;case a.not_finite:i=`Number must be finite`;break;default:i=n.defaultError,t.assertNever(e)}return{message:i}},c=s;function l(){return c}let u=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function d(e,t){let n=l(),r=u({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===s?void 0:s].filter(e=>!!e)});e.common.issues.push(r)}var f=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return p;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return p;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}};let p=Object.freeze({status:`aborted`}),m=e=>({status:`dirty`,value:e}),h=e=>({status:`valid`,value:e}),g=e=>e.status===`aborted`,_=e=>e.status===`dirty`,v=e=>e.status===`valid`,y=e=>typeof Promise<`u`&&e instanceof Promise;var b;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(b||={});var x=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}};let S=(e,t)=>{if(v(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new o(e.common.issues);return this._error=t,this._error}}};function C(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var w=class{get description(){return this._def.description}_getType(e){return i(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:i(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new f,ctx:{common:e.parent.common,data:e.data,parsedType:i(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(y(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:i(e)},r=this._parseSync({data:e,path:n.path,parent:n});return S(n,r)}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:i(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return v(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>v(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:i(e)},r=this._parse({data:e,path:n.path,parent:n}),a=await(y(r)?r:Promise.resolve(r));return S(n,a)}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),o=()=>r.addIssue({code:a.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(o(),!1)):i?!0:(o(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new L({schema:this,typeName:V.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return R.create(this,this._def)}nullable(){return z.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return k.create(this)}promise(){return I.create(this,this._def)}or(e){return M.create([this,e],this._def)}and(e){return P.create(this,e,this._def)}transform(e){return new L({...C(this._def),schema:this,typeName:V.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new Ue({...C(this._def),innerType:this,defaultValue:t,typeName:V.ZodDefault})}brand(){return new Ke({typeName:V.ZodBranded,type:this,...C(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new We({...C(this._def),innerType:this,catchValue:t,typeName:V.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return qe.create(this,e)}readonly(){return B.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}};let ee=/^c[^\s-]{8,}$/i,te=/^[0-9a-z]+$/,ne=/^[0-9A-HJKMNP-TV-Z]{26}$/i,re=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ie=/^[a-z0-9_-]{21}$/i,ae=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,oe=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,se=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,ce,le=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,ue=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,de=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,fe=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,pe=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,me=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,he=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,ge=RegExp(`^${he}$`);function _e(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function ve(e){return RegExp(`^${_e(e)}$`)}function ye(e){let t=`${he}T${_e(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function be(e,t){return!!((t===`v4`||!t)&&le.test(e)||(t===`v6`||!t)&&de.test(e))}function xe(e,t){if(!ae.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function Se(e,t){return!!((t===`v4`||!t)&&ue.test(e)||(t===`v6`||!t)&&fe.test(e))}var Ce=class e extends w{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==r.string){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.string,received:t.parsedType}),p}let n=new f,i;for(let r of this._def.checks)if(r.kind===`min`)e.data.length<r.value&&(i=this._getOrReturnCtx(e,i),d(i,{code:a.too_small,minimum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),n.dirty());else if(r.kind===`max`)e.data.length>r.value&&(i=this._getOrReturnCtx(e,i),d(i,{code:a.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),n.dirty());else if(r.kind===`length`){let t=e.data.length>r.value,o=e.data.length<r.value;(t||o)&&(i=this._getOrReturnCtx(e,i),t?d(i,{code:a.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}):o&&d(i,{code:a.too_small,minimum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}),n.dirty())}else if(r.kind===`email`)se.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`email`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`emoji`)ce||=RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`),ce.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`emoji`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`uuid`)re.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`uuid`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`nanoid`)ie.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`nanoid`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`cuid`)ee.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`cuid`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`cuid2`)te.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`cuid2`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`ulid`)ne.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`ulid`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`url`)try{new URL(e.data)}catch{i=this._getOrReturnCtx(e,i),d(i,{validation:`url`,code:a.invalid_string,message:r.message}),n.dirty()}else r.kind===`regex`?(r.regex.lastIndex=0,r.regex.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`regex`,code:a.invalid_string,message:r.message}),n.dirty())):r.kind===`trim`?e.data=e.data.trim():r.kind===`includes`?e.data.includes(r.value,r.position)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:{includes:r.value,position:r.position},message:r.message}),n.dirty()):r.kind===`toLowerCase`?e.data=e.data.toLowerCase():r.kind===`toUpperCase`?e.data=e.data.toUpperCase():r.kind===`startsWith`?e.data.startsWith(r.value)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:{startsWith:r.value},message:r.message}),n.dirty()):r.kind===`endsWith`?e.data.endsWith(r.value)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:{endsWith:r.value},message:r.message}),n.dirty()):r.kind===`datetime`?ye(r).test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:`datetime`,message:r.message}),n.dirty()):r.kind===`date`?ge.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:`date`,message:r.message}),n.dirty()):r.kind===`time`?ve(r).test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:`time`,message:r.message}),n.dirty()):r.kind===`duration`?oe.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`duration`,code:a.invalid_string,message:r.message}),n.dirty()):r.kind===`ip`?be(e.data,r.version)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`ip`,code:a.invalid_string,message:r.message}),n.dirty()):r.kind===`jwt`?xe(e.data,r.alg)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`jwt`,code:a.invalid_string,message:r.message}),n.dirty()):r.kind===`cidr`?Se(e.data,r.version)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`cidr`,code:a.invalid_string,message:r.message}),n.dirty()):r.kind===`base64`?pe.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`base64`,code:a.invalid_string,message:r.message}),n.dirty()):r.kind===`base64url`?me.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`base64url`,code:a.invalid_string,message:r.message}),n.dirty()):t.assertNever(r);return{status:n.value,value:e.data}}_regex(e,t,n){return this.refinement(t=>e.test(t),{validation:t,code:a.invalid_string,...b.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...b.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...b.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...b.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...b.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...b.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...b.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...b.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...b.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...b.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...b.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...b.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...b.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...b.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...b.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...b.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...b.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...b.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...b.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...b.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...b.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...b.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...b.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...b.errToObj(t)})}nonempty(e){return this.min(1,b.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};Ce.create=e=>new Ce({checks:[],typeName:V.ZodString,coerce:e?.coerce??!1,...C(e)});function we(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var Te=class e extends w{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==r.number){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.number,received:t.parsedType}),p}let n,i=new f;for(let r of this._def.checks)r.kind===`int`?t.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),d(n,{code:a.invalid_type,expected:`integer`,received:`float`,message:r.message}),i.dirty()):r.kind===`min`?(r.inclusive?e.data<r.value:e.data<=r.value)&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.too_small,minimum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),i.dirty()):r.kind===`max`?(r.inclusive?e.data>r.value:e.data>=r.value)&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),i.dirty()):r.kind===`multipleOf`?we(e.data,r.value)!==0&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.not_multiple_of,multipleOf:r.value,message:r.message}),i.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),d(n,{code:a.not_finite,message:r.message}),i.dirty()):t.assertNever(r);return{status:i.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,b.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,b.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,b.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,b.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:b.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:b.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:b.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:b.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:b.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:b.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:b.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:b.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:b.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:b.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind===`int`||e.kind===`multipleOf`&&t.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.value<e)&&(e=n.value);return Number.isFinite(t)&&Number.isFinite(e)}};Te.create=e=>new Te({checks:[],typeName:V.ZodNumber,coerce:e?.coerce||!1,...C(e)});var Ee=class e extends w{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==r.bigint)return this._getInvalidInput(e);let n,i=new f;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.data<r.value:e.data<=r.value)&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.too_small,type:`bigint`,minimum:r.value,inclusive:r.inclusive,message:r.message}),i.dirty()):r.kind===`max`?(r.inclusive?e.data>r.value:e.data>=r.value)&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),i.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.not_multiple_of,multipleOf:r.value,message:r.message}),i.dirty()):t.assertNever(r);return{status:i.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.bigint,received:t.parsedType}),p}gte(e,t){return this.setLimit(`min`,e,!0,b.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,b.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,b.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,b.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:b.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:b.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:b.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:b.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:b.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:b.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};Ee.create=e=>new Ee({checks:[],typeName:V.ZodBigInt,coerce:e?.coerce??!1,...C(e)});var De=class extends w{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==r.boolean){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.boolean,received:t.parsedType}),p}return h(e.data)}};De.create=e=>new De({typeName:V.ZodBoolean,coerce:e?.coerce||!1,...C(e)});var Oe=class e extends w{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==r.date){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.date,received:t.parsedType}),p}if(Number.isNaN(e.data.getTime()))return d(this._getOrReturnCtx(e),{code:a.invalid_date}),p;let n=new f,i;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()<r.value&&(i=this._getOrReturnCtx(e,i),d(i,{code:a.too_small,message:r.message,inclusive:!0,exact:!1,minimum:r.value,type:`date`}),n.dirty()):r.kind===`max`?e.data.getTime()>r.value&&(i=this._getOrReturnCtx(e,i),d(i,{code:a.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),n.dirty()):t.assertNever(r);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:b.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:b.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e==null?null:new Date(e)}};Oe.create=e=>new Oe({checks:[],coerce:e?.coerce||!1,typeName:V.ZodDate,...C(e)});var ke=class extends w{_parse(e){if(this._getType(e)!==r.symbol){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.symbol,received:t.parsedType}),p}return h(e.data)}};ke.create=e=>new ke({typeName:V.ZodSymbol,...C(e)});var T=class extends w{_parse(e){if(this._getType(e)!==r.undefined){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.undefined,received:t.parsedType}),p}return h(e.data)}};T.create=e=>new T({typeName:V.ZodUndefined,...C(e)});var E=class extends w{_parse(e){if(this._getType(e)!==r.null){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.null,received:t.parsedType}),p}return h(e.data)}};E.create=e=>new E({typeName:V.ZodNull,...C(e)});var Ae=class extends w{constructor(){super(...arguments),this._any=!0}_parse(e){return h(e.data)}};Ae.create=e=>new Ae({typeName:V.ZodAny,...C(e)});var D=class extends w{constructor(){super(...arguments),this._unknown=!0}_parse(e){return h(e.data)}};D.create=e=>new D({typeName:V.ZodUnknown,...C(e)});var O=class extends w{_parse(e){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.never,received:t.parsedType}),p}};O.create=e=>new O({typeName:V.ZodNever,...C(e)});var je=class extends w{_parse(e){if(this._getType(e)!==r.undefined){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.void,received:t.parsedType}),p}return h(e.data)}};je.create=e=>new je({typeName:V.ZodVoid,...C(e)});var k=class e extends w{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),i=this._def;if(t.parsedType!==r.array)return d(t,{code:a.invalid_type,expected:r.array,received:t.parsedType}),p;if(i.exactLength!==null){let e=t.data.length>i.exactLength.value,r=t.data.length<i.exactLength.value;(e||r)&&(d(t,{code:e?a.too_big:a.too_small,minimum:r?i.exactLength.value:void 0,maximum:e?i.exactLength.value:void 0,type:`array`,inclusive:!0,exact:!0,message:i.exactLength.message}),n.dirty())}if(i.minLength!==null&&t.data.length<i.minLength.value&&(d(t,{code:a.too_small,minimum:i.minLength.value,type:`array`,inclusive:!0,exact:!1,message:i.minLength.message}),n.dirty()),i.maxLength!==null&&t.data.length>i.maxLength.value&&(d(t,{code:a.too_big,maximum:i.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:i.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>i.type._parseAsync(new x(t,e,t.path,n)))).then(e=>f.mergeArray(n,e));let o=[...t.data].map((e,n)=>i.type._parseSync(new x(t,e,t.path,n)));return f.mergeArray(n,o)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:b.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:b.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:b.toString(n)}})}nonempty(e){return this.min(1,e)}};k.create=(e,t)=>new k({type:e,minLength:null,maxLength:null,exactLength:null,typeName:V.ZodArray,...C(t)});function A(e){if(e instanceof j){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=R.create(A(r))}return new j({...e._def,shape:()=>t})}else if(e instanceof k)return new k({...e._def,type:A(e.element)});else if(e instanceof R)return R.create(A(e.unwrap()));else if(e instanceof z)return z.create(A(e.unwrap()));else if(e instanceof F)return F.create(e.items.map(e=>A(e)));else return e}var j=class e extends w{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),n=t.objectKeys(e);return this._cached={shape:e,keys:n},this._cached}_parse(e){if(this._getType(e)!==r.object){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.object,received:t.parsedType}),p}let{status:t,ctx:n}=this._processInputParams(e),{shape:i,keys:o}=this._getCached(),s=[];if(!(this._def.catchall instanceof O&&this._def.unknownKeys===`strip`))for(let e in n.data)o.includes(e)||s.push(e);let c=[];for(let e of o){let t=i[e],r=n.data[e];c.push({key:{status:`valid`,value:e},value:t._parse(new x(n,r,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof O){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of s)c.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)s.length>0&&(d(n,{code:a.unrecognized_keys,keys:s}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of s){let r=n.data[t];c.push({key:{status:`valid`,value:t},value:e._parse(new x(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of c){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>f.mergeObjectSync(t,e)):f.mergeObjectSync(t,c)}get shape(){return this._def.shape()}strict(t){return b.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:b.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:V.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(n){let r={};for(let e of t.objectKeys(n))n[e]&&this.shape[e]&&(r[e]=this.shape[e]);return new e({...this._def,shape:()=>r})}omit(n){let r={};for(let e of t.objectKeys(this.shape))n[e]||(r[e]=this.shape[e]);return new e({...this._def,shape:()=>r})}deepPartial(){return A(this)}partial(n){let r={};for(let e of t.objectKeys(this.shape)){let t=this.shape[e];n&&!n[e]?r[e]=t:r[e]=t.optional()}return new e({...this._def,shape:()=>r})}required(n){let r={};for(let e of t.objectKeys(this.shape))if(n&&!n[e])r[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof R;)t=t._def.innerType;r[e]=t}return new e({...this._def,shape:()=>r})}keyof(){return Be(t.objectKeys(this.shape))}};j.create=(e,t)=>new j({shape:()=>e,unknownKeys:`strip`,catchall:O.create(),typeName:V.ZodObject,...C(t)}),j.strictCreate=(e,t)=>new j({shape:()=>e,unknownKeys:`strict`,catchall:O.create(),typeName:V.ZodObject,...C(t)}),j.lazycreate=(e,t)=>new j({shape:e,unknownKeys:`strip`,catchall:O.create(),typeName:V.ZodObject,...C(t)});var M=class extends w{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new o(e.ctx.common.issues));return d(t,{code:a.invalid_union,unionErrors:n}),p}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new o(e));return d(t,{code:a.invalid_union,unionErrors:i}),p}}get options(){return this._def.options}};M.create=(e,t)=>new M({options:e,typeName:V.ZodUnion,...C(t)});let N=e=>e instanceof Re?N(e.schema):e instanceof L?N(e.innerType()):e instanceof ze?[e.value]:e instanceof Ve?e.options:e instanceof He?t.objectValues(e.enum):e instanceof Ue?N(e._def.innerType):e instanceof T?[void 0]:e instanceof E?[null]:e instanceof R?[void 0,...N(e.unwrap())]:e instanceof z?[null,...N(e.unwrap())]:e instanceof Ke||e instanceof B?N(e.unwrap()):e instanceof We?N(e._def.innerType):[];var Me=class e extends w{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==r.object)return d(t,{code:a.invalid_type,expected:r.object,received:t.parsedType}),p;let n=this.discriminator,i=t.data[n],o=this.optionsMap.get(i);return o?t.common.async?o._parseAsync({data:t.data,path:t.path,parent:t}):o._parseSync({data:t.data,path:t.path,parent:t}):(d(t,{code:a.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),p)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=N(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:V.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...C(r)})}};function Ne(e,n){let a=i(e),o=i(n);if(e===n)return{valid:!0,data:e};if(a===r.object&&o===r.object){let r=t.objectKeys(n),i=t.objectKeys(e).filter(e=>r.indexOf(e)!==-1),a={...e,...n};for(let t of i){let r=Ne(e[t],n[t]);if(!r.valid)return{valid:!1};a[t]=r.data}return{valid:!0,data:a}}else if(a===r.array&&o===r.array){if(e.length!==n.length)return{valid:!1};let t=[];for(let r=0;r<e.length;r++){let i=e[r],a=n[r],o=Ne(i,a);if(!o.valid)return{valid:!1};t.push(o.data)}return{valid:!0,data:t}}else if(a===r.date&&o===r.date&&+e==+n)return{valid:!0,data:e};else return{valid:!1}}var P=class extends w{_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=(e,r)=>{if(g(e)||g(r))return p;let i=Ne(e.value,r.value);return i.valid?((_(e)||_(r))&&t.dirty(),{status:t.value,value:i.data}):(d(n,{code:a.invalid_intersection_types}),p)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};P.create=(e,t,n)=>new P({left:e,right:t,typeName:V.ZodIntersection,...C(n)});var F=class e extends w{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==r.array)return d(n,{code:a.invalid_type,expected:r.array,received:n.parsedType}),p;if(n.data.length<this._def.items.length)return d(n,{code:a.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),p;!this._def.rest&&n.data.length>this._def.items.length&&(d(n,{code:a.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let i=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new x(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(i).then(e=>f.mergeArray(t,e)):f.mergeArray(t,i)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};F.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new F({items:e,typeName:V.ZodTuple,rest:null,...C(t)})};var Pe=class e extends w{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==r.object)return d(n,{code:a.invalid_type,expected:r.object,received:n.parsedType}),p;let i=[],o=this._def.keyType,s=this._def.valueType;for(let e in n.data)i.push({key:o._parse(new x(n,e,n.path,e)),value:s._parse(new x(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?f.mergeObjectAsync(t,i):f.mergeObjectSync(t,i)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof w?new e({keyType:t,valueType:n,typeName:V.ZodRecord,...C(r)}):new e({keyType:Ce.create(),valueType:t,typeName:V.ZodRecord,...C(n)})}},Fe=class extends w{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==r.map)return d(n,{code:a.invalid_type,expected:r.map,received:n.parsedType}),p;let i=this._def.keyType,o=this._def.valueType,s=[...n.data.entries()].map(([e,t],r)=>({key:i._parse(new x(n,e,n.path,[r,`key`])),value:o._parse(new x(n,t,n.path,[r,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of s){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return p;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of s){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return p;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};Fe.create=(e,t,n)=>new Fe({valueType:t,keyType:e,typeName:V.ZodMap,...C(n)});var Ie=class e extends w{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==r.set)return d(n,{code:a.invalid_type,expected:r.set,received:n.parsedType}),p;let i=this._def;i.minSize!==null&&n.data.size<i.minSize.value&&(d(n,{code:a.too_small,minimum:i.minSize.value,type:`set`,inclusive:!0,exact:!1,message:i.minSize.message}),t.dirty()),i.maxSize!==null&&n.data.size>i.maxSize.value&&(d(n,{code:a.too_big,maximum:i.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:i.maxSize.message}),t.dirty());let o=this._def.valueType;function s(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return p;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let c=[...n.data.values()].map((e,t)=>o._parse(new x(n,e,n.path,t)));return n.common.async?Promise.all(c).then(e=>s(e)):s(c)}min(t,n){return new e({...this._def,minSize:{value:t,message:b.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:b.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Ie.create=(e,t)=>new Ie({valueType:e,minSize:null,maxSize:null,typeName:V.ZodSet,...C(t)});var Le=class e extends w{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==r.function)return d(t,{code:a.invalid_type,expected:r.function,received:t.parsedType}),p;function n(e,n){return u({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,l(),s].filter(e=>!!e),issueData:{code:a.invalid_arguments,argumentsError:n}})}function i(e,n){return u({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,l(),s].filter(e=>!!e),issueData:{code:a.invalid_return_type,returnTypeError:n}})}let c={errorMap:t.common.contextualErrorMap},f=t.data;if(this._def.returns instanceof I){let e=this;return h(async function(...t){let r=new o([]),a=await e._def.args.parseAsync(t,c).catch(e=>{throw r.addIssue(n(t,e)),r}),s=await Reflect.apply(f,this,a);return await e._def.returns._def.type.parseAsync(s,c).catch(e=>{throw r.addIssue(i(s,e)),r})})}else{let e=this;return h(function(...t){let r=e._def.args.safeParse(t,c);if(!r.success)throw new o([n(t,r.error)]);let a=Reflect.apply(f,this,r.data),s=e._def.returns.safeParse(a,c);if(!s.success)throw new o([i(a,s.error)]);return s.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:F.create(t).rest(D.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||F.create([]).rest(D.create()),returns:n||D.create(),typeName:V.ZodFunction,...C(r)})}},Re=class extends w{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};Re.create=(e,t)=>new Re({getter:e,typeName:V.ZodLazy,...C(t)});var ze=class extends w{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return d(t,{received:t.data,code:a.invalid_literal,expected:this._def.value}),p}return{status:`valid`,value:e.data}}get value(){return this._def.value}};ze.create=(e,t)=>new ze({value:e,typeName:V.ZodLiteral,...C(t)});function Be(e,t){return new Ve({values:e,typeName:V.ZodEnum,...C(t)})}var Ve=class e extends w{_parse(e){if(typeof e.data!=`string`){let n=this._getOrReturnCtx(e),r=this._def.values;return d(n,{expected:t.joinValues(r),received:n.parsedType,code:a.invalid_type}),p}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return d(t,{received:t.data,code:a.invalid_enum_value,options:n}),p}return h(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};Ve.create=Be;var He=class extends w{_parse(e){let n=t.getValidEnumValues(this._def.values),i=this._getOrReturnCtx(e);if(i.parsedType!==r.string&&i.parsedType!==r.number){let e=t.objectValues(n);return d(i,{expected:t.joinValues(e),received:i.parsedType,code:a.invalid_type}),p}if(this._cache||=new Set(t.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=t.objectValues(n);return d(i,{received:i.data,code:a.invalid_enum_value,options:e}),p}return h(e.data)}get enum(){return this._def.values}};He.create=(e,t)=>new He({values:e,typeName:V.ZodNativeEnum,...C(t)});var I=class extends w{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==r.promise&&t.common.async===!1?(d(t,{code:a.invalid_type,expected:r.promise,received:t.parsedType}),p):h((t.parsedType===r.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};I.create=(e,t)=>new I({type:e,typeName:V.ZodPromise,...C(t)});var L=class extends w{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===V.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:n,ctx:r}=this._processInputParams(e),i=this._def.effect||null,a={addIssue:e=>{d(r,e),e.fatal?n.abort():n.dirty()},get path(){return r.path}};if(a.addIssue=a.addIssue.bind(a),i.type===`preprocess`){let e=i.transform(r.data,a);if(r.common.async)return Promise.resolve(e).then(async e=>{if(n.value===`aborted`)return p;let t=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return t.status===`aborted`?p:t.status===`dirty`||n.value===`dirty`?m(t.value):t});{if(n.value===`aborted`)return p;let t=this._def.schema._parseSync({data:e,path:r.path,parent:r});return t.status===`aborted`?p:t.status===`dirty`||n.value===`dirty`?m(t.value):t}}if(i.type===`refinement`){let e=e=>{let t=i.refinement(e,a);if(r.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(r.common.async===!1){let t=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return t.status===`aborted`?p:(t.status===`dirty`&&n.dirty(),e(t.value),{status:n.value,value:t.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(t=>t.status===`aborted`?p:(t.status===`dirty`&&n.dirty(),e(t.value).then(()=>({status:n.value,value:t.value}))))}if(i.type===`transform`)if(r.common.async===!1){let e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!v(e))return p;let t=i.transform(e.value,a);if(t instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:n.value,value:t}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(e=>v(e)?Promise.resolve(i.transform(e.value,a)).then(e=>({status:n.value,value:e})):p);t.assertNever(i)}};L.create=(e,t,n)=>new L({schema:e,typeName:V.ZodEffects,effect:t,...C(n)}),L.createWithPreprocess=(e,t,n)=>new L({schema:t,effect:{type:`preprocess`,transform:e},typeName:V.ZodEffects,...C(n)});var R=class extends w{_parse(e){return this._getType(e)===r.undefined?h(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};R.create=(e,t)=>new R({innerType:e,typeName:V.ZodOptional,...C(t)});var z=class extends w{_parse(e){return this._getType(e)===r.null?h(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};z.create=(e,t)=>new z({innerType:e,typeName:V.ZodNullable,...C(t)});var Ue=class extends w{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===r.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};Ue.create=(e,t)=>new Ue({innerType:e,typeName:V.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...C(t)});var We=class extends w{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return y(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new o(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new o(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};We.create=(e,t)=>new We({innerType:e,typeName:V.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...C(t)});var Ge=class extends w{_parse(e){if(this._getType(e)!==r.nan){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.nan,received:t.parsedType}),p}return{status:`valid`,value:e.data}}};Ge.create=e=>new Ge({typeName:V.ZodNaN,...C(e)});var Ke=class extends w{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},qe=class e extends w{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?p:e.status===`dirty`?(t.dirty(),m(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?p:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:V.ZodPipeline})}},B=class extends w{_parse(e){let t=this._def.innerType._parse(e),n=e=>(v(e)&&(e.value=Object.freeze(e.value)),e);return y(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};B.create=(e,t)=>new B({innerType:e,typeName:V.ZodReadonly,...C(t)}),j.lazycreate;var V;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(V||={});let H=Ce.create,U=Te.create;Ge.create,Ee.create;let W=De.create;Oe.create,ke.create;let Je=T.create,Ye=E.create;Ae.create,D.create,O.create,je.create;let G=k.create,K=j.create;j.strictCreate;let q=M.create,J=Me.create;P.create,F.create;let Xe=Pe.create;Fe.create,Ie.create,Le.create,Re.create;let Y=ze.create,X=Ve.create;He.create,I.create,L.create,R.create,z.create,L.createWithPreprocess,qe.create;let Ze=X([`mp4`,`hls`,`flv`,`auto`]),Qe=X([`mp4`,`hls`,`flv`]),$e=q([H(),K({url:H(),loading:X([`eager`,`lazy`]).default(`lazy`).optional(),fit:X([`cover`,`contain`,`fill`]).default(`cover`).optional()})]),et=q([H(),K({url:H(),fit:X([`cover`,`contain`,`fill`]).optional(),closable:W().optional()})]),tt=J(`mode`,[K({mode:Y(`url`),url:H(),locale:H(),label:H(),isDefault:W().optional()}),K({mode:Y(`content`),content:H(),locale:H(),label:H(),isDefault:W().optional()})]),nt=K({lowLatencyMode:W().optional()}),rt=K({title:H().optional(),description:H().optional(),duration:U().optional()}),it=K({url:H(),type:Qe}),at={live:W().optional(),hls:nt.optional(),subtitles:G(tt).optional(),metadata:rt.optional()},ot=K({url:H(),type:Ze.optional(),...at}),st=K({sources:G(it).min(1),...at}),ct=q([H(),st,ot]),lt=q([H(),K({locale:H(),fallbackLocales:G(H()).optional(),messages:Xe(H(),Xe(H(),H())).optional()})]),ut=K({id:H(),text:H(),type:X([`scroll`,`top`,`bottom`]).optional(),color:H().optional(),start:U().nonnegative().optional()}),dt=K({enabled:W(),mode:X([`preload`,`streaming`]).optional(),items:G(ut).optional(),display:K({area:X([`top`,`half`,`full`]).optional(),opacity:U().min(0).max(1).optional(),speed:U().min(.5).max(2).optional(),fontSize:U().min(12).max(48).optional(),maxLines:U().int().positive().optional()}).optional()}).superRefine((e,t)=>{e.items&&e.items.length>0&&e.mode!==`preload`&&t.addIssue({code:`custom`,path:[`items`],message:`danmaku.items 只在 mode: 'preload' 下有效。当前 mode 是 ${e.mode??`streaming`}(默认)—— 渲染引擎在直播模式下会忽略每条的 start,整包会一股脑全飘出来。要么设 mode: "preload",要么改用 pushDanmaku 逐条推。`}),e.display?.maxLines!==void 0&&e.display.area&&e.display.area!==`full`&&t.addIssue({code:`custom`,path:[`display`,`maxLines`],message:`danmaku.display.maxLines 与 area: '${e.display.area}' 不能同时用 —— 渲染引擎里两者互斥(给了轨道条数,区域比例就失效),同传只会有一个生效。要限制条数就去掉 area(或用 area: 'full'),要限制区域就去掉 maxLines。`})}),ft=X([`homepage-preview`]),pt=K({play:W().optional(),progress:W().optional(),time:W().optional(),volume:W().optional(),playbackRate:W().optional(),fullscreen:W().optional(),cssFullscreen:W().optional(),pip:W().optional()}).strict();K({source:ct,preset:ft.optional(),autoplay:W().optional(),muted:W().optional(),loop:W().optional(),playbackRate:U().min(.25).max(4).optional(),volume:U().min(0).max(1).optional(),playsinline:W().optional(),preload:X([`none`,`metadata`,`auto`]).optional(),startTime:U().min(0).optional(),controls:W().optional(),showErrorOverlay:W().optional(),showLoadingOverlay:W().optional(),controlVisibility:pt.optional(),interactive:W().optional(),poster:$e.optional(),pauseImage:et.optional(),locale:lt.optional(),danmaku:dt.optional(),debug:W().optional()});let mt=X([`manifest`,`media`,`network`,`auth`,`env`,`autoplay`]),ht=X([`E_MANIFEST_PARSE`,`E_MEDIA_DECODE`,`E_MEDIA_ABORTED`,`E_MEDIA_NOT_SUPPORTED`,`E_SUBTITLE_LOAD_FAILED`,`E_AUTOPLAY_BLOCKED`,`E_NETWORK`,`E_NETWORK_TIMEOUT`,`E_AUTH_EXPIRED`,`E_ENV_CSP_BLOCKED`,`E_METHOD_NOT_SUPPORTED`,`E_DANMAKU_SEND_FAILED`,`E_INTERNAL`,`E_UNKNOWN`,`E_PLAYER_DESTROYED`,`E_HANDSHAKE_TIMEOUT`,`E_HANDSHAKE_VERSION_MISMATCH`,`E_LOAD_FAILED`,`E_FRAME_CRASHED`]),gt=X([`W_BROWSER_INCOMPATIBLE`,`W_VERSION_MISMATCH`,`W_EVENT_REJECTED`]),_t=K({name:H(),message:H(),code:U().optional(),status:U().optional()}).catchall(q([H(),U(),W()])),vt=K({code:ht,message:H(),retryable:W(),category:mt,cause:_t.optional()}),yt=K({fvt:U()}),bt=K({durationMs:U(),droppedFrames:U(),totalFrames:U()}),xt=[`switch_play_pause`,`switch_fullscreen`,`switch_cssfullscreen`,`switch_css_fullscreen`,`change_definition`,`change_rate`,`change_volume`,`change_muted`,`change_pip`,`seek`,`rotate`,`shot`,`download`,`switch_danmu`,`error_retry`],St=K({action:X(xt),source:H(),from:q([H(),U(),W()]).nullable(),to:q([H(),U(),W()]).nullable()});new Set(xt);let Z={channel:Y(`video-lab:page-fullscreen`),version:Y(1),session:H().min(1)},Ct=J(`type`,[K({...Z,type:Y(`hello`)}),K({...Z,type:Y(`ready`),instance:H().min(1)}),K({...Z,type:Y(`request`),instance:H().min(1),id:U().int().positive(),active:W()}),K({...Z,type:Y(`state`),instance:H().min(1),revision:U().int().nonnegative(),active:W()}),K({...Z,type:Y(`ack`),instance:H().min(1),revision:U().int().nonnegative()}),K({...Z,type:Y(`disconnect`)})]);K({available:W(),active:W()});let wt=K({active:W()}),Tt=X([`native`,`hls.js`,`flv.js`]),Et=X([`live`,`vod`]),Dt=K({platform:X([`ios`,`android`,`desktop`,`unknown`]),browser:X([`webkit`,`gecko`,`chromium`,`embedded`,`unknown`]),mse:X([`standard`,`managed`,`unavailable`])}),Ot=K({sessionId:H(),candidateTypes:G(Qe).min(1),streamKind:Et,runtime:Dt}),kt=J(`outcome`,[Ot.extend({outcome:Y(`selected`),mediaType:Qe,kernel:Tt,reason:X([`required_hls`,`live_preference`,`vod_preference`,`native_mp4_fallback`])}).strict(),Ot.extend({outcome:Y(`unsupported`),mediaType:Ye(),kernel:Ye(),reason:Y(`no_supported_candidate`),errorCode:Y(`E_MEDIA_NOT_SUPPORTED`)}).strict()]),At=K({sessionId:H(),kernel:Tt,mediaType:Qe.optional(),streamKind:Et.optional(),runtime:Dt.optional(),position:U(),qualityLevel:U().nullable(),srcOrigin:H(),srcPath:H()});X([`detected`,`backoff`,`attempting`,`validating`,`recovered`,`failed`,`cancelled`]);let jt=X([`reconnect`,`media_recovery`,`visibility_reload`]),Mt=X([`error`,`manual`,`visibility`,`stall`,`startup_timeout`]),Q={sessionId:H().min(1),recoveryId:U().int().positive(),strategy:jt,trigger:Mt,attempt:U().int().nonnegative(),maxAttempts:U().int().positive(),elapsedMs:U().finite().nonnegative(),reason:ht.optional()},Nt={...Q,attempt:U().int().positive()},Pt=J(`phase`,[K({...Q,phase:Y(`detected`)}).strict(),K({...Q,phase:Y(`backoff`)}).strict(),K({...Nt,phase:Y(`attempting`)}).strict(),K({...Nt,phase:Y(`validating`)}).strict(),K({...Nt,phase:Y(`recovered`),validatedBy:Y(`playing_position_advance`)}).strict(),K({...Q,phase:Y(`failed`),outcome:X([`timeout`,`attempts_exhausted`])}).strict(),K({...Q,phase:Y(`cancelled`),outcome:X([`source_changed`,`destroyed`,`superseded`,`user_paused`,`natural_recovery`])}).strict()]).refine(e=>e.attempt<=e.maxAttempts,{message:`attempt exceeds episode budget`,path:[`attempt`]}),Ft=K({level:U(),label:H().optional(),height:U().optional(),bitrate:U().optional()}),It=K({id:U(),locale:H(),label:H()}),Lt=X([`ok`,`initializing`,`buffering`,`stalled`,`reconnecting`,`autoplay_blocked`,`error`,`frame_disconnected`,`degraded`]),Rt=J(`event`,[K({event:Y(`pagefullscreenchange`),payload:wt}),K({event:Y(`sourceroute`),payload:kt}),K({event:Y(`ready`),payload:K({duration:U(),quality:G(Ft),subtitles:G(It).optional()})}),K({event:Y(`play`),payload:K({})}),K({event:Y(`pause`),payload:K({})}),K({event:Y(`ended`),payload:K({})}),K({event:Y(`timeupdate`),payload:K({time:U(),duration:U()})}),K({event:Y(`volumechange`),payload:K({volume:U(),muted:W()})}),K({event:Y(`seeking`),payload:K({time:U()})}),K({event:Y(`seeked`),payload:K({time:U()})}),K({event:Y(`waiting`),payload:K({})}),K({event:Y(`playing`),payload:K({})}),K({event:Y(`qualitychange`),payload:K({level:U(),auto:W()})}),K({event:Y(`subtitlechange`),payload:K({id:U().nullable()})}),K({event:Y(`error`),payload:vt}),K({event:Y(`autoplayblocked`),payload:K({})}),K({event:Y(`recovery`),payload:Pt}),K({event:Y(`compatwarning`),payload:K({code:gt,message:H(),ua:H(),hostVersion:H().optional(),iframeVersion:H().optional(),rejectedEvent:H().optional()})}),K({event:Y(`stalled`),payload:K({phase:X([`start`,`end`]),position:U(),durationMs:U().optional(),kind:X([`playback`,`firstframe`,`seek`]).optional()})}),K({event:Y(`playablechange`),payload:K({playable:W(),reason:Lt,recoverable:W(),action:X([`retry`,`play`,`replace-source`,`recreate-frame`,`none`]).optional()})}),K({event:Y(`kernelhealth`),payload:K({degraded:W(),reason:X([`network`,`media`,`other`]),count:U(),durationMs:U(),detail:H()})}),K({event:Y(`audiohealth`),payload:K({degraded:W(),reason:Y(`audio_data_gap`),durationMs:U()})}),K({event:Y(`bufferhealth`),payload:K({draining:W(),marginSec:U()})}),K({event:Y(`contextchange`),payload:At}),K({event:Y(`firstframe`),payload:yt}),K({event:Y(`framefreeze`),payload:bt}),K({event:Y(`useraction`),payload:St})]);function zt(e,t){return{event:`compatwarning`,payload:{code:`W_EVENT_REJECTED`,message:`收到一条过不了契约校验的事件(${e??`(未知)`}),已丢弃。最常见的成因是 iframe 比宿主新 —— 先看两端契约版本差多少,再怀疑 iframe 有 bug。`,ua:t,...e===void 0?{}:{rejectedEvent:e}}}}K({event:Rt,producerSessionId:H().min(1),deliveryId:H().min(1),occurredAtMs:U().finite(),sequence:U().int().positive()});let Bt=J(`method`,[K({method:Y(`play`),params:K({}).optional()}),K({method:Y(`pause`),params:K({}).optional()}),K({method:Y(`seek`),params:K({time:U(),type:X([`exact`,`keyframe`]).optional()})}),K({method:Y(`setVolume`),params:K({volume:U().min(0).max(1)})}),K({method:Y(`setMuted`),params:K({muted:W()})}),K({method:Y(`setPlaybackRate`),params:K({rate:U().min(.25).max(4)})}),K({method:Y(`setQuality`),params:K({level:q([U(),Y(`auto`)])})}),K({method:Y(`setSubtitle`),params:K({id:q([U(),Y(`off`)])})}),K({method:Y(`setLocale`),params:K({locale:lt})}),K({method:Y(`load`),params:K({source:ct})}),K({method:Y(`retry`),params:K({}).strict().optional()}),K({method:Y(`pushDanmaku`),params:K({item:ut})}),K({method:Y(`setDanmakuEnabled`),params:K({enabled:W()})}),K({method:Y(`clearDanmaku`),params:K({}).optional()}),K({method:Y(`destroy`),params:K({}).optional()}),K({method:Y(`enterFullscreen`),params:K({}).optional()}),K({method:Y(`exitFullscreen`),params:K({}).optional()})]);X([`command`,`event`,`response`,`error`]);let Vt={version:H(),id:H(),timestamp:U()};function $(e,t){return K({...Vt,type:Y(e),payload:t})}let Ht=q([$(`command`,Bt),q([$(`event`,Rt).extend({producerSessionId:Je().optional(),sequence:Je().optional()}),$(`event`,Rt).extend({producerSessionId:H().min(1),sequence:U().int().positive()})]),$(`response`,K({})),$(`error`,vt)]);function Ut(e){return e||(typeof window<`u`?window:null)}function Wt(e={}){let t=Ut(e.target),n=e.iframe,r=e.origin==null?null:new Set(Array.isArray(e.origin)?e.origin:[e.origin]),i=new Set;function a(e){let t=e;if(typeof t!=`object`||!t||t.type!==`event`)return;let n=t.payload?.event,r=typeof n==`string`?n:`(未知)`;i.has(r)||(i.add(r),o(zt(typeof n==`string`?n:void 0,typeof navigator>`u`?``:navigator.userAgent)))}function o(e){let{event:t,payload:n}=e;for(let e of c)try{e({event:t,payload:n})}catch{}let r=s.get(t);if(r)for(let e of r)try{e(n)}catch(e){console.warn(`[SentinelEmbed] 事件处理器抛错:`,e)}}let s=new Map,c=new Set,l=new Set,u=e=>{let t=e;if(r&&!r.has(t.origin)||n&&t.source!==n.contentWindow)return;let i=Ht.safeParse(t.data);if(!i.success){a(t.data);return}if(i.data.type===`event`&&(o(i.data.payload),i.data.producerSessionId!==void 0&&i.data.sequence!==void 0)){let e={event:i.data.payload,producerSessionId:i.data.producerSessionId,deliveryId:i.data.id,occurredAtMs:i.data.timestamp,sequence:i.data.sequence};for(let t of l)try{t(e)}catch{}}};t?.addEventListener(`message`,u);let d=(e,t)=>{s.get(e)?.delete(t)};return{on:(e,t)=>{let n=s.get(e);return n||(n=new Set,s.set(e,n)),n.add(t),()=>d(e,t)},onAny:e=>(c.add(e),()=>c.delete(e)),onDelivered:e=>(l.add(e),()=>l.delete(e)),off:d,destroy:()=>{t?.removeEventListener(`message`,u),s.clear(),c.clear(),l.clear()}}}let Gt=0;function Kt(){return globalThis.crypto?.randomUUID?.()||(Gt+=1,`page-fullscreen-${Date.now().toString(36)}-${Gt.toString(36)}`)}function qt(e){if(new URL(e.origin).origin!==e.origin||e.origin===`null`)throw Error(`网页全屏要求精确 origin`);let{iframe:t,origin:n,adapter:r}=e,i=t.ownerDocument.defaultView;if(!i)throw Error(`iframe 尚无宿主窗口`);let a=Kt(),o=``,s=0,c=!1,l=!1,u=Date.now(),d=0,f=Promise.resolve(),p;function m(e){let r=t.contentWindow;if(r){try{if(r.location.href===`about:blank`)return}catch(e){if(!(e instanceof DOMException)||e.name!==`SecurityError`)throw e}r.postMessage(e,n)}}function h(){o&&m({channel:`video-lab:page-fullscreen`,version:1,type:`state`,session:a,instance:o,revision:s,active:c})}function g(){m({channel:`video-lab:page-fullscreen`,version:1,type:`hello`,session:a}),p&&h()}function _(e){if(!p)return;let t=p;p=void 0,clearTimeout(t.timer),e?t.reject(e):t.resolve()}function v(){l||(l=!0,clearInterval(C),i?.removeEventListener(`message`,b),i?.removeEventListener(`keydown`,x),t.removeEventListener(`load`,S),m({channel:`video-lab:page-fullscreen`,version:1,type:`disconnect`,session:a}),_(Error(`网页全屏连接已销毁`)),c=!1,r.dispose())}function y(t){let n=a,i=f.then(async()=>{if(l||!o||n!==a)throw Error(`iframe 尚未确认网页全屏支持`);let i=o,u,d=Promise.resolve().then(()=>r.setActive(t)).then(()=>{if(l||n!==a||o!==i)throw r.dispose(),Error(`网页全屏请求已失效`)});try{await Promise.race([d,new Promise((e,t)=>{u=setTimeout(()=>{v(),t(Error(`宿主布局超时`))},1e4)})]),c=t,s+=1,await new Promise((e,t)=>{p={revision:s,resolve:e,reject:t,timer:setTimeout(()=>{v()},1e4)},h()}),e.onChange?.({active:c})}catch(e){throw c=!1,r.dispose(),l||(s+=1,h()),e}finally{clearTimeout(u)}});return f=i.catch(()=>{}),i}function b(e){if(l||e.source!==t.contentWindow||e.origin!==n)return;let i=Ct.safeParse(e.data);if(!i.success||i.data.session!==a)return;let f=i.data;if(f.type===`ready`){if(o&&o!==f.instance)return;u=Date.now(),o!==f.instance&&(_(Error(`iframe 已重新加载`)),c&&r.dispose(),c=!1,o=f.instance,s=0,d=0,h())}else if(f.type===`ack`&&f.instance===o&&f.revision===p?.revision)_();else if(f.type===`request`&&f.instance===o){if(f.id<=d){h();return}d=f.id,y(f.active).catch(()=>{})}}function x(e){e.key===`Escape`&&c&&y(!1).catch(()=>{})}function S(){a=Kt(),_(Error(`iframe 已重新加载`)),o=``,c=!1,r.dispose(),g()}i.addEventListener(`message`,b),i.addEventListener(`keydown`,x),t.addEventListener(`load`,S);let C=setInterval(()=>{o&&Date.now()-u>5e3?v():g()},1e3);return g(),{setPageFullscreen:y,destroy:v}}let Jt=null;function Yt(){return Jt||=Wt(),Jt}function Xt(e,t){return Yt().on(e,t)}function Zt(e){return Yt().onAny(e)}function Qt(e){return Yt().onDelivered(e)}function $t(e,t){Yt().off(e,t)}function en(){Jt?.destroy(),Jt=null}return e.createEmbedListener=Wt,e.createPageFullscreenController=qt,e.destroy=en,e.off=$t,e.on=Xt,e.onAny=Zt,e.onDelivered=Qt,e})({});
|
|
1
|
+
var SentinelEmbed=(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t;(function(e){e.assertEqual=e=>{};function t(e){}e.assertIs=t;function n(e){throw Error()}e.assertNever=n,e.arrayToEnum=e=>{let t={};for(let n of e)t[n]=n;return t},e.getValidEnumValues=t=>{let n=e.objectKeys(t).filter(e=>typeof t[t[e]]!=`number`),r={};for(let e of n)r[e]=t[e];return e.objectValues(r)},e.objectValues=t=>e.objectKeys(t).map(function(e){return t[e]}),e.objectKeys=typeof Object.keys==`function`?e=>Object.keys(e):e=>{let t=[];for(let n in e)Object.prototype.hasOwnProperty.call(e,n)&&t.push(n);return t},e.find=(e,t)=>{for(let n of e)if(t(n))return n},e.isInteger=typeof Number.isInteger==`function`?e=>Number.isInteger(e):e=>typeof e==`number`&&Number.isFinite(e)&&Math.floor(e)===e;function r(e,t=` | `){return e.map(e=>typeof e==`string`?`'${e}'`:e).join(t)}e.joinValues=r,e.jsonStringifyReplacer=(e,t)=>typeof t==`bigint`?t.toString():t})(t||={});var n;(function(e){e.mergeShapes=(e,t)=>({...e,...t})})(n||={});let r=t.arrayToEnum([`string`,`nan`,`number`,`integer`,`float`,`boolean`,`date`,`bigint`,`symbol`,`function`,`undefined`,`null`,`array`,`object`,`unknown`,`promise`,`void`,`never`,`map`,`set`]),i=e=>{switch(typeof e){case`undefined`:return r.undefined;case`string`:return r.string;case`number`:return Number.isNaN(e)?r.nan:r.number;case`boolean`:return r.boolean;case`function`:return r.function;case`bigint`:return r.bigint;case`symbol`:return r.symbol;case`object`:return Array.isArray(e)?r.array:e===null?r.null:e.then&&typeof e.then==`function`&&e.catch&&typeof e.catch==`function`?r.promise:typeof Map<`u`&&e instanceof Map?r.map:typeof Set<`u`&&e instanceof Set?r.set:typeof Date<`u`&&e instanceof Date?r.date:r.object;default:return r.unknown}},a=t.arrayToEnum([`invalid_type`,`invalid_literal`,`custom`,`invalid_union`,`invalid_union_discriminator`,`invalid_enum_value`,`unrecognized_keys`,`invalid_arguments`,`invalid_return_type`,`invalid_date`,`invalid_string`,`too_small`,`too_big`,`invalid_intersection_types`,`not_multiple_of`,`not_finite`]);var o=class e extends Error{get errors(){return this.issues}constructor(e){super(),this.issues=[],this.addIssue=e=>{this.issues=[...this.issues,e]},this.addIssues=(e=[])=>{this.issues=[...this.issues,...e]};let t=new.target.prototype;Object.setPrototypeOf?Object.setPrototypeOf(this,t):this.__proto__=t,this.name=`ZodError`,this.issues=e}format(e){let t=e||function(e){return e.message},n={_errors:[]},r=e=>{for(let i of e.issues)if(i.code===`invalid_union`)i.unionErrors.map(r);else if(i.code===`invalid_return_type`)r(i.returnTypeError);else if(i.code===`invalid_arguments`)r(i.argumentsError);else if(i.path.length===0)n._errors.push(t(i));else{let e=n,r=0;for(;r<i.path.length;){let n=i.path[r];r===i.path.length-1?(e[n]=e[n]||{_errors:[]},e[n]._errors.push(t(i))):e[n]=e[n]||{_errors:[]},e=e[n],r++}}};return r(this),n}static assert(t){if(!(t instanceof e))throw Error(`Not a ZodError: ${t}`)}toString(){return this.message}get message(){return JSON.stringify(this.issues,t.jsonStringifyReplacer,2)}get isEmpty(){return this.issues.length===0}flatten(e=e=>e.message){let t={},n=[];for(let r of this.issues)if(r.path.length>0){let n=r.path[0];t[n]=t[n]||[],t[n].push(e(r))}else n.push(e(r));return{formErrors:n,fieldErrors:t}}get formErrors(){return this.flatten()}};o.create=e=>new o(e);let s=(e,n)=>{let i;switch(e.code){case a.invalid_type:i=e.received===r.undefined?`Required`:`Expected ${e.expected}, received ${e.received}`;break;case a.invalid_literal:i=`Invalid literal value, expected ${JSON.stringify(e.expected,t.jsonStringifyReplacer)}`;break;case a.unrecognized_keys:i=`Unrecognized key(s) in object: ${t.joinValues(e.keys,`, `)}`;break;case a.invalid_union:i=`Invalid input`;break;case a.invalid_union_discriminator:i=`Invalid discriminator value. Expected ${t.joinValues(e.options)}`;break;case a.invalid_enum_value:i=`Invalid enum value. Expected ${t.joinValues(e.options)}, received '${e.received}'`;break;case a.invalid_arguments:i=`Invalid function arguments`;break;case a.invalid_return_type:i=`Invalid function return type`;break;case a.invalid_date:i=`Invalid date`;break;case a.invalid_string:typeof e.validation==`object`?`includes`in e.validation?(i=`Invalid input: must include "${e.validation.includes}"`,typeof e.validation.position==`number`&&(i=`${i} at one or more positions greater than or equal to ${e.validation.position}`)):`startsWith`in e.validation?i=`Invalid input: must start with "${e.validation.startsWith}"`:`endsWith`in e.validation?i=`Invalid input: must end with "${e.validation.endsWith}"`:t.assertNever(e.validation):i=e.validation===`regex`?`Invalid`:`Invalid ${e.validation}`;break;case a.too_small:i=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at least`:`more than`} ${e.minimum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at least`:`over`} ${e.minimum} character(s)`:e.type===`number`||e.type===`bigint`?`Number must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${e.minimum}`:e.type===`date`?`Date must be ${e.exact?`exactly equal to `:e.inclusive?`greater than or equal to `:`greater than `}${new Date(Number(e.minimum))}`:`Invalid input`;break;case a.too_big:i=e.type===`array`?`Array must contain ${e.exact?`exactly`:e.inclusive?`at most`:`less than`} ${e.maximum} element(s)`:e.type===`string`?`String must contain ${e.exact?`exactly`:e.inclusive?`at most`:`under`} ${e.maximum} character(s)`:e.type===`number`?`Number must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`bigint`?`BigInt must be ${e.exact?`exactly`:e.inclusive?`less than or equal to`:`less than`} ${e.maximum}`:e.type===`date`?`Date must be ${e.exact?`exactly`:e.inclusive?`smaller than or equal to`:`smaller than`} ${new Date(Number(e.maximum))}`:`Invalid input`;break;case a.custom:i=`Invalid input`;break;case a.invalid_intersection_types:i=`Intersection results could not be merged`;break;case a.not_multiple_of:i=`Number must be a multiple of ${e.multipleOf}`;break;case a.not_finite:i=`Number must be finite`;break;default:i=n.defaultError,t.assertNever(e)}return{message:i}},c=s;function l(){return c}let u=e=>{let{data:t,path:n,errorMaps:r,issueData:i}=e,a=[...n,...i.path||[]],o={...i,path:a};if(i.message!==void 0)return{...i,path:a,message:i.message};let s=``,c=r.filter(e=>!!e).slice().reverse();for(let e of c)s=e(o,{data:t,defaultError:s}).message;return{...i,path:a,message:s}};function d(e,t){let n=l(),r=u({issueData:t,data:e.data,path:e.path,errorMaps:[e.common.contextualErrorMap,e.schemaErrorMap,n,n===s?void 0:s].filter(e=>!!e)});e.common.issues.push(r)}var f=class e{constructor(){this.value=`valid`}dirty(){this.value===`valid`&&(this.value=`dirty`)}abort(){this.value!==`aborted`&&(this.value=`aborted`)}static mergeArray(e,t){let n=[];for(let r of t){if(r.status===`aborted`)return p;r.status===`dirty`&&e.dirty(),n.push(r.value)}return{status:e.value,value:n}}static async mergeObjectAsync(t,n){let r=[];for(let e of n){let t=await e.key,n=await e.value;r.push({key:t,value:n})}return e.mergeObjectSync(t,r)}static mergeObjectSync(e,t){let n={};for(let r of t){let{key:t,value:i}=r;if(t.status===`aborted`||i.status===`aborted`)return p;t.status===`dirty`&&e.dirty(),i.status===`dirty`&&e.dirty(),t.value!==`__proto__`&&(i.value!==void 0||r.alwaysSet)&&(n[t.value]=i.value)}return{status:e.value,value:n}}};let p=Object.freeze({status:`aborted`}),m=e=>({status:`dirty`,value:e}),h=e=>({status:`valid`,value:e}),g=e=>e.status===`aborted`,_=e=>e.status===`dirty`,v=e=>e.status===`valid`,y=e=>typeof Promise<`u`&&e instanceof Promise;var b;(function(e){e.errToObj=e=>typeof e==`string`?{message:e}:e||{},e.toString=e=>typeof e==`string`?e:e?.message})(b||={});var x=class{constructor(e,t,n,r){this._cachedPath=[],this.parent=e,this.data=t,this._path=n,this._key=r}get path(){return this._cachedPath.length||(Array.isArray(this._key)?this._cachedPath.push(...this._path,...this._key):this._cachedPath.push(...this._path,this._key)),this._cachedPath}};let ee=(e,t)=>{if(v(t))return{success:!0,data:t.value};if(!e.common.issues.length)throw Error(`Validation failed but no issues detected.`);return{success:!1,get error(){if(this._error)return this._error;let t=new o(e.common.issues);return this._error=t,this._error}}};function S(e){if(!e)return{};let{errorMap:t,invalid_type_error:n,required_error:r,description:i}=e;if(t&&(n||r))throw Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`);return t?{errorMap:t,description:i}:{errorMap:(t,i)=>{let{message:a}=e;return t.code===`invalid_enum_value`?{message:a??i.defaultError}:i.data===void 0?{message:a??r??i.defaultError}:t.code===`invalid_type`?{message:a??n??i.defaultError}:{message:i.defaultError}},description:i}}var C=class{get description(){return this._def.description}_getType(e){return i(e.data)}_getOrReturnCtx(e,t){return t||{common:e.parent.common,data:e.data,parsedType:i(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}_processInputParams(e){return{status:new f,ctx:{common:e.parent.common,data:e.data,parsedType:i(e.data),schemaErrorMap:this._def.errorMap,path:e.path,parent:e.parent}}}_parseSync(e){let t=this._parse(e);if(y(t))throw Error(`Synchronous parse encountered promise.`);return t}_parseAsync(e){let t=this._parse(e);return Promise.resolve(t)}parse(e,t){let n=this.safeParse(e,t);if(n.success)return n.data;throw n.error}safeParse(e,t){let n={common:{issues:[],async:t?.async??!1,contextualErrorMap:t?.errorMap},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:i(e)},r=this._parseSync({data:e,path:n.path,parent:n});return ee(n,r)}"~validate"(e){let t={common:{issues:[],async:!!this[`~standard`].async},path:[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:i(e)};if(!this[`~standard`].async)try{let n=this._parseSync({data:e,path:[],parent:t});return v(n)?{value:n.value}:{issues:t.common.issues}}catch(e){e?.message?.toLowerCase()?.includes(`encountered`)&&(this[`~standard`].async=!0),t.common={issues:[],async:!0}}return this._parseAsync({data:e,path:[],parent:t}).then(e=>v(e)?{value:e.value}:{issues:t.common.issues})}async parseAsync(e,t){let n=await this.safeParseAsync(e,t);if(n.success)return n.data;throw n.error}async safeParseAsync(e,t){let n={common:{issues:[],contextualErrorMap:t?.errorMap,async:!0},path:t?.path||[],schemaErrorMap:this._def.errorMap,parent:null,data:e,parsedType:i(e)},r=this._parse({data:e,path:n.path,parent:n}),a=await(y(r)?r:Promise.resolve(r));return ee(n,a)}refine(e,t){let n=e=>typeof t==`string`||t===void 0?{message:t}:typeof t==`function`?t(e):t;return this._refinement((t,r)=>{let i=e(t),o=()=>r.addIssue({code:a.custom,...n(t)});return typeof Promise<`u`&&i instanceof Promise?i.then(e=>e?!0:(o(),!1)):i?!0:(o(),!1)})}refinement(e,t){return this._refinement((n,r)=>e(n)?!0:(r.addIssue(typeof t==`function`?t(n,r):t),!1))}_refinement(e){return new I({schema:this,typeName:z.ZodEffects,effect:{type:`refinement`,refinement:e}})}superRefine(e){return this._refinement(e)}constructor(e){this.spa=this.safeParseAsync,this._def=e,this.parse=this.parse.bind(this),this.safeParse=this.safeParse.bind(this),this.parseAsync=this.parseAsync.bind(this),this.safeParseAsync=this.safeParseAsync.bind(this),this.spa=this.spa.bind(this),this.refine=this.refine.bind(this),this.refinement=this.refinement.bind(this),this.superRefine=this.superRefine.bind(this),this.optional=this.optional.bind(this),this.nullable=this.nullable.bind(this),this.nullish=this.nullish.bind(this),this.array=this.array.bind(this),this.promise=this.promise.bind(this),this.or=this.or.bind(this),this.and=this.and.bind(this),this.transform=this.transform.bind(this),this.brand=this.brand.bind(this),this.default=this.default.bind(this),this.catch=this.catch.bind(this),this.describe=this.describe.bind(this),this.pipe=this.pipe.bind(this),this.readonly=this.readonly.bind(this),this.isNullable=this.isNullable.bind(this),this.isOptional=this.isOptional.bind(this),this[`~standard`]={version:1,vendor:`zod`,validate:e=>this[`~validate`](e)}}optional(){return L.create(this,this._def)}nullable(){return R.create(this,this._def)}nullish(){return this.nullable().optional()}array(){return k.create(this)}promise(){return F.create(this,this._def)}or(e){return M.create([this,e],this._def)}and(e){return Pe.create(this,e,this._def)}transform(e){return new I({...S(this._def),schema:this,typeName:z.ZodEffects,effect:{type:`transform`,transform:e}})}default(e){let t=typeof e==`function`?e:()=>e;return new We({...S(this._def),innerType:this,defaultValue:t,typeName:z.ZodDefault})}brand(){return new qe({typeName:z.ZodBranded,type:this,...S(this._def)})}catch(e){let t=typeof e==`function`?e:()=>e;return new Ge({...S(this._def),innerType:this,catchValue:t,typeName:z.ZodCatch})}describe(e){let t=this.constructor;return new t({...this._def,description:e})}pipe(e){return Je.create(this,e)}readonly(){return Ye.create(this)}isOptional(){return this.safeParse(void 0).success}isNullable(){return this.safeParse(null).success}};let te=/^c[^\s-]{8,}$/i,ne=/^[0-9a-z]+$/,re=/^[0-9A-HJKMNP-TV-Z]{26}$/i,ie=/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/i,ae=/^[a-z0-9_-]{21}$/i,oe=/^[A-Za-z0-9-_]+\.[A-Za-z0-9-_]+\.[A-Za-z0-9-_]*$/,se=/^[-+]?P(?!$)(?:(?:[-+]?\d+Y)|(?:[-+]?\d+[.,]\d+Y$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:(?:[-+]?\d+W)|(?:[-+]?\d+[.,]\d+W$))?(?:(?:[-+]?\d+D)|(?:[-+]?\d+[.,]\d+D$))?(?:T(?=[\d+-])(?:(?:[-+]?\d+H)|(?:[-+]?\d+[.,]\d+H$))?(?:(?:[-+]?\d+M)|(?:[-+]?\d+[.,]\d+M$))?(?:[-+]?\d+(?:[.,]\d+)?S)?)??$/,ce=/^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i,le,ue=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/,de=/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\/(3[0-2]|[12]?[0-9])$/,fe=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))$/,pe=/^(([0-9a-fA-F]{1,4}:){7,7}[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,7}:|([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|:((:[0-9a-fA-F]{1,4}){1,7}|:)|fe80:(:[0-9a-fA-F]{0,4}){0,4}%[0-9a-zA-Z]{1,}|::(ffff(:0{1,4}){0,1}:){0,1}((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])|([0-9a-fA-F]{1,4}:){1,4}:((25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9])\.){3,3}(25[0-5]|(2[0-4]|1{0,1}[0-9]){0,1}[0-9]))\/(12[0-8]|1[01][0-9]|[1-9]?[0-9])$/,me=/^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/,he=/^([0-9a-zA-Z-_]{4})*(([0-9a-zA-Z-_]{2}(==)?)|([0-9a-zA-Z-_]{3}(=)?))?$/,ge=`((\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-((0[13578]|1[02])-(0[1-9]|[12]\\d|3[01])|(0[469]|11)-(0[1-9]|[12]\\d|30)|(02)-(0[1-9]|1\\d|2[0-8])))`,_e=RegExp(`^${ge}$`);function ve(e){let t=`[0-5]\\d`;e.precision?t=`${t}\\.\\d{${e.precision}}`:e.precision??(t=`${t}(\\.\\d+)?`);let n=e.precision?`+`:`?`;return`([01]\\d|2[0-3]):[0-5]\\d(:${t})${n}`}function ye(e){return RegExp(`^${ve(e)}$`)}function be(e){let t=`${ge}T${ve(e)}`,n=[];return n.push(e.local?`Z?`:`Z`),e.offset&&n.push(`([+-]\\d{2}:?\\d{2})`),t=`${t}(${n.join(`|`)})`,RegExp(`^${t}$`)}function xe(e,t){return!!((t===`v4`||!t)&&ue.test(e)||(t===`v6`||!t)&&fe.test(e))}function Se(e,t){if(!oe.test(e))return!1;try{let[n]=e.split(`.`);if(!n)return!1;let r=n.replace(/-/g,`+`).replace(/_/g,`/`).padEnd(n.length+(4-n.length%4)%4,`=`),i=JSON.parse(atob(r));return!(typeof i!=`object`||!i||`typ`in i&&i?.typ!==`JWT`||!i.alg||t&&i.alg!==t)}catch{return!1}}function Ce(e,t){return!!((t===`v4`||!t)&&de.test(e)||(t===`v6`||!t)&&pe.test(e))}var w=class e extends C{_parse(e){if(this._def.coerce&&(e.data=String(e.data)),this._getType(e)!==r.string){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.string,received:t.parsedType}),p}let n=new f,i;for(let r of this._def.checks)if(r.kind===`min`)e.data.length<r.value&&(i=this._getOrReturnCtx(e,i),d(i,{code:a.too_small,minimum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),n.dirty());else if(r.kind===`max`)e.data.length>r.value&&(i=this._getOrReturnCtx(e,i),d(i,{code:a.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!1,message:r.message}),n.dirty());else if(r.kind===`length`){let t=e.data.length>r.value,o=e.data.length<r.value;(t||o)&&(i=this._getOrReturnCtx(e,i),t?d(i,{code:a.too_big,maximum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}):o&&d(i,{code:a.too_small,minimum:r.value,type:`string`,inclusive:!0,exact:!0,message:r.message}),n.dirty())}else if(r.kind===`email`)ce.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`email`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`emoji`)le||=RegExp(`^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$`,`u`),le.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`emoji`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`uuid`)ie.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`uuid`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`nanoid`)ae.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`nanoid`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`cuid`)te.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`cuid`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`cuid2`)ne.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`cuid2`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`ulid`)re.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`ulid`,code:a.invalid_string,message:r.message}),n.dirty());else if(r.kind===`url`)try{new URL(e.data)}catch{i=this._getOrReturnCtx(e,i),d(i,{validation:`url`,code:a.invalid_string,message:r.message}),n.dirty()}else r.kind===`regex`?(r.regex.lastIndex=0,r.regex.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`regex`,code:a.invalid_string,message:r.message}),n.dirty())):r.kind===`trim`?e.data=e.data.trim():r.kind===`includes`?e.data.includes(r.value,r.position)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:{includes:r.value,position:r.position},message:r.message}),n.dirty()):r.kind===`toLowerCase`?e.data=e.data.toLowerCase():r.kind===`toUpperCase`?e.data=e.data.toUpperCase():r.kind===`startsWith`?e.data.startsWith(r.value)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:{startsWith:r.value},message:r.message}),n.dirty()):r.kind===`endsWith`?e.data.endsWith(r.value)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:{endsWith:r.value},message:r.message}),n.dirty()):r.kind===`datetime`?be(r).test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:`datetime`,message:r.message}),n.dirty()):r.kind===`date`?_e.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:`date`,message:r.message}),n.dirty()):r.kind===`time`?ye(r).test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{code:a.invalid_string,validation:`time`,message:r.message}),n.dirty()):r.kind===`duration`?se.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`duration`,code:a.invalid_string,message:r.message}),n.dirty()):r.kind===`ip`?xe(e.data,r.version)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`ip`,code:a.invalid_string,message:r.message}),n.dirty()):r.kind===`jwt`?Se(e.data,r.alg)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`jwt`,code:a.invalid_string,message:r.message}),n.dirty()):r.kind===`cidr`?Ce(e.data,r.version)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`cidr`,code:a.invalid_string,message:r.message}),n.dirty()):r.kind===`base64`?me.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`base64`,code:a.invalid_string,message:r.message}),n.dirty()):r.kind===`base64url`?he.test(e.data)||(i=this._getOrReturnCtx(e,i),d(i,{validation:`base64url`,code:a.invalid_string,message:r.message}),n.dirty()):t.assertNever(r);return{status:n.value,value:e.data}}_regex(e,t,n){return this.refinement(t=>e.test(t),{validation:t,code:a.invalid_string,...b.errToObj(n)})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}email(e){return this._addCheck({kind:`email`,...b.errToObj(e)})}url(e){return this._addCheck({kind:`url`,...b.errToObj(e)})}emoji(e){return this._addCheck({kind:`emoji`,...b.errToObj(e)})}uuid(e){return this._addCheck({kind:`uuid`,...b.errToObj(e)})}nanoid(e){return this._addCheck({kind:`nanoid`,...b.errToObj(e)})}cuid(e){return this._addCheck({kind:`cuid`,...b.errToObj(e)})}cuid2(e){return this._addCheck({kind:`cuid2`,...b.errToObj(e)})}ulid(e){return this._addCheck({kind:`ulid`,...b.errToObj(e)})}base64(e){return this._addCheck({kind:`base64`,...b.errToObj(e)})}base64url(e){return this._addCheck({kind:`base64url`,...b.errToObj(e)})}jwt(e){return this._addCheck({kind:`jwt`,...b.errToObj(e)})}ip(e){return this._addCheck({kind:`ip`,...b.errToObj(e)})}cidr(e){return this._addCheck({kind:`cidr`,...b.errToObj(e)})}datetime(e){return typeof e==`string`?this._addCheck({kind:`datetime`,precision:null,offset:!1,local:!1,message:e}):this._addCheck({kind:`datetime`,precision:e?.precision===void 0?null:e?.precision,offset:e?.offset??!1,local:e?.local??!1,...b.errToObj(e?.message)})}date(e){return this._addCheck({kind:`date`,message:e})}time(e){return typeof e==`string`?this._addCheck({kind:`time`,precision:null,message:e}):this._addCheck({kind:`time`,precision:e?.precision===void 0?null:e?.precision,...b.errToObj(e?.message)})}duration(e){return this._addCheck({kind:`duration`,...b.errToObj(e)})}regex(e,t){return this._addCheck({kind:`regex`,regex:e,...b.errToObj(t)})}includes(e,t){return this._addCheck({kind:`includes`,value:e,position:t?.position,...b.errToObj(t?.message)})}startsWith(e,t){return this._addCheck({kind:`startsWith`,value:e,...b.errToObj(t)})}endsWith(e,t){return this._addCheck({kind:`endsWith`,value:e,...b.errToObj(t)})}min(e,t){return this._addCheck({kind:`min`,value:e,...b.errToObj(t)})}max(e,t){return this._addCheck({kind:`max`,value:e,...b.errToObj(t)})}length(e,t){return this._addCheck({kind:`length`,value:e,...b.errToObj(t)})}nonempty(e){return this.min(1,b.errToObj(e))}trim(){return new e({...this._def,checks:[...this._def.checks,{kind:`trim`}]})}toLowerCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toLowerCase`}]})}toUpperCase(){return new e({...this._def,checks:[...this._def.checks,{kind:`toUpperCase`}]})}get isDatetime(){return!!this._def.checks.find(e=>e.kind===`datetime`)}get isDate(){return!!this._def.checks.find(e=>e.kind===`date`)}get isTime(){return!!this._def.checks.find(e=>e.kind===`time`)}get isDuration(){return!!this._def.checks.find(e=>e.kind===`duration`)}get isEmail(){return!!this._def.checks.find(e=>e.kind===`email`)}get isURL(){return!!this._def.checks.find(e=>e.kind===`url`)}get isEmoji(){return!!this._def.checks.find(e=>e.kind===`emoji`)}get isUUID(){return!!this._def.checks.find(e=>e.kind===`uuid`)}get isNANOID(){return!!this._def.checks.find(e=>e.kind===`nanoid`)}get isCUID(){return!!this._def.checks.find(e=>e.kind===`cuid`)}get isCUID2(){return!!this._def.checks.find(e=>e.kind===`cuid2`)}get isULID(){return!!this._def.checks.find(e=>e.kind===`ulid`)}get isIP(){return!!this._def.checks.find(e=>e.kind===`ip`)}get isCIDR(){return!!this._def.checks.find(e=>e.kind===`cidr`)}get isBase64(){return!!this._def.checks.find(e=>e.kind===`base64`)}get isBase64url(){return!!this._def.checks.find(e=>e.kind===`base64url`)}get minLength(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxLength(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};w.create=e=>new w({checks:[],typeName:z.ZodString,coerce:e?.coerce??!1,...S(e)});function we(e,t){let n=(e.toString().split(`.`)[1]||``).length,r=(t.toString().split(`.`)[1]||``).length,i=n>r?n:r;return Number.parseInt(e.toFixed(i).replace(`.`,``))%Number.parseInt(t.toFixed(i).replace(`.`,``))/10**i}var Te=class e extends C{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte,this.step=this.multipleOf}_parse(e){if(this._def.coerce&&(e.data=Number(e.data)),this._getType(e)!==r.number){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.number,received:t.parsedType}),p}let n,i=new f;for(let r of this._def.checks)r.kind===`int`?t.isInteger(e.data)||(n=this._getOrReturnCtx(e,n),d(n,{code:a.invalid_type,expected:`integer`,received:`float`,message:r.message}),i.dirty()):r.kind===`min`?(r.inclusive?e.data<r.value:e.data<=r.value)&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.too_small,minimum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),i.dirty()):r.kind===`max`?(r.inclusive?e.data>r.value:e.data>=r.value)&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.too_big,maximum:r.value,type:`number`,inclusive:r.inclusive,exact:!1,message:r.message}),i.dirty()):r.kind===`multipleOf`?we(e.data,r.value)!==0&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.not_multiple_of,multipleOf:r.value,message:r.message}),i.dirty()):r.kind===`finite`?Number.isFinite(e.data)||(n=this._getOrReturnCtx(e,n),d(n,{code:a.not_finite,message:r.message}),i.dirty()):t.assertNever(r);return{status:i.value,value:e.data}}gte(e,t){return this.setLimit(`min`,e,!0,b.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,b.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,b.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,b.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:b.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}int(e){return this._addCheck({kind:`int`,message:b.toString(e)})}positive(e){return this._addCheck({kind:`min`,value:0,inclusive:!1,message:b.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:0,inclusive:!1,message:b.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:0,inclusive:!0,message:b.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:0,inclusive:!0,message:b.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:b.toString(t)})}finite(e){return this._addCheck({kind:`finite`,message:b.toString(e)})}safe(e){return this._addCheck({kind:`min`,inclusive:!0,value:-(2**53-1),message:b.toString(e)})._addCheck({kind:`max`,inclusive:!0,value:2**53-1,message:b.toString(e)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}get isInt(){return!!this._def.checks.find(e=>e.kind===`int`||e.kind===`multipleOf`&&t.isInteger(e.value))}get isFinite(){let e=null,t=null;for(let n of this._def.checks)if(n.kind===`finite`||n.kind===`int`||n.kind===`multipleOf`)return!0;else n.kind===`min`?(t===null||n.value>t)&&(t=n.value):n.kind===`max`&&(e===null||n.value<e)&&(e=n.value);return Number.isFinite(t)&&Number.isFinite(e)}};Te.create=e=>new Te({checks:[],typeName:z.ZodNumber,coerce:e?.coerce||!1,...S(e)});var Ee=class e extends C{constructor(){super(...arguments),this.min=this.gte,this.max=this.lte}_parse(e){if(this._def.coerce)try{e.data=BigInt(e.data)}catch{return this._getInvalidInput(e)}if(this._getType(e)!==r.bigint)return this._getInvalidInput(e);let n,i=new f;for(let r of this._def.checks)r.kind===`min`?(r.inclusive?e.data<r.value:e.data<=r.value)&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.too_small,type:`bigint`,minimum:r.value,inclusive:r.inclusive,message:r.message}),i.dirty()):r.kind===`max`?(r.inclusive?e.data>r.value:e.data>=r.value)&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.too_big,type:`bigint`,maximum:r.value,inclusive:r.inclusive,message:r.message}),i.dirty()):r.kind===`multipleOf`?e.data%r.value!==BigInt(0)&&(n=this._getOrReturnCtx(e,n),d(n,{code:a.not_multiple_of,multipleOf:r.value,message:r.message}),i.dirty()):t.assertNever(r);return{status:i.value,value:e.data}}_getInvalidInput(e){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.bigint,received:t.parsedType}),p}gte(e,t){return this.setLimit(`min`,e,!0,b.toString(t))}gt(e,t){return this.setLimit(`min`,e,!1,b.toString(t))}lte(e,t){return this.setLimit(`max`,e,!0,b.toString(t))}lt(e,t){return this.setLimit(`max`,e,!1,b.toString(t))}setLimit(t,n,r,i){return new e({...this._def,checks:[...this._def.checks,{kind:t,value:n,inclusive:r,message:b.toString(i)}]})}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}positive(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!1,message:b.toString(e)})}negative(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!1,message:b.toString(e)})}nonpositive(e){return this._addCheck({kind:`max`,value:BigInt(0),inclusive:!0,message:b.toString(e)})}nonnegative(e){return this._addCheck({kind:`min`,value:BigInt(0),inclusive:!0,message:b.toString(e)})}multipleOf(e,t){return this._addCheck({kind:`multipleOf`,value:e,message:b.toString(t)})}get minValue(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e}get maxValue(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e}};Ee.create=e=>new Ee({checks:[],typeName:z.ZodBigInt,coerce:e?.coerce??!1,...S(e)});var De=class extends C{_parse(e){if(this._def.coerce&&(e.data=!!e.data),this._getType(e)!==r.boolean){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.boolean,received:t.parsedType}),p}return h(e.data)}};De.create=e=>new De({typeName:z.ZodBoolean,coerce:e?.coerce||!1,...S(e)});var Oe=class e extends C{_parse(e){if(this._def.coerce&&(e.data=new Date(e.data)),this._getType(e)!==r.date){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.date,received:t.parsedType}),p}if(Number.isNaN(e.data.getTime()))return d(this._getOrReturnCtx(e),{code:a.invalid_date}),p;let n=new f,i;for(let r of this._def.checks)r.kind===`min`?e.data.getTime()<r.value&&(i=this._getOrReturnCtx(e,i),d(i,{code:a.too_small,message:r.message,inclusive:!0,exact:!1,minimum:r.value,type:`date`}),n.dirty()):r.kind===`max`?e.data.getTime()>r.value&&(i=this._getOrReturnCtx(e,i),d(i,{code:a.too_big,message:r.message,inclusive:!0,exact:!1,maximum:r.value,type:`date`}),n.dirty()):t.assertNever(r);return{status:n.value,value:new Date(e.data.getTime())}}_addCheck(t){return new e({...this._def,checks:[...this._def.checks,t]})}min(e,t){return this._addCheck({kind:`min`,value:e.getTime(),message:b.toString(t)})}max(e,t){return this._addCheck({kind:`max`,value:e.getTime(),message:b.toString(t)})}get minDate(){let e=null;for(let t of this._def.checks)t.kind===`min`&&(e===null||t.value>e)&&(e=t.value);return e==null?null:new Date(e)}get maxDate(){let e=null;for(let t of this._def.checks)t.kind===`max`&&(e===null||t.value<e)&&(e=t.value);return e==null?null:new Date(e)}};Oe.create=e=>new Oe({checks:[],coerce:e?.coerce||!1,typeName:z.ZodDate,...S(e)});var ke=class extends C{_parse(e){if(this._getType(e)!==r.symbol){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.symbol,received:t.parsedType}),p}return h(e.data)}};ke.create=e=>new ke({typeName:z.ZodSymbol,...S(e)});var T=class extends C{_parse(e){if(this._getType(e)!==r.undefined){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.undefined,received:t.parsedType}),p}return h(e.data)}};T.create=e=>new T({typeName:z.ZodUndefined,...S(e)});var E=class extends C{_parse(e){if(this._getType(e)!==r.null){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.null,received:t.parsedType}),p}return h(e.data)}};E.create=e=>new E({typeName:z.ZodNull,...S(e)});var Ae=class extends C{constructor(){super(...arguments),this._any=!0}_parse(e){return h(e.data)}};Ae.create=e=>new Ae({typeName:z.ZodAny,...S(e)});var D=class extends C{constructor(){super(...arguments),this._unknown=!0}_parse(e){return h(e.data)}};D.create=e=>new D({typeName:z.ZodUnknown,...S(e)});var O=class extends C{_parse(e){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.never,received:t.parsedType}),p}};O.create=e=>new O({typeName:z.ZodNever,...S(e)});var je=class extends C{_parse(e){if(this._getType(e)!==r.undefined){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.void,received:t.parsedType}),p}return h(e.data)}};je.create=e=>new je({typeName:z.ZodVoid,...S(e)});var k=class e extends C{_parse(e){let{ctx:t,status:n}=this._processInputParams(e),i=this._def;if(t.parsedType!==r.array)return d(t,{code:a.invalid_type,expected:r.array,received:t.parsedType}),p;if(i.exactLength!==null){let e=t.data.length>i.exactLength.value,r=t.data.length<i.exactLength.value;(e||r)&&(d(t,{code:e?a.too_big:a.too_small,minimum:r?i.exactLength.value:void 0,maximum:e?i.exactLength.value:void 0,type:`array`,inclusive:!0,exact:!0,message:i.exactLength.message}),n.dirty())}if(i.minLength!==null&&t.data.length<i.minLength.value&&(d(t,{code:a.too_small,minimum:i.minLength.value,type:`array`,inclusive:!0,exact:!1,message:i.minLength.message}),n.dirty()),i.maxLength!==null&&t.data.length>i.maxLength.value&&(d(t,{code:a.too_big,maximum:i.maxLength.value,type:`array`,inclusive:!0,exact:!1,message:i.maxLength.message}),n.dirty()),t.common.async)return Promise.all([...t.data].map((e,n)=>i.type._parseAsync(new x(t,e,t.path,n)))).then(e=>f.mergeArray(n,e));let o=[...t.data].map((e,n)=>i.type._parseSync(new x(t,e,t.path,n)));return f.mergeArray(n,o)}get element(){return this._def.type}min(t,n){return new e({...this._def,minLength:{value:t,message:b.toString(n)}})}max(t,n){return new e({...this._def,maxLength:{value:t,message:b.toString(n)}})}length(t,n){return new e({...this._def,exactLength:{value:t,message:b.toString(n)}})}nonempty(e){return this.min(1,e)}};k.create=(e,t)=>new k({type:e,minLength:null,maxLength:null,exactLength:null,typeName:z.ZodArray,...S(t)});function A(e){if(e instanceof j){let t={};for(let n in e.shape){let r=e.shape[n];t[n]=L.create(A(r))}return new j({...e._def,shape:()=>t})}else if(e instanceof k)return new k({...e._def,type:A(e.element)});else if(e instanceof L)return L.create(A(e.unwrap()));else if(e instanceof R)return R.create(A(e.unwrap()));else if(e instanceof P)return P.create(e.items.map(e=>A(e)));else return e}var j=class e extends C{constructor(){super(...arguments),this._cached=null,this.nonstrict=this.passthrough,this.augment=this.extend}_getCached(){if(this._cached!==null)return this._cached;let e=this._def.shape(),n=t.objectKeys(e);return this._cached={shape:e,keys:n},this._cached}_parse(e){if(this._getType(e)!==r.object){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.object,received:t.parsedType}),p}let{status:t,ctx:n}=this._processInputParams(e),{shape:i,keys:o}=this._getCached(),s=[];if(!(this._def.catchall instanceof O&&this._def.unknownKeys===`strip`))for(let e in n.data)o.includes(e)||s.push(e);let c=[];for(let e of o){let t=i[e],r=n.data[e];c.push({key:{status:`valid`,value:e},value:t._parse(new x(n,r,n.path,e)),alwaysSet:e in n.data})}if(this._def.catchall instanceof O){let e=this._def.unknownKeys;if(e===`passthrough`)for(let e of s)c.push({key:{status:`valid`,value:e},value:{status:`valid`,value:n.data[e]}});else if(e===`strict`)s.length>0&&(d(n,{code:a.unrecognized_keys,keys:s}),t.dirty());else if(e!==`strip`)throw Error(`Internal ZodObject error: invalid unknownKeys value.`)}else{let e=this._def.catchall;for(let t of s){let r=n.data[t];c.push({key:{status:`valid`,value:t},value:e._parse(new x(n,r,n.path,t)),alwaysSet:t in n.data})}}return n.common.async?Promise.resolve().then(async()=>{let e=[];for(let t of c){let n=await t.key,r=await t.value;e.push({key:n,value:r,alwaysSet:t.alwaysSet})}return e}).then(e=>f.mergeObjectSync(t,e)):f.mergeObjectSync(t,c)}get shape(){return this._def.shape()}strict(t){return b.errToObj,new e({...this._def,unknownKeys:`strict`,...t===void 0?{}:{errorMap:(e,n)=>{let r=this._def.errorMap?.(e,n).message??n.defaultError;return e.code===`unrecognized_keys`?{message:b.errToObj(t).message??r}:{message:r}}}})}strip(){return new e({...this._def,unknownKeys:`strip`})}passthrough(){return new e({...this._def,unknownKeys:`passthrough`})}extend(t){return new e({...this._def,shape:()=>({...this._def.shape(),...t})})}merge(t){return new e({unknownKeys:t._def.unknownKeys,catchall:t._def.catchall,shape:()=>({...this._def.shape(),...t._def.shape()}),typeName:z.ZodObject})}setKey(e,t){return this.augment({[e]:t})}catchall(t){return new e({...this._def,catchall:t})}pick(n){let r={};for(let e of t.objectKeys(n))n[e]&&this.shape[e]&&(r[e]=this.shape[e]);return new e({...this._def,shape:()=>r})}omit(n){let r={};for(let e of t.objectKeys(this.shape))n[e]||(r[e]=this.shape[e]);return new e({...this._def,shape:()=>r})}deepPartial(){return A(this)}partial(n){let r={};for(let e of t.objectKeys(this.shape)){let t=this.shape[e];n&&!n[e]?r[e]=t:r[e]=t.optional()}return new e({...this._def,shape:()=>r})}required(n){let r={};for(let e of t.objectKeys(this.shape))if(n&&!n[e])r[e]=this.shape[e];else{let t=this.shape[e];for(;t instanceof L;)t=t._def.innerType;r[e]=t}return new e({...this._def,shape:()=>r})}keyof(){return Ve(t.objectKeys(this.shape))}};j.create=(e,t)=>new j({shape:()=>e,unknownKeys:`strip`,catchall:O.create(),typeName:z.ZodObject,...S(t)}),j.strictCreate=(e,t)=>new j({shape:()=>e,unknownKeys:`strict`,catchall:O.create(),typeName:z.ZodObject,...S(t)}),j.lazycreate=(e,t)=>new j({shape:e,unknownKeys:`strip`,catchall:O.create(),typeName:z.ZodObject,...S(t)});var M=class extends C{_parse(e){let{ctx:t}=this._processInputParams(e),n=this._def.options;function r(e){for(let t of e)if(t.result.status===`valid`)return t.result;for(let n of e)if(n.result.status===`dirty`)return t.common.issues.push(...n.ctx.common.issues),n.result;let n=e.map(e=>new o(e.ctx.common.issues));return d(t,{code:a.invalid_union,unionErrors:n}),p}if(t.common.async)return Promise.all(n.map(async e=>{let n={...t,common:{...t.common,issues:[]},parent:null};return{result:await e._parseAsync({data:t.data,path:t.path,parent:n}),ctx:n}})).then(r);{let e,r=[];for(let i of n){let n={...t,common:{...t.common,issues:[]},parent:null},a=i._parseSync({data:t.data,path:t.path,parent:n});if(a.status===`valid`)return a;a.status===`dirty`&&!e&&(e={result:a,ctx:n}),n.common.issues.length&&r.push(n.common.issues)}if(e)return t.common.issues.push(...e.ctx.common.issues),e.result;let i=r.map(e=>new o(e));return d(t,{code:a.invalid_union,unionErrors:i}),p}}get options(){return this._def.options}};M.create=(e,t)=>new M({options:e,typeName:z.ZodUnion,...S(t)});let N=e=>e instanceof ze?N(e.schema):e instanceof I?N(e.innerType()):e instanceof Be?[e.value]:e instanceof He?e.options:e instanceof Ue?t.objectValues(e.enum):e instanceof We?N(e._def.innerType):e instanceof T?[void 0]:e instanceof E?[null]:e instanceof L?[void 0,...N(e.unwrap())]:e instanceof R?[null,...N(e.unwrap())]:e instanceof qe||e instanceof Ye?N(e.unwrap()):e instanceof Ge?N(e._def.innerType):[];var Me=class e extends C{_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==r.object)return d(t,{code:a.invalid_type,expected:r.object,received:t.parsedType}),p;let n=this.discriminator,i=t.data[n],o=this.optionsMap.get(i);return o?t.common.async?o._parseAsync({data:t.data,path:t.path,parent:t}):o._parseSync({data:t.data,path:t.path,parent:t}):(d(t,{code:a.invalid_union_discriminator,options:Array.from(this.optionsMap.keys()),path:[n]}),p)}get discriminator(){return this._def.discriminator}get options(){return this._def.options}get optionsMap(){return this._def.optionsMap}static create(t,n,r){let i=new Map;for(let e of n){let n=N(e.shape[t]);if(!n.length)throw Error(`A discriminator value for key \`${t}\` could not be extracted from all schema options`);for(let r of n){if(i.has(r))throw Error(`Discriminator property ${String(t)} has duplicate value ${String(r)}`);i.set(r,e)}}return new e({typeName:z.ZodDiscriminatedUnion,discriminator:t,options:n,optionsMap:i,...S(r)})}};function Ne(e,n){let a=i(e),o=i(n);if(e===n)return{valid:!0,data:e};if(a===r.object&&o===r.object){let r=t.objectKeys(n),i=t.objectKeys(e).filter(e=>r.indexOf(e)!==-1),a={...e,...n};for(let t of i){let r=Ne(e[t],n[t]);if(!r.valid)return{valid:!1};a[t]=r.data}return{valid:!0,data:a}}else if(a===r.array&&o===r.array){if(e.length!==n.length)return{valid:!1};let t=[];for(let r=0;r<e.length;r++){let i=e[r],a=n[r],o=Ne(i,a);if(!o.valid)return{valid:!1};t.push(o.data)}return{valid:!0,data:t}}else if(a===r.date&&o===r.date&&+e==+n)return{valid:!0,data:e};else return{valid:!1}}var Pe=class extends C{_parse(e){let{status:t,ctx:n}=this._processInputParams(e),r=(e,r)=>{if(g(e)||g(r))return p;let i=Ne(e.value,r.value);return i.valid?((_(e)||_(r))&&t.dirty(),{status:t.value,value:i.data}):(d(n,{code:a.invalid_intersection_types}),p)};return n.common.async?Promise.all([this._def.left._parseAsync({data:n.data,path:n.path,parent:n}),this._def.right._parseAsync({data:n.data,path:n.path,parent:n})]).then(([e,t])=>r(e,t)):r(this._def.left._parseSync({data:n.data,path:n.path,parent:n}),this._def.right._parseSync({data:n.data,path:n.path,parent:n}))}};Pe.create=(e,t,n)=>new Pe({left:e,right:t,typeName:z.ZodIntersection,...S(n)});var P=class e extends C{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==r.array)return d(n,{code:a.invalid_type,expected:r.array,received:n.parsedType}),p;if(n.data.length<this._def.items.length)return d(n,{code:a.too_small,minimum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),p;!this._def.rest&&n.data.length>this._def.items.length&&(d(n,{code:a.too_big,maximum:this._def.items.length,inclusive:!0,exact:!1,type:`array`}),t.dirty());let i=[...n.data].map((e,t)=>{let r=this._def.items[t]||this._def.rest;return r?r._parse(new x(n,e,n.path,t)):null}).filter(e=>!!e);return n.common.async?Promise.all(i).then(e=>f.mergeArray(t,e)):f.mergeArray(t,i)}get items(){return this._def.items}rest(t){return new e({...this._def,rest:t})}};P.create=(e,t)=>{if(!Array.isArray(e))throw Error(`You must pass an array of schemas to z.tuple([ ... ])`);return new P({items:e,typeName:z.ZodTuple,rest:null,...S(t)})};var Fe=class e extends C{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==r.object)return d(n,{code:a.invalid_type,expected:r.object,received:n.parsedType}),p;let i=[],o=this._def.keyType,s=this._def.valueType;for(let e in n.data)i.push({key:o._parse(new x(n,e,n.path,e)),value:s._parse(new x(n,n.data[e],n.path,e)),alwaysSet:e in n.data});return n.common.async?f.mergeObjectAsync(t,i):f.mergeObjectSync(t,i)}get element(){return this._def.valueType}static create(t,n,r){return n instanceof C?new e({keyType:t,valueType:n,typeName:z.ZodRecord,...S(r)}):new e({keyType:w.create(),valueType:t,typeName:z.ZodRecord,...S(n)})}},Ie=class extends C{get keySchema(){return this._def.keyType}get valueSchema(){return this._def.valueType}_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==r.map)return d(n,{code:a.invalid_type,expected:r.map,received:n.parsedType}),p;let i=this._def.keyType,o=this._def.valueType,s=[...n.data.entries()].map(([e,t],r)=>({key:i._parse(new x(n,e,n.path,[r,`key`])),value:o._parse(new x(n,t,n.path,[r,`value`]))}));if(n.common.async){let e=new Map;return Promise.resolve().then(async()=>{for(let n of s){let r=await n.key,i=await n.value;if(r.status===`aborted`||i.status===`aborted`)return p;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}})}else{let e=new Map;for(let n of s){let r=n.key,i=n.value;if(r.status===`aborted`||i.status===`aborted`)return p;(r.status===`dirty`||i.status===`dirty`)&&t.dirty(),e.set(r.value,i.value)}return{status:t.value,value:e}}}};Ie.create=(e,t,n)=>new Ie({valueType:t,keyType:e,typeName:z.ZodMap,...S(n)});var Le=class e extends C{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.parsedType!==r.set)return d(n,{code:a.invalid_type,expected:r.set,received:n.parsedType}),p;let i=this._def;i.minSize!==null&&n.data.size<i.minSize.value&&(d(n,{code:a.too_small,minimum:i.minSize.value,type:`set`,inclusive:!0,exact:!1,message:i.minSize.message}),t.dirty()),i.maxSize!==null&&n.data.size>i.maxSize.value&&(d(n,{code:a.too_big,maximum:i.maxSize.value,type:`set`,inclusive:!0,exact:!1,message:i.maxSize.message}),t.dirty());let o=this._def.valueType;function s(e){let n=new Set;for(let r of e){if(r.status===`aborted`)return p;r.status===`dirty`&&t.dirty(),n.add(r.value)}return{status:t.value,value:n}}let c=[...n.data.values()].map((e,t)=>o._parse(new x(n,e,n.path,t)));return n.common.async?Promise.all(c).then(e=>s(e)):s(c)}min(t,n){return new e({...this._def,minSize:{value:t,message:b.toString(n)}})}max(t,n){return new e({...this._def,maxSize:{value:t,message:b.toString(n)}})}size(e,t){return this.min(e,t).max(e,t)}nonempty(e){return this.min(1,e)}};Le.create=(e,t)=>new Le({valueType:e,minSize:null,maxSize:null,typeName:z.ZodSet,...S(t)});var Re=class e extends C{constructor(){super(...arguments),this.validate=this.implement}_parse(e){let{ctx:t}=this._processInputParams(e);if(t.parsedType!==r.function)return d(t,{code:a.invalid_type,expected:r.function,received:t.parsedType}),p;function n(e,n){return u({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,l(),s].filter(e=>!!e),issueData:{code:a.invalid_arguments,argumentsError:n}})}function i(e,n){return u({data:e,path:t.path,errorMaps:[t.common.contextualErrorMap,t.schemaErrorMap,l(),s].filter(e=>!!e),issueData:{code:a.invalid_return_type,returnTypeError:n}})}let c={errorMap:t.common.contextualErrorMap},f=t.data;if(this._def.returns instanceof F){let e=this;return h(async function(...t){let r=new o([]),a=await e._def.args.parseAsync(t,c).catch(e=>{throw r.addIssue(n(t,e)),r}),s=await Reflect.apply(f,this,a);return await e._def.returns._def.type.parseAsync(s,c).catch(e=>{throw r.addIssue(i(s,e)),r})})}else{let e=this;return h(function(...t){let r=e._def.args.safeParse(t,c);if(!r.success)throw new o([n(t,r.error)]);let a=Reflect.apply(f,this,r.data),s=e._def.returns.safeParse(a,c);if(!s.success)throw new o([i(a,s.error)]);return s.data})}}parameters(){return this._def.args}returnType(){return this._def.returns}args(...t){return new e({...this._def,args:P.create(t).rest(D.create())})}returns(t){return new e({...this._def,returns:t})}implement(e){return this.parse(e)}strictImplement(e){return this.parse(e)}static create(t,n,r){return new e({args:t||P.create([]).rest(D.create()),returns:n||D.create(),typeName:z.ZodFunction,...S(r)})}},ze=class extends C{get schema(){return this._def.getter()}_parse(e){let{ctx:t}=this._processInputParams(e);return this._def.getter()._parse({data:t.data,path:t.path,parent:t})}};ze.create=(e,t)=>new ze({getter:e,typeName:z.ZodLazy,...S(t)});var Be=class extends C{_parse(e){if(e.data!==this._def.value){let t=this._getOrReturnCtx(e);return d(t,{received:t.data,code:a.invalid_literal,expected:this._def.value}),p}return{status:`valid`,value:e.data}}get value(){return this._def.value}};Be.create=(e,t)=>new Be({value:e,typeName:z.ZodLiteral,...S(t)});function Ve(e,t){return new He({values:e,typeName:z.ZodEnum,...S(t)})}var He=class e extends C{_parse(e){if(typeof e.data!=`string`){let n=this._getOrReturnCtx(e),r=this._def.values;return d(n,{expected:t.joinValues(r),received:n.parsedType,code:a.invalid_type}),p}if(this._cache||=new Set(this._def.values),!this._cache.has(e.data)){let t=this._getOrReturnCtx(e),n=this._def.values;return d(t,{received:t.data,code:a.invalid_enum_value,options:n}),p}return h(e.data)}get options(){return this._def.values}get enum(){let e={};for(let t of this._def.values)e[t]=t;return e}get Values(){let e={};for(let t of this._def.values)e[t]=t;return e}get Enum(){let e={};for(let t of this._def.values)e[t]=t;return e}extract(t,n=this._def){return e.create(t,{...this._def,...n})}exclude(t,n=this._def){return e.create(this.options.filter(e=>!t.includes(e)),{...this._def,...n})}};He.create=Ve;var Ue=class extends C{_parse(e){let n=t.getValidEnumValues(this._def.values),i=this._getOrReturnCtx(e);if(i.parsedType!==r.string&&i.parsedType!==r.number){let e=t.objectValues(n);return d(i,{expected:t.joinValues(e),received:i.parsedType,code:a.invalid_type}),p}if(this._cache||=new Set(t.getValidEnumValues(this._def.values)),!this._cache.has(e.data)){let e=t.objectValues(n);return d(i,{received:i.data,code:a.invalid_enum_value,options:e}),p}return h(e.data)}get enum(){return this._def.values}};Ue.create=(e,t)=>new Ue({values:e,typeName:z.ZodNativeEnum,...S(t)});var F=class extends C{unwrap(){return this._def.type}_parse(e){let{ctx:t}=this._processInputParams(e);return t.parsedType!==r.promise&&t.common.async===!1?(d(t,{code:a.invalid_type,expected:r.promise,received:t.parsedType}),p):h((t.parsedType===r.promise?t.data:Promise.resolve(t.data)).then(e=>this._def.type.parseAsync(e,{path:t.path,errorMap:t.common.contextualErrorMap})))}};F.create=(e,t)=>new F({type:e,typeName:z.ZodPromise,...S(t)});var I=class extends C{innerType(){return this._def.schema}sourceType(){return this._def.schema._def.typeName===z.ZodEffects?this._def.schema.sourceType():this._def.schema}_parse(e){let{status:n,ctx:r}=this._processInputParams(e),i=this._def.effect||null,a={addIssue:e=>{d(r,e),e.fatal?n.abort():n.dirty()},get path(){return r.path}};if(a.addIssue=a.addIssue.bind(a),i.type===`preprocess`){let e=i.transform(r.data,a);if(r.common.async)return Promise.resolve(e).then(async e=>{if(n.value===`aborted`)return p;let t=await this._def.schema._parseAsync({data:e,path:r.path,parent:r});return t.status===`aborted`?p:t.status===`dirty`||n.value===`dirty`?m(t.value):t});{if(n.value===`aborted`)return p;let t=this._def.schema._parseSync({data:e,path:r.path,parent:r});return t.status===`aborted`?p:t.status===`dirty`||n.value===`dirty`?m(t.value):t}}if(i.type===`refinement`){let e=e=>{let t=i.refinement(e,a);if(r.common.async)return Promise.resolve(t);if(t instanceof Promise)throw Error(`Async refinement encountered during synchronous parse operation. Use .parseAsync instead.`);return e};if(r.common.async===!1){let t=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});return t.status===`aborted`?p:(t.status===`dirty`&&n.dirty(),e(t.value),{status:n.value,value:t.value})}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(t=>t.status===`aborted`?p:(t.status===`dirty`&&n.dirty(),e(t.value).then(()=>({status:n.value,value:t.value}))))}if(i.type===`transform`)if(r.common.async===!1){let e=this._def.schema._parseSync({data:r.data,path:r.path,parent:r});if(!v(e))return p;let t=i.transform(e.value,a);if(t instanceof Promise)throw Error(`Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead.`);return{status:n.value,value:t}}else return this._def.schema._parseAsync({data:r.data,path:r.path,parent:r}).then(e=>v(e)?Promise.resolve(i.transform(e.value,a)).then(e=>({status:n.value,value:e})):p);t.assertNever(i)}};I.create=(e,t,n)=>new I({schema:e,typeName:z.ZodEffects,effect:t,...S(n)}),I.createWithPreprocess=(e,t,n)=>new I({schema:t,effect:{type:`preprocess`,transform:e},typeName:z.ZodEffects,...S(n)});var L=class extends C{_parse(e){return this._getType(e)===r.undefined?h(void 0):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};L.create=(e,t)=>new L({innerType:e,typeName:z.ZodOptional,...S(t)});var R=class extends C{_parse(e){return this._getType(e)===r.null?h(null):this._def.innerType._parse(e)}unwrap(){return this._def.innerType}};R.create=(e,t)=>new R({innerType:e,typeName:z.ZodNullable,...S(t)});var We=class extends C{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return t.parsedType===r.undefined&&(n=this._def.defaultValue()),this._def.innerType._parse({data:n,path:t.path,parent:t})}removeDefault(){return this._def.innerType}};We.create=(e,t)=>new We({innerType:e,typeName:z.ZodDefault,defaultValue:typeof t.default==`function`?t.default:()=>t.default,...S(t)});var Ge=class extends C{_parse(e){let{ctx:t}=this._processInputParams(e),n={...t,common:{...t.common,issues:[]}},r=this._def.innerType._parse({data:n.data,path:n.path,parent:{...n}});return y(r)?r.then(e=>({status:`valid`,value:e.status===`valid`?e.value:this._def.catchValue({get error(){return new o(n.common.issues)},input:n.data})})):{status:`valid`,value:r.status===`valid`?r.value:this._def.catchValue({get error(){return new o(n.common.issues)},input:n.data})}}removeCatch(){return this._def.innerType}};Ge.create=(e,t)=>new Ge({innerType:e,typeName:z.ZodCatch,catchValue:typeof t.catch==`function`?t.catch:()=>t.catch,...S(t)});var Ke=class extends C{_parse(e){if(this._getType(e)!==r.nan){let t=this._getOrReturnCtx(e);return d(t,{code:a.invalid_type,expected:r.nan,received:t.parsedType}),p}return{status:`valid`,value:e.data}}};Ke.create=e=>new Ke({typeName:z.ZodNaN,...S(e)});var qe=class extends C{_parse(e){let{ctx:t}=this._processInputParams(e),n=t.data;return this._def.type._parse({data:n,path:t.path,parent:t})}unwrap(){return this._def.type}},Je=class e extends C{_parse(e){let{status:t,ctx:n}=this._processInputParams(e);if(n.common.async)return(async()=>{let e=await this._def.in._parseAsync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?p:e.status===`dirty`?(t.dirty(),m(e.value)):this._def.out._parseAsync({data:e.value,path:n.path,parent:n})})();{let e=this._def.in._parseSync({data:n.data,path:n.path,parent:n});return e.status===`aborted`?p:e.status===`dirty`?(t.dirty(),{status:`dirty`,value:e.value}):this._def.out._parseSync({data:e.value,path:n.path,parent:n})}}static create(t,n){return new e({in:t,out:n,typeName:z.ZodPipeline})}},Ye=class extends C{_parse(e){let t=this._def.innerType._parse(e),n=e=>(v(e)&&(e.value=Object.freeze(e.value)),e);return y(t)?t.then(e=>n(e)):n(t)}unwrap(){return this._def.innerType}};Ye.create=(e,t)=>new Ye({innerType:e,typeName:z.ZodReadonly,...S(t)}),j.lazycreate;var z;(function(e){e.ZodString=`ZodString`,e.ZodNumber=`ZodNumber`,e.ZodNaN=`ZodNaN`,e.ZodBigInt=`ZodBigInt`,e.ZodBoolean=`ZodBoolean`,e.ZodDate=`ZodDate`,e.ZodSymbol=`ZodSymbol`,e.ZodUndefined=`ZodUndefined`,e.ZodNull=`ZodNull`,e.ZodAny=`ZodAny`,e.ZodUnknown=`ZodUnknown`,e.ZodNever=`ZodNever`,e.ZodVoid=`ZodVoid`,e.ZodArray=`ZodArray`,e.ZodObject=`ZodObject`,e.ZodUnion=`ZodUnion`,e.ZodDiscriminatedUnion=`ZodDiscriminatedUnion`,e.ZodIntersection=`ZodIntersection`,e.ZodTuple=`ZodTuple`,e.ZodRecord=`ZodRecord`,e.ZodMap=`ZodMap`,e.ZodSet=`ZodSet`,e.ZodFunction=`ZodFunction`,e.ZodLazy=`ZodLazy`,e.ZodLiteral=`ZodLiteral`,e.ZodEnum=`ZodEnum`,e.ZodEffects=`ZodEffects`,e.ZodNativeEnum=`ZodNativeEnum`,e.ZodOptional=`ZodOptional`,e.ZodNullable=`ZodNullable`,e.ZodDefault=`ZodDefault`,e.ZodCatch=`ZodCatch`,e.ZodPromise=`ZodPromise`,e.ZodBranded=`ZodBranded`,e.ZodPipeline=`ZodPipeline`,e.ZodReadonly=`ZodReadonly`})(z||={});let B=w.create,V=Te.create;Ke.create,Ee.create;let H=De.create;Oe.create,ke.create;let Xe=T.create,Ze=E.create;Ae.create,D.create,O.create,je.create;let U=k.create,W=j.create;j.strictCreate;let G=M.create,K=Me.create;Pe.create,P.create;let Qe=Fe.create;Ie.create,Le.create,Re.create,ze.create;let q=Be.create,J=He.create;Ue.create,F.create,I.create,L.create,R.create,I.createWithPreprocess,Je.create;let $e=J([`mp4`,`hls`,`flv`,`auto`]),et=J([`mp4`,`hls`,`flv`]),tt=G([B(),W({url:B(),loading:J([`eager`,`lazy`]).default(`lazy`).optional(),fit:J([`cover`,`contain`,`fill`]).default(`cover`).optional()})]),nt=G([B(),W({url:B(),fit:J([`cover`,`contain`,`fill`]).optional()}).strict()]),rt=W({background:B().min(1).optional(),foreground:B().min(1).optional()}),it=K(`mode`,[W({mode:q(`url`),url:B(),locale:B(),label:B(),isDefault:H().optional()}),W({mode:q(`content`),content:B(),locale:B(),label:B(),isDefault:H().optional()})]),at=W({lowLatencyMode:H().optional()}),ot=W({title:B().optional(),description:B().optional(),duration:V().optional()}),st=W({url:B(),type:et}),ct={live:H().optional(),hls:at.optional(),subtitles:U(it).optional(),metadata:ot.optional()},lt=W({url:B(),type:$e.optional(),...ct}),ut=W({sources:U(st).min(1),...ct}),dt=G([B(),ut,lt]),ft=G([B(),W({locale:B(),fallbackLocales:U(B()).optional(),messages:Qe(B(),Qe(B(),B())).optional()})]),pt=W({id:B(),text:B(),type:J([`scroll`,`top`,`bottom`]).optional(),color:B().optional(),start:V().nonnegative().optional()}),mt=W({enabled:H(),mode:J([`preload`,`streaming`]).optional(),items:U(pt).optional(),display:W({area:J([`top`,`half`,`full`]).optional(),opacity:V().min(0).max(1).optional(),speed:V().min(.5).max(2).optional(),fontSize:V().min(12).max(48).optional(),maxLines:V().int().positive().optional()}).optional()}).superRefine((e,t)=>{e.items&&e.items.length>0&&e.mode!==`preload`&&t.addIssue({code:`custom`,path:[`items`],message:`danmaku.items 只在 mode: 'preload' 下有效。当前 mode 是 ${e.mode??`streaming`}(默认)—— 渲染引擎在直播模式下会忽略每条的 start,整包会一股脑全飘出来。要么设 mode: "preload",要么改用 pushDanmaku 逐条推。`}),e.display?.maxLines!==void 0&&e.display.area&&e.display.area!==`full`&&t.addIssue({code:`custom`,path:[`display`,`maxLines`],message:`danmaku.display.maxLines 与 area: '${e.display.area}' 不能同时用 —— 渲染引擎里两者互斥(给了轨道条数,区域比例就失效),同传只会有一个生效。要限制条数就去掉 area(或用 area: 'full'),要限制区域就去掉 maxLines。`})}),ht=J([`ambient-preview`]),gt=W({play:H().optional(),progress:H().optional(),time:H().optional(),volume:H().optional(),playbackRate:H().optional(),fullscreen:H().optional(),cssFullscreen:H().optional(),pip:H().optional()}).strict();W({source:dt,preset:ht.optional(),autoplay:H().optional(),muted:H().optional(),loop:H().optional(),playbackRate:V().min(.25).max(4).optional(),volume:V().min(0).max(1).optional(),playsinline:H().optional(),preload:J([`none`,`metadata`,`auto`]).optional(),startTime:V().min(0).optional(),controls:H().optional(),showErrorOverlay:H().optional(),showDefaultLoadingOverlay:H().optional(),showLoadingText:H().optional(),errorButtonColors:rt.optional(),controlVisibility:gt.optional(),interactive:H().optional(),poster:tt.optional(),pauseImage:nt.optional(),locale:ft.optional(),danmaku:mt.optional(),debug:H().optional()});let _t=W({producerSessionId:B().min(1),deliveryId:B().min(1),occurredAtMs:V().finite(),sequence:V().int().positive()}),vt=J([`manifest`,`media`,`network`,`auth`,`env`,`autoplay`]),yt=J([`E_MANIFEST_PARSE`,`E_MEDIA_DECODE`,`E_MEDIA_ABORTED`,`E_MEDIA_NOT_SUPPORTED`,`E_SUBTITLE_LOAD_FAILED`,`E_AUTOPLAY_BLOCKED`,`E_NETWORK`,`E_NETWORK_TIMEOUT`,`E_AUTH_EXPIRED`,`E_ENV_CSP_BLOCKED`,`E_METHOD_NOT_SUPPORTED`,`E_DANMAKU_SEND_FAILED`,`E_INTERNAL`,`E_UNKNOWN`,`E_PLAYER_DESTROYED`,`E_HANDSHAKE_TIMEOUT`,`E_HANDSHAKE_VERSION_MISMATCH`,`E_LOAD_FAILED`,`E_FRAME_CRASHED`]),bt=J([`W_BROWSER_INCOMPATIBLE`,`W_VERSION_MISMATCH`,`W_EVENT_REJECTED`]),xt=W({name:B(),message:B(),code:V().optional(),status:V().optional()}).catchall(G([B(),V(),H()])),St=W({code:yt,message:B(),retryable:H(),category:vt,cause:xt.optional()}),Ct=W({fvt:V()}),wt=W({durationMs:V(),droppedFrames:V(),totalFrames:V()}),Tt=[`switch_play_pause`,`switch_fullscreen`,`switch_cssfullscreen`,`switch_css_fullscreen`,`change_definition`,`change_rate`,`change_volume`,`change_muted`,`change_pip`,`seek`,`rotate`,`shot`,`download`,`switch_danmu`,`error_retry`],Et=W({action:J(Tt),source:B(),from:G([B(),V(),H()]).nullable(),to:G([B(),V(),H()]).nullable()});new Set(Tt);let Y={channel:q(`video-lab:page-fullscreen`),version:q(1),session:B().min(1)},Dt=K(`type`,[W({...Y,type:q(`hello`)}),W({...Y,type:q(`ready`),instance:B().min(1)}),W({...Y,type:q(`request`),instance:B().min(1),id:V().int().positive(),active:H()}),W({...Y,type:q(`state`),instance:B().min(1),revision:V().int().nonnegative(),active:H()}),W({...Y,type:q(`ack`),instance:B().min(1),revision:V().int().nonnegative()}),W({...Y,type:q(`disconnect`)})]);W({available:H(),active:H()});let Ot=W({active:H()}),kt=J([`native`,`hls.js`,`flv.js`]),At=J([`live`,`vod`]),jt=W({platform:J([`ios`,`android`,`desktop`,`unknown`]),browser:J([`webkit`,`gecko`,`chromium`,`embedded`,`unknown`]),mse:J([`standard`,`managed`,`unavailable`])}),Mt=W({sessionId:B(),candidateTypes:U(et).min(1),streamKind:At,runtime:jt}),Nt=K(`outcome`,[Mt.extend({outcome:q(`selected`),mediaType:et,kernel:kt,reason:J([`required_hls`,`live_preference`,`vod_preference`,`native_mp4_fallback`])}).strict(),Mt.extend({outcome:q(`unsupported`),mediaType:Ze(),kernel:Ze(),reason:q(`no_supported_candidate`),errorCode:q(`E_MEDIA_NOT_SUPPORTED`)}).strict()]),Pt=W({sessionId:B(),kernel:kt,mediaType:et.optional(),streamKind:At.optional(),runtime:jt.optional(),position:V(),qualityLevel:V().nullable(),srcOrigin:B(),srcPath:B()});J([`detected`,`backoff`,`attempting`,`validating`,`recovered`,`failed`,`cancelled`]);let Ft=J([`reconnect`,`media_recovery`,`visibility_reload`]),It=J([`error`,`manual`,`visibility`,`stall`,`startup_timeout`,`ended`]),X={sessionId:B().min(1),recoveryId:V().int().positive(),strategy:Ft,trigger:It,attempt:V().int().nonnegative(),maxAttempts:V().int().positive(),elapsedMs:V().finite().nonnegative(),reason:yt.optional()},Lt={...X,attempt:V().int().positive()},Rt=K(`phase`,[W({...X,phase:q(`detected`)}).strict(),W({...X,phase:q(`backoff`)}).strict(),W({...Lt,phase:q(`attempting`)}).strict(),W({...Lt,phase:q(`validating`)}).strict(),W({...Lt,phase:q(`recovered`),validatedBy:q(`playing_position_advance`)}).strict(),W({...X,phase:q(`failed`),outcome:J([`timeout`,`attempts_exhausted`])}).strict(),W({...X,phase:q(`cancelled`),outcome:J([`source_changed`,`destroyed`,`superseded`,`user_paused`,`natural_recovery`])}).strict()]).refine(e=>e.attempt<=e.maxAttempts,{message:`attempt exceeds episode budget`,path:[`attempt`]}),zt=K(`phase`,[W({phase:q(`started`),switchId:V().int().positive(),trigger:q(`auth_expired`),httpStatus:G([q(401),q(403)]).optional()}).strict(),W({phase:q(`succeeded`),switchId:V().int().positive(),strategy:J([`hot_load`,`rebuild`]),elapsedMs:V().nonnegative()}).strict(),W({phase:q(`failed`),switchId:V().int().positive(),reason:J([`resolver_null`,`resolver_rejected`,`load_rejected`,`replacement_error`]),elapsedMs:V().nonnegative(),errorCode:yt.optional()}).strict(),W({phase:q(`cancelled`),switchId:V().int().positive(),reason:J([`external_source`,`destroyed`,`unmounted`]),elapsedMs:V().nonnegative()}).strict()]),Bt=W({level:V(),label:B().optional(),height:V().optional(),bitrate:V().optional()}),Vt=W({id:V(),locale:B(),label:B()}),Ht=J([`ok`,`initializing`,`buffering`,`stalled`,`reconnecting`,`source_switching`,`autoplay_blocked`,`error`,`frame_disconnected`,`degraded`]),Z=e=>W({...e,delivery:_t.optional()}),Ut=K(`event`,[Z({event:q(`pagefullscreenchange`),payload:Ot}),Z({event:q(`sourceroute`),payload:Nt}),Z({event:q(`ready`),payload:W({duration:V(),quality:U(Bt),subtitles:U(Vt).optional()})}),Z({event:q(`play`),payload:W({})}),Z({event:q(`pause`),payload:W({})}),Z({event:q(`ended`),payload:W({})}),Z({event:q(`timeupdate`),payload:W({time:V(),duration:V()})}),Z({event:q(`volumechange`),payload:W({volume:V(),muted:H()})}),Z({event:q(`seeking`),payload:W({time:V()})}),Z({event:q(`seeked`),payload:W({time:V()})}),Z({event:q(`waiting`),payload:W({})}),Z({event:q(`playing`),payload:W({})}),Z({event:q(`qualitychange`),payload:W({level:V(),auto:H()})}),Z({event:q(`subtitlechange`),payload:W({id:V().nullable()})}),Z({event:q(`error`),payload:St}),Z({event:q(`autoplayblocked`),payload:W({})}),Z({event:q(`recovery`),payload:Rt}),Z({event:q(`sourceswitch`),payload:zt}),Z({event:q(`compatwarning`),payload:W({code:bt,message:B(),ua:B(),hostVersion:B().optional(),iframeVersion:B().optional(),rejectedEvent:B().optional()})}),Z({event:q(`stalled`),payload:W({phase:J([`start`,`end`]),position:V(),durationMs:V().optional(),kind:J([`playback`,`firstframe`,`seek`]).optional()})}),Z({event:q(`playablechange`),payload:W({playable:H(),reason:Ht,recoverable:H(),action:J([`retry`,`play`,`replace-source`,`recreate-frame`,`none`]).optional()})}),Z({event:q(`kernelhealth`),payload:W({degraded:H(),reason:J([`network`,`media`,`other`]),count:V(),durationMs:V(),detail:B()})}),Z({event:q(`audiohealth`),payload:W({degraded:H(),reason:q(`audio_data_gap`),durationMs:V()})}),Z({event:q(`bufferhealth`),payload:W({draining:H(),marginSec:V()})}),Z({event:q(`contextchange`),payload:Pt}),Z({event:q(`firstframe`),payload:Ct}),Z({event:q(`framefreeze`),payload:wt}),Z({event:q(`useraction`),payload:Et})]);function Wt(e,t){return{event:`compatwarning`,payload:{code:`W_EVENT_REJECTED`,message:`收到一条过不了契约校验的事件(${e??`(未知)`}),已丢弃。最常见的成因是 iframe 比宿主新 —— 先看两端契约版本差多少,再怀疑 iframe 有 bug。`,ua:t,...e===void 0?{}:{rejectedEvent:e}}}}let Gt=K(`method`,[W({method:q(`play`),params:W({}).optional()}),W({method:q(`pause`),params:W({}).optional()}),W({method:q(`seek`),params:W({time:V(),type:J([`exact`,`keyframe`]).optional()})}),W({method:q(`setVolume`),params:W({volume:V().min(0).max(1)})}),W({method:q(`setMuted`),params:W({muted:H()})}),W({method:q(`setPlaybackRate`),params:W({rate:V().min(.25).max(4)})}),W({method:q(`setQuality`),params:W({level:G([V(),q(`auto`)])})}),W({method:q(`setSubtitle`),params:W({id:G([V(),q(`off`)])})}),W({method:q(`setLocale`),params:W({locale:ft})}),W({method:q(`load`),params:W({source:dt})}),W({method:q(`retry`),params:W({}).strict().optional()}),W({method:q(`pushDanmaku`),params:W({item:pt})}),W({method:q(`setDanmakuEnabled`),params:W({enabled:H()})}),W({method:q(`clearDanmaku`),params:W({}).optional()}),W({method:q(`destroy`),params:W({}).optional()}),W({method:q(`enterFullscreen`),params:W({}).optional()}),W({method:q(`exitFullscreen`),params:W({}).optional()})]);J([`command`,`event`,`response`,`error`]);let Kt={version:B(),id:B(),timestamp:V()};function Q(e,t){return W({...Kt,type:q(e),payload:t})}let qt=G([Q(`command`,Gt),G([Q(`event`,Ut).extend({producerSessionId:Xe().optional(),sequence:Xe().optional()}),Q(`event`,Ut).extend({producerSessionId:B().min(1),sequence:V().int().positive()})]),Q(`response`,W({})),Q(`error`,St)]),Jt={E_NETWORK:`Network problem. Check your connection and try again.`,E_NETWORK_TIMEOUT:`The connection timed out. Check your network and try again.`,E_LOAD_FAILED:`Could not load the video. Check your connection and try again.`,E_HANDSHAKE_TIMEOUT:`The player took too long to start. Try again.`,E_AUTH_EXPIRED:`Your access to this video has expired. Reload the page to continue.`,E_MEDIA_DECODE:`The video could not be decoded. Try again.`,E_MEDIA_ABORTED:`Playback was interrupted. Try again.`,E_MEDIA_NOT_SUPPORTED:`This video format cannot be played here.`,E_MANIFEST_PARSE:`The video could not be read. Try again later.`,E_SUBTITLE_LOAD_FAILED:`Subtitles could not be loaded. Playback continues without them.`,E_AUTOPLAY_BLOCKED:`Tap play to start the video.`,E_ENV_CSP_BLOCKED:`This page blocked the player from loading.`,E_METHOD_NOT_SUPPORTED:`This action is not available here.`,E_DANMAKU_SEND_FAILED:`Your message could not be sent. Try again.`,E_PLAYER_DESTROYED:`The player is no longer available. Reload the page.`,E_FRAME_CRASHED:`The player stopped unexpectedly. Reload the page.`,E_HANDSHAKE_VERSION_MISMATCH:`The player version does not match. Reload the page.`,E_INTERNAL:`Something went wrong in the player. Reload the page.`,E_UNKNOWN:`Playback ran into a problem. Try again later.`},Yt={E_NETWORK:`网络连接异常,请检查网络后重试。`,E_NETWORK_TIMEOUT:`连接超时,请检查网络后重试。`,E_LOAD_FAILED:`视频加载失败,请检查网络后重试。`,E_HANDSHAKE_TIMEOUT:`播放器连接超时,请重试。`,E_AUTH_EXPIRED:`播放地址已失效,请获取新的播放地址。`,E_MEDIA_DECODE:`视频解码失败,请重试播放。`,E_MEDIA_ABORTED:`播放已中断,请重试。`,E_MEDIA_NOT_SUPPORTED:`当前设备无法播放此视频格式。`,E_MANIFEST_PARSE:`视频内容无法读取,请稍后再试或更换播放源。`,E_SUBTITLE_LOAD_FAILED:`字幕加载失败,视频仍可继续播放。`,E_AUTOPLAY_BLOCKED:`请点击播放以继续。`,E_ENV_CSP_BLOCKED:`当前页面阻止了播放器加载。`,E_METHOD_NOT_SUPPORTED:`当前无法执行此操作。`,E_DANMAKU_SEND_FAILED:`弹幕发送失败,请重试。`,E_PLAYER_DESTROYED:`播放器已关闭,请重新打开。`,E_FRAME_CRASHED:`播放器连接已断开,请重新打开播放器。`,E_HANDSHAKE_VERSION_MISMATCH:`播放器版本不匹配,请刷新页面。`,E_INTERNAL:`播放器发生异常,请刷新页面。`,E_UNKNOWN:`播放遇到问题,请稍后再试。`},Xt={loading:`Loading…`,"loading.initializing":`Starting player…`,"loading.buffering":`Buffering…`,"loading.stalled":`Restoring playback…`,"loading.reconnecting":`Reconnecting…`,"loading.source_switching":`Switching video source…`,"loading.frame_disconnected":`Connecting to player…`,play:`Play video`,retry:`Retry playback`,reconnect:`Reconnect`,refreshSource:`Get a new playback URL`,recreatePlayer:`Reconnect player`},Zt={loading:`加载中…`,"loading.initializing":`正在初始化播放器…`,"loading.buffering":`正在缓冲…`,"loading.stalled":`正在恢复播放…`,"loading.reconnecting":`正在重新连接…`,"loading.source_switching":`正在换源…`,"loading.frame_disconnected":`正在连接播放器…`,play:`播放视频`,retry:`重试播放`,reconnect:`重新连接`,refreshSource:`重新获取播放地址`,recreatePlayer:`重新连接播放器`},Qt={"controls.play":`Play`,"controls.pause":`Pause`,"controls.replay":`Replay`,"controls.fullscreen.enter":`Fullscreen`,"controls.fullscreen.exit":`Exit fullscreen`,"controls.pageFullscreen.enter":`CSS fullscreen`,"controls.pageFullscreen.exit":`Exit CSS fullscreen`,"controls.pip":`Picture in picture`,"controls.subtitle":`Captions`,"controls.subtitle.off":`Off`,"controls.live":`Live`,"controls.rotate":`Rotate`},$t={"controls.play":`播放`,"controls.pause":`暂停`,"controls.replay":`重播`,"controls.fullscreen.enter":`进入全屏`,"controls.fullscreen.exit":`退出全屏`,"controls.pageFullscreen.enter":`进入样式全屏`,"controls.pageFullscreen.exit":`退出样式全屏`,"controls.pip":`画中画`,"controls.subtitle":`字幕`,"controls.subtitle.off":`关闭`,"controls.live":`直播`,"controls.rotate":`旋转`},en=e=>Object.fromEntries(Object.entries(e).map(([e,t])=>[`error.${e}`,t])),tn={...Zt,...en(Yt),...$t};({...Xt,...en(Jt),...Qt}),Object.keys(tn);function nn(e){return e||(typeof window<`u`?window:null)}function rn(e={}){let t=nn(e.target),n=e.iframe,r=e.origin==null?null:new Set(Array.isArray(e.origin)?e.origin:[e.origin]),i=new Set;function a(e){let t=e;if(typeof t!=`object`||!t||t.type!==`event`)return;let n=t.payload?.event,r=typeof n==`string`?n:`(未知)`;i.has(r)||(i.add(r),o(Wt(typeof n==`string`?n:void 0,typeof navigator>`u`?``:navigator.userAgent)))}function o(e){let{event:t,payload:n}=e;for(let t of c)try{t(e)}catch{}let r=s.get(t);if(r)for(let e of r)try{e(n)}catch(e){console.warn(`[SentinelEmbed] 事件处理器抛错:`,e)}}let s=new Map,c=new Set,l=e=>{let t=e;if(r&&!r.has(t.origin)||n&&t.source!==n.contentWindow)return;let i=qt.safeParse(t.data);if(!i.success){a(t.data);return}i.data.type===`event`&&o(i.data.producerSessionId!==void 0&&i.data.sequence!==void 0?{...i.data.payload,delivery:{producerSessionId:i.data.producerSessionId,deliveryId:i.data.id,occurredAtMs:i.data.timestamp,sequence:i.data.sequence}}:i.data.payload)};t?.addEventListener(`message`,l);let u=(e,t)=>{s.get(e)?.delete(t)};return{on:(e,t)=>{let n=s.get(e);return n||(n=new Set,s.set(e,n)),n.add(t),()=>u(e,t)},onAny:e=>(c.add(e),()=>c.delete(e)),off:u,destroy:()=>{t?.removeEventListener(`message`,l),s.clear(),c.clear()}}}let an=0;function on(){return globalThis.crypto?.randomUUID?.()||(an+=1,`page-fullscreen-${Date.now().toString(36)}-${an.toString(36)}`)}function sn(e){if(new URL(e.origin).origin!==e.origin||e.origin===`null`)throw Error(`网页全屏要求精确 origin`);let{iframe:t,origin:n,adapter:r}=e,i=t.ownerDocument.defaultView;if(!i)throw Error(`iframe 尚无宿主窗口`);let a=on(),o=``,s=0,c=!1,l=!1,u=Date.now(),d=0,f=Promise.resolve(),p;function m(e){let r=t.contentWindow;if(r){try{if(r.location.href===`about:blank`)return}catch(e){if(!(e instanceof DOMException)||e.name!==`SecurityError`)throw e}r.postMessage(e,n)}}function h(){o&&m({channel:`video-lab:page-fullscreen`,version:1,type:`state`,session:a,instance:o,revision:s,active:c})}function g(){m({channel:`video-lab:page-fullscreen`,version:1,type:`hello`,session:a}),p&&h()}function _(e){if(!p)return;let t=p;p=void 0,clearTimeout(t.timer),e?t.reject(e):t.resolve()}function v(){l||(l=!0,clearInterval(S),i?.removeEventListener(`message`,b),i?.removeEventListener(`keydown`,x),t.removeEventListener(`load`,ee),m({channel:`video-lab:page-fullscreen`,version:1,type:`disconnect`,session:a}),_(Error(`网页全屏连接已销毁`)),c=!1,r.dispose())}function y(t){let n=a,i=f.then(async()=>{if(l||!o||n!==a)throw Error(`iframe 尚未确认网页全屏支持`);let i=o,u,d=Promise.resolve().then(()=>r.setActive(t)).then(()=>{if(l||n!==a||o!==i)throw r.dispose(),Error(`网页全屏请求已失效`)});try{await Promise.race([d,new Promise((e,t)=>{u=setTimeout(()=>{v(),t(Error(`宿主布局超时`))},1e4)})]),c=t,s+=1,await new Promise((e,t)=>{p={revision:s,resolve:e,reject:t,timer:setTimeout(()=>{v()},1e4)},h()}),e.onChange?.({active:c})}catch(e){throw c=!1,r.dispose(),l||(s+=1,h()),e}finally{clearTimeout(u)}});return f=i.catch(()=>{}),i}function b(e){if(l||e.source!==t.contentWindow||e.origin!==n)return;let i=Dt.safeParse(e.data);if(!i.success||i.data.session!==a)return;let f=i.data;if(f.type===`ready`){if(o&&o!==f.instance)return;u=Date.now(),o!==f.instance&&(_(Error(`iframe 已重新加载`)),c&&r.dispose(),c=!1,o=f.instance,s=0,d=0,h())}else if(f.type===`ack`&&f.instance===o&&f.revision===p?.revision)_();else if(f.type===`request`&&f.instance===o){if(f.id<=d){h();return}d=f.id,y(f.active).catch(()=>{})}}function x(e){e.key===`Escape`&&c&&y(!1).catch(()=>{})}function ee(){a=on(),_(Error(`iframe 已重新加载`)),o=``,c=!1,r.dispose(),g()}i.addEventListener(`message`,b),i.addEventListener(`keydown`,x),t.addEventListener(`load`,ee);let S=setInterval(()=>{o&&Date.now()-u>5e3?v():g()},1e3);return g(),{setPageFullscreen:y,destroy:v}}let $=null;function cn(){return $||=rn(),$}function ln(e,t){return cn().on(e,t)}function un(e){return cn().onAny(e)}function dn(e,t){cn().off(e,t)}function fn(){$?.destroy(),$=null}return e.createEmbedListener=rn,e.createPageFullscreenController=sn,e.destroy=fn,e.off=dn,e.on=ln,e.onAny=un,e})({});
|
package/dist/index.mjs
CHANGED
|
@@ -44,10 +44,7 @@ function createEmbedListener(options = {}) {
|
|
|
44
44
|
function dispatch(evt) {
|
|
45
45
|
const { event, payload } = evt;
|
|
46
46
|
for (const handler of anyHandlers) try {
|
|
47
|
-
handler(
|
|
48
|
-
event,
|
|
49
|
-
payload
|
|
50
|
-
});
|
|
47
|
+
handler(evt);
|
|
51
48
|
} catch {}
|
|
52
49
|
const set = handlers.get(event);
|
|
53
50
|
if (!set) return;
|
|
@@ -59,7 +56,6 @@ function createEmbedListener(options = {}) {
|
|
|
59
56
|
}
|
|
60
57
|
const handlers = /* @__PURE__ */ new Map();
|
|
61
58
|
const anyHandlers = /* @__PURE__ */ new Set();
|
|
62
|
-
const deliveredHandlers = /* @__PURE__ */ new Set();
|
|
63
59
|
const onMessage = (ev) => {
|
|
64
60
|
const msg = ev;
|
|
65
61
|
if (allowed && !allowed.has(msg.origin)) return;
|
|
@@ -70,19 +66,15 @@ function createEmbedListener(options = {}) {
|
|
|
70
66
|
return;
|
|
71
67
|
}
|
|
72
68
|
if (parsed.data.type !== "event") return;
|
|
73
|
-
dispatch(parsed.data.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
event: parsed.data.payload,
|
|
69
|
+
dispatch(parsed.data.producerSessionId !== void 0 && parsed.data.sequence !== void 0 ? {
|
|
70
|
+
...parsed.data.payload,
|
|
71
|
+
delivery: {
|
|
77
72
|
producerSessionId: parsed.data.producerSessionId,
|
|
78
73
|
deliveryId: parsed.data.id,
|
|
79
74
|
occurredAtMs: parsed.data.timestamp,
|
|
80
75
|
sequence: parsed.data.sequence
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
handler(delivered);
|
|
84
|
-
} catch {}
|
|
85
|
-
}
|
|
76
|
+
}
|
|
77
|
+
} : parsed.data.payload);
|
|
86
78
|
};
|
|
87
79
|
target?.addEventListener("message", onMessage);
|
|
88
80
|
const off = (event, handler) => {
|
|
@@ -101,20 +93,14 @@ function createEmbedListener(options = {}) {
|
|
|
101
93
|
anyHandlers.add(handler);
|
|
102
94
|
return () => anyHandlers.delete(handler);
|
|
103
95
|
};
|
|
104
|
-
const onDelivered = (handler) => {
|
|
105
|
-
deliveredHandlers.add(handler);
|
|
106
|
-
return () => deliveredHandlers.delete(handler);
|
|
107
|
-
};
|
|
108
96
|
const destroy = () => {
|
|
109
97
|
target?.removeEventListener("message", onMessage);
|
|
110
98
|
handlers.clear();
|
|
111
99
|
anyHandlers.clear();
|
|
112
|
-
deliveredHandlers.clear();
|
|
113
100
|
};
|
|
114
101
|
return {
|
|
115
102
|
on,
|
|
116
103
|
onAny,
|
|
117
|
-
onDelivered,
|
|
118
104
|
off,
|
|
119
105
|
destroy
|
|
120
106
|
};
|
|
@@ -312,10 +298,6 @@ function on(event, handler) {
|
|
|
312
298
|
function onAny(handler) {
|
|
313
299
|
return getDefault().onAny(handler);
|
|
314
300
|
}
|
|
315
|
-
/** 用默认单例订阅带 producer delivery 证据的事件。 */
|
|
316
|
-
function onDelivered(handler) {
|
|
317
|
-
return getDefault().onDelivered(handler);
|
|
318
|
-
}
|
|
319
301
|
/** 用默认单例退订。传入订阅时的同一个 handler 引用 */
|
|
320
302
|
function off(event, handler) {
|
|
321
303
|
getDefault().off(event, handler);
|
|
@@ -326,6 +308,5 @@ function destroy() {
|
|
|
326
308
|
defaultListener = null;
|
|
327
309
|
}
|
|
328
310
|
//#endregion
|
|
329
|
-
export { createEmbedListener, createPageFullscreenController, destroy, off, on, onAny
|
|
311
|
+
export { createEmbedListener, createPageFullscreenController, destroy, off, on, onAny };
|
|
330
312
|
|
|
331
|
-
//# sourceMappingURL=index.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@video-lab/embed-helper",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
],
|
|
32
32
|
"sideEffects": false,
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@video-lab/protocol": "
|
|
34
|
+
"@video-lab/protocol": "4.0.1"
|
|
35
35
|
},
|
|
36
36
|
"devDependencies": {
|
|
37
37
|
"tsdown": "^0.22.9",
|