@ikalogic/at1000 0.1.4 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/{at1000-Dm22ae18.mjs → at1000-C4IWLsB5.mjs} +2 -2
- package/build/{at1000-Dm22ae18.mjs.map → at1000-C4IWLsB5.mjs.map} +1 -1
- package/build/at1000-DHgno6tN.cjs +2 -0
- package/build/{at1000-CYNSd3Yp.cjs.map → at1000-DHgno6tN.cjs.map} +1 -1
- package/build/{at1000-BA_2J_cc.d.mts → at1000-DMGESusk.d.mts} +7 -7
- package/build/{at1000-D-SOCmZr.d.cts.map → at1000-DMGESusk.d.mts.map} +1 -1
- package/build/{at1000-D-SOCmZr.d.cts → at1000-TLdyugD_.d.cts} +7 -7
- package/build/{at1000-BA_2J_cc.d.mts.map → at1000-TLdyugD_.d.cts.map} +1 -1
- package/build/browser.cjs +1 -1
- package/build/browser.d.cts +8 -8
- package/build/browser.d.mts +8 -8
- package/build/browser.mjs +1 -1
- package/build/{com-B7DWhc_c.d.cts → com-BM8-f4JW.d.cts} +25 -25
- package/build/com-BM8-f4JW.d.cts.map +1 -0
- package/build/{com-CPlfIOz2.d.mts → com-Bu0YGNYX.d.mts} +25 -25
- package/build/com-Bu0YGNYX.d.mts.map +1 -0
- package/build/{com-B1QZqhWz.cjs → com-JaZkZAlG.cjs} +2 -2
- package/build/{com-B1QZqhWz.cjs.map → com-JaZkZAlG.cjs.map} +1 -1
- package/build/{com-9odKA1Fj.mjs → com-VtVWh7gI.mjs} +2 -2
- package/build/{com-9odKA1Fj.mjs.map → com-VtVWh7gI.mjs.map} +1 -1
- package/build/com.cjs +1 -1
- package/build/com.d.cts +1 -1
- package/build/com.d.mts +1 -1
- package/build/com.mjs +1 -1
- package/build/common-B6_Yo59b.mjs +2 -0
- package/build/{common-DSzy5K03.mjs.map → common-B6_Yo59b.mjs.map} +1 -1
- package/build/{common-ClinPNdn.d.mts → common-DAOxX-Zx.d.cts} +1 -1
- package/build/{common-ClinPNdn.d.mts.map → common-DAOxX-Zx.d.cts.map} +1 -1
- package/build/common-DBMgtoTL.cjs +2 -0
- package/build/{common-ix04NEFn.cjs.map → common-DBMgtoTL.cjs.map} +1 -1
- package/build/{common-CsBdb633.d.cts → common-SiysH9tt.d.mts} +1 -1
- package/build/{common-CsBdb633.d.cts.map → common-SiysH9tt.d.mts.map} +1 -1
- package/build/{gpio-Dvbd3MFr.d.cts → gpio-91G-W2m3.d.mts} +70 -25
- package/build/gpio-91G-W2m3.d.mts.map +1 -0
- package/build/gpio-Bz0JdP3l.cjs +2 -0
- package/build/gpio-Bz0JdP3l.cjs.map +1 -0
- package/build/gpio-CGsMbcQN.mjs +2 -0
- package/build/gpio-CGsMbcQN.mjs.map +1 -0
- package/build/{gpio-ahjdhywL.d.mts → gpio-CaoUf_cd.d.cts} +70 -25
- package/build/gpio-CaoUf_cd.d.cts.map +1 -0
- package/build/gpio.cjs +1 -1
- package/build/gpio.d.cts +3 -3
- package/build/gpio.d.mts +3 -3
- package/build/gpio.mjs +1 -1
- package/build/{hmi-Bk74K2JX.d.cts → hmi-BSBsQPEN.d.mts} +5 -5
- package/build/{hmi-Bk74K2JX.d.cts.map → hmi-BSBsQPEN.d.mts.map} +1 -1
- package/build/hmi-CocSngQM.mjs +2 -0
- package/build/hmi-CocSngQM.mjs.map +1 -0
- package/build/hmi-DCplypi6.cjs +2 -0
- package/build/hmi-DCplypi6.cjs.map +1 -0
- package/build/{hmi-FPTDoVfs.d.mts → hmi-Des_V5c0.d.cts} +5 -5
- package/build/{hmi-FPTDoVfs.d.mts.map → hmi-Des_V5c0.d.cts.map} +1 -1
- package/build/hmi.cjs +1 -1
- package/build/hmi.d.cts +1 -1
- package/build/hmi.d.mts +1 -1
- package/build/hmi.mjs +1 -1
- package/build/management-B9Tdk00K.cjs +2 -0
- package/build/{management-PEkkZaQ3.cjs.map → management-B9Tdk00K.cjs.map} +1 -1
- package/build/{management-COw5z8sl.d.cts → management-BIDVdvlQ.d.cts} +1 -1
- package/build/{management-COw5z8sl.d.cts.map → management-BIDVdvlQ.d.cts.map} +1 -1
- package/build/{management-CGmaS4-D.mjs → management-CXGT-yoC.mjs} +1 -1
- package/build/{management-CGmaS4-D.mjs.map → management-CXGT-yoC.mjs.map} +1 -1
- package/build/{management-CinGOMF_.d.mts → management-CwNeejKZ.d.mts} +1 -1
- package/build/{management-CinGOMF_.d.mts.map → management-CwNeejKZ.d.mts.map} +1 -1
- package/build/management.cjs +1 -1
- package/build/management.d.cts +1 -1
- package/build/management.d.mts +1 -1
- package/build/management.mjs +1 -1
- package/build/node.cjs +1 -1
- package/build/node.cjs.map +1 -1
- package/build/node.d.cts +8 -8
- package/build/node.d.mts +8 -8
- package/build/node.mjs +1 -1
- package/build/power-1yzD9ymI.cjs +2 -0
- package/build/power-1yzD9ymI.cjs.map +1 -0
- package/build/{power-CopiAJXF.d.mts → power-CQm1EIoO.d.cts} +38 -38
- package/build/{power-CopiAJXF.d.mts.map → power-CQm1EIoO.d.cts.map} +1 -1
- package/build/{power-HNcZXI0F.d.cts → power-CbQidLPp.d.mts} +38 -38
- package/build/{power-HNcZXI0F.d.cts.map → power-CbQidLPp.d.mts.map} +1 -1
- package/build/power-DqULYfeX.mjs +2 -0
- package/build/power-DqULYfeX.mjs.map +1 -0
- package/build/power.cjs +1 -1
- package/build/power.d.cts +3 -3
- package/build/power.d.mts +3 -3
- package/build/power.mjs +1 -1
- package/build/{relays-I7rKvd13.mjs → relays-BPQj7abl.mjs} +1 -1
- package/build/{relays-I7rKvd13.mjs.map → relays-BPQj7abl.mjs.map} +1 -1
- package/build/{relays-BR6408vm.d.mts → relays-Bn8LBgWl.d.cts} +1 -1
- package/build/{relays-BR6408vm.d.mts.map → relays-Bn8LBgWl.d.cts.map} +1 -1
- package/build/{relays-CoF1h8ZQ.d.cts → relays-CkBk7SOg.d.mts} +1 -1
- package/build/{relays-CoF1h8ZQ.d.cts.map → relays-CkBk7SOg.d.mts.map} +1 -1
- package/build/{relays-D_kWwwIR.cjs → relays-Mo3ywliK.cjs} +2 -2
- package/build/{relays-D_kWwwIR.cjs.map → relays-Mo3ywliK.cjs.map} +1 -1
- package/build/relays.cjs +1 -1
- package/build/relays.d.cts +1 -1
- package/build/relays.d.mts +1 -1
- package/build/relays.mjs +1 -1
- package/package.json +5 -5
- package/build/at1000-CYNSd3Yp.cjs +0 -2
- package/build/com-B7DWhc_c.d.cts.map +0 -1
- package/build/com-CPlfIOz2.d.mts.map +0 -1
- package/build/common-DSzy5K03.mjs +0 -2
- package/build/common-ix04NEFn.cjs +0 -2
- package/build/gpio-BRimmVQo.cjs +0 -2
- package/build/gpio-BRimmVQo.cjs.map +0 -1
- package/build/gpio-Dvbd3MFr.d.cts.map +0 -1
- package/build/gpio-ahjdhywL.d.mts.map +0 -1
- package/build/gpio-nD6e5nNZ.mjs +0 -2
- package/build/gpio-nD6e5nNZ.mjs.map +0 -1
- package/build/hmi-DVUFmRMo.cjs +0 -2
- package/build/hmi-DVUFmRMo.cjs.map +0 -1
- package/build/hmi-dJ8Y4DVD.mjs +0 -2
- package/build/hmi-dJ8Y4DVD.mjs.map +0 -1
- package/build/management-PEkkZaQ3.cjs +0 -2
- package/build/power-B1rs9Bqf.mjs +0 -2
- package/build/power-B1rs9Bqf.mjs.map +0 -1
- package/build/power-BpI1_Yav.cjs +0 -2
- package/build/power-BpI1_Yav.cjs.map +0 -1
- /package/build/{chunk-DjWAcSYV.cjs → chunk-Bmb41Sf3.cjs} +0 -0
package/build/node.mjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import"./com-9odKA1Fj.mjs";import"./common-DSzy5K03.mjs";import"./gpio-nD6e5nNZ.mjs";import"./hmi-dJ8Y4DVD.mjs";import"./management-CGmaS4-D.mjs";import"./power-B1rs9Bqf.mjs";import"./relays-I7rKvd13.mjs";import{t as e}from"./at1000-Dm22ae18.mjs";import t from"dns-packet";import{EventEmitter as n}from"node:events";import r from"node:util";import i from"ip-address";import a from"node:os";import o from"node:dgram";const s=`224.0.0.251`,c=`FF02::FB`,l=5353,u=`IPv4`,d=`IPv6`,f=[u,4,d,6];var p=class e{static getInterfaces(t){return t?e.getInterfacesFromStrings(t):e.getAllInterfaces()}static getAllInterfaces(){let e=[],t=[],n=a.networkInterfaces();for(let[r,i]of Object.entries(n))t.includes(r)||(t.push(r),i?.forEach(t=>{t.internal||!f.includes(t.family)||/^(2002|2001):/gi.exec(t.address)||e.push({name:r,address:t.address,family:t.family})}));if(!e.length)throw Error(`No usable network interfaces returned by OS.`);return e}static getInterfacesFromStrings(t){let n=Array.isArray(t)?t:[t],r=this.getAllInterfaces().filter(t=>n.reduce((n,r)=>n||!!(e.stringMatchesAddress(r,t.address)||t.name===r),!1));if(!r||!r.length)throw Error(`No usable network interfaces returned by OS.`);return r}static stringMatchesAddress(e,t){let n,r;try{n=new i.Address4(e),r=new i.Address4(t)}catch{try{n=new i.Address6(e),r=new i.Address6(t)}catch{return!1}}return n.bigInt()===r.bigInt()}};const m={interfaces:[],reuseAddr:!0,ttl:255,loopback:!0,onMessage:(e,t)=>{console.log(`Message `+e.toString())},socketError:e=>{console.log(`Socket error `+e.message)}};var h=class e{static validateSettings(e){if(!e.multicastAddress)throw Error(`Socket settings require multicastAddress`);if(!e.multicastPort)throw Error(`Socket settings require multicastPort`)}static createMulticastSocket(t){return new Promise((n,r)=>{let a=Object.assign({},m,t);e.validateSettings(a);let s=o.createSocket({type:i.Address4.isValid(a.multicastAddress)?`udp4`:`udp6`,reuseAddr:a.reuseAddr}),c=!1;s.on(`error`,e=>{c?a.socketError(e):(s.close(),n({success:!1,error:e}))}).on(`listening`,()=>{c=!0,s.setMulticastTTL(a.ttl??255),s.setMulticastLoopback(a.loopback??!0);let t=e.addMulticastMemberships(s,a);if(!t.memberships.length){c=!1,s.close(),n({success:!1,error:Error(`No interface memberships for multicast address `+a.multicastAddress)});return}n(Object.assign({success:!0},t,{socket:s}))}).on(`message`,(e,t)=>{a.onMessage(e,t)}),s.bind({port:a.multicastPort,exclusive:!1})})}static addMulticastMemberships(t,n){let r=[],a=[],o=i.Address4.isValid(n.multicastAddress)?[u,4]:[d,6];return n.interfaces.forEach(i=>{if(o.includes(i.family))try{t.addMembership(n.multicastAddress,e.interfaceAddress(i)),r.push(i)}catch{a.push(i)}}),{memberships:r,failedMemberships:a}}static async createSendSocket(t,n,r,i){return new Promise((a,s)=>{let c=o.createSocket({type:[u,4].includes(t.family)?`udp4`:`udp6`,reuseAddr:!!n.reuseAddr});c.once(`error`,e=>{c.close(),a({success:!1,error:Error(e.message)})}).on(`error`,i).on(`listening`,()=>{a({success:!0,iface:t,socket:c,send:c.send.bind(c)})}).on(`message`,(e,n)=>{n.interface=t.name,r(e,n)}).bind(n.srcPort||0,e.interfaceAddress(t))})}static interfaceAddress(e){return`${e.address}${[u,4].includes(e.family)?``:`%`+e.name}`}};const g={reuseAddr:!0,srcPort:0,interfaces:null,ttl:255,loopback:!0,debug:!1};var _=class extends n{Config;ready;receiveSockets;sendSockets;interfaces;destroyed;constructor(e){super(),this.Config=Object.assign({},g,e),this.ready=!1,this.receiveSockets=[],this.sendSockets=[]}async init(){try{this.interfaces=p.getInterfaces(this.Config.interfaces||void 0)}catch(e){throw this.emitError(e),e}return this.emitDebug(`Scanner interfaces: ${r.inspect(this.interfaces)}`),await this.createReceiveSockets(),await this.createSendSockets(),this.receiveSockets.length&&this.sendSockets.length&&(this.ready=!0),this.ready}async createReceiveSockets(){if(!this.interfaces)return[];let e=this.interfaces.filter(e=>[u,4].includes(e.family)),t=this.interfaces.filter(e=>[d,6].includes(e.family));if(this.emitDebug(`Create receive sockets for${e.length?` `+u:``}${e.length&&t.length?` and`:``}${t.length?` `+d:``}`),e.length){let t=await h.createMulticastSocket({multicastAddress:s,multicastPort:l,interfaces:e,onMessage:this.onMessage.bind(this),socketError:this.socketError.bind(this)});t.success?this.receiveSockets.push(t):t.error&&this.emitError(t.error.message)}if(t.length){let e=await h.createMulticastSocket({multicastAddress:c,multicastPort:l,interfaces:t,onMessage:this.onMessage.bind(this),socketError:this.socketError.bind(this)});e.success?this.receiveSockets.push(e):e.error&&this.emitError(e.error.message)}return this.receiveSockets}async createSendSockets(){if(this.interfaces){this.emitDebug(`Create send sockets on ${this.interfaces.length} interfaces/addresses.`);for(let e=0;e<this.interfaces.length;e++){let t=await h.createSendSocket(this.interfaces[e],this.Config,this.onMessage.bind(this),this.socketError.bind(this));t.success?this.sendSockets.push(t):t.error&&this.emitError(t.error.message)}}}onMessage(e,n){let r;try{r=t.decode(e)}catch(e){return this.emitWarn(e)}this.emit(`packet`,r,n)}socketError(e){e.code===`EACCES`||e.code===`EADDRINUSE`||e.code===`EADDRNOTAVAIL`?this.emitError(e):this.emitWarn(e)}query(e,t){let n;if(typeof e==`string`)n=[{name:e,type:t||`ANY`}];else if(Array.isArray(e))n=e;else throw Error(`Query questions must be an array of mDNS query questions.`);let i={type:`query`,questions:n};this.emitDebug(`Send mDNS query: ${r.inspect(i)}`),this.send(i)}send(e){if(this.destroyed)return;let n=t.encode(e);for(let e=0;e<this.sendSockets.length;e++){let t=this.sendSockets[e];t.send&&t.iface&&(t.send(n,0,n.length,l,[u,4].includes(t.iface.family)?s:c+`%`+t.iface.name),this.emitDebug(`Send packet on ${t.iface.address}`))}}destroy(){this.ready=!1,this.sendSockets.forEach(e=>e.socket?.close()),this.sendSockets=[],this.receiveSockets.forEach(e=>e.socket?.close()),this.receiveSockets=[]}emitError(e){this.emit(`error`,e)}emitWarn(e){this.emit(`warn`,e)}emitDebug(e){this.Config.debug&&this.emit(`debug`,e)}};const v={debug:!1};var y=class extends n{Config;scanner;types;namedServices;packetListener;constructor(e,t){super(),this.packetListener=this.onPacket.bind(this),this.scanner=e,this.Config=Object.assign({},v,t),this.types=[],this.namedServices={},this.forwardEvents(this.scanner),this.reset()}reset(){this.removeMDNSListener(this.scanner),this.types=[],this.namedServices={},this.listenMDNSEvents(this.scanner)}forwardEvents(e){e.on(`error`,e=>{this.emitError(e)}).on(`warn`,e=>{this.emitWarn(e)}).on(`debug`,e=>{this.emitDebug(e)})}listenMDNSEvents(e){e.on(`packet`,this.packetListener)}removeMDNSListener(e){e.removeListener(`packet`,this.packetListener)}onPacket(e,t){switch(this.emitDebug(`Received packet type ${e.type} from ${t.address}.`),e.type){case`query`:this.emit(`query`,e,t);break;case`response`:this.emitDebug(`Received response packet from ${t.address} with ${e.answers?e.answers.length:0} answers and ${e.additionals?e.additionals.length:0} additionals.`),e.answers&&this.processAnswers(e.answers,t),e.additionals&&this.processAnswers(e.additionals,t);break}}processAnswers(e,t){this.emitDebug(`Processing answers or additionals...`);let n=this.processSRVAnswers(e);this.processTXTAnswers(e),this.processAAnswers(e),this.processAAAAAnswers(e),this.processPTRAnswers(e,t),n.forEach(e=>{this.emit(`discovered`,{type:`service`,data:this.namedServices[e]})})}processSRVAnswers(e){let t=[];return e.forEach(e=>{if(e.type!==`SRV`)return;this.emitDebug(`Processing SRV answer.`);let n=e.name.toString();t.includes(n)||t.push(n),this.namedServices[n]=this.namedServices[n]||{},this.namedServices[n].service=e,this.namedServices[n].host=e.data.target.toString(),this.namedServices[n].port=e.data.port}),t}processTXTAnswers(e){e.forEach(e=>{if(e.type!==`TXT`)return;this.emitDebug(`Processing TXT answer.`);let t=e.data;if(Array.isArray(t)&&t.length>1){let n=e.name.toString();this.namedServices[n]=this.namedServices[n]||{},this.namedServices[n].txt=this.answerDataToKeyValues(Buffer.concat(t))}else if(Buffer.isBuffer(t)){let n=e.name.toString();this.namedServices[n]=this.namedServices[n]||{},this.namedServices[n].txt=this.answerDataToKeyValues(t)}})}processAAnswers(e){e.forEach(e=>{if(e.type!==`A`)return;this.emitDebug(`Processing A answer.`);let t=e.name.toString(),n=e.data.toString();for(let e in this.namedServices)this.namedServices[e].host===t&&(this.namedServices[e].addresses=this.namedServices[e].addresses||[],this.namedServices[e].addresses.reduce((e,t)=>e||t.address===n,!1)||this.namedServices[e].addresses.push({family:u,address:n}))})}processAAAAAnswers(e){e.forEach(e=>{if(e.type!==`AAAA`)return;this.emitDebug(`Processing AAAA answer.`);let t=e.name.toString(),n=e.data.toString();for(let e in this.namedServices)this.namedServices[e].host===t&&(this.namedServices[e].addresses=this.namedServices[e].addresses||[],this.namedServices[e].addresses.reduce((e,t)=>e||t.address===n,!1)||this.namedServices[e].addresses.push({family:d,address:n}))})}processPTRAnswers(e,t){e.forEach(e=>{if(e.type!==`PTR`)return;this.emitDebug(`Processing PTR answer.`);let n=this.serviceTypeFromPTR(e),r=e.data.toString();n!==r&&(this.namedServices[r]=this.namedServices[r]||{},this.namedServices[r].name=r.replace(`.`+n,``),this.namedServices[r].rinfo=t)})}serviceTypeFromPTR(e){let t=e.data,n=/(?:^|^.+?(?:\.))(_.*)$/gm.exec(t.toString()),r=n?n[1]:t.toString();return this.types.includes(r)||(this.types.push(r),this.emit(`discovered`,{type:`type`,data:r}),this.emitDebug(`Scanning service type ${r}.`),this.scanner.query(r,`ANY`)),r}answerDataToKeyValues(e){let t=[],n={},r=0,i=e[r];for(;i;){let a=e.slice(r+1,r+1+i);t.push(a.toString());let o=/^([^=]+)=([^=]*)$/.exec(a.toString());o&&(n[o[1]]=o[2]),r=r+1+i,i=e[r]}return{strings:t,keyValuePairs:n}}emitError(e){this.emit(`error`,e)}emitWarn(e){this.emit(`warn`,e)}emitDebug(e){this.Config.debug&&this.emit(`debug`,e)}};const b=async(t=500)=>{t<10&&(t=10);let n=new _({debug:!0}),r=new y(n);if(r.on(`error`,e=>{if(!e.includes(`bind ENOENT`))throw Error(e)}),!await n.init())throw Error(`Failed to initialize mDNS scanner`);n.query(`_at1000_server._tcp.local`),await new Promise(e=>setTimeout(e,t));let i=[...new Set(Object.values(r.namedServices).filter(e=>e!==void 0&&e.service!==void 0).filter(e=>e.service.name.endsWith(`_at1000_server._tcp.local`)).map(e=>e.addresses.filter(e=>e.family==`IPv4`).pop()?.address).filter(e=>e!==void 0))].map(t=>e.create(t));return n.destroy(),await Promise.all(i)};var x=class extends e{static findDevices(e=500){return b(e)}};export{x as AT1000};
|
|
1
|
+
import"./com-VtVWh7gI.mjs";import"./common-B6_Yo59b.mjs";import"./gpio-CGsMbcQN.mjs";import"./hmi-CocSngQM.mjs";import"./management-CXGT-yoC.mjs";import"./power-DqULYfeX.mjs";import"./relays-BPQj7abl.mjs";import{t as e}from"./at1000-C4IWLsB5.mjs";import t from"dns-packet";import{EventEmitter as n}from"node:events";import r from"node:util";import i from"ip-address";import a from"node:os";import o from"node:dgram";const s=`224.0.0.251`,c=`FF02::FB`,l=5353,u=`IPv4`,d=`IPv6`,f=[u,4,d,6];var p=class e{static getInterfaces(t){return t?e.getInterfacesFromStrings(t):e.getAllInterfaces()}static getAllInterfaces(){let e=[],t=[],n=a.networkInterfaces();for(let[r,i]of Object.entries(n))t.includes(r)||(t.push(r),i?.forEach(t=>{t.internal||!f.includes(t.family)||/^(2002|2001):/gi.exec(t.address)||e.push({name:r,address:t.address,family:t.family})}));if(!e.length)throw Error(`No usable network interfaces returned by OS.`);return e}static getInterfacesFromStrings(t){let n=Array.isArray(t)?t:[t],r=this.getAllInterfaces().filter(t=>n.reduce((n,r)=>n||!!(e.stringMatchesAddress(r,t.address)||t.name===r),!1));if(!r||!r.length)throw Error(`No usable network interfaces returned by OS.`);return r}static stringMatchesAddress(e,t){let n,r;try{n=new i.Address4(e),r=new i.Address4(t)}catch{try{n=new i.Address6(e),r=new i.Address6(t)}catch{return!1}}return n.bigInt()===r.bigInt()}};const m={interfaces:[],reuseAddr:!0,ttl:255,loopback:!0,onMessage:(e,t)=>{console.log(`Message `+e.toString())},socketError:e=>{console.log(`Socket error `+e.message)}};var h=class e{static validateSettings(e){if(!e.multicastAddress)throw Error(`Socket settings require multicastAddress`);if(!e.multicastPort)throw Error(`Socket settings require multicastPort`)}static createMulticastSocket(t){return new Promise((n,r)=>{let a=Object.assign({},m,t);e.validateSettings(a);let s=o.createSocket({type:i.Address4.isValid(a.multicastAddress)?`udp4`:`udp6`,reuseAddr:a.reuseAddr}),c=!1;s.on(`error`,e=>{c?a.socketError(e):(s.close(),n({success:!1,error:e}))}).on(`listening`,()=>{c=!0,s.setMulticastTTL(a.ttl??255),s.setMulticastLoopback(a.loopback??!0);let t=e.addMulticastMemberships(s,a);if(!t.memberships.length){c=!1,s.close(),n({success:!1,error:Error(`No interface memberships for multicast address `+a.multicastAddress)});return}n(Object.assign({success:!0},t,{socket:s}))}).on(`message`,(e,t)=>{a.onMessage(e,t)}),s.bind({port:a.multicastPort,exclusive:!1})})}static addMulticastMemberships(t,n){let r=[],a=[],o=i.Address4.isValid(n.multicastAddress)?[u,4]:[d,6];return n.interfaces.forEach(i=>{if(o.includes(i.family))try{t.addMembership(n.multicastAddress,e.interfaceAddress(i)),r.push(i)}catch{a.push(i)}}),{memberships:r,failedMemberships:a}}static async createSendSocket(t,n,r,i){return new Promise((a,s)=>{let c=o.createSocket({type:[u,4].includes(t.family)?`udp4`:`udp6`,reuseAddr:!!n.reuseAddr});c.once(`error`,e=>{c.close(),a({success:!1,error:Error(e.message)})}).on(`error`,i).on(`listening`,()=>{a({success:!0,iface:t,socket:c,send:c.send.bind(c)})}).on(`message`,(e,n)=>{n.interface=t.name,r(e,n)}).bind(n.srcPort||0,e.interfaceAddress(t))})}static interfaceAddress(e){return`${e.address}${[u,4].includes(e.family)?``:`%`+e.name}`}};const g={reuseAddr:!0,srcPort:0,interfaces:null,ttl:255,loopback:!0,debug:!1};var _=class extends n{Config;ready;receiveSockets;sendSockets;interfaces;destroyed;constructor(e){super(),this.Config=Object.assign({},g,e),this.ready=!1,this.receiveSockets=[],this.sendSockets=[]}async init(){try{this.interfaces=p.getInterfaces(this.Config.interfaces||void 0)}catch(e){throw this.emitError(e),e}return this.emitDebug(`Scanner interfaces: ${r.inspect(this.interfaces)}`),await this.createReceiveSockets(),await this.createSendSockets(),this.receiveSockets.length&&this.sendSockets.length&&(this.ready=!0),this.ready}async createReceiveSockets(){if(!this.interfaces)return[];let e=this.interfaces.filter(e=>[u,4].includes(e.family)),t=this.interfaces.filter(e=>[d,6].includes(e.family));if(this.emitDebug(`Create receive sockets for${e.length?` `+u:``}${e.length&&t.length?` and`:``}${t.length?` `+d:``}`),e.length){let t=await h.createMulticastSocket({multicastAddress:s,multicastPort:l,interfaces:e,onMessage:this.onMessage.bind(this),socketError:this.socketError.bind(this)});t.success?this.receiveSockets.push(t):t.error&&this.emitError(t.error.message)}if(t.length){let e=await h.createMulticastSocket({multicastAddress:c,multicastPort:l,interfaces:t,onMessage:this.onMessage.bind(this),socketError:this.socketError.bind(this)});e.success?this.receiveSockets.push(e):e.error&&this.emitError(e.error.message)}return this.receiveSockets}async createSendSockets(){if(this.interfaces){this.emitDebug(`Create send sockets on ${this.interfaces.length} interfaces/addresses.`);for(let e=0;e<this.interfaces.length;e++){let t=await h.createSendSocket(this.interfaces[e],this.Config,this.onMessage.bind(this),this.socketError.bind(this));t.success?this.sendSockets.push(t):t.error&&this.emitError(t.error.message)}}}onMessage(e,n){let r;try{r=t.decode(e)}catch(e){return this.emitWarn(e)}this.emit(`packet`,r,n)}socketError(e){e.code===`EACCES`||e.code===`EADDRINUSE`||e.code===`EADDRNOTAVAIL`?this.emitError(e):this.emitWarn(e)}query(e,t){let n;if(typeof e==`string`)n=[{name:e,type:t||`ANY`}];else if(Array.isArray(e))n=e;else throw Error(`Query questions must be an array of mDNS query questions.`);let i={type:`query`,questions:n};this.emitDebug(`Send mDNS query: ${r.inspect(i)}`),this.send(i)}send(e){if(this.destroyed)return;let n=t.encode(e);for(let e=0;e<this.sendSockets.length;e++){let t=this.sendSockets[e];t.send&&t.iface&&(t.send(n,0,n.length,l,[u,4].includes(t.iface.family)?s:c+`%`+t.iface.name),this.emitDebug(`Send packet on ${t.iface.address}`))}}destroy(){this.ready=!1,this.sendSockets.forEach(e=>e.socket?.close()),this.sendSockets=[],this.receiveSockets.forEach(e=>e.socket?.close()),this.receiveSockets=[]}emitError(e){this.emit(`error`,e)}emitWarn(e){this.emit(`warn`,e)}emitDebug(e){this.Config.debug&&this.emit(`debug`,e)}};const v={debug:!1};var y=class extends n{Config;scanner;types;namedServices;packetListener;constructor(e,t){super(),this.packetListener=this.onPacket.bind(this),this.scanner=e,this.Config=Object.assign({},v,t),this.types=[],this.namedServices={},this.forwardEvents(this.scanner),this.reset()}reset(){this.removeMDNSListener(this.scanner),this.types=[],this.namedServices={},this.listenMDNSEvents(this.scanner)}forwardEvents(e){e.on(`error`,e=>{this.emitError(e)}).on(`warn`,e=>{this.emitWarn(e)}).on(`debug`,e=>{this.emitDebug(e)})}listenMDNSEvents(e){e.on(`packet`,this.packetListener)}removeMDNSListener(e){e.removeListener(`packet`,this.packetListener)}onPacket(e,t){switch(this.emitDebug(`Received packet type ${e.type} from ${t.address}.`),e.type){case`query`:this.emit(`query`,e,t);break;case`response`:this.emitDebug(`Received response packet from ${t.address} with ${e.answers?e.answers.length:0} answers and ${e.additionals?e.additionals.length:0} additionals.`),e.answers&&this.processAnswers(e.answers,t),e.additionals&&this.processAnswers(e.additionals,t);break}}processAnswers(e,t){this.emitDebug(`Processing answers or additionals...`);let n=this.processSRVAnswers(e);this.processTXTAnswers(e),this.processAAnswers(e),this.processAAAAAnswers(e),this.processPTRAnswers(e,t),n.forEach(e=>{this.emit(`discovered`,{type:`service`,data:this.namedServices[e]})})}processSRVAnswers(e){let t=[];return e.forEach(e=>{if(e.type!==`SRV`)return;this.emitDebug(`Processing SRV answer.`);let n=e.name.toString();t.includes(n)||t.push(n),this.namedServices[n]=this.namedServices[n]||{},this.namedServices[n].service=e,this.namedServices[n].host=e.data.target.toString(),this.namedServices[n].port=e.data.port}),t}processTXTAnswers(e){e.forEach(e=>{if(e.type!==`TXT`)return;this.emitDebug(`Processing TXT answer.`);let t=e.data;if(Array.isArray(t)&&t.length>1){let n=e.name.toString();this.namedServices[n]=this.namedServices[n]||{},this.namedServices[n].txt=this.answerDataToKeyValues(Buffer.concat(t))}else if(Buffer.isBuffer(t)){let n=e.name.toString();this.namedServices[n]=this.namedServices[n]||{},this.namedServices[n].txt=this.answerDataToKeyValues(t)}})}processAAnswers(e){e.forEach(e=>{if(e.type!==`A`)return;this.emitDebug(`Processing A answer.`);let t=e.name.toString(),n=e.data.toString();for(let e in this.namedServices)this.namedServices[e].host===t&&(this.namedServices[e].addresses=this.namedServices[e].addresses||[],this.namedServices[e].addresses.reduce((e,t)=>e||t.address===n,!1)||this.namedServices[e].addresses.push({family:u,address:n}))})}processAAAAAnswers(e){e.forEach(e=>{if(e.type!==`AAAA`)return;this.emitDebug(`Processing AAAA answer.`);let t=e.name.toString(),n=e.data.toString();for(let e in this.namedServices)this.namedServices[e].host===t&&(this.namedServices[e].addresses=this.namedServices[e].addresses||[],this.namedServices[e].addresses.reduce((e,t)=>e||t.address===n,!1)||this.namedServices[e].addresses.push({family:d,address:n}))})}processPTRAnswers(e,t){e.forEach(e=>{if(e.type!==`PTR`)return;this.emitDebug(`Processing PTR answer.`);let n=this.serviceTypeFromPTR(e),r=e.data.toString();n!==r&&(this.namedServices[r]=this.namedServices[r]||{},this.namedServices[r].name=r.replace(`.`+n,``),this.namedServices[r].rinfo=t)})}serviceTypeFromPTR(e){let t=e.data,n=/(?:^|^.+?(?:\.))(_.*)$/gm.exec(t.toString()),r=n?n[1]:t.toString();return this.types.includes(r)||(this.types.push(r),this.emit(`discovered`,{type:`type`,data:r}),this.emitDebug(`Scanning service type ${r}.`),this.scanner.query(r,`ANY`)),r}answerDataToKeyValues(e){let t=[],n={},r=0,i=e[r];for(;i;){let a=e.slice(r+1,r+1+i);t.push(a.toString());let o=/^([^=]+)=([^=]*)$/.exec(a.toString());o&&(n[o[1]]=o[2]),r=r+1+i,i=e[r]}return{strings:t,keyValuePairs:n}}emitError(e){this.emit(`error`,e)}emitWarn(e){this.emit(`warn`,e)}emitDebug(e){this.Config.debug&&this.emit(`debug`,e)}};const b=async(t=500)=>{t<10&&(t=10);let n=new _({debug:!0}),r=new y(n);if(r.on(`error`,e=>{if(!e.includes(`bind ENOENT`))throw Error(e)}),!await n.init())throw Error(`Failed to initialize mDNS scanner`);n.query(`_at1000_server._tcp.local`),await new Promise(e=>setTimeout(e,t));let i=[...new Set(Object.values(r.namedServices).filter(e=>e!==void 0&&e.service!==void 0).filter(e=>e.service.name.endsWith(`_at1000_server._tcp.local`)).map(e=>e.addresses.filter(e=>e.family==`IPv4`).pop()?.address).filter(e=>e!==void 0))].map(t=>e.create(t));return n.destroy(),await Promise.all(i)};var x=class extends e{static findDevices(e=500){return b(e)}};export{x as AT1000};
|
|
2
2
|
//# sourceMappingURL=node.mjs.map
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
const e=require(`./chunk-Bmb41Sf3.cjs`),t=require(`./common-DBMgtoTL.cjs`);let n=require(`valibot`);n=e.t(n);const r=n.object({enabled:n.boolean(),target_voltage:t.t,voltage:t.t,current:n.number()}),i=n.partial(n.pick(r,[`enabled`,`target_voltage`])),a=n.pick(r,[`enabled`,`current`,`voltage`]),o=n.pick(a,[`enabled`]),s=n.pick(r,[`current`]);var c=class{usb_count;dut_count=1;constructor(e,t){this.fetch=e,this.usb_count=t.capabilities.usb_ports.reduce((e,t)=>e+t.count,0)}reset(){return this.fetch(`/power/reset`,{method:`POST`,parseResponse:()=>{}})}dut(e){if(e<0||e>=this.dut_count)throw Error(`Invalid DUT id ${e} (RESOURCE_NOT_FOUND)\n Suggestion: Use a DUT ID between 0 and ${this.dut_count-1}\n Path: /power/dut/${e}`);return new l(this.fetch,e)}usb(e){if(e<0||e>=this.usb_count)throw Error(`Invalid USB port ${e} (RESOURCE_NOT_FOUND)\n Suggestion: Use a USB port ID between 0 and ${this.usb_count-1}\n Path: /power/usb/${e}`);return new u(this.fetch,e)}relay_4(){return new d(this.fetch,4)}},l=class{constructor(e,t){this.fetch=e,this.id=t}reset(){return this.fetch(`/power/dut/${this.id}/reset`,{method:`POST`,parseResponse:()=>{}})}configure(e){return this.fetch(`/power/dut/${this.id}`,{method:`PATCH`,body:n.parse(i,e),schema:r})}async power_up(e){return this.configure({enabled:!0,target_voltage:e})}async power_down(){return this.configure({enabled:!1})}read(){return this.fetch(`/power/dut/${this.id}`,{schema:r})}async read_current(){return(await this.read()).current}async read_voltage(){return(await this.read()).voltage}},u=class{constructor(e,t){this.fetch=e,this.id=t}reset(){return this.fetch(`/power/usb/${this.id}/reset`,{method:`POST`,parseResponse:()=>{}})}configure(e){return this.fetch(`/power/usb/${this.id}`,{method:`PATCH`,body:n.parse(o,e),schema:a})}power_up(){return this.configure({enabled:!0})}power_down(){return this.configure({enabled:!1})}read(){return this.fetch(`/power/usb/${this.id}`,{schema:a})}async read_current(){return(await this.read()).current}async read_voltage(){return(await this.read()).voltage}},d=class{constructor(e,t){this.fetch=e,this.id=t}read(){return this.fetch(`/power/relay/${this.id}`,{schema:s})}async read_current(){return(await this.read()).current}};Object.defineProperty(exports,`i`,{enumerable:!0,get:function(){return u}}),Object.defineProperty(exports,`n`,{enumerable:!0,get:function(){return c}}),Object.defineProperty(exports,`r`,{enumerable:!0,get:function(){return d}}),Object.defineProperty(exports,`t`,{enumerable:!0,get:function(){return l}});
|
|
2
|
+
//# sourceMappingURL=power-1yzD9ymI.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"power-1yzD9ymI.cjs","names":["v","analogLevel","fetch: UpFetch","id: number"],"sources":["../src/api/power.ts"],"sourcesContent":["import type { UpFetch } from 'up-fetch';\nimport * as v from 'valibot';\n\nimport { analogLevel, type AnalogOutputLevel } from './common';\nimport type { Device } from './management';\n\nexport type { AnalogOutputLevel };\n\nconst dutState = v.object({\n enabled: v.boolean(),\n target_voltage: analogLevel,\n voltage: analogLevel,\n current: v.number(),\n});\nexport type DutState = v.InferOutput<typeof dutState>;\n\nconst dutConfiguration = v.partial(v.pick(dutState, ['enabled', 'target_voltage']));\nexport type DutConfiguration = v.InferOutput<typeof dutConfiguration>;\n\nconst usbState = v.pick(dutState, ['enabled', 'current', 'voltage']);\nexport type UsbState = v.InferOutput<typeof usbState>;\n\nconst usbConfiguration = v.pick(usbState, ['enabled']);\nexport type UsbConfiguration = v.InferOutput<typeof usbConfiguration>;\n\nconst relayState = v.pick(dutState, ['current']);\nexport type RelayState = v.InferOutput<typeof relayState>;\n\n/** @hideconstructor */\nexport class PowerApi {\n private readonly usb_count: number;\n private readonly dut_count = 1;\n\n constructor(private readonly fetch: UpFetch, device: Device) {\n this.usb_count = device.capabilities.usb_ports.reduce((a, b) => a + b.count, 0);\n }\n\n /**\n * Resets the power API.\n */\n reset(): Promise<void> {\n return this.fetch('/power/reset', { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Access a specific DUT by id.\n * @param id The DUT id.\n * @returns The DUT instance.\n */\n dut(id: number): Dut {\n if (id < 0 || id >= this.dut_count) {\n throw new Error(\n `Invalid DUT id ${id} (RESOURCE_NOT_FOUND)\\n Suggestion: Use a DUT ID between 0 and ${\n this.dut_count - 1\n }\\n Path: /power/dut/${id}`,\n );\n }\n\n return new Dut(this.fetch, id);\n }\n\n /**\n * Access a specific USB port by id.\n * @param id The USB port id.\n * @returns The USB port instance.\n */\n usb(id: number): Usb {\n if (id < 0 || id >= this.usb_count) {\n throw new Error(\n `Invalid USB port ${id} (RESOURCE_NOT_FOUND)\\n Suggestion: Use a USB port ID between 0 and ${\n this.usb_count - 1\n }\\n Path: /power/usb/${id}`,\n );\n }\n\n return new Usb(this.fetch, id);\n }\n\n /**\n * Access the relay at index 4.\n * @returns The relay instance.\n */\n relay_4(): RelayPower {\n return new RelayPower(this.fetch, 4);\n }\n}\n\n/** @hideconstructor */\nexport class Dut {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Resets the DUT.\n */\n reset(): Promise<void> {\n return this.fetch(`/power/dut/${this.id}/reset`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Configures the DUT.\n * @param config The configuration to apply.\n * @returns The updated DUT state.\n */\n configure(config: DutConfiguration): Promise<DutState> {\n return this.fetch(`/power/dut/${this.id}`, {\n method: 'PATCH',\n body: v.parse(dutConfiguration, config),\n schema: dutState,\n });\n }\n\n /**\n * Powers up the DUT to the specified voltage.\n * @param voltage The target voltage to set.\n * @returns The updated DUT state.\n */\n async power_up(voltage: AnalogOutputLevel): Promise<DutState> {\n return this.configure({ enabled: true, target_voltage: voltage });\n }\n\n /**\n * Powers down the DUT.\n * @returns The updated DUT state.\n */\n async power_down(): Promise<DutState> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Reads the current DUT state.\n * @returns The current DUT state.\n */\n read(): Promise<DutState> {\n return this.fetch(`/power/dut/${this.id}`, { schema: dutState });\n }\n\n /**\n * Reads the current drawn by the DUT.\n * @returns The current drawn by the DUT.\n */\n async read_current(): Promise<number> {\n return (await this.read()).current;\n }\n\n /**\n * Reads the voltage supplied to the DUT.\n * @returns The voltage supplied to the DUT.\n */\n async read_voltage(): Promise<number> {\n return (await this.read()).voltage;\n }\n}\n\n/** @hideconstructor */\nexport class Usb {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Resets the USB port.\n */\n reset(): Promise<void> {\n return this.fetch(`/power/usb/${this.id}/reset`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Configures the USB port.\n * @param config The configuration to apply.\n * @returns The updated USB state.\n */\n configure(config: UsbConfiguration): Promise<UsbState> {\n return this.fetch(`/power/usb/${this.id}`, {\n method: 'PATCH',\n body: v.parse(usbConfiguration, config),\n schema: usbState,\n });\n }\n\n /**\n * Powers up the USB port.\n * @returns The updated USB state.\n */\n power_up(): Promise<UsbState> {\n return this.configure({ enabled: true });\n }\n\n /**\n * Powers down the USB port.\n * @returns The updated USB state.\n */\n power_down(): Promise<UsbState> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Reads the current state of the USB port.\n * @returns The current USB state.\n */\n read(): Promise<UsbState> {\n return this.fetch(`/power/usb/${this.id}`, { schema: usbState });\n }\n\n /**\n * Reads the current drawn by the USB port.\n * @returns The current drawn by the USB port.\n */\n async read_current(): Promise<number> {\n return (await this.read()).current;\n }\n\n /**\n * Reads the voltage at the USB port.\n * @returns The voltage at the USB port.\n */\n async read_voltage(): Promise<number> {\n return (await this.read()).voltage;\n }\n}\n\n/** @hideconstructor */\nexport class RelayPower {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Reads the current state of the relay.\n * @returns The current relay state.\n */\n read(): Promise<RelayState> {\n return this.fetch(`/power/relay/${this.id}`, { schema: relayState });\n }\n\n /**\n * Reads the current drawn through the relay.\n * @returns The current drawn through the relay.\n */\n async read_current(): Promise<number> {\n return (await this.read()).current;\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { t as AnalogOutputLevel } from "./common-
|
|
2
|
-
import { n as Device } from "./management-
|
|
1
|
+
import { t as AnalogOutputLevel } from "./common-DAOxX-Zx.cjs";
|
|
2
|
+
import { n as Device } from "./management-BIDVdvlQ.cjs";
|
|
3
3
|
import { UpFetch } from "up-fetch";
|
|
4
4
|
import * as v from "valibot";
|
|
5
5
|
|
|
6
6
|
//#region src/api/power.d.ts
|
|
7
7
|
declare const dutState: v.ObjectSchema<{
|
|
8
8
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
9
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
10
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
9
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
10
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
11
11
|
readonly current: v.NumberSchema<undefined>;
|
|
12
12
|
}, undefined>;
|
|
13
13
|
type DutState = v.InferOutput<typeof dutState>;
|
|
14
14
|
declare const dutConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
15
15
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
16
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
17
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
16
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
17
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
18
18
|
readonly current: v.NumberSchema<undefined>;
|
|
19
|
-
}, undefined>, "~standard" | "~
|
|
19
|
+
}, undefined>, "~standard" | "~types" | "~run" | "entries"> & {
|
|
20
20
|
readonly entries: Pick<{
|
|
21
21
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
22
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
23
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
22
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
23
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
24
24
|
readonly current: v.NumberSchema<undefined>;
|
|
25
25
|
}, "enabled" | "target_voltage">;
|
|
26
26
|
readonly '~standard': v.StandardProps<{
|
|
@@ -33,7 +33,7 @@ declare const dutConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
33
33
|
readonly '~run': (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
34
34
|
enabled: boolean;
|
|
35
35
|
target_voltage: number;
|
|
36
|
-
}, v.
|
|
36
|
+
}, v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue>;
|
|
37
37
|
readonly '~types'?: {
|
|
38
38
|
readonly input: {
|
|
39
39
|
enabled: boolean;
|
|
@@ -43,12 +43,12 @@ declare const dutConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
43
43
|
enabled: boolean;
|
|
44
44
|
target_voltage: number;
|
|
45
45
|
};
|
|
46
|
-
readonly issue: v.
|
|
46
|
+
readonly issue: v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue;
|
|
47
47
|
} | undefined;
|
|
48
|
-
}, "~standard" | "~
|
|
48
|
+
}, "~standard" | "~types" | "~run" | "entries"> & {
|
|
49
49
|
readonly entries: {
|
|
50
50
|
readonly enabled: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
51
|
-
readonly target_voltage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
51
|
+
readonly target_voltage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>, undefined>;
|
|
52
52
|
};
|
|
53
53
|
readonly '~standard': v.StandardProps<{
|
|
54
54
|
enabled?: boolean | undefined;
|
|
@@ -60,7 +60,7 @@ declare const dutConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
60
60
|
readonly '~run': (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
61
61
|
enabled?: boolean | undefined;
|
|
62
62
|
target_voltage?: number | undefined;
|
|
63
|
-
}, v.
|
|
63
|
+
}, v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue>;
|
|
64
64
|
readonly '~types'?: {
|
|
65
65
|
readonly input: {
|
|
66
66
|
enabled?: boolean | undefined;
|
|
@@ -70,20 +70,20 @@ declare const dutConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
70
70
|
enabled?: boolean | undefined;
|
|
71
71
|
target_voltage?: number | undefined;
|
|
72
72
|
};
|
|
73
|
-
readonly issue: v.
|
|
73
|
+
readonly issue: v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue;
|
|
74
74
|
} | undefined;
|
|
75
75
|
};
|
|
76
76
|
type DutConfiguration = v.InferOutput<typeof dutConfiguration>;
|
|
77
77
|
declare const usbState: Omit<v.ObjectSchema<{
|
|
78
78
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
79
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
80
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
79
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
80
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
81
81
|
readonly current: v.NumberSchema<undefined>;
|
|
82
|
-
}, undefined>, "~standard" | "~
|
|
82
|
+
}, undefined>, "~standard" | "~types" | "~run" | "entries"> & {
|
|
83
83
|
readonly entries: Pick<{
|
|
84
84
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
85
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
86
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
85
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
86
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
87
87
|
readonly current: v.NumberSchema<undefined>;
|
|
88
88
|
}, "enabled" | "voltage" | "current">;
|
|
89
89
|
readonly '~standard': v.StandardProps<{
|
|
@@ -99,7 +99,7 @@ declare const usbState: Omit<v.ObjectSchema<{
|
|
|
99
99
|
enabled: boolean;
|
|
100
100
|
voltage: number;
|
|
101
101
|
current: number;
|
|
102
|
-
}, v.
|
|
102
|
+
}, v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue>;
|
|
103
103
|
readonly '~types'?: {
|
|
104
104
|
readonly input: {
|
|
105
105
|
enabled: boolean;
|
|
@@ -111,20 +111,20 @@ declare const usbState: Omit<v.ObjectSchema<{
|
|
|
111
111
|
voltage: number;
|
|
112
112
|
current: number;
|
|
113
113
|
};
|
|
114
|
-
readonly issue: v.
|
|
114
|
+
readonly issue: v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue;
|
|
115
115
|
} | undefined;
|
|
116
116
|
};
|
|
117
117
|
type UsbState = v.InferOutput<typeof usbState>;
|
|
118
118
|
declare const usbConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
119
119
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
120
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
121
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
120
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
121
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
122
122
|
readonly current: v.NumberSchema<undefined>;
|
|
123
|
-
}, undefined>, "~standard" | "~
|
|
123
|
+
}, undefined>, "~standard" | "~types" | "~run" | "entries"> & {
|
|
124
124
|
readonly entries: Pick<{
|
|
125
125
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
126
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
127
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
126
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
127
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
128
128
|
readonly current: v.NumberSchema<undefined>;
|
|
129
129
|
}, "enabled" | "voltage" | "current">;
|
|
130
130
|
readonly '~standard': v.StandardProps<{
|
|
@@ -140,7 +140,7 @@ declare const usbConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
140
140
|
enabled: boolean;
|
|
141
141
|
voltage: number;
|
|
142
142
|
current: number;
|
|
143
|
-
}, v.
|
|
143
|
+
}, v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue>;
|
|
144
144
|
readonly '~types'?: {
|
|
145
145
|
readonly input: {
|
|
146
146
|
enabled: boolean;
|
|
@@ -152,13 +152,13 @@ declare const usbConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
152
152
|
voltage: number;
|
|
153
153
|
current: number;
|
|
154
154
|
};
|
|
155
|
-
readonly issue: v.
|
|
155
|
+
readonly issue: v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue;
|
|
156
156
|
} | undefined;
|
|
157
|
-
}, "~standard" | "~
|
|
157
|
+
}, "~standard" | "~types" | "~run" | "entries"> & {
|
|
158
158
|
readonly entries: Pick<Pick<{
|
|
159
159
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
160
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
161
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
160
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
161
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
162
162
|
readonly current: v.NumberSchema<undefined>;
|
|
163
163
|
}, "enabled" | "voltage" | "current">, "enabled">;
|
|
164
164
|
readonly '~standard': v.StandardProps<{
|
|
@@ -182,14 +182,14 @@ declare const usbConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
182
182
|
type UsbConfiguration = v.InferOutput<typeof usbConfiguration>;
|
|
183
183
|
declare const relayState: Omit<v.ObjectSchema<{
|
|
184
184
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
185
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
186
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
185
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
186
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
187
187
|
readonly current: v.NumberSchema<undefined>;
|
|
188
|
-
}, undefined>, "~standard" | "~
|
|
188
|
+
}, undefined>, "~standard" | "~types" | "~run" | "entries"> & {
|
|
189
189
|
readonly entries: Pick<{
|
|
190
190
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
191
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
192
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
191
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
192
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
193
193
|
readonly current: v.NumberSchema<undefined>;
|
|
194
194
|
}, "current">;
|
|
195
195
|
readonly '~standard': v.StandardProps<{
|
|
@@ -340,4 +340,4 @@ declare class RelayPower {
|
|
|
340
340
|
}
|
|
341
341
|
//#endregion
|
|
342
342
|
export { RelayPower as a, UsbConfiguration as c, PowerApi as i, UsbState as l, DutConfiguration as n, RelayState as o, DutState as r, Usb as s, Dut as t };
|
|
343
|
-
//# sourceMappingURL=power-
|
|
343
|
+
//# sourceMappingURL=power-CQm1EIoO.d.cts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"power-
|
|
1
|
+
{"version":3,"file":"power-CQm1EIoO.d.cts","names":[],"sources":["../src/api/power.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -1,26 +1,26 @@
|
|
|
1
|
-
import { t as AnalogOutputLevel } from "./common-
|
|
2
|
-
import { n as Device } from "./management-
|
|
1
|
+
import { t as AnalogOutputLevel } from "./common-SiysH9tt.mjs";
|
|
2
|
+
import { n as Device } from "./management-CwNeejKZ.mjs";
|
|
3
3
|
import { UpFetch } from "up-fetch";
|
|
4
4
|
import * as v from "valibot";
|
|
5
5
|
|
|
6
6
|
//#region src/api/power.d.ts
|
|
7
7
|
declare const dutState: v.ObjectSchema<{
|
|
8
8
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
9
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
10
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
9
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
10
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
11
11
|
readonly current: v.NumberSchema<undefined>;
|
|
12
12
|
}, undefined>;
|
|
13
13
|
type DutState = v.InferOutput<typeof dutState>;
|
|
14
14
|
declare const dutConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
15
15
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
16
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
17
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
16
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
17
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
18
18
|
readonly current: v.NumberSchema<undefined>;
|
|
19
|
-
}, undefined>, "~standard" | "~
|
|
19
|
+
}, undefined>, "~standard" | "~types" | "~run" | "entries"> & {
|
|
20
20
|
readonly entries: Pick<{
|
|
21
21
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
22
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
23
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
22
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
23
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
24
24
|
readonly current: v.NumberSchema<undefined>;
|
|
25
25
|
}, "enabled" | "target_voltage">;
|
|
26
26
|
readonly '~standard': v.StandardProps<{
|
|
@@ -33,7 +33,7 @@ declare const dutConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
33
33
|
readonly '~run': (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
34
34
|
enabled: boolean;
|
|
35
35
|
target_voltage: number;
|
|
36
|
-
}, v.
|
|
36
|
+
}, v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue>;
|
|
37
37
|
readonly '~types'?: {
|
|
38
38
|
readonly input: {
|
|
39
39
|
enabled: boolean;
|
|
@@ -43,12 +43,12 @@ declare const dutConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
43
43
|
enabled: boolean;
|
|
44
44
|
target_voltage: number;
|
|
45
45
|
};
|
|
46
|
-
readonly issue: v.
|
|
46
|
+
readonly issue: v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue;
|
|
47
47
|
} | undefined;
|
|
48
|
-
}, "~standard" | "~
|
|
48
|
+
}, "~standard" | "~types" | "~run" | "entries"> & {
|
|
49
49
|
readonly entries: {
|
|
50
50
|
readonly enabled: v.OptionalSchema<v.BooleanSchema<undefined>, undefined>;
|
|
51
|
-
readonly target_voltage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
51
|
+
readonly target_voltage: v.OptionalSchema<v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>, undefined>;
|
|
52
52
|
};
|
|
53
53
|
readonly '~standard': v.StandardProps<{
|
|
54
54
|
enabled?: boolean | undefined;
|
|
@@ -60,7 +60,7 @@ declare const dutConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
60
60
|
readonly '~run': (dataset: v.UnknownDataset, config: v.Config<v.BaseIssue<unknown>>) => v.OutputDataset<{
|
|
61
61
|
enabled?: boolean | undefined;
|
|
62
62
|
target_voltage?: number | undefined;
|
|
63
|
-
}, v.
|
|
63
|
+
}, v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue>;
|
|
64
64
|
readonly '~types'?: {
|
|
65
65
|
readonly input: {
|
|
66
66
|
enabled?: boolean | undefined;
|
|
@@ -70,20 +70,20 @@ declare const dutConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
70
70
|
enabled?: boolean | undefined;
|
|
71
71
|
target_voltage?: number | undefined;
|
|
72
72
|
};
|
|
73
|
-
readonly issue: v.
|
|
73
|
+
readonly issue: v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue;
|
|
74
74
|
} | undefined;
|
|
75
75
|
};
|
|
76
76
|
type DutConfiguration = v.InferOutput<typeof dutConfiguration>;
|
|
77
77
|
declare const usbState: Omit<v.ObjectSchema<{
|
|
78
78
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
79
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
80
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
79
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
80
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
81
81
|
readonly current: v.NumberSchema<undefined>;
|
|
82
|
-
}, undefined>, "~standard" | "~
|
|
82
|
+
}, undefined>, "~standard" | "~types" | "~run" | "entries"> & {
|
|
83
83
|
readonly entries: Pick<{
|
|
84
84
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
85
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
86
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
85
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
86
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
87
87
|
readonly current: v.NumberSchema<undefined>;
|
|
88
88
|
}, "enabled" | "voltage" | "current">;
|
|
89
89
|
readonly '~standard': v.StandardProps<{
|
|
@@ -99,7 +99,7 @@ declare const usbState: Omit<v.ObjectSchema<{
|
|
|
99
99
|
enabled: boolean;
|
|
100
100
|
voltage: number;
|
|
101
101
|
current: number;
|
|
102
|
-
}, v.
|
|
102
|
+
}, v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue>;
|
|
103
103
|
readonly '~types'?: {
|
|
104
104
|
readonly input: {
|
|
105
105
|
enabled: boolean;
|
|
@@ -111,20 +111,20 @@ declare const usbState: Omit<v.ObjectSchema<{
|
|
|
111
111
|
voltage: number;
|
|
112
112
|
current: number;
|
|
113
113
|
};
|
|
114
|
-
readonly issue: v.
|
|
114
|
+
readonly issue: v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue;
|
|
115
115
|
} | undefined;
|
|
116
116
|
};
|
|
117
117
|
type UsbState = v.InferOutput<typeof usbState>;
|
|
118
118
|
declare const usbConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
119
119
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
120
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
121
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
120
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
121
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
122
122
|
readonly current: v.NumberSchema<undefined>;
|
|
123
|
-
}, undefined>, "~standard" | "~
|
|
123
|
+
}, undefined>, "~standard" | "~types" | "~run" | "entries"> & {
|
|
124
124
|
readonly entries: Pick<{
|
|
125
125
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
126
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
127
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
126
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
127
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
128
128
|
readonly current: v.NumberSchema<undefined>;
|
|
129
129
|
}, "enabled" | "voltage" | "current">;
|
|
130
130
|
readonly '~standard': v.StandardProps<{
|
|
@@ -140,7 +140,7 @@ declare const usbConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
140
140
|
enabled: boolean;
|
|
141
141
|
voltage: number;
|
|
142
142
|
current: number;
|
|
143
|
-
}, v.
|
|
143
|
+
}, v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue>;
|
|
144
144
|
readonly '~types'?: {
|
|
145
145
|
readonly input: {
|
|
146
146
|
enabled: boolean;
|
|
@@ -152,13 +152,13 @@ declare const usbConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
152
152
|
voltage: number;
|
|
153
153
|
current: number;
|
|
154
154
|
};
|
|
155
|
-
readonly issue: v.
|
|
155
|
+
readonly issue: v.BooleanIssue | v.NumberIssue | v.MinValueIssue<number, -25> | v.MaxValueIssue<number, 25> | v.ObjectIssue;
|
|
156
156
|
} | undefined;
|
|
157
|
-
}, "~standard" | "~
|
|
157
|
+
}, "~standard" | "~types" | "~run" | "entries"> & {
|
|
158
158
|
readonly entries: Pick<Pick<{
|
|
159
159
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
160
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
161
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
160
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
161
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
162
162
|
readonly current: v.NumberSchema<undefined>;
|
|
163
163
|
}, "enabled" | "voltage" | "current">, "enabled">;
|
|
164
164
|
readonly '~standard': v.StandardProps<{
|
|
@@ -182,14 +182,14 @@ declare const usbConfiguration: Omit<Omit<v.ObjectSchema<{
|
|
|
182
182
|
type UsbConfiguration = v.InferOutput<typeof usbConfiguration>;
|
|
183
183
|
declare const relayState: Omit<v.ObjectSchema<{
|
|
184
184
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
185
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
186
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
185
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
186
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
187
187
|
readonly current: v.NumberSchema<undefined>;
|
|
188
|
-
}, undefined>, "~standard" | "~
|
|
188
|
+
}, undefined>, "~standard" | "~types" | "~run" | "entries"> & {
|
|
189
189
|
readonly entries: Pick<{
|
|
190
190
|
readonly enabled: v.BooleanSchema<undefined>;
|
|
191
|
-
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
192
|
-
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -
|
|
191
|
+
readonly target_voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
192
|
+
readonly voltage: v.SchemaWithPipe<readonly [v.NumberSchema<undefined>, v.MinValueAction<number, -25, undefined>, v.MaxValueAction<number, 25, undefined>]>;
|
|
193
193
|
readonly current: v.NumberSchema<undefined>;
|
|
194
194
|
}, "current">;
|
|
195
195
|
readonly '~standard': v.StandardProps<{
|
|
@@ -340,4 +340,4 @@ declare class RelayPower {
|
|
|
340
340
|
}
|
|
341
341
|
//#endregion
|
|
342
342
|
export { RelayPower as a, UsbConfiguration as c, PowerApi as i, UsbState as l, DutConfiguration as n, RelayState as o, DutState as r, Usb as s, Dut as t };
|
|
343
|
-
//# sourceMappingURL=power-
|
|
343
|
+
//# sourceMappingURL=power-CbQidLPp.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"power-
|
|
1
|
+
{"version":3,"file":"power-CbQidLPp.d.mts","names":[],"sources":["../src/api/power.ts"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{t as e}from"./common-B6_Yo59b.mjs";import*as t from"valibot";const n=t.object({enabled:t.boolean(),target_voltage:e,voltage:e,current:t.number()}),r=t.partial(t.pick(n,[`enabled`,`target_voltage`])),i=t.pick(n,[`enabled`,`current`,`voltage`]),a=t.pick(i,[`enabled`]),o=t.pick(n,[`current`]);var s=class{usb_count;dut_count=1;constructor(e,t){this.fetch=e,this.usb_count=t.capabilities.usb_ports.reduce((e,t)=>e+t.count,0)}reset(){return this.fetch(`/power/reset`,{method:`POST`,parseResponse:()=>{}})}dut(e){if(e<0||e>=this.dut_count)throw Error(`Invalid DUT id ${e} (RESOURCE_NOT_FOUND)\n Suggestion: Use a DUT ID between 0 and ${this.dut_count-1}\n Path: /power/dut/${e}`);return new c(this.fetch,e)}usb(e){if(e<0||e>=this.usb_count)throw Error(`Invalid USB port ${e} (RESOURCE_NOT_FOUND)\n Suggestion: Use a USB port ID between 0 and ${this.usb_count-1}\n Path: /power/usb/${e}`);return new l(this.fetch,e)}relay_4(){return new u(this.fetch,4)}},c=class{constructor(e,t){this.fetch=e,this.id=t}reset(){return this.fetch(`/power/dut/${this.id}/reset`,{method:`POST`,parseResponse:()=>{}})}configure(e){return this.fetch(`/power/dut/${this.id}`,{method:`PATCH`,body:t.parse(r,e),schema:n})}async power_up(e){return this.configure({enabled:!0,target_voltage:e})}async power_down(){return this.configure({enabled:!1})}read(){return this.fetch(`/power/dut/${this.id}`,{schema:n})}async read_current(){return(await this.read()).current}async read_voltage(){return(await this.read()).voltage}},l=class{constructor(e,t){this.fetch=e,this.id=t}reset(){return this.fetch(`/power/usb/${this.id}/reset`,{method:`POST`,parseResponse:()=>{}})}configure(e){return this.fetch(`/power/usb/${this.id}`,{method:`PATCH`,body:t.parse(a,e),schema:i})}power_up(){return this.configure({enabled:!0})}power_down(){return this.configure({enabled:!1})}read(){return this.fetch(`/power/usb/${this.id}`,{schema:i})}async read_current(){return(await this.read()).current}async read_voltage(){return(await this.read()).voltage}},u=class{constructor(e,t){this.fetch=e,this.id=t}read(){return this.fetch(`/power/relay/${this.id}`,{schema:o})}async read_current(){return(await this.read()).current}};export{l as i,s as n,u as r,c as t};
|
|
2
|
+
//# sourceMappingURL=power-DqULYfeX.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"power-DqULYfeX.mjs","names":["fetch: UpFetch","id: number"],"sources":["../src/api/power.ts"],"sourcesContent":["import type { UpFetch } from 'up-fetch';\nimport * as v from 'valibot';\n\nimport { analogLevel, type AnalogOutputLevel } from './common';\nimport type { Device } from './management';\n\nexport type { AnalogOutputLevel };\n\nconst dutState = v.object({\n enabled: v.boolean(),\n target_voltage: analogLevel,\n voltage: analogLevel,\n current: v.number(),\n});\nexport type DutState = v.InferOutput<typeof dutState>;\n\nconst dutConfiguration = v.partial(v.pick(dutState, ['enabled', 'target_voltage']));\nexport type DutConfiguration = v.InferOutput<typeof dutConfiguration>;\n\nconst usbState = v.pick(dutState, ['enabled', 'current', 'voltage']);\nexport type UsbState = v.InferOutput<typeof usbState>;\n\nconst usbConfiguration = v.pick(usbState, ['enabled']);\nexport type UsbConfiguration = v.InferOutput<typeof usbConfiguration>;\n\nconst relayState = v.pick(dutState, ['current']);\nexport type RelayState = v.InferOutput<typeof relayState>;\n\n/** @hideconstructor */\nexport class PowerApi {\n private readonly usb_count: number;\n private readonly dut_count = 1;\n\n constructor(private readonly fetch: UpFetch, device: Device) {\n this.usb_count = device.capabilities.usb_ports.reduce((a, b) => a + b.count, 0);\n }\n\n /**\n * Resets the power API.\n */\n reset(): Promise<void> {\n return this.fetch('/power/reset', { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Access a specific DUT by id.\n * @param id The DUT id.\n * @returns The DUT instance.\n */\n dut(id: number): Dut {\n if (id < 0 || id >= this.dut_count) {\n throw new Error(\n `Invalid DUT id ${id} (RESOURCE_NOT_FOUND)\\n Suggestion: Use a DUT ID between 0 and ${\n this.dut_count - 1\n }\\n Path: /power/dut/${id}`,\n );\n }\n\n return new Dut(this.fetch, id);\n }\n\n /**\n * Access a specific USB port by id.\n * @param id The USB port id.\n * @returns The USB port instance.\n */\n usb(id: number): Usb {\n if (id < 0 || id >= this.usb_count) {\n throw new Error(\n `Invalid USB port ${id} (RESOURCE_NOT_FOUND)\\n Suggestion: Use a USB port ID between 0 and ${\n this.usb_count - 1\n }\\n Path: /power/usb/${id}`,\n );\n }\n\n return new Usb(this.fetch, id);\n }\n\n /**\n * Access the relay at index 4.\n * @returns The relay instance.\n */\n relay_4(): RelayPower {\n return new RelayPower(this.fetch, 4);\n }\n}\n\n/** @hideconstructor */\nexport class Dut {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Resets the DUT.\n */\n reset(): Promise<void> {\n return this.fetch(`/power/dut/${this.id}/reset`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Configures the DUT.\n * @param config The configuration to apply.\n * @returns The updated DUT state.\n */\n configure(config: DutConfiguration): Promise<DutState> {\n return this.fetch(`/power/dut/${this.id}`, {\n method: 'PATCH',\n body: v.parse(dutConfiguration, config),\n schema: dutState,\n });\n }\n\n /**\n * Powers up the DUT to the specified voltage.\n * @param voltage The target voltage to set.\n * @returns The updated DUT state.\n */\n async power_up(voltage: AnalogOutputLevel): Promise<DutState> {\n return this.configure({ enabled: true, target_voltage: voltage });\n }\n\n /**\n * Powers down the DUT.\n * @returns The updated DUT state.\n */\n async power_down(): Promise<DutState> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Reads the current DUT state.\n * @returns The current DUT state.\n */\n read(): Promise<DutState> {\n return this.fetch(`/power/dut/${this.id}`, { schema: dutState });\n }\n\n /**\n * Reads the current drawn by the DUT.\n * @returns The current drawn by the DUT.\n */\n async read_current(): Promise<number> {\n return (await this.read()).current;\n }\n\n /**\n * Reads the voltage supplied to the DUT.\n * @returns The voltage supplied to the DUT.\n */\n async read_voltage(): Promise<number> {\n return (await this.read()).voltage;\n }\n}\n\n/** @hideconstructor */\nexport class Usb {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Resets the USB port.\n */\n reset(): Promise<void> {\n return this.fetch(`/power/usb/${this.id}/reset`, { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Configures the USB port.\n * @param config The configuration to apply.\n * @returns The updated USB state.\n */\n configure(config: UsbConfiguration): Promise<UsbState> {\n return this.fetch(`/power/usb/${this.id}`, {\n method: 'PATCH',\n body: v.parse(usbConfiguration, config),\n schema: usbState,\n });\n }\n\n /**\n * Powers up the USB port.\n * @returns The updated USB state.\n */\n power_up(): Promise<UsbState> {\n return this.configure({ enabled: true });\n }\n\n /**\n * Powers down the USB port.\n * @returns The updated USB state.\n */\n power_down(): Promise<UsbState> {\n return this.configure({ enabled: false });\n }\n\n /**\n * Reads the current state of the USB port.\n * @returns The current USB state.\n */\n read(): Promise<UsbState> {\n return this.fetch(`/power/usb/${this.id}`, { schema: usbState });\n }\n\n /**\n * Reads the current drawn by the USB port.\n * @returns The current drawn by the USB port.\n */\n async read_current(): Promise<number> {\n return (await this.read()).current;\n }\n\n /**\n * Reads the voltage at the USB port.\n * @returns The voltage at the USB port.\n */\n async read_voltage(): Promise<number> {\n return (await this.read()).voltage;\n }\n}\n\n/** @hideconstructor */\nexport class RelayPower {\n constructor(private readonly fetch: UpFetch, public readonly id: number) {}\n\n /**\n * Reads the current state of the relay.\n * @returns The current relay state.\n */\n read(): Promise<RelayState> {\n return this.fetch(`/power/relay/${this.id}`, { schema: relayState });\n }\n\n /**\n * Reads the current drawn through the relay.\n * @returns The current drawn through the relay.\n */\n async read_current(): Promise<number> {\n return (await this.read()).current;\n }\n}\n"],"mappings":"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"}
|
package/build/power.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
require(`./common-
|
|
1
|
+
require(`./common-DBMgtoTL.cjs`);const e=require(`./power-1yzD9ymI.cjs`);exports.Dut=e.t,exports.PowerApi=e.n,exports.RelayPower=e.r,exports.Usb=e.i;
|
package/build/power.d.cts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as AnalogOutputLevel } from "./common-
|
|
2
|
-
import "./management-
|
|
3
|
-
import { a as RelayPower, c as UsbConfiguration, i as PowerApi, l as UsbState, n as DutConfiguration, o as RelayState, r as DutState, s as Usb, t as Dut } from "./power-
|
|
1
|
+
import { t as AnalogOutputLevel } from "./common-DAOxX-Zx.cjs";
|
|
2
|
+
import "./management-BIDVdvlQ.cjs";
|
|
3
|
+
import { a as RelayPower, c as UsbConfiguration, i as PowerApi, l as UsbState, n as DutConfiguration, o as RelayState, r as DutState, s as Usb, t as Dut } from "./power-CQm1EIoO.cjs";
|
|
4
4
|
export { AnalogOutputLevel, Dut, DutConfiguration, DutState, PowerApi, RelayPower, RelayState, Usb, UsbConfiguration, UsbState };
|
package/build/power.d.mts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { t as AnalogOutputLevel } from "./common-
|
|
2
|
-
import "./management-
|
|
3
|
-
import { a as RelayPower, c as UsbConfiguration, i as PowerApi, l as UsbState, n as DutConfiguration, o as RelayState, r as DutState, s as Usb, t as Dut } from "./power-
|
|
1
|
+
import { t as AnalogOutputLevel } from "./common-SiysH9tt.mjs";
|
|
2
|
+
import "./management-CwNeejKZ.mjs";
|
|
3
|
+
import { a as RelayPower, c as UsbConfiguration, i as PowerApi, l as UsbState, n as DutConfiguration, o as RelayState, r as DutState, s as Usb, t as Dut } from "./power-CbQidLPp.mjs";
|
|
4
4
|
export { AnalogOutputLevel, Dut, DutConfiguration, DutState, PowerApi, RelayPower, RelayState, Usb, UsbConfiguration, UsbState };
|
package/build/power.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import"./common-
|
|
1
|
+
import"./common-B6_Yo59b.mjs";import{i as e,n as t,r as n,t as r}from"./power-DqULYfeX.mjs";export{r as Dut,t as PowerApi,n as RelayPower,e as Usb};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import*as e from"valibot";const t=e.picklist([`open`,`closed`]),n=e.array(t),r=e.object({state:t}),i=e.picklist([`open`,`close`]);e.object({action:i});var a=class{constructor(e){this.fetch=e}reset(){return this.fetch(`/relays/reset`,{method:`POST`,parseResponse:()=>{}})}relay(e){return new o(this.fetch,e)}read(){return this.fetch(`/relays`,{schema:n})}open(){return this.fetch(`/relays`,{method:`POST`,body:{action:`open`},schema:n})}close(){return this.fetch(`/relays`,{method:`POST`,body:{action:`close`},schema:n})}},o=class{constructor(e,t){this.fetch=e,this.id=t}async read(){return(await this.fetch(`/relays/${this.id}`,{schema:r})).state}async is_open(){return await this.read()===`open`}async is_closed(){return await this.read()===`closed`}async open(){return(await this.fetch(`/relays/${this.id}`,{method:`POST`,body:{action:`open`},schema:r})).state}async close(){return(await this.fetch(`/relays/${this.id}`,{method:`POST`,body:{action:`close`},schema:r})).state}};export{a as n,o as t};
|
|
2
|
-
//# sourceMappingURL=relays-
|
|
2
|
+
//# sourceMappingURL=relays-BPQj7abl.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"relays-
|
|
1
|
+
{"version":3,"file":"relays-BPQj7abl.mjs","names":["fetch: UpFetch","id: number"],"sources":["../src/api/relays.ts"],"sourcesContent":["import type { UpFetch } from 'up-fetch';\nimport * as v from 'valibot';\n\nconst state = v.picklist(['open', 'closed']);\nexport type State = v.InferOutput<typeof state>;\nconst states = v.array(state);\nexport type States = v.InferOutput<typeof states>;\nconst relayState = v.object({ state: state });\n\nconst action = v.picklist(['open', 'close']);\nconst relayAction = v.object({ action: action });\ntype RelayAction = v.InferOutput<typeof relayAction>;\n\n/** @hideconstructor */\nexport class RelaysApi {\n constructor(private readonly fetch: UpFetch) {}\n\n /**\n * Resets all relays to their default state.\n */\n reset() {\n return this.fetch('/relays/reset', { method: 'POST', parseResponse: () => {} });\n }\n\n /**\n * Access a specific relay by id.\n * @param id The relay id.\n * @returns The relay instance.\n */\n relay(id: number): Relay {\n return new Relay(this.fetch, id);\n }\n\n /**\n * Reads the state of all relays.\n * @returns The state of all relays.\n */\n read(): Promise<States> {\n return this.fetch(`/relays`, { schema: states });\n }\n\n /**\n * Opens all the relays.\n * @returns The new state of all relays.\n */\n open(): Promise<States> {\n return this.fetch(`/relays`, {\n method: 'POST',\n body: { action: 'open' } satisfies RelayAction,\n schema: states,\n });\n }\n\n /**\n * Closes all the relays.\n * @returns The new state of all relays.\n */\n close(): Promise<States> {\n return this.fetch(`/relays`, {\n method: 'POST',\n body: { action: 'close' } satisfies RelayAction,\n schema: states,\n });\n }\n}\n\n/** @hideconstructor */\nexport class Relay {\n constructor(\n private readonly fetch: UpFetch,\n /**\n * The relay id.\n */\n public readonly id: number,\n ) {}\n\n /**\n * Reads the state of the relay.\n * @returns The relay state.\n */\n async read(): Promise<State> {\n return (await this.fetch(`/relays/${this.id}`, { schema: relayState })).state;\n }\n\n /**\n * Returns whether the relay is open.\n * @returns True if the relay is open, false otherwise.\n */\n async is_open(): Promise<boolean> {\n return (await this.read()) === 'open';\n }\n\n /**\n * Returns whether the relay is closed.\n * @returns True if the relay is closed, false otherwise.\n */\n async is_closed(): Promise<boolean> {\n return (await this.read()) === 'closed';\n }\n\n /**\n * Opens the relay.\n * @returns The new relay state.\n */\n async open(): Promise<State> {\n return (await this.fetch(`/relays/${this.id}`, {\n method: 'POST',\n body: { action: 'open' } satisfies RelayAction,\n schema: relayState,\n }))\n .state;\n }\n\n /**\n * Closes the relay.\n * @returns The new relay state.\n */\n async close(): Promise<State> {\n return (await this.fetch(`/relays/${this.id}`, {\n method: 'POST',\n body: { action: 'close' } satisfies RelayAction,\n schema: relayState,\n }))\n .state;\n }\n}\n"],"mappings":"0BAGA,MAAM,EAAQ,EAAE,SAAS,CAAC,OAAQ,SAAS,CAAC,CAEtC,EAAS,EAAE,MAAM,EAAM,CAEvB,EAAa,EAAE,OAAO,CAAS,QAAO,CAAC,CAEvC,EAAS,EAAE,SAAS,CAAC,OAAQ,QAAQ,CAAC,CACxB,EAAE,OAAO,CAAU,SAAQ,CAAC,CAIhD,IAAa,EAAb,KAAuB,CACrB,YAAY,EAAiC,CAAhB,KAAA,MAAA,EAK7B,OAAQ,CACN,OAAO,KAAK,MAAM,gBAAiB,CAAE,OAAQ,OAAQ,kBAAqB,GAAI,CAAC,CAQjF,MAAM,EAAmB,CACvB,OAAO,IAAI,EAAM,KAAK,MAAO,EAAG,CAOlC,MAAwB,CACtB,OAAO,KAAK,MAAM,UAAW,CAAE,OAAQ,EAAQ,CAAC,CAOlD,MAAwB,CACtB,OAAO,KAAK,MAAM,UAAW,CAC3B,OAAQ,OACR,KAAM,CAAE,OAAQ,OAAQ,CACxB,OAAQ,EACT,CAAC,CAOJ,OAAyB,CACvB,OAAO,KAAK,MAAM,UAAW,CAC3B,OAAQ,OACR,KAAM,CAAE,OAAQ,QAAS,CACzB,OAAQ,EACT,CAAC,GAKO,EAAb,KAAmB,CACjB,YACE,EAIA,EACA,CALiB,KAAA,MAAA,EAID,KAAA,GAAA,EAOlB,MAAM,MAAuB,CAC3B,OAAQ,MAAM,KAAK,MAAM,WAAW,KAAK,KAAM,CAAE,OAAQ,EAAY,CAAC,EAAE,MAO1E,MAAM,SAA4B,CAChC,OAAQ,MAAM,KAAK,MAAM,GAAM,OAOjC,MAAM,WAA8B,CAClC,OAAQ,MAAM,KAAK,MAAM,GAAM,SAOjC,MAAM,MAAuB,CAC3B,OAAQ,MAAM,KAAK,MAAM,WAAW,KAAK,KAAM,CAC7C,OAAQ,OACR,KAAM,CAAE,OAAQ,OAAQ,CACxB,OAAQ,EACT,CAAC,EACC,MAOL,MAAM,OAAwB,CAC5B,OAAQ,MAAM,KAAK,MAAM,WAAW,KAAK,KAAM,CAC7C,OAAQ,OACR,KAAM,CAAE,OAAQ,QAAS,CACzB,OAAQ,EACT,CAAC,EACC"}
|