var ct = Object.defineProperty; var dt = (n, e, t) => e in n ? ct(n, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : n[e] = t; var w = (n, e, t) => (dt(n, typeof e != "symbol" ? e + "" : e, t), t); function ut(n) { var s; const e = JSON.parse(n); return e == null ? (console.warn("Unable to parse calibration"), null) : { DPI: e.DPI.value, center: e.center.value, configVersion: e.configVersion, flipImageX: e.flipImageX.value, flipImageY: e.flipImageY.value, flipSubp: e.flipSubp.value, fringe: ((s = e.fringe) == null ? void 0 : s.value) ?? 0, invView: e.invView.value, pitch: e.pitch.value, screenH: e.screenH.value, screenW: e.screenW.value, serial: e.serial, slope: e.slope.value, verticalAngle: e.verticalAngle.value, viewCone: e.viewCone.value }; } function ht(n) { const e = JSON.parse(n); return e == null ? null : { quiltAspect: e.quiltAspect, quiltWidth: e.quiltX, quiltHeight: e.quiltY, rows: e.tileY, columns: e.tileX }; } function ft(n) { let e = null; try { e = { calibration: ut(n.calibration.value), defaultQuilt: ht(n.defaultQuilt.value), hwid: n.hwid.value, hardwareVersion: n.hardwareVersion.value, index: n.index.value, state: n.state.value, windowCoords: n.windowCoords.value }; } catch (t) { console.error({ error: t }); } return e; } async function C(n) { let e, t = N.getInstance(); t.getVerbosity() >= 3 && t.getVerbosity() !== void 0 && console.group("Endpoint:", n.endpoint), await new Promise((r) => setTimeout(r, 10)), n.baseUrl == null && (n.baseUrl = "http://localhost:33334/"), t.getVerbosity() == 3 && (console.group("Message:"), t.log(`${n.baseUrl + n.endpoint}`), t.log("body:", n.requestBody), console.groupEnd()); const s = { method: "PUT", headers: { "Content-Type": "application/json" }, body: JSON.stringify(n.requestBody) }; try { t.time(n.endpoint); let r = await fetch(`${n.baseUrl + n.endpoint}`, s); return r.ok ? (r.status == 408 && (t.warn("%c Bridge Timeout:", "color: #ff0000", r), console.groupEnd()), e = await r.json(), e.status.value !== "Completion" && e.status.value !== "Pending" ? (t.warn("%c Bridge Failure:", "color: #ff0000", e), console.groupEnd(), { success: !0, response: e }) : (t.log("%c Response:", "color: #00aa00", e), t.timeEnd(n.endpoint), console.groupEnd(), { success: !0, response: e })) : { success: !1, response: null }; } catch (r) { return console.group("%c Bridge Error:", "color: #ff0000"), console.error("Bridge Error", r), console.groupEnd(), console.groupEnd(), { success: !1, response: null }; } } async function pt({ name: n, orchestration: e }) { if (N.getInstance().log("%c function call: tryEnterOrchestration ", "color: magenta; font-weight: bold; border: solid"), (n == null || n == "") && (n = "default"), e !== "" && e !== void 0) return { success: !1, response: null }; let r = await C({ endpoint: "enter_orchestration", requestBody: { name: n } }); return r.success == !1 ? (console.error("failed to enter orchestration", r), { success: !1, response: null }) : (console.groupEnd(), { success: !0, response: r.response }); } async function mt(n) { let e = { orchestration: n }, t = new Promise((r) => { let a = setTimeout(() => { clearTimeout(a), r({ success: !1, response: null }); }, 5e3); }), s = await Promise.race([ C({ endpoint: "exit_orchestration", requestBody: e }), t ]); return !s || s.success == !1 ? { success: !1, response: null } : { success: !0, response: s.response }; } function gt() { return window !== void 0 ? !0 : (console.error("Window is unavailable!"), !1); } function yt() { return "WebSocket" in window ? !0 : (console.error("WebSocket NOT supported by your Browser!"), !1); } class vt { constructor() { w(this, "eventSource"); w(this, "MessageHandler"); w(this, "ws"); this.eventSource = void 0, this.MessageHandler = {}, this.ws = void 0; } /** * adds a new message handler object to the BridgeEventSource class * @param event the event name to listen for * @param MessageHandler the function to call when the event is received */ addMessageHandler({ event: e, MessageHandler: t }) { var r; const s = N.getInstance(); e in this.MessageHandler || (this.MessageHandler[e] = []), (r = this.MessageHandler[e]) == null || r.push(t), s.log(`%c Add Message Handler: ${e} `, "color: YellowGreen; font-weight: bold; border: solid;"); } removeMessageHandler({ event: e, MessageHandler: t }) { var r, a; if (N.getInstance().log(`%c Message Handler Removed: ${e} `, "color: Tomato; font-weight: bold; border: solid;"), e in this.MessageHandler) { const o = (r = this.MessageHandler[e]) == null ? void 0 : r.findIndex((l) => l === t); o !== -1 && o !== void 0 && ((a = this.MessageHandler[e]) == null || a.splice(o, 1)); } } callMessageHandler(e) { let t; if ("All Events" in this.MessageHandler) { const s = JSON.parse(e), r = this.MessageHandler["All Events"]; r && r.forEach((a) => a(s)); } try { t = JSON.parse(e); } catch (s) { N.getInstance().error("Failed to parse JSON", s); return; } if (t.payload.value.event.value in this.MessageHandler) { const s = this.MessageHandler[t.payload.value.event.value]; s && s.forEach((r) => r(t)); } } // custom internal event handlers for connect and disconnect, we get those internally not from bridge connectEvent() { const e = this.MessageHandler["Bridge Connected"]; e && e.forEach((t) => t(void 0)); } disconnectEvent() { const e = this.MessageHandler["Bridge Disconnected"]; e && e.forEach((t) => t(void 0)), this.MessageHandler = {}; } async connectToBridgeEventSource(e) { const t = N.getInstance(); if (t.log("%c Connect to Bridge Events Source ", "color: chartreuse; font-weight: bold; border: solid"), !gt()) return { success: !1 }; if (!yt()) return { success: !1 }; let s = this; return this.ws = new WebSocket("ws://localhost:9724/event_source"), new Promise((r) => { this.ws !== void 0 && (this.ws.onopen = () => { var l; N.getInstance().log("%c Connected to Websocket ", "color: chartreuse; font-weight: bold; border: solid"); const o = { subscribe_orchestration_events: e }; (l = this.ws) == null || l.send(JSON.stringify(o)), r({ success: !0 }); }, this.ws.onmessage = function(a) { s.callMessageHandler(a.data); }, this.ws.onclose = function() { const a = N.getInstance(); a.manualDisconnect || a.disconnect(), a.log(`%c Disconnected from Websocket, Manual Disconnect: ${a.manualDisconnect} `, "color: red; font-weight: bold; border: solid"); }, this.ws.onerror = function(a) { t.warn("Unable to connect to WebSocket, is Bridge Running?", a), r({ success: !1 }); }); }); } } class Je { constructor(e) { w(this, "orchestration"); w(this, "hologram"); w(this, "id"); w(this, "index"); w(this, "playlistName"); w(this, "tag"); this.hologram = e.hologram, this.id = e.id, this.index = e.index, this.playlistName = e.playlistName, this.orchestration = e.orchestration; } toBridge() { let e; if (this.hologram.type == "quilt") { const t = this.hologram.settings; return e = { orchestration: this.orchestration, id: this.id, name: this.playlistName, index: this.index, uri: this.hologram.uri, rows: t.rows, cols: t.columns, durationMS: t.duration ? t.duration : 1e4, focus: t.focus ? t.focus : 0, zoom: t.zoom ? t.zoom : 1, crop_pos_x: t.crop_pos_x ? t.crop_pos_x : 0, crop_pos_y: t.crop_pos_y ? t.crop_pos_y : 0, aspect: t.aspect, view_count: t.viewCount, isRGBD: 0, tag: t.tag ? t.tag : "" }, e; } else if (this.hologram.type == "rgbd") { const t = this.hologram.settings; return e = { orchestration: this.orchestration, id: this.id, name: this.playlistName, index: this.index, uri: this.hologram.uri, rows: 8, cols: 13, focus: t.focus ? t.focus : 0, aspect: t.aspect, view_count: 8 * 13, durationMS: t.duration ? t.duration : 1e4, isRGBD: 1, depth_loc: t.depth_loc, crop_pos_x: t.crop_pos_x ? t.crop_pos_x : 0, crop_pos_y: t.crop_pos_y ? t.crop_pos_y : 0, depth_inversion: t.depth_inversion, chroma_depth: t.chroma_depth, depthiness: t.depthiness, zoom: t.zoom, tag: t.tag ? t.tag : "" }, e; } throw new Error("Invalid hologram type"); } } class He extends Je { constructor(e) { super(e); } } class qe extends Je { constructor(e) { super(e); } } class ze { constructor(e) { w(this, "name"); w(this, "loop"); w(this, "items"); w(this, "orchestration"); var t; this.name = e.name, this.loop = e.loop, this.orchestration = e.orchestration, e.items ? this.items = (t = e.items) == null ? void 0 : t.map((s, r) => { if (s.type == "quilt") return new He({ hologram: s, id: r, index: r, playlistName: this.name, orchestration: this.orchestration }); if (s.type == "rgbd") return new qe({ hologram: s, id: r, index: r, playlistName: this.name, orchestration: this.orchestration }); }).filter((s) => !!s) : this.items = []; } setName(e) { this.name = e; } addItem(e) { let t; return e.type == "quilt" ? (t = new He({ hologram: e, id: this.items.length, index: this.items.length, playlistName: this.name, orchestration: this.orchestration }), this.items.push(t), t) : e.type == "rgbd" ? (t = new qe({ hologram: e, id: this.items.length, index: this.items.length, playlistName: this.name, orchestration: this.orchestration }), this.items.push(t), t) : void 0; } async addPlaylistItemToBridge(e) { const t = e.toBridge(); return (await C({ endpoint: "insert_playlist_entry", requestBody: t })).success == !1 ? (console.error("failed to insert playlist entry"), !1) : !0; } removeItem(e) { if (e.id != null) { this.items.splice(e.id, 1); for (let t = 0; t < this.items.length; t++) this.items[t].id = t; } } clearItems() { this.items = []; } /** * gets the object for the current playlist that is currently being played * @param orchestration * @param head * @returns */ getCurrent({ orchestration: e, head: t }) { return { orchestration: e, name: this.name, head_index: t }; } /** * create the json object for the playlist instance * @param orchestration * @returns */ getInstance(e) { return { orchestration: e, name: this.name, loop: this.loop }; } /** * this function will play a playlist on a Looking Glass display * the playlist must be created and populated with content before calling this function * @param playlist * @param head * @returns */ async play({ head: e } = {}) { let t = this.orchestration; const s = this.getInstance(this.orchestration); e || (e = -1); let r = await C({ endpoint: "instance_playlist", requestBody: s }); if (r.success == !1) return console.error("failed to initialize playlist"), !1; const a = this.items; if (r.success == !0 && t !== void 0) for (let d = 0; d < a.length; d++) { a[d].orchestration = this.orchestration; const u = a[d].toBridge(); if ((await C({ endpoint: "insert_playlist_entry", requestBody: u })).success == !1) return console.error("failed to insert playlist entry"), !1; } const o = this.getCurrent({ orchestration: t, head: e }); return (await C({ endpoint: "play_playlist", requestBody: o })).success != !1; } } class S { constructor(e) { w(this, "bridgeEventName"); w(this, "client"); this.bridgeEventName = e.bridgeEventName, this.client = e.client, this.client.addEventListener(this.bridgeEventName, this.handle.bind(this)); } } class Xs extends S { constructor(e) { super({ bridgeEventName: "Monitor Connect", client: e.client }); } handle(e) { this.client.log("%c ⬅️ Monitor Connect ", "color: BlueViolet; font-weight: bold; border: solid;", e); } } class Fs extends S { constructor(e) { super({ bridgeEventName: "Monitor Disconnect", client: e.client }); } handle(e) { this.client.log("%c ⬅️ Monitor Disconnect ", "color: BlueViolet; font-weight: bold; border: solid;", e); } } class Ks extends S { constructor(e) { super({ bridgeEventName: "Transport Control Pause", client: e.client }); } handle(e) { this.client.log("%c ⬅️ Transport Control Pause ", "color: BlueViolet; font-weight: bold; border: solid;", e); } } class en extends S { constructor(e) { super({ bridgeEventName: "Transport Control Play", client: e.client }); } handle(e) { this.client.log("%c ⬅️ Transport Control Play ", "color: BlueViolet; font-weight: bold; border: solid;", e); } } class tn extends S { constructor(e) { super({ bridgeEventName: "Transport Control Next", client: e.client }); } handle(e) { this.client.log("%c ⬅️ Transport Control Next ", "color: BlueViolet; font-weight: bold; border: solid;", e); } } class sn extends S { constructor(e) { super({ bridgeEventName: "Transport Control Previous", client: e.client }); } handle(e) { this.client.log("%c ⬅️ Transport Control Previous ", "color: BlueViolet; font-weight: bold; border: solid;", e); } } class nn extends S { constructor(e) { super({ bridgeEventName: "Progress Start", client: e.client }); } handle(e) { this.client.log("%c ⬅️ Progress Start ", "color: BlueViolet; font-weight: bold; border: solid;", e); } } class rn extends S { constructor(e) { super({ bridgeEventName: "Progress Completion", client: e.client }); } handle(e) { this.client.log(e); } } class an extends S { constructor(e) { super({ bridgeEventName: "Progress Update", client: e.client }); } handle(e) { this.client.log("%c ⬅️ Progress Update ", "color: BlueViolet; font-weight: bold; border: solid;", e.payload.value.progress_type, e.payload.value.progress.value); } } class on extends S { constructor(e) { super({ bridgeEventName: "Playlist Instance", client: e.client }); } handle(e) { this.client.log("%c ⬅️ Playlist Instance ", "color: BlueViolet; font-weight: bold; border: solid;", e); } } class ln extends S { constructor(e) { super({ bridgeEventName: "Playlist Insert", client: e.client }); } handle(e) { this.client.log("%c ⬅️ Playlist Insert ", "color: BlueViolet; font-weight: bold; border: solid;", e); } } class cn extends S { constructor(e) { super({ bridgeEventName: "Playlist Delete", client: e.client }); } handle(e) { this.client.log("%c ⬅️ Playlist Delete ", "color: BlueViolet; font-weight: bold; border: solid;", e); } } class dn extends S { constructor(e) { super({ bridgeEventName: "Sync/Play Playlist", client: e.client }); } handle(e) { this.client.log(e); } } class un extends S { constructor(e) { super({ bridgeEventName: "Sync/Play Playlist Complete", client: e.client }); } handle(e) { this.client.log(e); } } class hn extends S { constructor(e) { super({ bridgeEventName: "Sync/Play Playlist Cancelled", client: e.client }); } handle(e) { this.client.log(e); } } class _t extends S { constructor(e) { super({ bridgeEventName: "New Item Playing", client: e.client }); } handle(e) { var a, o; this.client.log("%c ⬅️ New Item Playing ", "color: BlueViolet; font-weight: bold; border: solid;", e); let t = this.client.currentPlaylistIndex, s = (o = (a = this.client.playlists) == null ? void 0 : a[t]) == null ? void 0 : o.name, r = this.client.currentPlaylistItemIndex; e.payload.value.playlist_name.value == s && e.payload.value.index.value == r && (this.client.isCastPending = !1); } } class bt extends S { constructor(e) { super({ bridgeEventName: "All Events", client: e.client }); } handle(e) { e.payload.value.event.value !== "Progress Update" && this.client.log(`%c ⬅️ ${e.payload.value.event.value}`, "color: BlueViolet; font-weight: bold; border: solid;", e); } } function L(n) { const [e, t, s, r] = n.split(".").map(Number); return { major: e, minor: t, patch: s, hotfix: r }; } const k = class { constructor() { /** The name of the current orchestration */ w(this, "orchestration"); /** A boolean that stores if the Bridge session is valid or not * If the orchestration is not valid, some functions will not work */ w(this, "isConnected"); /**A boolean for checking the status of the current disconnect event */ w(this, "isDisconnecting"); /**An array containing the connected Looking Glass Displays */ w(this, "displays"); /**an Array containing Playlists, we store this to easily switch between multiple playlists */ w(this, "playlists"); /** The index of playlists that is currently active */ w(this, "currentPlaylistIndex"); /**The index of the playlist Item that is currently active */ w(this, "currentPlaylistItemIndex"); /**store if we're currently in the middle of a cast */ w(this, "isCastPending", !1); /**the version of the Looking Glass Driver that's running */ w(this, "version"); w(this, "currentHologram"); /**a boolean for whether a disconnect was triggered automatically or manually */ w(this, "manualDisconnect", !1); w(this, "playState", "STOPPED"); if (this.orchestration = "", this.isConnected = !1, this.isDisconnecting = !1, this.displays = [], k.eventsource = new vt(), k.fallback = void 0, this.playlists = [], this.currentPlaylistIndex = 0, this.currentPlaylistItemIndex = 0, this.version = { major: 0, minor: 0, patch: 0, hotfix: 0 }, !k.instance) k.instance = this; else return k.instance; } static getInstance() { return k.instance || (k.instance = new k()), k.instance; } /** * A helper function to check and see if Looking Glass Bridge is running or not. * @returns boolean, true if Bridge is running, false if Bridge is not running */ async status() { this.log("%c ➡️ function call: status ", "color: magenta; font-weight: bold; border: solid"); const e = new Promise((t, s) => { let r = setTimeout(() => { clearTimeout(r), s(new Error("Timed out")); }, 500); }); try { const t = await Promise.race([fetch("http://localhost:33334/"), e]); if (!t.ok) throw new Error(`HTTP error! status: ${t.status}`); return !0; } catch (t) { return t.message === "Timed out" ? this.warn("Request timed out") : console.warn("Looking Glass Bridge is not running, please start Bridge and try again."), !1; } } /** * Attempt to connect to Looking Glass Bridge. * @returns */ async connect() { if (this.log("%c ➡️ function call: connect ", "color: magenta; font-weight: bold; border: solid"), this.isConnected == !0) return console.warn("Already connected to Looking Glass Bridge."), { success: !0, response: { version: this.version, orchestration: this.orchestration } }; if (await this.status() == !1) return { success: !1, response: { version: { major: 0, minor: 0, patch: 0, hotfix: 0 }, orchestration: "" } }; if (this.isConnected = !0, (await this.createOrchestration("")).success == !1) { let s = await this.getVersion(); if (s.success == !1) return { success: !1, response: { version: L("0"), orchestration: "" } }; if (s.response.major < 2 && s.response.minor < 1) return { success: !1, response: { version: s.response, orchestration: "" } }; } return await this.subscribeToEvents(), k.eventsource.connectEvent(), new _t({ client: this }), new bt({ client: this }), { success: !0, response: { version: this.version, orchestration: this.orchestration } }; } /** * Creates an orchestration called "default" if one does not already exist. * @returns string, the name of the current orchestration */ async createOrchestration(e) { var r, a, o; if (this.log("%c ➡️ function call: createOrchestration ", "color: magenta; font-weight: bold; border: solid"), await this.status() == !1) return { success: !1, response: null }; const t = await this.getVersion(); if (t.response.major < 2 && t.response.minor < 1) return console.error("Unable to get Looking Glass Bridge version, please upgrade Looking Glass Bridge."), { success: !1, response: null }; let s = await pt({ name: e, orchestration: this.orchestration }); return s.success == !0 && (a = (r = s.response) == null ? void 0 : r.payload) != null && a.value && (this.orchestration = (o = s.response) == null ? void 0 : o.payload.value), { success: !0, response: this.orchestration }; } /** * Disconnect from Looking Glass Bridge, free up resources. */ async disconnect() { var t, s, r, a; return this.log("%c ➡️ function call: disconnect ", "color: magenta; font-weight: bold; border: solid"), this.isDisconnecting == !0 || this.isConnected == !1 ? { success: !1 } : (this.isDisconnecting = !0, this.manualDisconnect = !0, (await mt(this.orchestration)).success == !1 && console.warn(" ⚠️ Unable to exit orchestration, Bridge is not reachable."), (t = k.eventsource) == null || t.disconnectEvent(), (r = (s = k.eventsource) == null ? void 0 : s.ws) == null || r.close(), (a = k.fallback) == null || a.ws.close(), k.fallback = void 0, this.displays = [], this.playlists = [], this.currentHologram = void 0, this.orchestration = "", this.isDisconnecting = !1, this.isCastPending = !1, this.isConnected = !1, { success: !0 }); } /** * changes the state of the Looking Glass Bridge Window * @param showWindow boolean, true to show the Looking Glass window, false to hide the Looking Glass window * @returns */ async showWindow(e) { if (this.isConnected == !1) return { success: !1, response: null }; this.log("%c ➡️ function call: showWindow ", "color: magenta; font-weight: bold; border: solid"); let t = "this call is only supported in bridge 2.2 or newer, please upgrade Looking Glass Bridge."; if (await this.isVersionCompatible() == !1) return console.warn(t), { success: !1, response: null }; const s = { orchestration: this.orchestration, show_window: e, head_index: -1 }; let r = await C({ endpoint: "show_window", requestBody: s }); return r.success == !1 ? { success: !1, response: null } : { success: !0, response: r.response }; } /** * A helper function to get the version of Looking Glass Bridge that is running. * @returns string of the version of Looking Glass Bridge that is running */ async getVersion() { var t, s; this.log("%c ➡️ function call: getVersion ", "color: magenta; font-weight: bold; border: solid"); let e = await C({ endpoint: "bridge_version", requestBody: {} }); if (e.success == !0) { let r = L((t = e.response.payload) == null ? void 0 : t.value); return this.version = r, { success: !0, response: this.version }; } else { let r = await ((s = k.fallback) == null ? void 0 : s.getLegacyVersion()); return r == null ? { success: !1, response: L("0") } : { success: !0, response: L(r) }; } } /** * A helper function to get the version of the Looking Glass Bridge API * @returns the current version of the Looking Glass API */ async apiVersion() { var s, r; if (this.log("%c ➡️ function call: apiVersion ", "color: magenta; font-weight: bold; border: solid"), this.isConnected == !1) return { success: !1, response: L("0") }; if (await this.isVersionCompatible() == !1) return { success: !1, response: L("0") }; let e = await C({ endpoint: "api_version", requestBody: {} }); return e.success == !1 ? (console.warn("this call is only supported in bridge 2.2 or newer, please upgrade Looking Glass Bridge."), { success: !1, response: L("0") }) : ((s = e.response.payload) == null ? void 0 : s.value) == null ? { success: !1, response: L("0") } : { success: !0, response: L((r = e.response.payload) == null ? void 0 : r.value) }; } /** * getDisplays finds all displays that are connected to the computer, * searches for Looking Glass displays, and returns them as an array of Display objects * @returns the display object */ async getDisplays() { var s, r, a, o; if (this.log("%c ➡️ function call: displays ", "color: magenta; font-weight: bold; border: solid"), this.displays = [], this.isConnected == !1) return { success: !1, response: null }; const e = { orchestration: this.orchestration }; let t = await C({ endpoint: "available_output_devices", requestBody: e }); if (t.success == !1) return { success: !1, response: null }; for (let l in (s = t.response.payload) == null ? void 0 : s.value) { let d = (r = t.response.payload) == null ? void 0 : r.value[`${l}`]; if (((o = (a = d.value) == null ? void 0 : a.hardwareVersion) == null ? void 0 : o.value) !== "thirdparty") { let u = ft(d.value); u != null && this.displays.push(u); } } return { success: !0, response: this.displays }; } /**Delete the instance of the playlist from Bridge, this will stop the playlist from playing if it's active. */ async deletePlaylist(e) { if (this.log("%c ➡️ function call: deletePlaylist ", "color: magenta; font-weight: bold; border: solid"), this.isConnected == !1) return { success: !1, response: null }; const t = e.getInstance(this.orchestration); let s = await C({ endpoint: "delete_playlist", requestBody: t }); return s.success == !1 ? { success: !1, response: null } : s; } /** * This function will allow you to cast a single hologram to the Looking Glass * @param hologram */ async cast(e) { var a, o, l; if (this.isConnected == !1) return { success: !1 }; if (this.log("%c ➡️ function call: cast ", "color: magenta; font-weight: bold; border: solid"), this.isCastPending == !0) return this.warn("already casting please wait"), { success: !1 }; if (this.displays.length == 0) return this.warn("no displays found"), { success: !1 }; this.isCastPending = !0; let t = "Cast_" + Math.random().toString(36).substring(7), s; s == null && (s = new ze({ name: t, loop: !0, items: [], orchestration: this.orchestration }), (a = this.playlists) == null || a.push(s)); let r = s.addItem(e); if (r !== void 0) await s.play(), (o = this.playlists) == null || o.forEach((d) => { var u; d.name != t && (this.deletePlaylist(d), (u = this.playlists) == null || u.splice(this.playlists.indexOf(d), 1)); }), this.currentPlaylistIndex = ((l = this.playlists) == null ? void 0 : l.indexOf(s)) ?? 0, this.currentPlaylistItemIndex = r.index; else return { success: !1 }; return this.currentHologram = e, this.isCastPending = !1, { success: !0 }; } getCurrentPlaylist() { var e; return (e = this.playlists) == null ? void 0 : e[this.currentPlaylistIndex]; } async playRemotePlaylist(e, t = 0) { var a, o, l; if (!this.isConnected && !(await this.connect()).success) return { success: !1 }; if (console.log("%c ➡️ function call: playRemotePlaylist ", "color: magenta; font-weight: bold; border: solid"), this.isCastPending == !0) return { success: !1 }; this.isCastPending = !0; let s = "Cast_" + Math.random().toString(36).substring(7); const r = new ze({ name: s, loop: !0, items: e, orchestration: this.orchestration }); return (a = this.playlists) == null || a.push(r), (o = this.playlists) == null || o.forEach((d) => { var u; d.name != s && (this.deletePlaylist(d), (u = this.playlists) == null || u.splice(this.playlists.indexOf(d), 1)); }), this.currentPlaylistIndex = ((l = this.playlists) == null ? void 0 : l.indexOf(r)) ?? 0, this.currentPlaylistItemIndex = t, this.currentHologram = e[t], this.isCastPending = !1, await r.play(), { success: !0 }; } /**Play a Playlist created by Looking Glass Studio, requires the full path to the playlist.json file. */ async playStudioPlaylist(e) { if (this.log("%c ➡️ function call: subscribeToEvents ", "color: magenta; font-weight: bold; border: solid"), this.isConnected == !1) return { success: !1, response: null }; const t = { orchestration: this.orchestration, name: "Studio Playlist", playlist_path: e, loop: !0 }; await C({ endpoint: "instance_studio_playlist", requestBody: t }); const s = { orchestration: this.orchestration, name: "Studio Playlist", head_index: -1 }; return { success: !0, response: (await C({ endpoint: "play_playlist", requestBody: s })).response }; } /**stop playing the studio playlist */ async stopStudioPlaylist() { if (this.log("%c ➡️ function call: stopStudioPlaylist ", "color: magenta; font-weight: bold; border: solid"), this.isConnected == !1) return { success: !1 }; const e = { orchestration: this.orchestration, name: "Studio Playlist", loop: !1 }; return (await C({ endpoint: "delete_playlist", requestBody: e })).success == !1 ? { success: !1 } : (await this.showWindow(!1), { success: !0 }); } /**Get the current playlist that is set to start automatically */ async getAutoStartPlaylist() { if (this.log("%c ➡️ function call: getAutoStartPlaylist ", "color: magenta; font-weight: bold; border: solid"), this.isConnected == !1) return { success: !1, response: null }; let e = { orchestration: this.orchestration, head_index: -1 }, t = await C({ endpoint: "get_autostart_playlist", requestBody: e }); return t.success == !1 ? { success: !1, response: null } : { success: !0, response: t.response }; } /**Choose a Playlist that exists on the local file system to set as the start up playlist */ async setAutoStartPlaylist(e) { if (this.log("%c ➡️ function call: setAutoStartPlaylist ", "color: magenta; font-weight: bold; border: solid"), this.isConnected == !1) return { success: !1, response: null }; let t = { orchestration: this.orchestration, head_index: -1, playlist_name: e.playlistName, playlist_path: e.playlistPath }, s = await C({ endpoint: "set_autostart_playlist", requestBody: t }); return s.success == !1 ? { success: !1, response: null } : { success: !0, response: s.response }; } /**set a playlist to auto-start, requires that all files are local on the system */ async createAutoStartPlaylist(e) { if (this.log("%c ➡️ function call: createAutoStartPlaylist ", "color: magenta; font-weight: bold; border: solid"), this.isConnected == !1) return { success: !1, response: null }; for (let r = 0; r < e.playlist.items.length; r++) if (e.playlist.items[r].hologram.uri.includes("http")) return this.warn("playlist contains a web uri, cannot create autostart playlist"), { success: !1, response: null }; let t = { orchestration: this.orchestration, head_index: -1, playlist_name: e.playlist.name }, s = await C({ endpoint: "set_named_autostart_playlist", requestBody: t }); return s.success == !1 ? { success: !1, response: null } : { success: !0, response: s.response }; } // TRANSPORT CONTROLS /**Play the currently instanced playlist */ async play() { let e = { orchestration: this.orchestration }, t = await C({ endpoint: "transport_control_play", requestBody: e }); return t.success == !1 ? { success: !1, response: null } : (this.playState = "PLAYING", { success: !0, response: t.response }); } /**Pause the currently playing playlist */ async pause() { let e = { orchestration: this.orchestration }, t = await C({ endpoint: "transport_control_pause", requestBody: e }); return t.success == !1 ? { success: !1, response: null } : (this.playState = "PAUSED", { success: !0, response: t.response }); } /**Got to the next playlist item */ async next() { let e = { orchestration: this.orchestration }, t = await C({ endpoint: "transport_control_next", requestBody: e }); if (t.success == !1) return { success: !1, response: null }; const s = this.getCurrentPlaylist(), r = s == null ? void 0 : s.loop, a = s == null ? void 0 : s.items.length; return this.currentPlaylistItemIndex + 1 === a ? r && (this.currentPlaylistItemIndex = 0) : this.currentPlaylistItemIndex++, { success: !0, response: t.response }; } /**Go to the previous playlist item */ async previous() { let e = { orchestration: this.orchestration }, t = await C({ endpoint: "transport_control_previous", requestBody: e }); if (t.success == !1) return { success: !1, response: null }; const s = this.getCurrentPlaylist(), r = s == null ? void 0 : s.loop, a = s == null ? void 0 : s.items.length; return this.currentPlaylistIndex === 0 ? r && a && (this.currentPlaylistItemIndex = a) : this.currentPlaylistItemIndex--, { success: !0, response: t.response }; } /**Seek to a specific item in a playlist */ async seek(e) { let t = { orchestration: this.orchestration, index: e }, s = await C({ endpoint: "transport_control_seek_to_index", requestBody: t }); return s.success == !1 ? { success: !1, response: null } : { success: !0, response: s.response }; } /** * Connect to Looking Glass Bridge's EventSource. * The event source is a websocket connection that will send events from Bridge to the client. * @returns the bridge event source */ async subscribeToEvents() { var t; this.log("%c ➡️ function call: subscribeToEvents ", "color: magenta; font-weight: bold; border: solid"); let e = await ((t = k.eventsource) == null ? void 0 : t.connectToBridgeEventSource(this.orchestration)); return (e == null ? void 0 : e.success) == !0 ? { success: !0 } : { success: !1 }; } /** * Adds an event listener that returns a message from Bridge's websocket based event source. * @param event the event to listen for * @param MessageHandler the function to call when the event is received */ async addEventListener(e, t) { k.eventsource == null ? await this.subscribeToEvents() : k.eventsource.addMessageHandler({ event: e, MessageHandler: t }); } async removeEventListener(e, t) { k.eventsource == null ? await this.subscribeToEvents() : k.eventsource.removeMessageHandler({ event: e, MessageHandler: t }); } /**Update the parameters of the current hologram */ async updateCurrentHologram({ name: e, parameter: t, value: s }) { let r = { orchestration: this.orchestration, name: e, [t]: `${s}` }, a = await C({ endpoint: "update_current_entry", requestBody: r }); return a.success == !1 ? { success: !1, response: null } : { success: !0, response: a.response }; } getCurrentHologram() { return this.currentHologram; } getVerbosity() { return k.verbosity; } /** *Set the level of console logging that Bridge.js library will do. * @param verbosity 0 = no logging, 1 = errors only, 2 = only bridge values, 3 = full bridge response */ setVerbosity(e) { k.verbosity = e; } /**Asbtraction for logging with verbosity setting */ log(...e) { k.verbosity >= 2 && console.log.apply(console, e); } time(e) { k.verbosity >= 2 && console.time(e); } timeEnd(e) { k.verbosity >= 2 && console.timeEnd(e); } /**Asbtraction for logging with verbosity setting */ warn(...e) { k.verbosity >= 1 && console.warn.apply(e); } /**Asbtraction for logging with verbosity setting */ error(...e) { k.verbosity >= 0 && console.error.apply(e); } /** * helper function for determining if the version of Bridge is valid. * @returns boolean, true if the version is compatible, false if not */ async isVersionCompatible() { return this.version.major == 0 ? this.isConnected = !1 : this.version.major < 2 && this.version.minor < 1 ? (this.warn("Please update to the latest version for the best experience"), this.isConnected = !1) : this.version.major >= 2 && this.version.minor >= 2 && (this.isConnected = !0), this.isConnected; } }; let N = k; /** the instance of the client that we create, BridgeClient is a singleton, there can only be one */ w(N, "instance"), w(N, "fallback"), /** The websocket connection to Bridge's Event Source, this returns information from Bridge */ w(N, "eventsource"), /**control how often we log to the console, 3 is everything, 0 is nothing */ w(N, "verbosity"); var x; (function(n) { n.assertEqual = (r) => r; function e(r) { } n.assertIs = e; function t(r) { throw new Error(); } n.assertNever = t, n.arrayToEnum = (r) => { const a = {}; for (const o of r) a[o] = o; return a; }, n.getValidEnumValues = (r) => { const a = n.objectKeys(r).filter((l) => typeof r[r[l]] != "number"), o = {}; for (const l of a) o[l] = r[l]; return n.objectValues(o); }, n.objectValues = (r) => n.objectKeys(r).map(function(a) { return r[a]; }), n.objectKeys = typeof Object.keys == "function" ? (r) => Object.keys(r) : (r) => { const a = []; for (const o in r) Object.prototype.hasOwnProperty.call(r, o) && a.push(o); return a; }, n.find = (r, a) => { for (const o of r) if (a(o)) return o; }, n.isInteger = typeof Number.isInteger == "function" ? (r) => Number.isInteger(r) : (r) => typeof r == "number" && isFinite(r) && Math.floor(r) === r; function s(r, a = " | ") { return r.map((o) => typeof o == "string" ? `'${o}'` : o).join(a); } n.joinValues = s, n.jsonStringifyReplacer = (r, a) => typeof a == "bigint" ? a.toString() : a; })(x || (x = {})); var Re; (function(n) { n.mergeShapes = (e, t) => ({ ...e, ...t // second overwrites first }); })(Re || (Re = {})); const f = x.arrayToEnum([ "string", "nan", "number", "integer", "float", "boolean", "date", "bigint", "symbol", "function", "undefined", "null", "array", "object", "unknown", "promise", "void", "never", "map", "set" ]), q = (n) => { switch (typeof n) { case "undefined": return f.undefined; case "string": return f.string; case "number": return isNaN(n) ? f.nan : f.number; case "boolean": return f.boolean; case "function": return f.function; case "bigint": return f.bigint; case "symbol": return f.symbol; case "object": return Array.isArray(n) ? f.array : n === null ? f.null : n.then && typeof n.then == "function" && n.catch && typeof n.catch == "function" ? f.promise : typeof Map < "u" && n instanceof Map ? f.map : typeof Set < "u" && n instanceof Set ? f.set : typeof Date < "u" && n instanceof Date ? f.date : f.object; default: return f.unknown; } }, c = x.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" ]), wt = (n) => JSON.stringify(n, null, 2).replace(/"([^"]+)":/g, "$1:"); class O extends Error { constructor(e) { super(), this.issues = [], this.addIssue = (s) => { this.issues = [...this.issues, s]; }, this.addIssues = (s = []) => { this.issues = [...this.issues, ...s]; }; const t = new.target.prototype; Object.setPrototypeOf ? Object.setPrototypeOf(this, t) : this.__proto__ = t, this.name = "ZodError", this.issues = e; } get errors() { return this.issues; } format(e) { const t = e || function(a) { return a.message; }, s = { _errors: [] }, r = (a) => { for (const o of a.issues) if (o.code === "invalid_union") o.unionErrors.map(r); else if (o.code === "invalid_return_type") r(o.returnTypeError); else if (o.code === "invalid_arguments") r(o.argumentsError); else if (o.path.length === 0) s._errors.push(t(o)); else { let l = s, d = 0; for (; d < o.path.length; ) { const u = o.path[d]; d === o.path.length - 1 ? (l[u] = l[u] || { _errors: [] }, l[u]._errors.push(t(o))) : l[u] = l[u] || { _errors: [] }, l = l[u], d++; } } }; return r(this), s; } static assert(e) { if (!(e instanceof O)) throw new Error(`Not a ZodError: ${e}`); } toString() { return this.message; } get message() { return JSON.stringify(this.issues, x.jsonStringifyReplacer, 2); } get isEmpty() { return this.issues.length === 0; } flatten(e = (t) => t.message) { const t = {}, s = []; for (const r of this.issues) r.path.length > 0 ? (t[r.path[0]] = t[r.path[0]] || [], t[r.path[0]].push(e(r))) : s.push(e(r)); return { formErrors: s, fieldErrors: t }; } get formErrors() { return this.flatten(); } } O.create = (n) => new O(n); const ne = (n, e) => { let t; switch (n.code) { case c.invalid_type: n.received === f.undefined ? t = "Required" : t = `Expected ${n.expected}, received ${n.received}`; break; case c.invalid_literal: t = `Invalid literal value, expected ${JSON.stringify(n.expected, x.jsonStringifyReplacer)}`; break; case c.unrecognized_keys: t = `Unrecognized key(s) in object: ${x.joinValues(n.keys, ", ")}`; break; case c.invalid_union: t = "Invalid input"; break; case c.invalid_union_discriminator: t = `Invalid discriminator value. Expected ${x.joinValues(n.options)}`; break; case c.invalid_enum_value: t = `Invalid enum value. Expected ${x.joinValues(n.options)}, received '${n.received}'`; break; case c.invalid_arguments: t = "Invalid function arguments"; break; case c.invalid_return_type: t = "Invalid function return type"; break; case c.invalid_date: t = "Invalid date"; break; case c.invalid_string: typeof n.validation == "object" ? "includes" in n.validation ? (t = `Invalid input: must include "${n.validation.includes}"`, typeof n.validation.position == "number" && (t = `${t} at one or more positions greater than or equal to ${n.validation.position}`)) : "startsWith" in n.validation ? t = `Invalid input: must start with "${n.validation.startsWith}"` : "endsWith" in n.validation ? t = `Invalid input: must end with "${n.validation.endsWith}"` : x.assertNever(n.validation) : n.validation !== "regex" ? t = `Invalid ${n.validation}` : t = "Invalid"; break; case c.too_small: n.type === "array" ? t = `Array must contain ${n.exact ? "exactly" : n.inclusive ? "at least" : "more than"} ${n.minimum} element(s)` : n.type === "string" ? t = `String must contain ${n.exact ? "exactly" : n.inclusive ? "at least" : "over"} ${n.minimum} character(s)` : n.type === "number" ? t = `Number must be ${n.exact ? "exactly equal to " : n.inclusive ? "greater than or equal to " : "greater than "}${n.minimum}` : n.type === "date" ? t = `Date must be ${n.exact ? "exactly equal to " : n.inclusive ? "greater than or equal to " : "greater than "}${new Date(Number(n.minimum))}` : t = "Invalid input"; break; case c.too_big: n.type === "array" ? t = `Array must contain ${n.exact ? "exactly" : n.inclusive ? "at most" : "less than"} ${n.maximum} element(s)` : n.type === "string" ? t = `String must contain ${n.exact ? "exactly" : n.inclusive ? "at most" : "under"} ${n.maximum} character(s)` : n.type === "number" ? t = `Number must be ${n.exact ? "exactly" : n.inclusive ? "less than or equal to" : "less than"} ${n.maximum}` : n.type === "bigint" ? t = `BigInt must be ${n.exact ? "exactly" : n.inclusive ? "less than or equal to" : "less than"} ${n.maximum}` : n.type === "date" ? t = `Date must be ${n.exact ? "exactly" : n.inclusive ? "smaller than or equal to" : "smaller than"} ${new Date(Number(n.maximum))}` : t = "Invalid input"; break; case c.custom: t = "Invalid input"; break; case c.invalid_intersection_types: t = "Intersection results could not be merged"; break; case c.not_multiple_of: t = `Number must be a multiple of ${n.multipleOf}`; break; case c.not_finite: t = "Number must be finite"; break; default: t = e.defaultError, x.assertNever(n); } return { message: t }; }; let Qe = ne; function xt(n) { Qe = n; } function Te() { return Qe; } const Ce = (n) => { const { data: e, path: t, errorMaps: s, issueData: r } = n, a = [...t, ...r.path || []], o = { ...r, path: a }; if (r.message !== void 0) return { ...r, path: a, message: r.message }; let l = ""; const d = s.filter((u) => !!u).slice().reverse(); for (const u of d) l = u(o, { data: e, defaultError: l }).message; return { ...r, path: a, message: l }; }, kt = []; function h(n, e) { const t = Te(), s = Ce({ issueData: e, data: n.data, path: n.path, errorMaps: [ n.common.contextualErrorMap, n.schemaErrorMap, t, t === ne ? void 0 : ne // then global default map ].filter((r) => !!r) }); n.common.issues.push(s); } class E { constructor() { this.value = "valid"; } dirty() { this.value === "valid" && (this.value = "dirty"); } abort() { this.value !== "aborted" && (this.value = "aborted"); } static mergeArray(e, t) { const s = []; for (const r of t) { if (r.status === "aborted") return g; r.status === "dirty" && e.dirty(), s.push(r.value); } return { status: e.value, value: s }; } static async mergeObjectAsync(e, t) { const s = []; for (const r of t) { const a = await r.key, o = await r.value; s.push({ key: a, value: o }); } return E.mergeObjectSync(e, s); } static mergeObjectSync(e, t) { const s = {}; for (const r of t) { const { key: a, value: o } = r; if (a.status === "aborted" || o.status === "aborted") return g; a.status === "dirty" && e.dirty(), o.status === "dirty" && e.dirty(), a.value !== "__proto__" && (typeof o.value < "u" || r.alwaysSet) && (s[a.value] = o.value); } return { status: e.value, value: s }; } } const g = Object.freeze({ status: "aborted" }), te = (n) => ({ status: "dirty", value: n }), I = (n) => ({ status: "valid", value: n }), Me = (n) => n.status === "aborted", Ae = (n) => n.status === "dirty", ce = (n) => n.status === "valid", de = (n) => typeof Promise < "u" && n instanceof Promise; function Pe(n, e, t, s) { if (t === "a" && !s) throw new TypeError("Private accessor was defined without a getter"); if (typeof e == "function" ? n !== e || !s : !e.has(n)) throw new TypeError("Cannot read private member from an object whose class did not declare it"); return t === "m" ? s : t === "a" ? s.call(n) : s ? s.value : e.get(n); } function Xe(n, e, t, s, r) { if (s === "m") throw new TypeError("Private method is not writable"); if (s === "a" && !r) throw new TypeError("Private accessor was defined without a setter"); if (typeof e == "function" ? n !== e || !r : !e.has(n)) throw new TypeError("Cannot write private member to an object whose class did not declare it"); return s === "a" ? r.call(n, t) : r ? r.value = t : e.set(n, t), t; } var p; (function(n) { n.errToObj = (e) => typeof e == "string" ? { message: e } : e || {}, n.toString = (e) => typeof e == "string" ? e : e == null ? void 0 : e.message; })(p || (p = {})); var ie, oe; class D { constructor(e, t, s, r) { this._cachedPath = [], this.parent = e, this.data = t, this._path = s, this._key = r; } get path() { return this._cachedPath.length || (this._key instanceof Array ? this._cachedPath.push(...this._path, ...this._key) : this._cachedPath.push(...this._path, this._key)), this._cachedPath; } } const We = (n, e) => { if (ce(e)) return { success: !0, data: e.value }; if (!n.common.issues.length) throw new Error("Validation failed but no issues detected."); return { success: !1, get error() { if (this._error) return this._error; const t = new O(n.common.issues); return this._error = t, this._error; } }; }; function v(n) { if (!n) return {}; const { errorMap: e, invalid_type_error: t, required_error: s, description: r } = n; if (e && (t || s)) throw new Error(`Can't use "invalid_type_error" or "required_error" in conjunction with custom error map.`); return e ? { errorMap: e, description: r } : { errorMap: (o, l) => { var d, u; const { message: y } = n; return o.code === "invalid_enum_value" ? { message: y ?? l.defaultError } : typeof l.data > "u" ? { message: (d = y ?? s) !== null && d !== void 0 ? d : l.defaultError } : o.code !== "invalid_type" ? { message: l.defaultError } : { message: (u = y ?? t) !== null && u !== void 0 ? u : l.defaultError }; }, description: r }; } class _ { 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); } get description() { return this._def.description; } _getType(e) { return q(e.data); } _getOrReturnCtx(e, t) { return t || { common: e.parent.common, data: e.data, parsedType: q(e.data), schemaErrorMap: this._def.errorMap, path: e.path, parent: e.parent }; } _processInputParams(e) { return { status: new E(), ctx: { common: e.parent.common, data: e.data, parsedType: q(e.data), schemaErrorMap: this._def.errorMap, path: e.path, parent: e.parent } }; } _parseSync(e) { const t = this._parse(e); if (de(t)) throw new Error("Synchronous parse encountered promise."); return t; } _parseAsync(e) { const t = this._parse(e); return Promise.resolve(t); } parse(e, t) { const s = this.safeParse(e, t); if (s.success) return s.data; throw s.error; } safeParse(e, t) { var s; const r = { common: { issues: [], async: (s = t == null ? void 0 : t.async) !== null && s !== void 0 ? s : !1, contextualErrorMap: t == null ? void 0 : t.errorMap }, path: (t == null ? void 0 : t.path) || [], schemaErrorMap: this._def.errorMap, parent: null, data: e, parsedType: q(e) }, a = this._parseSync({ data: e, path: r.path, parent: r }); return We(r, a); } async parseAsync(e, t) { const s = await this.safeParseAsync(e, t); if (s.success) return s.data; throw s.error; } async safeParseAsync(e, t) { const s = { common: { issues: [], contextualErrorMap: t == null ? void 0 : t.errorMap, async: !0 }, path: (t == null ? void 0 : t.path) || [], schemaErrorMap: this._def.errorMap, parent: null, data: e, parsedType: q(e) }, r = this._parse({ data: e, path: s.path, parent: s }), a = await (de(r) ? r : Promise.resolve(r)); return We(s, a); } refine(e, t) { const s = (r) => typeof t == "string" || typeof t > "u" ? { message: t } : typeof t == "function" ? t(r) : t; return this._refinement((r, a) => { const o = e(r), l = () => a.addIssue({ code: c.custom, ...s(r) }); return typeof Promise < "u" && o instanceof Promise ? o.then((d) => d ? !0 : (l(), !1)) : o ? !0 : (l(), !1); }); } refinement(e, t) { return this._refinement((s, r) => e(s) ? !0 : (r.addIssue(typeof t == "function" ? t(s, r) : t), !1)); } _refinement(e) { return new A({ schema: this, typeName: m.ZodEffects, effect: { type: "refinement", refinement: e } }); } superRefine(e) { return this._refinement(e); } optional() { return B.create(this, this._def); } nullable() { return Y.create(this, this._def); } nullish() { return this.nullable().optional(); } array() { return M.create(this, this._def); } promise() { return ae.create(this, this._def); } or(e) { return pe.create([this, e], this._def); } and(e) { return me.create(this, e, this._def); } transform(e) { return new A({ ...v(this._def), schema: this, typeName: m.ZodEffects, effect: { type: "transform", transform: e } }); } default(e) { const t = typeof e == "function" ? e : () => e; return new be({ ...v(this._def), innerType: this, defaultValue: t, typeName: m.ZodDefault }); } brand() { return new Be({ typeName: m.ZodBranded, type: this, ...v(this._def) }); } catch(e) { const t = typeof e == "function" ? e : () => e; return new we({ ...v(this._def), innerType: this, catchValue: t, typeName: m.ZodCatch }); } describe(e) { const t = this.constructor; return new t({ ...this._def, description: e }); } pipe(e) { return ke.create(this, e); } readonly() { return xe.create(this); } isOptional() { return this.safeParse(void 0).success; } isNullable() { return this.safeParse(null).success; } } const Tt = /^c[^\s-]{8,}$/i, Ct = /^[0-9a-z]+$/, Pt = /^[0-9A-HJKMNP-TV-Z]{26}$/, St = /^[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, Et = /^[a-z0-9_-]{21}$/i, It = /^[-+]?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)?)??$/, Nt = /^(?!\.)(?!.*\.\.)([A-Z0-9_'+\-\.]*)[A-Z0-9_+-]@([A-Z0-9][A-Z0-9\-]*\.)+[A-Z]{2,}$/i, jt = "^(\\p{Extended_Pictographic}|\\p{Emoji_Component})+$"; let Ze; const Ot = /^(?:(?: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])$/, Zt = /^(([a-f0-9]{1,4}:){7}|::([a-f0-9]{1,4}:){0,6}|([a-f0-9]{1,4}:){1}:([a-f0-9]{1,4}:){0,5}|([a-f0-9]{1,4}:){2}:([a-f0-9]{1,4}:){0,4}|([a-f0-9]{1,4}:){3}:([a-f0-9]{1,4}:){0,3}|([a-f0-9]{1,4}:){4}:([a-f0-9]{1,4}:){0,2}|([a-f0-9]{1,4}:){5}:([a-f0-9]{1,4}:){0,1})([a-f0-9]{1,4}|(((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2}))\.){3}((25[0-5])|(2[0-4][0-9])|(1[0-9]{2})|([0-9]{1,2})))$/, Rt = /^([0-9a-zA-Z+/]{4})*(([0-9a-zA-Z+/]{2}==)|([0-9a-zA-Z+/]{3}=))?$/, Fe = "((\\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])))", Mt = new RegExp(`^${Fe}$`); function Ke(n) { let e = "([01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d"; return n.precision ? e = `${e}\\.\\d{${n.precision}}` : n.precision == null && (e = `${e}(\\.\\d+)?`), e; } function At(n) { return new RegExp(`^${Ke(n)}$`); } function et(n) { let e = `${Fe}T${Ke(n)}`; const t = []; return t.push(n.local ? "Z?" : "Z"), n.offset && t.push("([+-]\\d{2}:?\\d{2})"), e = `${e}(${t.join("|")})`, new RegExp(`^${e}$`); } function Vt(n, e) { return !!((e === "v4" || !e) && Ot.test(n) || (e === "v6" || !e) && Zt.test(n)); } class R extends _ { _parse(e) { if (this._def.coerce && (e.data = String(e.data)), this._getType(e) !== f.string) { const a = this._getOrReturnCtx(e); return h(a, { code: c.invalid_type, expected: f.string, received: a.parsedType }), g; } const s = new E(); let r; for (const a of this._def.checks) if (a.kind === "min") e.data.length < a.value && (r = this._getOrReturnCtx(e, r), h(r, { code: c.too_small, minimum: a.value, type: "string", inclusive: !0, exact: !1, message: a.message }), s.dirty()); else if (a.kind === "max") e.data.length > a.value && (r = this._getOrReturnCtx(e, r), h(r, { code: c.too_big, maximum: a.value, type: "string", inclusive: !0, exact: !1, message: a.message }), s.dirty()); else if (a.kind === "length") { const o = e.data.length > a.value, l = e.data.length < a.value; (o || l) && (r = this._getOrReturnCtx(e, r), o ? h(r, { code: c.too_big, maximum: a.value, type: "string", inclusive: !0, exact: !0, message: a.message }) : l && h(r, { code: c.too_small, minimum: a.value, type: "string", inclusive: !0, exact: !0, message: a.message }), s.dirty()); } else if (a.kind === "email") Nt.test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { validation: "email", code: c.invalid_string, message: a.message }), s.dirty()); else if (a.kind === "emoji") Ze || (Ze = new RegExp(jt, "u")), Ze.test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { validation: "emoji", code: c.invalid_string, message: a.message }), s.dirty()); else if (a.kind === "uuid") St.test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { validation: "uuid", code: c.invalid_string, message: a.message }), s.dirty()); else if (a.kind === "nanoid") Et.test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { validation: "nanoid", code: c.invalid_string, message: a.message }), s.dirty()); else if (a.kind === "cuid") Tt.test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { validation: "cuid", code: c.invalid_string, message: a.message }), s.dirty()); else if (a.kind === "cuid2") Ct.test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { validation: "cuid2", code: c.invalid_string, message: a.message }), s.dirty()); else if (a.kind === "ulid") Pt.test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { validation: "ulid", code: c.invalid_string, message: a.message }), s.dirty()); else if (a.kind === "url") try { new URL(e.data); } catch { r = this._getOrReturnCtx(e, r), h(r, { validation: "url", code: c.invalid_string, message: a.message }), s.dirty(); } else a.kind === "regex" ? (a.regex.lastIndex = 0, a.regex.test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { validation: "regex", code: c.invalid_string, message: a.message }), s.dirty())) : a.kind === "trim" ? e.data = e.data.trim() : a.kind === "includes" ? e.data.includes(a.value, a.position) || (r = this._getOrReturnCtx(e, r), h(r, { code: c.invalid_string, validation: { includes: a.value, position: a.position }, message: a.message }), s.dirty()) : a.kind === "toLowerCase" ? e.data = e.data.toLowerCase() : a.kind === "toUpperCase" ? e.data = e.data.toUpperCase() : a.kind === "startsWith" ? e.data.startsWith(a.value) || (r = this._getOrReturnCtx(e, r), h(r, { code: c.invalid_string, validation: { startsWith: a.value }, message: a.message }), s.dirty()) : a.kind === "endsWith" ? e.data.endsWith(a.value) || (r = this._getOrReturnCtx(e, r), h(r, { code: c.invalid_string, validation: { endsWith: a.value }, message: a.message }), s.dirty()) : a.kind === "datetime" ? et(a).test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { code: c.invalid_string, validation: "datetime", message: a.message }), s.dirty()) : a.kind === "date" ? Mt.test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { code: c.invalid_string, validation: "date", message: a.message }), s.dirty()) : a.kind === "time" ? At(a).test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { code: c.invalid_string, validation: "time", message: a.message }), s.dirty()) : a.kind === "duration" ? It.test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { validation: "duration", code: c.invalid_string, message: a.message }), s.dirty()) : a.kind === "ip" ? Vt(e.data, a.version) || (r = this._getOrReturnCtx(e, r), h(r, { validation: "ip", code: c.invalid_string, message: a.message }), s.dirty()) : a.kind === "base64" ? Rt.test(e.data) || (r = this._getOrReturnCtx(e, r), h(r, { validation: "base64", code: c.invalid_string, message: a.message }), s.dirty()) : x.assertNever(a); return { status: s.value, value: e.data }; } _regex(e, t, s) { return this.refinement((r) => e.test(r), { validation: t, code: c.invalid_string, ...p.errToObj(s) }); } _addCheck(e) { return new R({ ...this._def, checks: [...this._def.checks, e] }); } email(e) { return this._addCheck({ kind: "email", ...p.errToObj(e) }); } url(e) { return this._addCheck({ kind: "url", ...p.errToObj(e) }); } emoji(e) { return this._addCheck({ kind: "emoji", ...p.errToObj(e) }); } uuid(e) { return this._addCheck({ kind: "uuid", ...p.errToObj(e) }); } nanoid(e) { return this._addCheck({ kind: "nanoid", ...p.errToObj(e) }); } cuid(e) { return this._addCheck({ kind: "cuid", ...p.errToObj(e) }); } cuid2(e) { return this._addCheck({ kind: "cuid2", ...p.errToObj(e) }); } ulid(e) { return this._addCheck({ kind: "ulid", ...p.errToObj(e) }); } base64(e) { return this._addCheck({ kind: "base64", ...p.errToObj(e) }); } ip(e) { return this._addCheck({ kind: "ip", ...p.errToObj(e) }); } datetime(e) { var t, s; return typeof e == "string" ? this._addCheck({ kind: "datetime", precision: null, offset: !1, local: !1, message: e }) : this._addCheck({ kind: "datetime", precision: typeof (e == null ? void 0 : e.precision) > "u" ? null : e == null ? void 0 : e.precision, offset: (t = e == null ? void 0 : e.offset) !== null && t !== void 0 ? t : !1, local: (s = e == null ? void 0 : e.local) !== null && s !== void 0 ? s : !1, ...p.errToObj(e == null ? void 0 : 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: typeof (e == null ? void 0 : e.precision) > "u" ? null : e == null ? void 0 : e.precision, ...p.errToObj(e == null ? void 0 : e.message) }); } duration(e) { return this._addCheck({ kind: "duration", ...p.errToObj(e) }); } regex(e, t) { return this._addCheck({ kind: "regex", regex: e, ...p.errToObj(t) }); } includes(e, t) { return this._addCheck({ kind: "includes", value: e, position: t == null ? void 0 : t.position, ...p.errToObj(t == null ? void 0 : t.message) }); } startsWith(e, t) { return this._addCheck({ kind: "startsWith", value: e, ...p.errToObj(t) }); } endsWith(e, t) { return this._addCheck({ kind: "endsWith", value: e, ...p.errToObj(t) }); } min(e, t) { return this._addCheck({ kind: "min", value: e, ...p.errToObj(t) }); } max(e, t) { return this._addCheck({ kind: "max", value: e, ...p.errToObj(t) }); } length(e, t) { return this._addCheck({ kind: "length", value: e, ...p.errToObj(t) }); } /** * @deprecated Use z.string().min(1) instead. * @see {@link ZodString.min} */ nonempty(e) { return this.min(1, p.errToObj(e)); } trim() { return new R({ ...this._def, checks: [...this._def.checks, { kind: "trim" }] }); } toLowerCase() { return new R({ ...this._def, checks: [...this._def.checks, { kind: "toLowerCase" }] }); } toUpperCase() { return new R({ ...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 isBase64() { return !!this._def.checks.find((e) => e.kind === "base64"); } get minLength() { let e = null; for (const t of this._def.checks) t.kind === "min" && (e === null || t.value > e) && (e = t.value); return e; } get maxLength() { let e = null; for (const t of this._def.checks) t.kind === "max" && (e === null || t.value < e) && (e = t.value); return e; } } R.create = (n) => { var e; return new R({ checks: [], typeName: m.ZodString, coerce: (e = n == null ? void 0 : n.coerce) !== null && e !== void 0 ? e : !1, ...v(n) }); }; function Bt(n, e) { const t = (n.toString().split(".")[1] || "").length, s = (e.toString().split(".")[1] || "").length, r = t > s ? t : s, a = parseInt(n.toFixed(r).replace(".", "")), o = parseInt(e.toFixed(r).replace(".", "")); return a % o / Math.pow(10, r); } class z extends _ { 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) !== f.number) { const a = this._getOrReturnCtx(e); return h(a, { code: c.invalid_type, expected: f.number, received: a.parsedType }), g; } let s; const r = new E(); for (const a of this._def.checks) a.kind === "int" ? x.isInteger(e.data) || (s = this._getOrReturnCtx(e, s), h(s, { code: c.invalid_type, expected: "integer", received: "float", message: a.message }), r.dirty()) : a.kind === "min" ? (a.inclusive ? e.data < a.value : e.data <= a.value) && (s = this._getOrReturnCtx(e, s), h(s, { code: c.too_small, minimum: a.value, type: "number", inclusive: a.inclusive, exact: !1, message: a.message }), r.dirty()) : a.kind === "max" ? (a.inclusive ? e.data > a.value : e.data >= a.value) && (s = this._getOrReturnCtx(e, s), h(s, { code: c.too_big, maximum: a.value, type: "number", inclusive: a.inclusive, exact: !1, message: a.message }), r.dirty()) : a.kind === "multipleOf" ? Bt(e.data, a.value) !== 0 && (s = this._getOrReturnCtx(e, s), h(s, { code: c.not_multiple_of, multipleOf: a.value, message: a.message }), r.dirty()) : a.kind === "finite" ? Number.isFinite(e.data) || (s = this._getOrReturnCtx(e, s), h(s, { code: c.not_finite, message: a.message }), r.dirty()) : x.assertNever(a); return { status: r.value, value: e.data }; } gte(e, t) { return this.setLimit("min", e, !0, p.toString(t)); } gt(e, t) { return this.setLimit("min", e, !1, p.toString(t)); } lte(e, t) { return this.setLimit("max", e, !0, p.toString(t)); } lt(e, t) { return this.setLimit("max", e, !1, p.toString(t)); } setLimit(e, t, s, r) { return new z({ ...this._def, checks: [ ...this._def.checks, { kind: e, value: t, inclusive: s, message: p.toString(r) } ] }); } _addCheck(e) { return new z({ ...this._def, checks: [...this._def.checks, e] }); } int(e) { return this._addCheck({ kind: "int", message: p.toString(e) }); } positive(e) { return this._addCheck({ kind: "min", value: 0, inclusive: !1, message: p.toString(e) }); } negative(e) { return this._addCheck({ kind: "max", value: 0, inclusive: !1, message: p.toString(e) }); } nonpositive(e) { return this._addCheck({ kind: "max", value: 0, inclusive: !0, message: p.toString(e) }); } nonnegative(e) { return this._addCheck({ kind: "min", value: 0, inclusive: !0, message: p.toString(e) }); } multipleOf(e, t) { return this._addCheck({ kind: "multipleOf", value: e, message: p.toString(t) }); } finite(e) { return this._addCheck({ kind: "finite", message: p.toString(e) }); } safe(e) { return this._addCheck({ kind: "min", inclusive: !0, value: Number.MIN_SAFE_INTEGER, message: p.toString(e) })._addCheck({ kind: "max", inclusive: !0, value: Number.MAX_SAFE_INTEGER, message: p.toString(e) }); } get minValue() { let e = null; for (const t of this._def.checks) t.kind === "min" && (e === null || t.value > e) && (e = t.value); return e; } get maxValue() { let e = null; for (const 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" && x.isInteger(e.value)); } get isFinite() { let e = null, t = null; for (const s of this._def.checks) { if (s.kind === "finite" || s.kind === "int" || s.kind === "multipleOf") return !0; s.kind === "min" ? (t === null || s.value > t) && (t = s.value) : s.kind === "max" && (e === null || s.value < e) && (e = s.value); } return Number.isFinite(t) && Number.isFinite(e); } } z.create = (n) => new z({ checks: [], typeName: m.ZodNumber, coerce: (n == null ? void 0 : n.coerce) || !1, ...v(n) }); class W extends _ { constructor() { super(...arguments), this.min = this.gte, this.max = this.lte; } _parse(e) { if (this._def.coerce && (e.data = BigInt(e.data)), this._getType(e) !== f.bigint) { const a = this._getOrReturnCtx(e); return h(a, { code: c.invalid_type, expected: f.bigint, received: a.parsedType }), g; } let s; const r = new E(); for (const a of this._def.checks) a.kind === "min" ? (a.inclusive ? e.data < a.value : e.data <= a.value) && (s = this._getOrReturnCtx(e, s), h(s, { code: c.too_small, type: "bigint", minimum: a.value, inclusive: a.inclusive, message: a.message }), r.dirty()) : a.kind === "max" ? (a.inclusive ? e.data > a.value : e.data >= a.value) && (s = this._getOrReturnCtx(e, s), h(s, { code: c.too_big, type: "bigint", maximum: a.value, inclusive: a.inclusive, message: a.message }), r.dirty()) : a.kind === "multipleOf" ? e.data % a.value !== BigInt(0) && (s = this._getOrReturnCtx(e, s), h(s, { code: c.not_multiple_of, multipleOf: a.value, message: a.message }), r.dirty()) : x.assertNever(a); return { status: r.value, value: e.data }; } gte(e, t) { return this.setLimit("min", e, !0, p.toString(t)); } gt(e, t) { return this.setLimit("min", e, !1, p.toString(t)); } lte(e, t) { return this.setLimit("max", e, !0, p.toString(t)); } lt(e, t) { return this.setLimit("max", e, !1, p.toString(t)); } setLimit(e, t, s, r) { return new W({ ...this._def, checks: [ ...this._def.checks, { kind: e, value: t, inclusive: s, message: p.toString(r) } ] }); } _addCheck(e) { return new W({ ...this._def, checks: [...this._def.checks, e] }); } positive(e) { return this._addCheck({ kind: "min", value: BigInt(0), inclusive: !1, message: p.toString(e) }); } negative(e) { return this._addCheck({ kind: "max", value: BigInt(0), inclusive: !1, message: p.toString(e) }); } nonpositive(e) { return this._addCheck({ kind: "max", value: BigInt(0), inclusive: !0, message: p.toString(e) }); } nonnegative(e) { return this._addCheck({ kind: "min", value: BigInt(0), inclusive: !0, message: p.toString(e) }); } multipleOf(e, t) { return this._addCheck({ kind: "multipleOf", value: e, message: p.toString(t) }); } get minValue() { let e = null; for (const t of this._def.checks) t.kind === "min" && (e === null || t.value > e) && (e = t.value); return e; } get maxValue() { let e = null; for (const t of this._def.checks) t.kind === "max" && (e === null || t.value < e) && (e = t.value); return e; } } W.create = (n) => { var e; return new W({ checks: [], typeName: m.ZodBigInt, coerce: (e = n == null ? void 0 : n.coerce) !== null && e !== void 0 ? e : !1, ...v(n) }); }; class ue extends _ { _parse(e) { if (this._def.coerce && (e.data = !!e.data), this._getType(e) !== f.boolean) { const s = this._getOrReturnCtx(e); return h(s, { code: c.invalid_type, expected: f.boolean, received: s.parsedType }), g; } return I(e.data); } } ue.create = (n) => new ue({ typeName: m.ZodBoolean, coerce: (n == null ? void 0 : n.coerce) || !1, ...v(n) }); class F extends _ { _parse(e) { if (this._def.coerce && (e.data = new Date(e.data)), this._getType(e) !== f.date) { const a = this._getOrReturnCtx(e); return h(a, { code: c.invalid_type, expected: f.date, received: a.parsedType }), g; } if (isNaN(e.data.getTime())) { const a = this._getOrReturnCtx(e); return h(a, { code: c.invalid_date }), g; } const s = new E(); let r; for (const a of this._def.checks) a.kind === "min" ? e.data.getTime() < a.value && (r = this._getOrReturnCtx(e, r), h(r, { code: c.too_small, message: a.message, inclusive: !0, exact: !1, minimum: a.value, type: "date" }), s.dirty()) : a.kind === "max" ? e.data.getTime() > a.value && (r = this._getOrReturnCtx(e, r), h(r, { code: c.too_big, message: a.message, inclusive: !0, exact: !1, maximum: a.value, type: "date" }), s.dirty()) : x.assertNever(a); return { status: s.value, value: new Date(e.data.getTime()) }; } _addCheck(e) { return new F({ ...this._def, checks: [...this._def.checks, e] }); } min(e, t) { return this._addCheck({ kind: "min", value: e.getTime(), message: p.toString(t) }); } max(e, t) { return this._addCheck({ kind: "max", value: e.getTime(), message: p.toString(t) }); } get minDate() { let e = null; for (const t of this._def.checks) t.kind === "min" && (e === null || t.value > e) && (e = t.value); return e != null ? new Date(e) : null; } get maxDate() { let e = null; for (const t of this._def.checks) t.kind === "max" && (e === null || t.value < e) && (e = t.value); return e != null ? new Date(e) : null; } } F.create = (n) => new F({ checks: [], coerce: (n == null ? void 0 : n.coerce) || !1, typeName: m.ZodDate, ...v(n) }); class Se extends _ { _parse(e) { if (this._getType(e) !== f.symbol) { const s = this._getOrReturnCtx(e); return h(s, { code: c.invalid_type, expected: f.symbol, received: s.parsedType }), g; } return I(e.data); } } Se.create = (n) => new Se({ typeName: m.ZodSymbol, ...v(n) }); class he extends _ { _parse(e) { if (this._getType(e) !== f.undefined) { const s = this._getOrReturnCtx(e); return h(s, { code: c.invalid_type, expected: f.undefined, received: s.parsedType }), g; } return I(e.data); } } he.create = (n) => new he({ typeName: m.ZodUndefined, ...v(n) }); class fe extends _ { _parse(e) { if (this._getType(e) !== f.null) { const s = this._getOrReturnCtx(e); return h(s, { code: c.invalid_type, expected: f.null, received: s.parsedType }), g; } return I(e.data); } } fe.create = (n) => new fe({ typeName: m.ZodNull, ...v(n) }); class re extends _ { constructor() { super(...arguments), this._any = !0; } _parse(e) { return I(e.data); } } re.create = (n) => new re({ typeName: m.ZodAny, ...v(n) }); class X extends _ { constructor() { super(...arguments), this._unknown = !0; } _parse(e) { return I(e.data); } } X.create = (n) => new X({ typeName: m.ZodUnknown, ...v(n) }); class H extends _ { _parse(e) { const t = this._getOrReturnCtx(e); return h(t, { code: c.invalid_type, expected: f.never, received: t.parsedType }), g; } } H.create = (n) => new H({ typeName: m.ZodNever, ...v(n) }); class Ee extends _ { _parse(e) { if (this._getType(e) !== f.undefined) { const s = this._getOrReturnCtx(e); return h(s, { code: c.invalid_type, expected: f.void, received: s.parsedType }), g; } return I(e.data); } } Ee.create = (n) => new Ee({ typeName: m.ZodVoid, ...v(n) }); class M extends _ { _parse(e) { const { ctx: t, status: s } = this._processInputParams(e), r = this._def; if (t.parsedType !== f.array) return h(t, { code: c.invalid_type, expected: f.array, received: t.parsedType }), g; if (r.exactLength !== null) { const o = t.data.length > r.exactLength.value, l = t.data.length < r.exactLength.value; (o || l) && (h(t, { code: o ? c.too_big : c.too_small, minimum: l ? r.exactLength.value : void 0, maximum: o ? r.exactLength.value : void 0, type: "array", inclusive: !0, exact: !0, message: r.exactLength.message }), s.dirty()); } if (r.minLength !== null && t.data.length < r.minLength.value && (h(t, { code: c.too_small, minimum: r.minLength.value, type: "array", inclusive: !0, exact: !1, message: r.minLength.message }), s.dirty()), r.maxLength !== null && t.data.length > r.maxLength.value && (h(t, { code: c.too_big, maximum: r.maxLength.value, type: "array", inclusive: !0, exact: !1, message: r.maxLength.message }), s.dirty()), t.common.async) return Promise.all([...t.data].map((o, l) => r.type._parseAsync(new D(t, o, t.path, l)))).then((o) => E.mergeArray(s, o)); const a = [...t.data].map((o, l) => r.type._parseSync(new D(t, o, t.path, l))); return E.mergeArray(s, a); } get element() { return this._def.type; } min(e, t) { return new M({ ...this._def, minLength: { value: e, message: p.toString(t) } }); } max(e, t) { return new M({ ...this._def, maxLength: { value: e, message: p.toString(t) } }); } length(e, t) { return new M({ ...this._def, exactLength: { value: e, message: p.toString(t) } }); } nonempty(e) { return this.min(1, e); } } M.create = (n, e) => new M({ type: n, minLength: null, maxLength: null, exactLength: null, typeName: m.ZodArray, ...v(e) }); function ee(n) { if (n instanceof P) { const e = {}; for (const t in n.shape) { const s = n.shape[t]; e[t] = B.create(ee(s)); } return new P({ ...n._def, shape: () => e }); } else return n instanceof M ? new M({ ...n._def, type: ee(n.element) }) : n instanceof B ? B.create(ee(n.unwrap())) : n instanceof Y ? Y.create(ee(n.unwrap())) : n instanceof $ ? $.create(n.items.map((e) => ee(e))) : n; } class P extends _ { constructor() { super(...arguments), this._cached = null, this.nonstrict = this.passthrough, this.augment = this.extend; } _getCached() { if (this._cached !== null) return this._cached; const e = this._def.shape(), t = x.objectKeys(e); return this._cached = { shape: e, keys: t }; } _parse(e) { if (this._getType(e) !== f.object) { const u = this._getOrReturnCtx(e); return h(u, { code: c.invalid_type, expected: f.object, received: u.parsedType }), g; } const { status: s, ctx: r } = this._processInputParams(e), { shape: a, keys: o } = this._getCached(), l = []; if (!(this._def.catchall instanceof H && this._def.unknownKeys === "strip")) for (const u in r.data) o.includes(u) || l.push(u); const d = []; for (const u of o) { const y = a[u], Z = r.data[u]; d.push({ key: { status: "valid", value: u }, value: y._parse(new D(r, Z, r.path, u)), alwaysSet: u in r.data }); } if (this._def.catchall instanceof H) { const u = this._def.unknownKeys; if (u === "passthrough") for (const y of l) d.push({ key: { status: "valid", value: y }, value: { status: "valid", value: r.data[y] } }); else if (u === "strict") l.length > 0 && (h(r, { code: c.unrecognized_keys, keys: l }), s.dirty()); else if (u !== "strip") throw new Error("Internal ZodObject error: invalid unknownKeys value."); } else { const u = this._def.catchall; for (const y of l) { const Z = r.data[y]; d.push({ key: { status: "valid", value: y }, value: u._parse( new D(r, Z, r.path, y) //, ctx.child(key), value, getParsedType(value) ), alwaysSet: y in r.data }); } } return r.common.async ? Promise.resolve().then(async () => { const u = []; for (const y of d) { const Z = await y.key, Ue = await y.value; u.push({ key: Z, value: Ue, alwaysSet: y.alwaysSet }); } return u; }).then((u) => E.mergeObjectSync(s, u)) : E.mergeObjectSync(s, d); } get shape() { return this._def.shape(); } strict(e) { return p.errToObj, new P({ ...this._def, unknownKeys: "strict", ...e !== void 0 ? { errorMap: (t, s) => { var r, a, o, l; const d = (o = (a = (r = this._def).errorMap) === null || a === void 0 ? void 0 : a.call(r, t, s).message) !== null && o !== void 0 ? o : s.defaultError; return t.code === "unrecognized_keys" ? { message: (l = p.errToObj(e).message) !== null && l !== void 0 ? l : d } : { message: d }; } } : {} }); } strip() { return new P({ ...this._def, unknownKeys: "strip" }); } passthrough() { return new P({ ...this._def, unknownKeys: "passthrough" }); } // const AugmentFactory = // (def: Def) => // ( // augmentation: Augmentation // ): ZodObject< // extendShape, Augmentation>, // Def["unknownKeys"], // Def["catchall"] // > => { // return new ZodObject({ // ...def, // shape: () => ({ // ...def.shape(), // ...augmentation, // }), // }) as any; // }; extend(e) { return new P({ ...this._def, shape: () => ({ ...this._def.shape(), ...e }) }); } /** * Prior to zod@1.0.12 there was a bug in the * inferred type of merged objects. Please * upgrade if you are experiencing issues. */ merge(e) { return new P({ unknownKeys: e._def.unknownKeys, catchall: e._def.catchall, shape: () => ({ ...this._def.shape(), ...e._def.shape() }), typeName: m.ZodObject }); } // merge< // Incoming extends AnyZodObject, // Augmentation extends Incoming["shape"], // NewOutput extends { // [k in keyof Augmentation | keyof Output]: k extends keyof Augmentation // ? Augmentation[k]["_output"] // : k extends keyof Output // ? Output[k] // : never; // }, // NewInput extends { // [k in keyof Augmentation | keyof Input]: k extends keyof Augmentation // ? Augmentation[k]["_input"] // : k extends keyof Input // ? Input[k] // : never; // } // >( // merging: Incoming // ): ZodObject< // extendShape>, // Incoming["_def"]["unknownKeys"], // Incoming["_def"]["catchall"], // NewOutput, // NewInput // > { // const merged: any = new ZodObject({ // unknownKeys: merging._def.unknownKeys, // catchall: merging._def.catchall, // shape: () => // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), // typeName: ZodFirstPartyTypeKind.ZodObject, // }) as any; // return merged; // } setKey(e, t) { return this.augment({ [e]: t }); } // merge( // merging: Incoming // ): //ZodObject = (merging) => { // ZodObject< // extendShape>, // Incoming["_def"]["unknownKeys"], // Incoming["_def"]["catchall"] // > { // // const mergedShape = objectUtil.mergeShapes( // // this._def.shape(), // // merging._def.shape() // // ); // const merged: any = new ZodObject({ // unknownKeys: merging._def.unknownKeys, // catchall: merging._def.catchall, // shape: () => // objectUtil.mergeShapes(this._def.shape(), merging._def.shape()), // typeName: ZodFirstPartyTypeKind.ZodObject, // }) as any; // return merged; // } catchall(e) { return new P({ ...this._def, catchall: e }); } pick(e) { const t = {}; return x.objectKeys(e).forEach((s) => { e[s] && this.shape[s] && (t[s] = this.shape[s]); }), new P({ ...this._def, shape: () => t }); } omit(e) { const t = {}; return x.objectKeys(this.shape).forEach((s) => { e[s] || (t[s] = this.shape[s]); }), new P({ ...this._def, shape: () => t }); } /** * @deprecated */ deepPartial() { return ee(this); } partial(e) { const t = {}; return x.objectKeys(this.shape).forEach((s) => { const r = this.shape[s]; e && !e[s] ? t[s] = r : t[s] = r.optional(); }), new P({ ...this._def, shape: () => t }); } required(e) { const t = {}; return x.objectKeys(this.shape).forEach((s) => { if (e && !e[s]) t[s] = this.shape[s]; else { let a = this.shape[s]; for (; a instanceof B; ) a = a._def.innerType; t[s] = a; } }), new P({ ...this._def, shape: () => t }); } keyof() { return tt(x.objectKeys(this.shape)); } } P.create = (n, e) => new P({ shape: () => n, unknownKeys: "strip", catchall: H.create(), typeName: m.ZodObject, ...v(e) }); P.strictCreate = (n, e) => new P({ shape: () => n, unknownKeys: "strict", catchall: H.create(), typeName: m.ZodObject, ...v(e) }); P.lazycreate = (n, e) => new P({ shape: n, unknownKeys: "strip", catchall: H.create(), typeName: m.ZodObject, ...v(e) }); class pe extends _ { _parse(e) { const { ctx: t } = this._processInputParams(e), s = this._def.options; function r(a) { for (const l of a) if (l.result.status === "valid") return l.result; for (const l of a) if (l.result.status === "dirty") return t.common.issues.push(...l.ctx.common.issues), l.result; const o = a.map((l) => new O(l.ctx.common.issues)); return h(t, { code: c.invalid_union, unionErrors: o }), g; } if (t.common.async) return Promise.all(s.map(async (a) => { const o = { ...t, common: { ...t.common, issues: [] }, parent: null }; return { result: await a._parseAsync({ data: t.data, path: t.path, parent: o }), ctx: o }; })).then(r); { let a; const o = []; for (const d of s) { const u = { ...t, common: { ...t.common, issues: [] }, parent: null }, y = d._parseSync({ data: t.data, path: t.path, parent: u }); if (y.status === "valid") return y; y.status === "dirty" && !a && (a = { result: y, ctx: u }), u.common.issues.length && o.push(u.common.issues); } if (a) return t.common.issues.push(...a.ctx.common.issues), a.result; const l = o.map((d) => new O(d)); return h(t, { code: c.invalid_union, unionErrors: l }), g; } } get options() { return this._def.options; } } pe.create = (n, e) => new pe({ options: n, typeName: m.ZodUnion, ...v(e) }); const U = (n) => n instanceof ye ? U(n.schema) : n instanceof A ? U(n.innerType()) : n instanceof ve ? [n.value] : n instanceof G ? n.options : n instanceof _e ? x.objectValues(n.enum) : n instanceof be ? U(n._def.innerType) : n instanceof he ? [void 0] : n instanceof fe ? [null] : n instanceof B ? [void 0, ...U(n.unwrap())] : n instanceof Y ? [null, ...U(n.unwrap())] : n instanceof Be || n instanceof xe ? U(n.unwrap()) : n instanceof we ? U(n._def.innerType) : []; class je extends _ { _parse(e) { const { ctx: t } = this._processInputParams(e); if (t.parsedType !== f.object) return h(t, { code: c.invalid_type, expected: f.object, received: t.parsedType }), g; const s = this.discriminator, r = t.data[s], a = this.optionsMap.get(r); return a ? t.common.async ? a._parseAsync({ data: t.data, path: t.path, parent: t }) : a._parseSync({ data: t.data, path: t.path, parent: t }) : (h(t, { code: c.invalid_union_discriminator, options: Array.from(this.optionsMap.keys()), path: [s] }), g); } get discriminator() { return this._def.discriminator; } get options() { return this._def.options; } get optionsMap() { return this._def.optionsMap; } /** * The constructor of the discriminated union schema. Its behaviour is very similar to that of the normal z.union() constructor. * However, it only allows a union of objects, all of which need to share a discriminator property. This property must * have a different value for each object in the union. * @param discriminator the name of the discriminator property * @param types an array of object schemas * @param params */ static create(e, t, s) { const r = /* @__PURE__ */ new Map(); for (const a of t) { const o = U(a.shape[e]); if (!o.length) throw new Error(`A discriminator value for key \`${e}\` could not be extracted from all schema options`); for (const l of o) { if (r.has(l)) throw new Error(`Discriminator property ${String(e)} has duplicate value ${String(l)}`); r.set(l, a); } } return new je({ typeName: m.ZodDiscriminatedUnion, discriminator: e, options: t, optionsMap: r, ...v(s) }); } } function Ve(n, e) { const t = q(n), s = q(e); if (n === e) return { valid: !0, data: n }; if (t === f.object && s === f.object) { const r = x.objectKeys(e), a = x.objectKeys(n).filter((l) => r.indexOf(l) !== -1), o = { ...n, ...e }; for (const l of a) { const d = Ve(n[l], e[l]); if (!d.valid) return { valid: !1 }; o[l] = d.data; } return { valid: !0, data: o }; } else if (t === f.array && s === f.array) { if (n.length !== e.length) return { valid: !1 }; const r = []; for (let a = 0; a < n.length; a++) { const o = n[a], l = e[a], d = Ve(o, l); if (!d.valid) return { valid: !1 }; r.push(d.data); } return { valid: !0, data: r }; } else return t === f.date && s === f.date && +n == +e ? { valid: !0, data: n } : { valid: !1 }; } class me extends _ { _parse(e) { const { status: t, ctx: s } = this._processInputParams(e), r = (a, o) => { if (Me(a) || Me(o)) return g; const l = Ve(a.value, o.value); return l.valid ? ((Ae(a) || Ae(o)) && t.dirty(), { status: t.value, value: l.data }) : (h(s, { code: c.invalid_intersection_types }), g); }; return s.common.async ? Promise.all([ this._def.left._parseAsync({ data: s.data, path: s.path, parent: s }), this._def.right._parseAsync({ data: s.data, path: s.path, parent: s }) ]).then(([a, o]) => r(a, o)) : r(this._def.left._parseSync({ data: s.data, path: s.path, parent: s }), this._def.right._parseSync({ data: s.data, path: s.path, parent: s })); } } me.create = (n, e, t) => new me({ left: n, right: e, typeName: m.ZodIntersection, ...v(t) }); class $ extends _ { _parse(e) { const { status: t, ctx: s } = this._processInputParams(e); if (s.parsedType !== f.array) return h(s, { code: c.invalid_type, expected: f.array, received: s.parsedType }), g; if (s.data.length < this._def.items.length) return h(s, { code: c.too_small, minimum: this._def.items.length, inclusive: !0, exact: !1, type: "array" }), g; !this._def.rest && s.data.length > this._def.items.length && (h(s, { code: c.too_big, maximum: this._def.items.length, inclusive: !0, exact: !1, type: "array" }), t.dirty()); const a = [...s.data].map((o, l) => { const d = this._def.items[l] || this._def.rest; return d ? d._parse(new D(s, o, s.path, l)) : null; }).filter((o) => !!o); return s.common.async ? Promise.all(a).then((o) => E.mergeArray(t, o)) : E.mergeArray(t, a); } get items() { return this._def.items; } rest(e) { return new $({ ...this._def, rest: e }); } } $.create = (n, e) => { if (!Array.isArray(n)) throw new Error("You must pass an array of schemas to z.tuple([ ... ])"); return new $({ items: n, typeName: m.ZodTuple, rest: null, ...v(e) }); }; class ge extends _ { get keySchema() { return this._def.keyType; } get valueSchema() { return this._def.valueType; } _parse(e) { const { status: t, ctx: s } = this._processInputParams(e); if (s.parsedType !== f.object) return h(s, { code: c.invalid_type, expected: f.object, received: s.parsedType }), g; const r = [], a = this._def.keyType, o = this._def.valueType; for (const l in s.data) r.push({ key: a._parse(new D(s, l, s.path, l)), value: o._parse(new D(s, s.data[l], s.path, l)), alwaysSet: l in s.data }); return s.common.async ? E.mergeObjectAsync(t, r) : E.mergeObjectSync(t, r); } get element() { return this._def.valueType; } static create(e, t, s) { return t instanceof _ ? new ge({ keyType: e, valueType: t, typeName: m.ZodRecord, ...v(s) }) : new ge({ keyType: R.create(), valueType: e, typeName: m.ZodRecord, ...v(t) }); } } class Ie extends _ { get keySchema() { return this._def.keyType; } get valueSchema() { return this._def.valueType; } _parse(e) { const { status: t, ctx: s } = this._processInputParams(e); if (s.parsedType !== f.map) return h(s, { code: c.invalid_type, expected: f.map, received: s.parsedType }), g; const r = this._def.keyType, a = this._def.valueType, o = [...s.data.entries()].map(([l, d], u) => ({ key: r._parse(new D(s, l, s.path, [u, "key"])), value: a._parse(new D(s, d, s.path, [u, "value"])) })); if (s.common.async) { const l = /* @__PURE__ */ new Map(); return Promise.resolve().then(async () => { for (const d of o) { const u = await d.key, y = await d.value; if (u.status === "aborted" || y.status === "aborted") return g; (u.status === "dirty" || y.status === "dirty") && t.dirty(), l.set(u.value, y.value); } return { status: t.value, value: l }; }); } else { const l = /* @__PURE__ */ new Map(); for (const d of o) { const u = d.key, y = d.value; if (u.status === "aborted" || y.status === "aborted") return g; (u.status === "dirty" || y.status === "dirty") && t.dirty(), l.set(u.value, y.value); } return { status: t.value, value: l }; } } } Ie.create = (n, e, t) => new Ie({ valueType: e, keyType: n, typeName: m.ZodMap, ...v(t) }); class K extends _ { _parse(e) { const { status: t, ctx: s } = this._processInputParams(e); if (s.parsedType !== f.set) return h(s, { code: c.invalid_type, expected: f.set, received: s.parsedType }), g; const r = this._def; r.minSize !== null && s.data.size < r.minSize.value && (h(s, { code: c.too_small, minimum: r.minSize.value, type: "set", inclusive: !0, exact: !1, message: r.minSize.message }), t.dirty()), r.maxSize !== null && s.data.size > r.maxSize.value && (h(s, { code: c.too_big, maximum: r.maxSize.value, type: "set", inclusive: !0, exact: !1, message: r.maxSize.message }), t.dirty()); const a = this._def.valueType; function o(d) { const u = /* @__PURE__ */ new Set(); for (const y of d) { if (y.status === "aborted") return g; y.status === "dirty" && t.dirty(), u.add(y.value); } return { status: t.value, value: u }; } const l = [...s.data.values()].map((d, u) => a._parse(new D(s, d, s.path, u))); return s.common.async ? Promise.all(l).then((d) => o(d)) : o(l); } min(e, t) { return new K({ ...this._def, minSize: { value: e, message: p.toString(t) } }); } max(e, t) { return new K({ ...this._def, maxSize: { value: e, message: p.toString(t) } }); } size(e, t) { return this.min(e, t).max(e, t); } nonempty(e) { return this.min(1, e); } } K.create = (n, e) => new K({ valueType: n, minSize: null, maxSize: null, typeName: m.ZodSet, ...v(e) }); class se extends _ { constructor() { super(...arguments), this.validate = this.implement; } _parse(e) { const { ctx: t } = this._processInputParams(e); if (t.parsedType !== f.function) return h(t, { code: c.invalid_type, expected: f.function, received: t.parsedType }), g; function s(l, d) { return Ce({ data: l, path: t.path, errorMaps: [ t.common.contextualErrorMap, t.schemaErrorMap, Te(), ne ].filter((u) => !!u), issueData: { code: c.invalid_arguments, argumentsError: d } }); } function r(l, d) { return Ce({ data: l, path: t.path, errorMaps: [ t.common.contextualErrorMap, t.schemaErrorMap, Te(), ne ].filter((u) => !!u), issueData: { code: c.invalid_return_type, returnTypeError: d } }); } const a = { errorMap: t.common.contextualErrorMap }, o = t.data; if (this._def.returns instanceof ae) { const l = this; return I(async function(...d) { const u = new O([]), y = await l._def.args.parseAsync(d, a).catch((Oe) => { throw u.addIssue(s(d, Oe)), u; }), Z = await Reflect.apply(o, this, y); return await l._def.returns._def.type.parseAsync(Z, a).catch((Oe) => { throw u.addIssue(r(Z, Oe)), u; }); }); } else { const l = this; return I(function(...d) { const u = l._def.args.safeParse(d, a); if (!u.success) throw new O([s(d, u.error)]); const y = Reflect.apply(o, this, u.data), Z = l._def.returns.safeParse(y, a); if (!Z.success) throw new O([r(y, Z.error)]); return Z.data; }); } } parameters() { return this._def.args; } returnType() { return this._def.returns; } args(...e) { return new se({ ...this._def, args: $.create(e).rest(X.create()) }); } returns(e) { return new se({ ...this._def, returns: e }); } implement(e) { return this.parse(e); } strictImplement(e) { return this.parse(e); } static create(e, t, s) { return new se({ args: e || $.create([]).rest(X.create()), returns: t || X.create(), typeName: m.ZodFunction, ...v(s) }); } } class ye extends _ { get schema() { return this._def.getter(); } _parse(e) { const { ctx: t } = this._processInputParams(e); return this._def.getter()._parse({ data: t.data, path: t.path, parent: t }); } } ye.create = (n, e) => new ye({ getter: n, typeName: m.ZodLazy, ...v(e) }); class ve extends _ { _parse(e) { if (e.data !== this._def.value) { const t = this._getOrReturnCtx(e); return h(t, { received: t.data, code: c.invalid_literal, expected: this._def.value }), g; } return { status: "valid", value: e.data }; } get value() { return this._def.value; } } ve.create = (n, e) => new ve({ value: n, typeName: m.ZodLiteral, ...v(e) }); function tt(n, e) { return new G({ values: n, typeName: m.ZodEnum, ...v(e) }); } class G extends _ { constructor() { super(...arguments), ie.set(this, void 0); } _parse(e) { if (typeof e.data != "string") { const t = this._getOrReturnCtx(e), s = this._def.values; return h(t, { expected: x.joinValues(s), received: t.parsedType, code: c.invalid_type }), g; } if (Pe(this, ie, "f") || Xe(this, ie, new Set(this._def.values), "f"), !Pe(this, ie, "f").has(e.data)) { const t = this._getOrReturnCtx(e), s = this._def.values; return h(t, { received: t.data, code: c.invalid_enum_value, options: s }), g; } return I(e.data); } get options() { return this._def.values; } get enum() { const e = {}; for (const t of this._def.values) e[t] = t; return e; } get Values() { const e = {}; for (const t of this._def.values) e[t] = t; return e; } get Enum() { const e = {}; for (const t of this._def.values) e[t] = t; return e; } extract(e, t = this._def) { return G.create(e, { ...this._def, ...t }); } exclude(e, t = this._def) { return G.create(this.options.filter((s) => !e.includes(s)), { ...this._def, ...t }); } } ie = /* @__PURE__ */ new WeakMap(); G.create = tt; class _e extends _ { constructor() { super(...arguments), oe.set(this, void 0); } _parse(e) { const t = x.getValidEnumValues(this._def.values), s = this._getOrReturnCtx(e); if (s.parsedType !== f.string && s.parsedType !== f.number) { const r = x.objectValues(t); return h(s, { expected: x.joinValues(r), received: s.parsedType, code: c.invalid_type }), g; } if (Pe(this, oe, "f") || Xe(this, oe, new Set(x.getValidEnumValues(this._def.values)), "f"), !Pe(this, oe, "f").has(e.data)) { const r = x.objectValues(t); return h(s, { received: s.data, code: c.invalid_enum_value, options: r }), g; } return I(e.data); } get enum() { return this._def.values; } } oe = /* @__PURE__ */ new WeakMap(); _e.create = (n, e) => new _e({ values: n, typeName: m.ZodNativeEnum, ...v(e) }); class ae extends _ { unwrap() { return this._def.type; } _parse(e) { const { ctx: t } = this._processInputParams(e); if (t.parsedType !== f.promise && t.common.async === !1) return h(t, { code: c.invalid_type, expected: f.promise, received: t.parsedType }), g; const s = t.parsedType === f.promise ? t.data : Promise.resolve(t.data); return I(s.then((r) => this._def.type.parseAsync(r, { path: t.path, errorMap: t.common.contextualErrorMap }))); } } ae.create = (n, e) => new ae({ type: n, typeName: m.ZodPromise, ...v(e) }); class A extends _ { innerType() { return this._def.schema; } sourceType() { return this._def.schema._def.typeName === m.ZodEffects ? this._def.schema.sourceType() : this._def.schema; } _parse(e) { const { status: t, ctx: s } = this._processInputParams(e), r = this._def.effect || null, a = { addIssue: (o) => { h(s, o), o.fatal ? t.abort() : t.dirty(); }, get path() { return s.path; } }; if (a.addIssue = a.addIssue.bind(a), r.type === "preprocess") { const o = r.transform(s.data, a); if (s.common.async) return Promise.resolve(o).then(async (l) => { if (t.value === "aborted") return g; const d = await this._def.schema._parseAsync({ data: l, path: s.path, parent: s }); return d.status === "aborted" ? g : d.status === "dirty" || t.value === "dirty" ? te(d.value) : d; }); { if (t.value === "aborted") return g; const l = this._def.schema._parseSync({ data: o, path: s.path, parent: s }); return l.status === "aborted" ? g : l.status === "dirty" || t.value === "dirty" ? te(l.value) : l; } } if (r.type === "refinement") { const o = (l) => { const d = r.refinement(l, a); if (s.common.async) return Promise.resolve(d); if (d instanceof Promise) throw new Error("Async refinement encountered during synchronous parse operation. Use .parseAsync instead."); return l; }; if (s.common.async === !1) { const l = this._def.schema._parseSync({ data: s.data, path: s.path, parent: s }); return l.status === "aborted" ? g : (l.status === "dirty" && t.dirty(), o(l.value), { status: t.value, value: l.value }); } else return this._def.schema._parseAsync({ data: s.data, path: s.path, parent: s }).then((l) => l.status === "aborted" ? g : (l.status === "dirty" && t.dirty(), o(l.value).then(() => ({ status: t.value, value: l.value })))); } if (r.type === "transform") if (s.common.async === !1) { const o = this._def.schema._parseSync({ data: s.data, path: s.path, parent: s }); if (!ce(o)) return o; const l = r.transform(o.value, a); if (l instanceof Promise) throw new Error("Asynchronous transform encountered during synchronous parse operation. Use .parseAsync instead."); return { status: t.value, value: l }; } else return this._def.schema._parseAsync({ data: s.data, path: s.path, parent: s }).then((o) => ce(o) ? Promise.resolve(r.transform(o.value, a)).then((l) => ({ status: t.value, value: l })) : o); x.assertNever(r); } } A.create = (n, e, t) => new A({ schema: n, typeName: m.ZodEffects, effect: e, ...v(t) }); A.createWithPreprocess = (n, e, t) => new A({ schema: e, effect: { type: "preprocess", transform: n }, typeName: m.ZodEffects, ...v(t) }); class B extends _ { _parse(e) { return this._getType(e) === f.undefined ? I(void 0) : this._def.innerType._parse(e); } unwrap() { return this._def.innerType; } } B.create = (n, e) => new B({ innerType: n, typeName: m.ZodOptional, ...v(e) }); class Y extends _ { _parse(e) { return this._getType(e) === f.null ? I(null) : this._def.innerType._parse(e); } unwrap() { return this._def.innerType; } } Y.create = (n, e) => new Y({ innerType: n, typeName: m.ZodNullable, ...v(e) }); class be extends _ { _parse(e) { const { ctx: t } = this._processInputParams(e); let s = t.data; return t.parsedType === f.undefined && (s = this._def.defaultValue()), this._def.innerType._parse({ data: s, path: t.path, parent: t }); } removeDefault() { return this._def.innerType; } } be.create = (n, e) => new be({ innerType: n, typeName: m.ZodDefault, defaultValue: typeof e.default == "function" ? e.default : () => e.default, ...v(e) }); class we extends _ { _parse(e) { const { ctx: t } = this._processInputParams(e), s = { ...t, common: { ...t.common, issues: [] } }, r = this._def.innerType._parse({ data: s.data, path: s.path, parent: { ...s } }); return de(r) ? r.then((a) => ({ status: "valid", value: a.status === "valid" ? a.value : this._def.catchValue({ get error() { return new O(s.common.issues); }, input: s.data }) })) : { status: "valid", value: r.status === "valid" ? r.value : this._def.catchValue({ get error() { return new O(s.common.issues); }, input: s.data }) }; } removeCatch() { return this._def.innerType; } } we.create = (n, e) => new we({ innerType: n, typeName: m.ZodCatch, catchValue: typeof e.catch == "function" ? e.catch : () => e.catch, ...v(e) }); class Ne extends _ { _parse(e) { if (this._getType(e) !== f.nan) { const s = this._getOrReturnCtx(e); return h(s, { code: c.invalid_type, expected: f.nan, received: s.parsedType }), g; } return { status: "valid", value: e.data }; } } Ne.create = (n) => new Ne({ typeName: m.ZodNaN, ...v(n) }); const Dt = Symbol("zod_brand"); class Be extends _ { _parse(e) { const { ctx: t } = this._processInputParams(e), s = t.data; return this._def.type._parse({ data: s, path: t.path, parent: t }); } unwrap() { return this._def.type; } } class ke extends _ { _parse(e) { const { status: t, ctx: s } = this._processInputParams(e); if (s.common.async) return (async () => { const a = await this._def.in._parseAsync({ data: s.data, path: s.path, parent: s }); return a.status === "aborted" ? g : a.status === "dirty" ? (t.dirty(), te(a.value)) : this._def.out._parseAsync({ data: a.value, path: s.path, parent: s }); })(); { const r = this._def.in._parseSync({ data: s.data, path: s.path, parent: s }); return r.status === "aborted" ? g : r.status === "dirty" ? (t.dirty(), { status: "dirty", value: r.value }) : this._def.out._parseSync({ data: r.value, path: s.path, parent: s }); } } static create(e, t) { return new ke({ in: e, out: t, typeName: m.ZodPipeline }); } } class xe extends _ { _parse(e) { const t = this._def.innerType._parse(e), s = (r) => (ce(r) && (r.value = Object.freeze(r.value)), r); return de(t) ? t.then((r) => s(r)) : s(t); } unwrap() { return this._def.innerType; } } xe.create = (n, e) => new xe({ innerType: n, typeName: m.ZodReadonly, ...v(e) }); function st(n, e = {}, t) { return n ? re.create().superRefine((s, r) => { var a, o; if (!n(s)) { const l = typeof e == "function" ? e(s) : typeof e == "string" ? { message: e } : e, d = (o = (a = l.fatal) !== null && a !== void 0 ? a : t) !== null && o !== void 0 ? o : !0, u = typeof l == "string" ? { message: l } : l; r.addIssue({ code: "custom", ...u, fatal: d }); } }) : re.create(); } const $t = { object: P.lazycreate }; var m; (function(n) { n.ZodString = "ZodString", n.ZodNumber = "ZodNumber", n.ZodNaN = "ZodNaN", n.ZodBigInt = "ZodBigInt", n.ZodBoolean = "ZodBoolean", n.ZodDate = "ZodDate", n.ZodSymbol = "ZodSymbol", n.ZodUndefined = "ZodUndefined", n.ZodNull = "ZodNull", n.ZodAny = "ZodAny", n.ZodUnknown = "ZodUnknown", n.ZodNever = "ZodNever", n.ZodVoid = "ZodVoid", n.ZodArray = "ZodArray", n.ZodObject = "ZodObject", n.ZodUnion = "ZodUnion", n.ZodDiscriminatedUnion = "ZodDiscriminatedUnion", n.ZodIntersection = "ZodIntersection", n.ZodTuple = "ZodTuple", n.ZodRecord = "ZodRecord", n.ZodMap = "ZodMap", n.ZodSet = "ZodSet", n.ZodFunction = "ZodFunction", n.ZodLazy = "ZodLazy", n.ZodLiteral = "ZodLiteral", n.ZodEnum = "ZodEnum", n.ZodEffects = "ZodEffects", n.ZodNativeEnum = "ZodNativeEnum", n.ZodOptional = "ZodOptional", n.ZodNullable = "ZodNullable", n.ZodDefault = "ZodDefault", n.ZodCatch = "ZodCatch", n.ZodPromise = "ZodPromise", n.ZodBranded = "ZodBranded", n.ZodPipeline = "ZodPipeline", n.ZodReadonly = "ZodReadonly"; })(m || (m = {})); const Lt = (n, e = { message: `Input not instance of ${n.name}` }) => st((t) => t instanceof n, e), De = R.create, nt = z.create, Ut = Ne.create, Ht = W.create, rt = ue.create, qt = F.create, zt = Se.create, Wt = he.create, Gt = fe.create, Yt = re.create, Jt = X.create, Qt = H.create, Xt = Ee.create, Ft = M.create, at = P.create, Kt = P.strictCreate, it = pe.create, es = je.create, ts = me.create, ss = $.create, ns = ge.create, rs = Ie.create, as = K.create, is = se.create, os = ye.create, V = ve.create, ls = G.create, cs = _e.create, ds = ae.create, Ge = A.create, us = B.create, hs = Y.create, fs = A.createWithPreprocess, ps = ke.create, ms = () => De().optional(), gs = () => nt().optional(), ys = () => rt().optional(), vs = { string: (n) => R.create({ ...n, coerce: !0 }), number: (n) => z.create({ ...n, coerce: !0 }), boolean: (n) => ue.create({ ...n, coerce: !0 }), bigint: (n) => W.create({ ...n, coerce: !0 }), date: (n) => F.create({ ...n, coerce: !0 }) }, _s = g; var i = /* @__PURE__ */ Object.freeze({ __proto__: null, defaultErrorMap: ne, setErrorMap: xt, getErrorMap: Te, makeIssue: Ce, EMPTY_PATH: kt, addIssueToContext: h, ParseStatus: E, INVALID: g, DIRTY: te, OK: I, isAborted: Me, isDirty: Ae, isValid: ce, isAsync: de, get util() { return x; }, get objectUtil() { return Re; }, ZodParsedType: f, getParsedType: q, ZodType: _, datetimeRegex: et, ZodString: R, ZodNumber: z, ZodBigInt: W, ZodBoolean: ue, ZodDate: F, ZodSymbol: Se, ZodUndefined: he, ZodNull: fe, ZodAny: re, ZodUnknown: X, ZodNever: H, ZodVoid: Ee, ZodArray: M, ZodObject: P, ZodUnion: pe, ZodDiscriminatedUnion: je, ZodIntersection: me, ZodTuple: $, ZodRecord: ge, ZodMap: Ie, ZodSet: K, ZodFunction: se, ZodLazy: ye, ZodLiteral: ve, ZodEnum: G, ZodNativeEnum: _e, ZodPromise: ae, ZodEffects: A, ZodTransformer: A, ZodOptional: B, ZodNullable: Y, ZodDefault: be, ZodCatch: we, ZodNaN: Ne, BRAND: Dt, ZodBranded: Be, ZodPipeline: ke, ZodReadonly: xe, custom: st, Schema: _, ZodSchema: _, late: $t, get ZodFirstPartyTypeKind() { return m; }, coerce: vs, any: Yt, array: Ft, bigint: Ht, boolean: rt, date: qt, discriminatedUnion: es, effect: Ge, enum: ls, function: is, instanceof: Lt, intersection: ts, lazy: os, literal: V, map: rs, nan: Ut, nativeEnum: cs, never: Qt, null: Gt, nullable: hs, number: nt, object: at, oboolean: ys, onumber: gs, optional: us, ostring: ms, pipeline: ps, preprocess: fs, promise: ds, record: ns, set: as, strictObject: Kt, string: De, symbol: zt, transformer: Ge, tuple: ss, undefined: Wt, union: it, unknown: Jt, void: Xt, NEVER: _s, ZodIssueCode: c, quotelessJson: wt, ZodError: O }); const j = (n, e) => i.number().refine((t) => t >= n && t <= e, { message: `The value should be between ${n} and ${e}` }), bs = { min: 1, max: 50, range: j(1, 50), type: "int", defaultValue: 5 }, ws = { min: 1, max: 50, range: j(1, 50), type: "int", defaultValue: 9 }, xs = { min: 0.1, max: 10, range: j(0.1, 10), type: "float", defaultValue: 1 }, $e = { min: 0.1, max: 4, range: j(0.1, 4), type: "float", defaultValue: 1.5 }, ks = { min: 0, max: 1, range: j(0, 1), type: "float", defaultValue: 0 }, Ts = { min: -2, max: 2, range: j(-2, 2), type: "float", defaultValue: 0 }, Cs = { min: -2, max: 2, range: j(-2, 2), type: "float", defaultValue: 0 }, Le = { min: 0.1, max: 4, range: j(0.1, 4), type: "float", defaultValue: 0 }, Ps = { min: -0.05, max: 0.05, range: j(-0.05, 0.05), type: "float", defaultValue: 0 }, Ss = { min: 1, max: 50, range: j(1, 50), type: "int", defaultValue: 5 }, Es = { min: 1, max: 50, range: j(1, 50), type: "int", defaultValue: 9 }, Is = { min: 1, max: 2500, range: j(1, 2500), type: "int", defaultValue: 45 }, ot = { min: -1, max: 1, range: j(-1, 1), type: "float", defaultValue: 0.01 }, lt = { min: 0, max: 3, range: j(0, 3), type: "int", defaultValue: 2 }, fn = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({ __proto__: null, ASPECT: xs, COLUMNS: bs, CROP_POS_X: Ts, CROP_POS_Y: Cs, DEPTHINESS: $e, DEPTH_CUTOFF: ks, FILTER_MODE: lt, FOCUS: Ps, GAUSSIAN_SIGMA: ot, QUILT_COLS: Es, QUILT_ROWS: Ss, QUILT_VIEW_COUNT: Is, ROWS: ws, ZOOM: Le }, Symbol.toStringTag, { value: "Module" })), pn = i.union([i.literal("quilt"), i.literal("rgbd")]), Ns = i.object({ rows: i.number(), columns: i.number(), crop_pos_x: i.number().optional(), crop_pos_y: i.number().optional(), aspect: i.number(), viewCount: i.number(), duration: i.number().optional(), focus: i.number().optional(), zoom: i.number().optional(), tag: i.string().optional() }), js = i.object({ rows: i.number().optional(), columns: i.number().optional(), crop_pos_x: i.number().optional(), crop_pos_y: i.number().optional(), duration: i.number().optional(), /**Aspect Ratio of the hologram, * this should match the source image you provide, not the RGBD Pair */ aspect: i.number(), /**Where are the holograms located? * 0 Top * 1 Bottom * 2 Right * 3 Left */ depth_loc: i.union([i.literal(0), i.literal(1), i.literal(2), i.literal(3)]), /**Is the Depth inverted? 0 for false, 1 for true */ depth_inversion: i.union([i.literal(0), i.literal(1)]), /**Is the depth map chroma or grayscale? 0 for false, 1 for true */ chroma_depth: i.union([i.literal(0), i.literal(1)]), /**Depthiness can be a value between 0.1 and 2 */ depthiness: $e.range, /**Controls the Focus of the hologram */ focus: i.number().optional(), /**Whether or not to cutoff depth beyond a certain point. 0 for false, 1 for true */ depth_cutoff: i.union([i.literal(1), i.literal(0)]).optional(), /**Zoom can be between 0.1 and 2 */ zoom: Le.range, tag: i.string().optional() }), Os = { quilt: Ns, rgbd: js }; class Zs { constructor(e) { w(this, "uri"); w(this, "type"); w(this, "settings"); this.uri = e.uri, this.type = "quilt", this.settings = e.settings; } } class Rs { constructor(e) { w(this, "uri"); w(this, "type"); w(this, "settings"); this.uri = e.uri, this.type = "rgbd", this.settings = e.settings; } } function mn({ uri: n, type: e, settings: t }) { switch (Os[e].safeParse(t), e) { case "quilt": return new Zs({ uri: n, settings: t }); case "rgbd": return new Rs({ uri: n, settings: t }); default: throw new Error(`Invalid type: ${e}`); } } const gn = i.union([ i.literal("focus"), i.literal("aspect"), i.literal("cols"), i.literal("rows"), i.literal("crop_pos_x"), i.literal("crop_pos_y"), i.literal("zoom"), i.literal("filter_mode"), i.literal("gaussian_sigma"), //rgbd specific i.literal("depth_loc"), i.literal("depth_inversion"), i.literal("chroma_depth"), i.literal("depthiness"), i.literal("depth_cutoff") ]), yn = i.object({ focus: i.number().optional(), aspect: i.number().optional(), cols: i.number().optional(), rows: i.number().optional(), crop_pos_x: i.number().optional(), crop_pos_y: i.number().optional(), zoom: Le.range, filter_mode: lt.range, gaussian_sigma: ot.range, //rgbd specific depth_loc: i.union([i.literal(0), i.literal(1), i.literal(2), i.literal(3)]), depth_inversion: i.union([i.literal(0), i.literal(1)]), chroma_depth: i.union([i.literal(0), i.literal(1)]), depthiness: $e.range, depth_cutoff: i.union([i.literal(1), i.literal(0)]).optional() }), le = V("UNSIGNED_INT"), Ye = V("INT"), Ms = V("FLOAT"); V("INT2"); const T = V("WSTRING"), As = V("VARIANT_MAP"), Vs = V("Completion"), Bs = V("UnknownOrchestration"), Ds = V("Pending"), $s = V("Failure"), b = De(), Ls = at({ name: b, type: T, value: it([Vs, Ds, $s, Bs]) }), J = i.union([ i.literal("Monitor Connect"), i.literal("Monitor Disconnect"), i.literal("New Item Playing"), i.literal("Progress Start"), i.literal("Progress Completion"), i.literal("Progress Update"), i.literal("Playlist Instance"), i.literal("Playlist Insert"), i.literal("Playlist Delete"), i.literal("Sync/Play Playlist"), i.literal("Sync/Play Playlist Complete"), i.literal("Sync/Play Playlist Cancelled"), i.literal("Transport Control Pause"), i.literal("Transport Control Play"), i.literal("Transport Control Next"), i.literal("Transport Control Previous"), i.literal("All Events") ]), Us = i.object({ event: i.object({ name: b, type: T, value: J }), message: i.object({ name: b, type: T, value: i.string() }) }), Hs = i.object({ event: i.object({ name: b, type: T, value: J }), head_index: i.object({ name: b, type: le, value: i.number() }), height: i.object({ name: b, type: le, value: i.number() }), hw: i.object({ name: b, type: T, value: i.string() }), hw_long_name: i.object({ name: b, type: T, value: i.string() }), hw_short_name: i.object({ name: b, type: T, value: i.string() }), made_by_looking_glass: i.object({ name: b, type: T, value: i.boolean() }), message: i.object({ name: b, type: T, value: i.string() }), name: i.object({ name: b, type: T, value: i.string() }), width: i.object({ name: b, type: le, value: i.number() }), x: i.object({ name: b, type: Ye, value: i.number() }), y: i.object({ name: b, type: Ye, value: i.number() }) }), qs = i.object({ event: i.object({ name: b, type: T, value: J }), message: i.object({ name: b, type: T, value: i.string() }), progress: i.object({ name: b, type: Ms, value: i.number() }), progress_type: i.object({ name: b, type: T, value: i.string() }) }), zs = i.object({ event: i.object({ name: b, type: T, value: J }), index: i.object({ name: b, type: le, value: i.number() }), message: i.object({ name: b, type: T, value: i.string() }), uri: i.object({ name: b, type: T, value: i.string() }) }), Ws = i.object({ event: i.object({ name: b, type: T, value: J }), message: i.object({ name: b, type: T, value: i.string() }), name: i.object({ name: b, type: T, value: i.string() }) }), Gs = i.object({ event: i.object({ name: b, type: T, value: J }), message: i.object({ name: b, type: T, value: i.string() }), name: i.object({ name: b, type: T, value: i.string() }) }), Ys = i.object({ event: i.object({ name: b, type: T, value: J }), message: i.object({ name: b, type: T, value: i.string() }), name: i.object({ name: b, type: T, value: i.string() }) }), Js = i.object({ event: i.object({ name: b, type: T, value: J }), index: i.object({ name: b, type: le, value: i.number() }), playlist_name: i.object({ name: b, type: T, value: i.string() }), tag: i.object({ name: b, type: T, value: i.string() }) }), Q = (n) => i.object({ name: b, orchestration: i.object({ name: b, type: T, value: i.string() }), payload: i.object({ name: b, type: As, value: n }), status: Ls }), vn = Q(Hs), _n = Q(qs), bn = Q(zs), wn = Q(Ws), xn = Q(Gs), kn = Q(Ys), Tn = Q(Js), Cn = Q(Us); export { bt as AllEventsMessageHandler, N as BridgeClient, J as BridgeEvent, S as MessageHandler, Xs as MonitorConnectedMessageHandler, Fs as MonitorDisconnectedMessageHandler, _t as NewItemPlayingMessageHandler, ze as Playlist, cn as PlaylistDeleteMessageHandler, ln as PlaylistInsertMessageHandler, on as PlaylistInstanceMessageHandler, rn as ProgressCompletionMessageHandler, nn as ProgressStartMessageHandler, an as ProgressUpdateMessageHandler, Zs as QuiltHologram, Ns as QuiltHologramArgs, He as QuiltPlaylistItem, Rs as RGBDHologram, js as RGBDHologramArgs, qe as RGBDPlaylistItem, hn as SyncPlayPlaylistCancelledMessageHandler, un as SyncPlayPlaylistCompleteMessageHandler, dn as SyncPlayPlaylistMessageHandler, tn as TransportControlNextMessageHandler, Ks as TransportControlPauseMessageHandler, en as TransportControlPlayMessageHandler, sn as TransportControlPreviousMessageHandler, Cn as allEventsResponse, fn as defaults, xn as deletePlaylistResponse, mn as hologramFactory, Os as hologramMap, yn as hologramParamMap, pn as hologramTypeSchema, bn as insertPlaylistResponse, wn as instancePlaylistResponse, vn as monitorConnectResponse, Tn as newItemPlayingResponse, gn as parameterNames, _n as progressUpdateResponse, C as sendMessage, kn as transportControlResponse, ut as tryParseCalibration, ft as tryParseDisplay, ht as tryParseQuilt }; //# sourceMappingURL=looking-glass-bridge.mjs.map