diff --git "a/assets/looking-glass-bridge.js" "b/assets/looking-glass-bridge.js" new file mode 100644--- /dev/null +++ "b/assets/looking-glass-bridge.js" @@ -0,0 +1,4315 @@ +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