@w2a-iiot/raw-javascript-parsers
Version:
This packages contain the raw built javascript parsers for WIKA's IIoT devices.
97 lines (95 loc) • 50 kB
JavaScript
var __commonJSMin=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);function _typeof(e){"@babel/helpers - typeof";return _typeof=typeof Symbol==`function`&&typeof Symbol.iterator==`symbol`?function(e){return typeof e}:function(e){return e&&typeof Symbol==`function`&&e.constructor===Symbol&&e!==Symbol.prototype?`symbol`:typeof e},_typeof(e)}function toPrimitive(e,n){if(_typeof(e)!=`object`||!e)return e;var r=e[Symbol.toPrimitive];if(r!==void 0){var i=r.call(e,n||`default`);if(_typeof(i)!=`object`)return i;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(n===`string`?String:Number)(e)}function toPropertyKey(e){var r=toPrimitive(e,`string`);return _typeof(r)==`symbol`?r:r+``}function _defineProperty(e,t,n){return(t=toPropertyKey(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _objectSpread2(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]==null?{}:arguments[t];t%2?ownKeys(Object(n),!0).forEach(function(t){_defineProperty(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ownKeys(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}function getGlobalConfig(e){return{lang:e?.lang??void 0,message:e?.message,abortEarly:e?.abortEarly??void 0,abortPipeEarly:e?.abortPipeEarly??void 0}}function _stringify(e){var t;let n=typeof e;return n===`string`?`"${e}"`:n===`number`||n===`bigint`||n===`boolean`?`${e}`:n===`object`||n===`function`?(e&&((t=Object.getPrototypeOf(e))==null||(t=t.constructor)==null?void 0:t.name))??`null`:n}function _addIssue(e,t,n,r,i){let a=i&&`input`in i?i.input:n.value,o=i?.expected??e.expects??null,s=i?.received??_stringify(a),l={kind:e.kind,type:e.type,input:a,expected:o,received:s,message:`Invalid ${t}: ${o?`Expected ${o} but r`:`R`}eceived ${s}`,requirement:e.requirement,path:i?.path,issues:i?.issues,lang:r.lang,abortEarly:r.abortEarly,abortPipeEarly:r.abortPipeEarly},u=e.kind===`schema`,d=i?.message??e.message??(e.reference,l.lang,void 0)??(u?(l.lang,void 0):null)??r.message??(l.lang,void 0);d!==void 0&&(l.message=typeof d==`function`?d(l):d),u&&(n.typed=!1),n.issues?n.issues.push(l):n.issues=[l]}function _getStandardProps(e){return{version:1,vendor:`valibot`,validate(t){return e[`~run`]({value:t},getGlobalConfig())}}}function _joinExpects(e,t){let n=[...new Set(e)];return n.length>1?`(${n.join(` ${t} `)})`:n[0]??`never`}const HEXADECIMAL_REGEX=/^(?:0[hx])?[\da-fA-F]+$/u;function hexadecimal(e){return{kind:`validation`,type:`hexadecimal`,reference:hexadecimal,async:!1,expects:null,requirement:HEXADECIMAL_REGEX,message:e,"~run"(e,t){return e.typed&&!this.requirement.test(e.value)&&_addIssue(this,`hexadecimal`,e,t),e}}}function integer(e){return{kind:`validation`,type:`integer`,reference:integer,async:!1,expects:null,requirement:Number.isInteger,message:e,"~run"(e,t){return e.typed&&!this.requirement(e.value)&&_addIssue(this,`integer`,e,t),e}}}function maxValue(e,t){return{kind:`validation`,type:`max_value`,reference:maxValue,async:!1,expects:`<=${e instanceof Date?e.toJSON():_stringify(e)}`,requirement:e,message:t,"~run"(e,t){return e.typed&&!(e.value<=this.requirement)&&_addIssue(this,`value`,e,t,{received:e.value instanceof Date?e.value.toJSON():_stringify(e.value)}),e}}}function minValue(e,t){return{kind:`validation`,type:`min_value`,reference:minValue,async:!1,expects:`>=${e instanceof Date?e.toJSON():_stringify(e)}`,requirement:e,message:t,"~run"(e,t){return e.typed&&!(e.value>=this.requirement)&&_addIssue(this,`value`,e,t,{received:e.value instanceof Date?e.value.toJSON():_stringify(e.value)}),e}}}function transform(e){return{kind:`transformation`,type:`transform`,reference:transform,async:!1,operation:e,"~run"(e){return e.value=this.operation(e.value),e}}}function getFallback(e,t,n){return typeof e.fallback==`function`?e.fallback(t,n):e.fallback}function getDefault(e,t,n){return typeof e.default==`function`?e.default(t,n):e.default}function array(e,t){return{kind:`schema`,type:`array`,reference:array,expects:`Array`,async:!1,item:e,message:t,get"~standard"(){return _getStandardProps(this)},"~run"(e,t){let n=e.value;if(Array.isArray(n)){e.typed=!0,e.value=[];for(let i=0;i<n.length;i++){let a=n[i],o=this.item[`~run`]({value:a},t);if(o.issues){let s={type:`array`,origin:`value`,input:n,key:i,value:a};for(let t of o.issues){var r;t.path?t.path.unshift(s):t.path=[s],(r=e.issues)==null||r.push(t)}if(e.issues||=o.issues,t.abortEarly){e.typed=!1;break}}o.typed||(e.typed=!1),e.value.push(o.value)}}else _addIssue(this,`type`,e,t);return e}}}function number(e){return{kind:`schema`,type:`number`,reference:number,expects:`number`,async:!1,message:e,get"~standard"(){return _getStandardProps(this)},"~run"(e,t){return typeof e.value==`number`&&!isNaN(e.value)?e.typed=!0:_addIssue(this,`type`,e,t),e}}}function object(e,t){return{kind:`schema`,type:`object`,reference:object,expects:`Object`,async:!1,entries:e,message:t,get"~standard"(){return _getStandardProps(this)},"~run"(e,t){let n=e.value;if(n&&typeof n==`object`){e.typed=!0,e.value={};for(let i in this.entries){let a=this.entries[i];if(i in n||(a.type===`exact_optional`||a.type===`optional`||a.type===`nullish`)&&a.default!==void 0){let o=i in n?n[i]:getDefault(a),s=a[`~run`]({value:o},t);if(s.issues){let a={type:`object`,origin:`value`,input:n,key:i,value:o};for(let t of s.issues){var r;t.path?t.path.unshift(a):t.path=[a],(r=e.issues)==null||r.push(t)}if(e.issues||=s.issues,t.abortEarly){e.typed=!1;break}}s.typed||(e.typed=!1),e.value[i]=s.value}else if(a.fallback!==void 0)e.value[i]=getFallback(a);else if(a.type!==`exact_optional`&&a.type!==`optional`&&a.type!==`nullish`&&(_addIssue(this,`key`,e,t,{input:void 0,expected:`"${i}"`,path:[{type:`object`,origin:`key`,input:n,key:i,value:n[i]}]}),t.abortEarly))break}}else _addIssue(this,`type`,e,t);return e}}}function optional(e,t){return{kind:`schema`,type:`optional`,reference:optional,expects:`(${e.expects} | undefined)`,async:!1,wrapped:e,default:t,get"~standard"(){return _getStandardProps(this)},"~run"(e,t){return e.value===void 0&&(this.default!==void 0&&(e.value=getDefault(this,e,t)),e.value===void 0)?(e.typed=!0,e):this.wrapped[`~run`](e,t)}}}function string(e){return{kind:`schema`,type:`string`,reference:string,expects:`string`,async:!1,message:e,get"~standard"(){return _getStandardProps(this)},"~run"(e,t){return typeof e.value==`string`?e.typed=!0:_addIssue(this,`type`,e,t),e}}}function _subIssues(e){let t;if(e)for(let n of e)t?t.push(...n.issues):t=n.issues;return t}function union(e,t){return{kind:`schema`,type:`union`,reference:union,expects:_joinExpects(e.map(e=>e.expects),`|`),async:!1,options:e,message:t,get"~standard"(){return _getStandardProps(this)},"~run"(e,t){let n,r,i;for(let a of this.options){let o=a[`~run`]({value:e.value},t);if(o.typed)if(o.issues)r?r.push(o):r=[o];else{n=o;break}else i?i.push(o):i=[o]}if(n)return n;if(r){if(r.length===1)return r[0];_addIssue(this,`type`,e,t,{issues:_subIssues(r)}),e.typed=!0}else if(i?.length===1)return i[0];else _addIssue(this,`type`,e,t,{issues:_subIssues(i)});return e}}}function pipe(...e){return _objectSpread2(_objectSpread2({},e[0]),{},{pipe:e,get"~standard"(){return _getStandardProps(this)},"~run"(t,n){for(let r of e)if(r.kind!==`metadata`){if(t.issues&&(r.kind===`schema`||r.kind===`transformation`)){t.typed=!1;break}(!t.issues||!n.abortEarly&&!n.abortPipeEarly)&&(t=r[`~run`](t,n))}return t}})}function safeParse(e,t,n){let r=e[`~run`]({value:t},getGlobalConfig(n));return{typed:r.typed,success:!r.issues,output:r.value,issues:r.issues}}function checkChannelsValidity(e,t){let n=new Set;e.forEach(e=>{if(e.start>=e.end)throw t?Error(`Invalid channel range in codec ${t}: ${e.start} >= ${e.end} in channel ${e.name}`):Error(`Invalid channel range: ${e.start} >= ${e.end} in channel ${e.name}`);if(n.has(e.name))throw t?Error(`Duplicate channel name found in codec ${t}: ${e.name}`):Error(`Duplicate channel name found: ${e.name}`);n.add(e.name)})}function checkCodecsValidity(e){if(e.length===0)throw Error(`At least one codec must be provided`);e.forEach(e=>{checkChannelsValidity(e.getChannels(),e.name)}),e.forEach((t,n)=>{if(e.filter((e,t)=>t!==n).some(e=>e.name===t.name))throw Error(`Codec names must be unique. Duplicate found: ${t.name}`)});let t=e[0].getChannels().map(e=>e.name);e.forEach((e,n)=>{if(n===0)return;let r=e.getChannels().map(e=>e.name),i={missing:[],extra:[]};if(r.forEach(e=>{t.includes(e)||i.extra.push(e)}),t.forEach(e=>{r.includes(e)||i.missing.push(e)}),i.extra.length>0)throw Error(`Codec ${e.name} has extra channels not present in other codecs: ${i.extra.join(`, `)}`);if(i.missing.length>0)throw Error(`Codec ${e.name} is missing channels present in other codecs: ${i.missing.join(`, `)}`)});let n=new Map,r={};return e.forEach(e=>{e.getChannels().forEach(e=>{let t=[e.start,e.end],i=e.adjustMeasurementRangeDisallowed??!1;if(n.has(e.name)){let a=n.get(e.name);if(a[0]!==t[0]||a[1]!==t[1])throw Error(`Channel ${e.name} has inconsistent ranges across codecs: ${JSON.stringify(a)} vs ${JSON.stringify(t)}`);let o=r[e.name];if(o!==i)throw Error(`Channel ${e.name} has inconsistent adjustMeasurementRangeDisallowed settings across codecs: ${o} vs ${i}`)}else n.set(e.name,t),r[e.name]=i})}),r}function createFPortSchema(){return pipe(number(),minValue(1),maxValue(255),integer())}function createRecvTimeSchema(){return optional(string())}function createUplinkInputSchema(){return object({bytes:array(pipe(number(),minValue(0),maxValue(255),integer())),fPort:optional(pipe(number(),minValue(1),maxValue(224),integer())),recvTime:optional(string())},"Uplink input should be an object with `bytes` and optional `fPort` and `recvTime` properties.")}function createHexUplinkInputSchema(){return pipe(union([object({bytes:pipe(string()),fPort:optional(createFPortSchema()),recvTime:createRecvTimeSchema()}),string()]),transform(e=>typeof e==`string`?{bytes:e}:e))}function nstr(e,t={}){let{threshold:n=4,maxDecimals:r=10}=t;if(Number.isNaN(e))return`NaN`;if(!isFinite(e)||Number.isInteger(e))return e.toString();let i=e.toFixed(r),a=-1,o=``,s=i.indexOf(`.`),c=s>=0?s+1:i.length;for(let e=c;e<i.length;e++){let t=i[e];if(t===`0`||t===`9`){let r=1,s=e+1;for(;s<i.length&&i[s]===t;)r++,s++;if(r>=n){a=e,o=t;break}e=s-1}}if(a!==-1){let e=i.substring(0,a);if(o===`9`){let t=e,n=Number.parseFloat(t),r=t.indexOf(`.`),i=r>=0?t.length-r-1:0,a=10**-i,o=n<0?n-a:n+a;e=i>0?o.toFixed(i):o.toString()}let t=e.replace(/\.?0+$/,``);return t.endsWith(`.`)&&(t=t.slice(0,-1)),(t===`-0.`||t===`0.`||t===`-0`||t===`0`)&&(t=`0`),t}let l=i.replace(/\.?0+$/,``);return l.endsWith(`.`)&&(l=l.slice(0,-1)),(l===`-0.`||l===`0.`||l===`-0`||l===`0`)&&(l=`0`),l}function getRoundingDecimals(e,t){let n=t??4;return e===void 0||Number.isNaN(e)||e===-1/0?n:e===1/0?1/0:Math.floor(e)>=0?Math.floor(e):n}function hexStringToIntArray(e){let t=e.replaceAll(` `,``);t=t.startsWith(`0x`)?t.slice(2):t;let n=safeParse(pipe(string(),hexadecimal()),t);if(!n.success)return null;let r=[];for(let e=0;e<n.output.length;e+=2){let t=Number.parseInt(n.output.slice(e,e+2),16);r.push(t)}return r}function roundValue(e,t){if(t=typeof t==`number`?Math.min(Math.max(0,Math.floor(t)),100):void 0,Number.isInteger(e))return e;let n=nstr(e+5*2**-52,{maxDecimals:t});return n===``?0:Number.parseFloat(n)}function intTuple4ToFloat32(e){let t=new ArrayBuffer(4),n=new DataView(t);return n.setUint8(0,e[0]&255),n.setUint8(1,e[1]&255),n.setUint8(2,e[2]&255),n.setUint8(3,e[3]&255),n.getFloat32(0)}function intTuple4ToFloat32WithThreshold(e,t=3){t=Math.max(0,Math.floor(t));let n=intTuple4ToFloat32(e);return Number.parseFloat(nstr(n,{threshold:t}))}function defineParser(e){let{codecs:t,throwOnMultipleDecode:n=!0,parserName:r}=e,i=getRoundingDecimals(e.roundingDecimals),a=checkCodecsValidity(e.codecs);function o(e){return{errors:[s(e)]}}function s(e){return`${r} (JS): ${e}`}function c(e){let r;if(t.forEach(t=>{if(t.canTryDecode(e)){if(!r)r=t;else if(n)throw Error(`Message could not be uniquely decoded. Multiple codecs matched the input.`)}}),!r)throw Error(`Message could not be decoded. No codec matched the input.`);return r.decode(e)}function l(e){try{let t=safeParse(createUplinkInputSchema(),e);if(!t.success)throw Error(`Input is not a valid for decoding. Check your input data.`);let n=c(t.output);return n.warnings&&=n.warnings.map(s),n}catch(t){return t instanceof Error?o(t.message):o(`Unknown error occurred during decoding in parser ${r} with input ${JSON.stringify(e)}`)}}function u(e){let t=safeParse(createHexUplinkInputSchema(),e);if(!t.success)return o(`Input is not a valid for decoding. Check your input data.`);let n=hexStringToIntArray(t.output.bytes);return n?l({bytes:n,fPort:t.output.fPort,recvTime:t.output.recvTime}):o(`Input bytes is not a valid hexadecimal string.`)}function d(e){try{let n=t.find(t=>t.protocol===e.protocol);if(!n)throw Error(`Codec with protocol ${e.protocol} not found in parser. Available protocols: ${t.map(e=>e.protocol).join(`, `)}`);if(!(`encode`in n))throw Error(`Codec with protocol ${e.protocol} does not support encoding. Input could not be encoded.`);return n.encode(e.input)}catch(t){return t instanceof Error?o(t.message):o(`Unknown error occurred during encoding in parser ${r} with input ${JSON.stringify(e)}`)}}function f(e){try{let n=t.find(t=>t.protocol===e.protocol);if(!n)throw Error(`Codec with protocol ${e.protocol} not found in parser. Available protocols: ${t.map(e=>e.protocol).join(`, `)}`);if(!(`encodeMultiple`in n))throw Error(`Codec with protocol ${e.protocol} does not support multiple encoding. Input could not be encoded.`);return n.encodeMultiple(e.input)}catch(t){return t instanceof Error?o(t.message):o(`Unknown error occurred during multiple encoding in parser ${r} with input ${JSON.stringify(e)}`)}}return{decodeUplink:l,decodeHexUplink:u,encodeDownlink:d,encodeMultipleDownlinks:f,adjustMeasuringRange:(e,n)=>{if(!(e in a))throw Error(`Channel ${e} does not exist in parser ${r}. Cannot adjust measuring range.`);if(a[e])throw Error(`Channel ${e} does not allow adjusting the measuring range in parser ${r}.`);t.forEach(t=>{t.adjustMeasuringRange(e,n)})},adjustRoundingDecimals:e=>{let n=getRoundingDecimals(e,i);t.forEach(e=>{e.adjustRoundingDecimals(n)})}}}function defineTULIP2Codec(e){let t=`${e.deviceName}TULIP2`,n=getRoundingDecimals(e.roundingDecimals);checkChannelsValidity(e.channels),e.channels.forEach((e,n,r)=>{let i=r.find((t,r)=>t.channelId===e.channelId&&r!==n);if(i)throw Error(`Duplicate channel ID found: ${e.channelId} for channels ${e.name} and ${i.name} in ${t} Codec`)});function r(t){let n=t.bytes[0];return typeof n==`number`&&n in e.handlers}function i(r){let i=r.bytes[0];if(typeof i!=`number`)throw TypeError(`Input must have at least one byte for ${t} Codec`);let a=e.handlers[i];if(a)return a(r,{roundingDecimals:n,channels:e.channels});throw TypeError(`No handler registered for byte ${i} in ${t} Codec`)}function a(){return e.channels.map(e=>_objectSpread2({end:e.end,name:e.name,start:e.start},e.adjustMeasurementRangeDisallowed?{adjustMeasurementRangeDisallowed:!0}:{}))}let s={name:t,protocol:`TULIP2`,getChannels:a,canTryDecode:r,decode:i,adjustMeasuringRange:(t,n)=>{let r=e.channels.find(e=>e.name===t);if(!r)throw Error(`Channel ${t} not found in ${e.deviceName}TULIP2 Codec`);r.start=n.start,r.end=n.end},adjustRoundingDecimals:e=>{n=getRoundingDecimals(e,n)}};return e.encoderFactory&&(s.encode=e.encoderFactory({getChannels:()=>e.channels})),e.multipleEncodeFactory&&(s.encodeMultiple=e.multipleEncodeFactory({getChannels:()=>e.channels})),s}const MEASUREMENT_CHANNELS={pressure:0,flow:1,input_1:2,input_2:3,input_3:4,input_4:5,relay_status_1:6,relay_status_2:7},PRODUCT_SUB_ID_NAMES={0:`LoRaWAN`,1:`MIOTY`},HARDWARE_ASSEMBLY_TYPE_NAMES={0:`A2G HE0 Full Assembly`,1:`A2G HE1 1AO Assembly`,2:`A2G HE2 Modbus Assembly`,3:`A2G HE3 Modular Assembly`,128:`A2G LC1 LC1VAO`,129:`A2G LC2 CT`,130:`A2G LC3 BAT`},LPP_MEASURAND_NAMES_PRESSURE={3:`Pressure (gauge)`,4:`Pressure (absolute)`,5:`Pressure (differential)`},LPP_MEASURAND_NAMES_FLOW={6:`Flow (vol.)`,7:`Flow (mass)`},LPP_MEASURAND_NAMES_INPUT={70:`Input 1`,71:`Input 2`,72:`Input 3`,73:`Input 4`},LPP_MEASURAND_NAMES=_objectSpread2(_objectSpread2(_objectSpread2(_objectSpread2({1:`Temperature`,2:`Temperature difference`},LPP_MEASURAND_NAMES_PRESSURE),LPP_MEASURAND_NAMES_FLOW),{},{8:`Force`,9:`Mass`,10:`Level`,11:`Length`,12:`Volume`,13:`Current`,14:`Voltage`,15:`Resistance`,16:`Capacitance`,17:`Inductance`,18:`Relative`,19:`Time`,20:`Frequency`,21:`Speed`,22:`Acceleration`,23:`Density`,24:`Density (gauge pressure at 20 °C)`,25:`Density (absolute pressure at 20 °C)`,26:`Humidity (relative)`,27:`Humidity (absolute)`,28:`Angle of rotation / inclination`,60:`Device specific`,61:`Device specific`,62:`Device specific`},LPP_MEASURAND_NAMES_INPUT),{},{75:`Relay Status 1`,76:`Relay Status 2`}),LPP_UNIT_NAMES=_objectSpread2(_objectSpread2(_objectSpread2({},{1:`Pa`,2:`kPa`,3:`mbar`,4:`mmWC`,5:`inWC`}),{10:`[m³/s] cubic metre per second`,11:`[m³/h] cubic metre per hour (cbm/h)`,12:`[l/s] litre per second`,13:`[cfm] cubic feet per minute`,14:`[m/s]`,15:`[ft/min]`}),{0:`None`,20:`% rH`,21:`[g/m³]`,22:`[g/ft³]`,23:`[kJ/kg]`,24:`[BTU/lb]`,30:`normalized`,31:`ppm`,32:`[%] percent`,40:`°C`,41:`°F`,45:`V`,46:`bin`}),TECHNICAL_ALARM_FLAGS=[{name:`PressureSignalOverload`,mask:1},{name:`AnalogOutput1SignalOverload`,mask:2},{name:`AnalogOutput2SignalOverload`,mask:4},{name:`ModbusCommunicationError`,mask:8},{name:`VoltageInput1SignalOverload`,mask:16},{name:`VoltageInput2SignalOverload`,mask:32},{name:`TemperatureInput3SignalOverload`,mask:64},{name:`TemperatureInput4SignalOverload`,mask:128}],DEVICE_ALARM_FLAGS=[{name:`ADCConverterError`,mask:128,byteIndex:2},{name:`PressureSensorNoResponseError`,mask:64,byteIndex:2},{name:`PressureSensorTimeoutError`,mask:32,byteIndex:2},{name:`FactoryOptionsWriteError`,mask:16,byteIndex:2},{name:`FactoryOptionsDeleteError`,mask:8,byteIndex:2},{name:`InvalidFactoryOptionsError`,mask:4,byteIndex:2},{name:`UserSettingsInvalidError`,mask:2,byteIndex:2},{name:`UserSettingsReadWriteError`,mask:1,byteIndex:2},{name:`ZeroOffsetOverRangeError`,mask:128,byteIndex:3},{name:`InvalidSignalSourceSpecifiedError`,mask:64,byteIndex:3},{name:`AnalogOutput2OverTemperatureError`,mask:32,byteIndex:3},{name:`AnalogOutput2LoadFaultError`,mask:16,byteIndex:3},{name:`AnalogOutput2OverRangeError`,mask:8,byteIndex:3},{name:`AnalogOutput1OverTemperatureError`,mask:4,byteIndex:3},{name:`AnalogOutput1LoadFaultError`,mask:2,byteIndex:3},{name:`AnalogOutput1OverRangeError`,mask:1,byteIndex:3}],ERROR_VALUE_TUPLE=[255,255,255,255];function isErrorTuple(e){return e[0]===ERROR_VALUE_TUPLE[0]&&e[1]===ERROR_VALUE_TUPLE[1]&&e[2]===ERROR_VALUE_TUPLE[2]&&e[3]===ERROR_VALUE_TUPLE[3]}function createTULIP2A2GChannels(){return[{channelId:MEASUREMENT_CHANNELS.pressure,name:`pressure`,start:0,end:100,adjustMeasurementRangeDisallowed:!0},{channelId:MEASUREMENT_CHANNELS.flow,name:`flow`,start:0,end:100,adjustMeasurementRangeDisallowed:!0},{channelId:MEASUREMENT_CHANNELS.input_1,name:`input_1`,start:0,end:100,adjustMeasurementRangeDisallowed:!0},{channelId:MEASUREMENT_CHANNELS.input_2,name:`input_2`,start:0,end:100,adjustMeasurementRangeDisallowed:!0},{channelId:MEASUREMENT_CHANNELS.input_3,name:`input_3`,start:0,end:100,adjustMeasurementRangeDisallowed:!0},{channelId:MEASUREMENT_CHANNELS.input_4,name:`input_4`,start:0,end:1,adjustMeasurementRangeDisallowed:!0},{channelId:MEASUREMENT_CHANNELS.relay_status_1,name:`relay_status_1`,start:0,end:1,adjustMeasurementRangeDisallowed:!0},{channelId:MEASUREMENT_CHANNELS.relay_status_2,name:`relay_status_2`,start:0,end:1,adjustMeasurementRangeDisallowed:!0}]}function createFloatFromTuple(e,t){if(isErrorTuple(e))throw Error(`Invalid data for channel - measurement: 0xffff, 65535`);return roundValue(intTuple4ToFloat32WithThreshold(e),t)}const handleDataMessage=(e,t)=>{if(e.bytes.length!==6&&e.bytes.length!==27)throw Error(`Data message (0x01) requires 6 or 27 bytes, but received ${e.bytes.length} bytes`);let[n,r]=[e.bytes[0],e.bytes[1]];if(e.bytes.length===6){let i=createFloatFromTuple([e.bytes[2],e.bytes[3],e.bytes[4],e.bytes[5]],t.roundingDecimals);return{data:{messageType:n,configurationId:r,measurement:{channels:[{channelId:MEASUREMENT_CHANNELS.pressure,channelName:`pressure`,value:i}]}}}}let i=[e.bytes[2],e.bytes[3],e.bytes[4],e.bytes[5]],a=[e.bytes[6],e.bytes[7],e.bytes[8],e.bytes[9]],o=[e.bytes[10],e.bytes[11],e.bytes[12],e.bytes[13]],s=[e.bytes[14],e.bytes[15],e.bytes[16],e.bytes[17]],c=[e.bytes[18],e.bytes[19],e.bytes[20],e.bytes[21]],l=[e.bytes[22],e.bytes[23],e.bytes[24],e.bytes[25]],u=createFloatFromTuple(i,t.roundingDecimals),d=createFloatFromTuple(a,t.roundingDecimals),f=createFloatFromTuple(o,t.roundingDecimals),p=createFloatFromTuple(s,t.roundingDecimals),m=createFloatFromTuple(c,t.roundingDecimals),h=createFloatFromTuple(l,t.roundingDecimals),g=e.bytes[26];return{data:{messageType:n,configurationId:r,measurement:{channels:[{channelId:MEASUREMENT_CHANNELS.pressure,channelName:`pressure`,value:u},{channelId:MEASUREMENT_CHANNELS.flow,channelName:`flow`,value:d},{channelId:MEASUREMENT_CHANNELS.input_1,channelName:`input_1`,value:f},{channelId:MEASUREMENT_CHANNELS.input_2,channelName:`input_2`,value:p},{channelId:MEASUREMENT_CHANNELS.input_3,channelName:`input_3`,value:m},{channelId:MEASUREMENT_CHANNELS.input_4,channelName:`input_4`,value:h},{channelId:MEASUREMENT_CHANNELS.relay_status_1,channelName:`relay_status_1`,value:g&1},{channelId:MEASUREMENT_CHANNELS.relay_status_2,channelName:`relay_status_2`,value:g>>1&1}]}}}},handleTechnicalAlarmMessage=e=>{if(e.bytes.length!==3)throw Error(`Technical alarm message (0x04) requires 3 bytes, but received ${e.bytes.length} bytes`);let t=e.bytes[1],n=e.bytes[2];return{data:{messageType:4,configurationId:t,technicalAlarms:Object.fromEntries(TECHNICAL_ALARM_FLAGS.map(({name:e,mask:t})=>[e,(n&t)===t]))}}},handleDeviceAlarmMessage=e=>{if(e.bytes.length!==4)throw Error(`Device alarm message (0x05) requires 4 bytes, but received ${e.bytes.length} bytes`);let t=e.bytes[1],n=e.bytes[2],r=e.bytes[3];return{data:{messageType:5,configurationId:t,deviceAlarms:Object.fromEntries(DEVICE_ALARM_FLAGS.map(({name:e,mask:t,byteIndex:i})=>[e,((i===2?n:r)&t)===t]))}}},handleDeviceIdentificationMessage=e=>{if(e.bytes.length!==33&&e.bytes.length!==38)throw Error(`Device identification message (0x07) requires 33 or 38 bytes, but received ${e.bytes.length} bytes`);let t=e.bytes[1],n=e.bytes[2];if(n!==13)throw Error(`Invalid productId ${n} in device identification message. Expected 13 (A2G).`);let r=e.bytes[3],i=PRODUCT_SUB_ID_NAMES[r],a=`${(e.bytes[4]>>4).toString(10)}.${(e.bytes[4]&15).toString(10)}.${e.bytes[5].toString(10)}`,o=e.bytes[6].toString(10),s=e.bytes[7],c=HARDWARE_ASSEMBLY_TYPE_NAMES[s];if(!c)throw Error(`Unknown hardware assembly type ${s} in device identification message`);let l=``;for(let t=8;t<24;t++){let n=e.bytes[t];if(n===0)break;l+=String.fromCharCode(n)}let u=intTuple4ToFloat32WithThreshold([e.bytes[24],e.bytes[25],e.bytes[26],e.bytes[27]]),d=intTuple4ToFloat32WithThreshold([e.bytes[28],e.bytes[29],e.bytes[30],e.bytes[31]]),f=e.bytes[32],p=LPP_UNIT_NAMES[f];if(!p)throw Error(`Unknown pressure unit ${f} in device identification message`);let m=[{measurand:3,measurandName:LPP_MEASURAND_NAMES_PRESSURE[3],measurementRangeStart:u,measurementRangeEnd:d,unit:f,unitName:p}];if(e.bytes.length===33)return{data:{messageType:7,configurationId:t,deviceInformation:{productId:n,productIdName:A2G_NAME,productSubId:r,productSubIdName:i,sensorFirmwareVersion:a,sensorHardwareVersion:o,hardwareAssemblyTypeId:s,hardwareAssemblyTypeName:c,serialNumber:l,channelConfigurations:m}}};let h=e.bytes[33],g=LPP_UNIT_NAMES[h];if(!g)throw Error(`Unknown flow unit ${h} in device identification message`);let _=e.bytes[34],v=LPP_UNIT_NAMES[_];if(!v)throw Error(`Unknown input 1 unit ${_} in device identification message`);let y=e.bytes[35],b=LPP_UNIT_NAMES[y];if(!b)throw Error(`Unknown input 2 unit ${y} in device identification message`);let x=e.bytes[36],S=LPP_UNIT_NAMES[x];if(!S)throw Error(`Unknown input 3 unit ${x} in device identification message`);let C=e.bytes[37],w=LPP_UNIT_NAMES[C];if(!w)throw Error(`Unknown input 4 unit ${C} in device identification message`);let T=[m[0],{measurand:6,measurandName:LPP_MEASURAND_NAMES_FLOW[6],unit:h,unitName:g},{measurand:70,measurandName:LPP_MEASURAND_NAMES[70],unit:_,unitName:v},{measurand:71,measurandName:LPP_MEASURAND_NAMES[71],unit:y,unitName:b},{measurand:72,measurandName:LPP_MEASURAND_NAMES[72],unit:x,unitName:S},{measurand:73,measurandName:LPP_MEASURAND_NAMES[73],unit:C,unitName:w}];return{data:{messageType:7,configurationId:t,deviceInformation:{productId:n,productIdName:A2G_NAME,productSubId:r,productSubIdName:i,sensorFirmwareVersion:a,sensorHardwareVersion:o,hardwareAssemblyTypeId:s,hardwareAssemblyTypeName:c,serialNumber:l,channelConfigurations:T}}}},handleKeepAliveMessage=e=>{if(e.bytes.length!==3)throw Error(`Keep alive message (0x08) requires 3 bytes, but received ${e.bytes.length} bytes`);let t=e.bytes[1],n=e.bytes[2];if(n===127)throw Error(`Keep Alive message 08: The device reports an error during the calculation of the battery capacity.`);return{data:{messageType:8,configurationId:t,deviceStatistic:{batteryLevelNewEvent:(n&128)>>7==1,batteryLevelPercent:n&127}}}};function createTULIP2A2GCodec(){return defineTULIP2Codec({deviceName:A2G_NAME,roundingDecimals:4,channels:createTULIP2A2GChannels(),handlers:{1:handleDataMessage,4:handleTechnicalAlarmMessage,5:handleDeviceAlarmMessage,7:handleDeviceIdentificationMessage,8:handleKeepAliveMessage}})}const A2G_NAME=`A2G`;function useParser(){return defineParser({parserName:`A2G`,codecs:[createTULIP2A2GCodec()]})}var require_es7_array_prototype_includes=__commonJSMin((()=>{Array.prototype.includes||Object.defineProperty(Array.prototype,`includes`,{value:function(e,t){if(this==null)throw TypeError(`"this" is null or not defined`);var n=Object(this),r=n.length>>>0;if(r===0)return!1;var i=t|0,a=Math.max(i>=0?i:r-Math.abs(i),0);function o(e,t){return e===t||typeof e==`number`&&typeof t==`number`&&isNaN(e)&&isNaN(t)}for(;a<r;){if(o(n[a],e))return!0;a++}return!1}})})),require_is_implemented$9=__commonJSMin(((e,t)=>{t.exports=function(){var e=Number.isInteger;return typeof e==`function`?!e(`23`)&&e(34)&&!e(32.34):!1}})),require_shim$8=__commonJSMin(((e,t)=>{t.exports=function(e){return typeof e==`number`?e%1==0:!1}})),require_implement$2=__commonJSMin((()=>{require_is_implemented$9()()||Object.defineProperty(Number,`isInteger`,{value:require_shim$8(),configurable:!0,enumerable:!1,writable:!0})})),require_is_implemented$8=__commonJSMin(((e,t)=>{t.exports=function(){return typeof globalThis!=`object`||!globalThis?!1:globalThis.Array===Array}})),require_implementation=__commonJSMin(((e,t)=>{var n=function(){if(typeof self==`object`&&self)return self;if(typeof window==`object`&&window)return window;throw Error("Unable to resolve global `this`")};t.exports=(function(){if(this)return this;try{Object.defineProperty(Object.prototype,`__global__`,{get:function(){return this},configurable:!0})}catch{return n()}try{return __global__||n()}finally{delete Object.prototype.__global__}})()})),require_global_this=__commonJSMin(((e,t)=>{t.exports=require_is_implemented$8()()?globalThis:require_implementation()})),require_is_implemented$7=__commonJSMin(((e,t)=>{var n=require_global_this(),r={object:!0,symbol:!0};t.exports=function(){var e=n.Symbol;return!(typeof e!=`function`||(e(`test symbol`),!r[typeof e.iterator])||!r[typeof e.toPrimitive]||!r[typeof e.toStringTag])}})),require_is$4=__commonJSMin(((e,t)=>{var n=void 0;t.exports=function(e){return e!==n&&e!==null}})),require_is$3=__commonJSMin(((e,t)=>{var n=require_is$4(),r={object:!0,function:!0,undefined:!0};t.exports=function(e){return n(e)?hasOwnProperty.call(r,typeof e):!1}})),require_is$2=__commonJSMin(((e,t)=>{var n=require_is$3();t.exports=function(e){if(!n(e))return!1;try{return e.constructor?e.constructor.prototype===e:!1}catch{return!1}}})),require_is$1=__commonJSMin(((e,t)=>{var n=require_is$2();t.exports=function(e){if(typeof e!=`function`||!hasOwnProperty.call(e,`length`))return!1;try{if(typeof e.length!=`number`||typeof e.call!=`function`||typeof e.apply!=`function`)return!1}catch{return!1}return!n(e)}})),require_is=__commonJSMin(((e,t)=>{var n=require_is$1(),r=/^\s*class[\s{/}]/,i=Function.prototype.toString;t.exports=function(e){return!(!n(e)||r.test(i.call(e)))}})),require_is_implemented$6=__commonJSMin(((e,t)=>{t.exports=function(){var e=Object.assign,t;return typeof e==`function`?(t={foo:`raz`},e(t,{bar:`dwa`},{trzy:`trzy`}),t.foo+t.bar+t.trzy===`razdwatrzy`):!1}})),require_is_implemented$5=__commonJSMin(((e,t)=>{t.exports=function(){try{return!0}catch{return!1}}})),require_noop=__commonJSMin(((e,t)=>{t.exports=function(){}})),require_is_value=__commonJSMin(((e,t)=>{var n=require_noop()();t.exports=function(e){return e!==n&&e!==null}})),require_shim$7=__commonJSMin(((e,t)=>{var n=require_is_value(),r=Object.keys;t.exports=function(e){return r(n(e)?Object(e):e)}})),require_keys=__commonJSMin(((e,t)=>{t.exports=require_is_implemented$5()()?Object.keys:require_shim$7()})),require_valid_value=__commonJSMin(((e,t)=>{var n=require_is_value();t.exports=function(e){if(!n(e))throw TypeError(`Cannot use null or undefined`);return e}})),require_shim$6=__commonJSMin(((e,t)=>{var n=require_keys(),r=require_valid_value(),i=Math.max;t.exports=function(e,t){var a,o,s=i(arguments.length,2),c;for(e=Object(r(e)),c=function(n){try{e[n]=t[n]}catch(e){a||=e}},o=1;o<s;++o)t=arguments[o],n(t).forEach(c);if(a!==void 0)throw a;return e}})),require_assign=__commonJSMin(((e,t)=>{t.exports=require_is_implemented$6()()?Object.assign:require_shim$6()})),require_normalize_options=__commonJSMin(((e,t)=>{var n=require_is_value(),r=Array.prototype.forEach,i=Object.create,a=function(e,t){for(var n in e)t[n]=e[n]};t.exports=function(e){var t=i(null);return r.call(arguments,function(e){n(e)&&a(Object(e),t)}),t}})),require_is_implemented$4=__commonJSMin(((e,t)=>{var n=`razdwatrzy`;t.exports=function(){return typeof n.contains==`function`?n.contains(`dwa`)===!0&&n.contains(`foo`)===!1:!1}})),require_shim$5=__commonJSMin(((e,t)=>{var n=String.prototype.indexOf;t.exports=function(e){return n.call(this,e,arguments[1])>-1}})),require_contains=__commonJSMin(((e,t)=>{t.exports=require_is_implemented$4()()?String.prototype.contains:require_shim$5()})),require_d=__commonJSMin(((e,t)=>{var n=require_is$4(),r=require_is(),i=require_assign(),a=require_normalize_options(),o=require_contains(),s=t.exports=function(e,t){var r,s,c,l,u;return arguments.length<2||typeof e!=`string`?(l=t,t=e,e=null):l=arguments[2],n(e)?(r=o.call(e,`c`),s=o.call(e,`e`),c=o.call(e,`w`)):(r=c=!0,s=!1),u={value:t,configurable:r,enumerable:s,writable:c},l?i(a(l),u):u};s.gs=function(e,t,s){var c,l,u,d;return typeof e==`string`?u=arguments[3]:(u=s,s=t,t=e,e=null),n(t)?r(t)?n(s)?r(s)||(u=s,s=void 0):s=void 0:(u=t,t=s=void 0):t=void 0,n(e)?(c=o.call(e,`c`),l=o.call(e,`e`)):(c=!0,l=!1),d={get:t,set:s,configurable:c,enumerable:l},u?i(a(u),d):d}})),require_is_symbol=__commonJSMin(((e,t)=>{t.exports=function(e){return e?typeof e==`symbol`?!0:!e.constructor||e.constructor.name!==`Symbol`?!1:e[e.constructor.toStringTag]===`Symbol`:!1}})),require_validate_symbol=__commonJSMin(((e,t)=>{var n=require_is_symbol();t.exports=function(e){if(!n(e))throw TypeError(e+` is not a symbol`);return e}})),require_generate_name=__commonJSMin(((e,t)=>{var n=require_d(),r=Object.create,i=Object.defineProperty,a=Object.prototype,o=r(null);t.exports=function(e){for(var t=0,r,s;o[e+(t||``)];)++t;return e+=t||``,o[e]=!0,r=`@@`+e,i(a,r,n.gs(null,function(e){s||=(s=!0,i(this,r,n(e)),!1)})),r}})),require_standard_symbols=__commonJSMin(((e,t)=>{var n=require_d(),r=require_global_this().Symbol;t.exports=function(e){return Object.defineProperties(e,{hasInstance:n(``,r&&r.hasInstance||e(`hasInstance`)),isConcatSpreadable:n(``,r&&r.isConcatSpreadable||e(`isConcatSpreadable`)),iterator:n(``,r&&r.iterator||e(`iterator`)),match:n(``,r&&r.match||e(`match`)),replace:n(``,r&&r.replace||e(`replace`)),search:n(``,r&&r.search||e(`search`)),species:n(``,r&&r.species||e(`species`)),split:n(``,r&&r.split||e(`split`)),toPrimitive:n(``,r&&r.toPrimitive||e(`toPrimitive`)),toStringTag:n(``,r&&r.toStringTag||e(`toStringTag`)),unscopables:n(``,r&&r.unscopables||e(`unscopables`))})}})),require_symbol_registry=__commonJSMin(((e,t)=>{var n=require_d(),r=require_validate_symbol(),i=Object.create(null);t.exports=function(e){return Object.defineProperties(e,{for:n(function(t){return i[t]?i[t]:i[t]=e(String(t))}),keyFor:n(function(e){for(var t in r(e),i)if(i[t]===e)return t})})}})),require_polyfill=__commonJSMin(((e,t)=>{var n=require_d(),r=require_validate_symbol(),i=require_global_this().Symbol,a=require_generate_name(),o=require_standard_symbols(),s=require_symbol_registry(),c=Object.create,l=Object.defineProperties,u=Object.defineProperty,d,f,p;if(typeof i==`function`)try{String(i()),p=!0}catch{}else i=null;f=function(e){if(this instanceof f)throw TypeError(`Symbol is not a constructor`);return d(e)},t.exports=d=function e(t){var r;if(this instanceof e)throw TypeError(`Symbol is not a constructor`);return p?i(t):(r=c(f.prototype),t=t===void 0?``:String(t),l(r,{__description__:n(``,t),__name__:n(``,a(t))}))},o(d),s(d),l(f.prototype,{constructor:n(d),toString:n(``,function(){return this.__name__})}),l(d.prototype,{toString:n(function(){return`Symbol (`+r(this).__description__+`)`}),valueOf:n(function(){return r(this)})}),u(d.prototype,d.toPrimitive,n(``,function(){var e=r(this);return typeof e==`symbol`?e:e.toString()})),u(d.prototype,d.toStringTag,n(`c`,`Symbol`)),u(f.prototype,d.toStringTag,n(`c`,d.prototype[d.toStringTag])),u(f.prototype,d.toPrimitive,n(`c`,d.prototype[d.toPrimitive]))})),require_es6_symbol=__commonJSMin(((e,t)=>{t.exports=require_is_implemented$7()()?require_global_this().Symbol:require_polyfill()})),require_is_implemented$3=__commonJSMin(((e,t)=>{var n=require_es6_symbol().iterator;t.exports=function(){var e=[`foo`,1],t,r;return!(typeof e[n]!=`function`||(t=e[n](),!t)||typeof t.next!=`function`||(r=t.next(),!r)||r.value!==`foo`||r.done!==!1)}})),require_is_implemented$2=__commonJSMin(((e,t)=>{var n=Object.create,r=Object.getPrototypeOf,i={};t.exports=function(){var e=Object.setPrototypeOf,t=arguments[0]||n;return typeof e==`function`?r(e(t(null),i))===i:!1}})),require_is_object=__commonJSMin(((e,t)=>{var n=require_is_value(),r={function:!0,object:!0};t.exports=function(e){return n(e)&&r[typeof e]||!1}})),require_create=__commonJSMin(((e,t)=>{var n=Object.create,r;require_is_implemented$2()()||(r=require_shim$4()),t.exports=(function(){var e,t,i;return!r||r.level!==1?n:(e={},t={},i={configurable:!1,enumerable:!1,writable:!0,value:void 0},Object.getOwnPropertyNames(Object.prototype).forEach(function(e){if(e===`__proto__`){t[e]={configurable:!0,enumerable:!1,writable:!0,value:void 0};return}t[e]=i}),Object.defineProperties(e,t),Object.defineProperty(r,`nullPolyfill`,{configurable:!1,enumerable:!1,writable:!1,value:e}),function(t,r){return n(t===null?e:t,r)})})()})),require_shim$4=__commonJSMin(((e,t)=>{var n=require_is_object(),r=require_valid_value(),i=Object.prototype.isPrototypeOf,a=Object.defineProperty,o={configurable:!0,enumerable:!1,writable:!0,value:void 0},s=function(e,t){if(r(e),t===null||n(t))return e;throw TypeError(`Prototype must be null or an object`)};t.exports=(function(e){var t,n;return e?(e.level===2?e.set?(n=e.set,t=function(e,t){return n.call(s(e,t),t),e}):t=function(e,t){return s(e,t).__proto__=t,e}:t=function e(t,n){var r;return s(t,n),r=i.call(e.nullPolyfill,t),r&&delete e.nullPolyfill.__proto__,n===null&&(n=e.nullPolyfill),t.__proto__=n,r&&a(e.nullPolyfill,`__proto__`,o),t},Object.defineProperty(t,`level`,{configurable:!1,enumerable:!1,writable:!1,value:e.level})):null})((function(){var e=Object.create(null),t={},n,r=Object.getOwnPropertyDescriptor(Object.prototype,`__proto__`);if(r){try{n=r.set,n.call(e,t)}catch{}if(Object.getPrototypeOf(e)===t)return{set:n,level:2}}return e.__proto__=t,Object.getPrototypeOf(e)===t?{level:2}:(e={},e.__proto__=t,Object.getPrototypeOf(e)===t?{level:1}:!1)})()),require_create()})),require_set_prototype_of=__commonJSMin(((e,t)=>{t.exports=require_is_implemented$2()()?Object.setPrototypeOf:require_shim$4()})),require_clear=__commonJSMin(((e,t)=>{var n=require_valid_value();t.exports=function(){return n(this).length=0,this}})),require_valid_callable=__commonJSMin(((e,t)=>{t.exports=function(e){if(typeof e!=`function`)throw TypeError(e+` is not a function`);return e}})),require_coerce=__commonJSMin(((e,t)=>{var n=require_is$4(),r=require_is$3(),i=Object.prototype.toString;t.exports=function(e){if(!n(e))return null;if(r(e)){var t=e.toString;if(typeof t!=`function`||t===i)return null}try{return``+e}catch{return null}}})),require_safe_to_string=__commonJSMin(((e,t)=>{t.exports=function(e){try{return e.toString()}catch{try{return String(e)}catch{return null}}}})),require_to_short_string=__commonJSMin(((e,t)=>{var n=require_safe_to_string(),r=/[\n\r\u2028\u2029]/g;t.exports=function(e){var t=n(e);return t===null?`<Non-coercible to string value>`:(t.length>100&&(t=t.slice(0,99)+`…`),t=t.replace(r,function(e){switch(e){case`
`:return`\\n`;case`\r`:return`\\r`;case`\u2028`:return`\\u2028`;case`\u2029`:return`\\u2029`;default:throw Error(`Unexpected character`)}}),t)}})),require_resolve_error_message=__commonJSMin(((e,t)=>{var n=require_coerce(),r=require_to_short_string();t.exports=function(e,t,i){i&&i.errorMessage&&(e=n(i.errorMessage));var a=e.indexOf(`%v`),o=a>-1?r(t):null;if(i&&i.name){var s=e.indexOf(`%n`);if(s>-1){if(a>-1){var c,l,u,d;return s>a?(c=o,u=a,l=i.name,d=s):(c=i.name,u=s,l=o,d=a),e.slice(0,u)+c+e.slice(u+2,d)+l+e.slice(d+2)}return e.slice(0,s)+i.name+e.slice(s+2)}}return a>-1?e.slice(0,a)+o+e.slice(a+2):e}})),require_resolve_exception=__commonJSMin(((e,t)=>{var n=require_is$4(),r=require_resolve_error_message();t.exports=function(e,t,i){if(i&&!n(e)){if(`default`in i)return i.default;if(i.isOptional)return null}var a=new(i&&i.Error||TypeError)(r(t,e,i));throw i&&i.errorCode&&(a.code=i.errorCode),a}})),require_ensure$1=__commonJSMin(((e,t)=>{var n=require_resolve_exception(),r=require_is$4();t.exports=function(e){if(r(e))return e;var t=arguments[1];return n(e,t&&t.name?`Expected a value for %n, received %v`:`Cannot use %v`,t)}})),require_ensure=__commonJSMin(((e,t)=>{var n=require_resolve_exception(),r=require_is();t.exports=function(e){if(r(e))return e;var t=arguments[1];return n(e,t&&t.name?`Expected a plain function for %n, received %v`:`%v is not a plain function`,t)}})),require_is_implemented$1=__commonJSMin(((e,t)=>{t.exports=function(){var e=Array.from,t,n;return typeof e==`function`?(t=[`raz`,`dwa`],n=e(t),!!(n&&n!==t&&n[1]===`dwa`)):!1}})),require_is_arguments=__commonJSMin(((e,t)=>{var n=Object.prototype.toString,r=n.call((function(){return arguments})());t.exports=function(e){return n.call(e)===r}})),require_is_function=__commonJSMin(((e,t)=>{var n=Object.prototype.toString,r=RegExp.prototype.test.bind(/^[object [A-Za-z0-9]*Function]$/);t.exports=function(e){return typeof e==`function`&&r(n.call(e))}})),require_is_implemented=__commonJSMin(((e,t)=>{t.exports=function(){var e=Math.sign;return typeof e==`function`?e(10)===1&&e(-20)===-1:!1}})),require_shim$3=__commonJSMin(((e,t)=>{t.exports=function(e){return e=Number(e),isNaN(e)||e===0?e:e>0?1:-1}})),require_sign=__commonJSMin(((e,t)=>{t.exports=require_is_implemented()()?Math.sign:require_shim$3()})),require_to_integer=__commonJSMin(((e,t)=>{var n=require_sign(),r=Math.abs,i=Math.floor;t.exports=function(e){return isNaN(e)?0:(e=Number(e),e===0||!isFinite(e)?e:n(e)*i(r(e)))}})),require_to_pos_integer=__commonJSMin(((e,t)=>{var n=require_to_integer(),r=Math.max;t.exports=function(e){return r(0,n(e))}})),require_is_string=__commonJSMin(((e,t)=>{var n=Object.prototype.toString,r=n.call(``);t.exports=function(e){return typeof e==`string`||e&&typeof e==`object`&&(e instanceof String||n.call(e)===r)||!1}})),require_shim$2=__commonJSMin(((e,t)=>{var n=require_es6_symbol().iterator,r=require_is_arguments(),i=require_is_function(),a=require_to_pos_integer(),o=require_valid_callable(),s=require_valid_value(),c=require_is_value(),l=require_is_string(),u=Array.isArray,d=Function.prototype.call,f={configurable:!0,enumerable:!0,writable:!0,value:null},p=Object.defineProperty;t.exports=function(e){var t=arguments[1],m=arguments[2],h,g,_,v,y,b,x,S,C,w;if(e=Object(s(e)),c(t)&&o(t),!this||this===Array||!i(this)){if(!t){if(r(e))return y=e.length,y===1?(v=[,],v[0]=e[0],v):Array.apply(null,e);if(u(e)){for(v=Array(y=e.length),g=0;g<y;++g)v[g]=e[g];return v}}v=[]}else h=this;if(!u(e)){if((C=e[n])!==void 0){for(x=o(C).call(e),h&&(v=new h),S=x.next(),g=0;!S.done;)w=t?d.call(t,m,S.value,g):S.value,h?(f.value=w,p(v,g,f)):v[g]=w,S=x.next(),++g;y=g}else if(l(e)){for(y=e.length,h&&(v=new h),g=0,_=0;g<y;++g)w=e[g],g+1<y&&(b=w.charCodeAt(0),b>=55296&&b<=56319&&(w+=e[++g])),w=t?d.call(t,m,w,_):w,h?(f.value=w,p(v,_,f)):v[_]=w,++_;y=_}}if(y===void 0)for(y=a(e.length),h&&(v=new h(y)),g=0;g<y;++g)w=t?d.call(t,m,e[g],g):e[g],h?(f.value=w,p(v,g,f)):v[g]=w;return h&&(f.value=null,v.length=y),v}})),require_from=__commonJSMin(((e,t)=>{t.exports=require_is_implemented$1()()?Array.from:require_shim$2()})),require_copy=__commonJSMin(((e,t)=>{var n=require_from(),r=require_assign(),i=require_valid_value();t.exports=function(e){var t=Object(i(e)),a=arguments[1],o=Object(arguments[2]);if(t!==e&&!a)return t;var s={};return a?n(a,function(t){(o.ensure||t in e)&&(s[t]=e[t])}):r(s,e),s}})),require__iterate=__commonJSMin(((e,t)=>{var n=require_valid_callable(),r=require_valid_value(),i=Function.prototype.bind,a=Function.prototype.call,o=Object.keys,s=Object.prototype.propertyIsEnumerable;t.exports=function(e,t){return function(c,l){var u,d=arguments[2],f=arguments[3];return c=Object(r(c)),n(l),u=o(c),f&&u.sort(typeof f==`function`?i.call(f,c):void 0),typeof e!=`function`&&(e=u[e]),a.call(e,u,function(e,n){return s.call(c,e)?a.call(l,d,c[e],e,c,n):t})}}})),require_for_each=__commonJSMin(((e,t)=>{t.exports=require__iterate()(`forEach`)})),require_map=__commonJSMin(((e,t)=>{var n=require_valid_callable(),r=require_for_each(),i=Function.prototype.call;t.exports=function(e,t){var a={},o=arguments[2];return n(t),r(e,function(e,n,r,s){a[n]=i.call(t,o,e,n,r,s)}),a}})),require_auto_bind=__commonJSMin(((e,t)=>{var n=require_is$4(),r=require_ensure$1(),i=require_ensure(),a=require_copy(),o=require_normalize_options(),s=require_map(),c=Function.prototype.bind,l=Object.defineProperty,u=Object.prototype.hasOwnProperty,d=function(e,t,n){var o=r(t)&&i(t.value),s=a(t);return delete s.writable,delete s.value,s.get=function(){return!n.overwriteDefinition&&u.call(this,e)?o:(t.value=c.call(o,n.resolveContext?n.resolveContext(this):this),l(this,e,t),this[e])},s};t.exports=function(e){var t=o(arguments[1]);return n(t.resolveContext)&&i(t.resolveContext),s(e,function(e,n){return d(n,e,t)})}})),require_es6_iterator=__commonJSMin(((e,t)=>{var n=require_clear(),r=require_assign(),i=require_valid_callable(),a=require_valid_value(),o=require_d(),s=require_auto_bind(),c=require_es6_symbol(),l=Object.defineProperty,u=Object.defineProperties,d;t.exports=d=function(e,t){if(!(this instanceof d))throw TypeError(`Constructor requires 'new'`);u(this,{__list__:o(`w`,a(e)),__context__:o(`w`,t),__nextIndex__:o(`w`,0)}),t&&(i(t.on),t.on(`_add`,this._onAdd),t.on(`_delete`,this._onDelete),t.on(`_clear`,this._onClear))},delete d.prototype.constructor,u(d.prototype,r({_next:o(function(){var e;if(this.__list__){if(this.__redo__&&(e=this.__redo__.shift(),e!==void 0))return e;if(this.__nextIndex__<this.__list__.length)return this.__nextIndex__++;this._unBind()}}),next:o(function(){return this._createResult(this._next())}),_createResult:o(function(e){return e===void 0?{done:!0,value:void 0}:{done:!1,value:this._resolve(e)}}),_resolve:o(function(e){return this.__list__[e]}),_unBind:o(function(){this.__list__=null,delete this.__redo__,this.__context__&&=(this.__context__.off(`_add`,this._onAdd),this.__context__.off(`_delete`,this._onDelete),this.__context__.off(`_clear`,this._onClear),null)}),toString:o(function(){return`[object `+(this[c.toStringTag]||`Object`)+`]`})},s({_onAdd:o(function(e){if(!(e>=this.__nextIndex__)){if(++this.__nextIndex__,!this.__redo__){l(this,`__redo__`,o(`c`,[e]));return}this.__redo__.forEach(function(t,n){t>=e&&(this.__redo__[n]=++t)},this),this.__redo__.push(e)}}),_onDelete:o(function(e){var t;e>=this.__nextIndex__||(--this.__nextIndex__,this.__redo__&&(t=this.__redo__.indexOf(e),t!==-1&&this.__redo__.splice(t,1),this.__redo__.forEach(function(t,n){t>e&&(this.__redo__[n]=--t)},this)))}),_onClear:o(function(){this.__redo__&&n.call(this.__redo__),this.__nextIndex__=0})}))),l(d.prototype,c.iterator,o(function(){return this}))})),require_array=__commonJSMin(((e,t)=>{var n=require_set_prototype_of(),r=require_contains(),i=require_d(),a=require_es6_symbol(),o=require_es6_iterator(),s=Object.defineProperty,c=t.exports=function(e,t){if(!(this instanceof c))throw TypeError(`Constructor requires 'new'`);o.call(this,e),t=t?r.call(t,`key+value`)?`key+value`:r.call(t,`key`)?`key`:`value`:`value`,s(this,`__kind__`,i(``,t))};n&&n(c,o),delete c.prototype.constructor,c.prototype=Object.create(o.prototype,{_resolve:i(function(e){return this.__kind__===`value`?this.__list__[e]:this.__kind__===`key+value`?[e,this.__list__[e]]:e})}),s(c.prototype,a.toStringTag,i(`c`,`Array Iterator`))})),require_shim$1=__commonJSMin(((e,t)=>{var n=require_array();t.exports=function(){return new n(this,`value`)}})),require_shim=__commonJSMin(((e,t)=>{t.exports=require_shim$1()})),require_implement$1=__commonJSMin((()=>{require_is_implemented$3()()||Object.defineProperty(Array.prototype,require_es6_symbol().iterator,{value:require_shim(),configurable:!0,enumerable:!1,writable:!0})})),require_implement=__commonJSMin((()=>{require_is_implemented$7()()||Object.defineProperty(require_global_this(),`Symbol`,{value:require_polyfill(),configurable:!0,enumerable:!1,writable:!0})}));require_es7_array_prototype_includes(),require_implement$2(),require_implement$1(),require_implement();const{decodeUplink,adjustRoundingDecimals,decodeHexUplink}=useParser();
/**
* ------------------------------------------------------------
* Device Documentation (from JSDOC.md)
* ------------------------------------------------------------
*
* # A2G Parser Quick Start
*
* ## Parser API
*
* All functions are pure (no global mutation) except `adjustMeasuringRange`, which updates internal range configuration for subsequent decodes.
*
* ### Types
*
* Input types:
* ```ts
* interface UplinkInput {
* fPort: number // LoRaWAN FPort
* bytes: number[] // Raw payload as array of unsigned bytes (0-255)
* recvTime?: string // Optional ISO timestamp from your LNS
* }
*
* interface HexUplinkInput {
* fPort: number // LoRaWAN FPort
* bytes: string // Hex-encoded payload (case-insensitive, even length)
* recvTime?: string // Optional ISO timestamp from your LNS
* }
* ```
*
* Return type (shared by all decode helpers):
* ```ts
* type Result = {
* data: Record<string, any> // Parsed key/value pairs
* warnings?: string[] // Non-fatal anomalies
* } | {
* errors: string[] // Fatal or structural issues only
* }
* ```
*
* To understand the `data` field, review the [examples](https://github.com/WIKA-Group/javascript_parsers/blob/main/packages/parsers/src/devices/A2G/examples.json) and the [schema definition](https://github.com/WIKA-Group/javascript_parsers/blob/main/packages/parsers/src/devices/A2G/uplink.schema.json).
*
* Supported `channels` to identify different sensors by:
* ```ts
* // Is used in the returned data
* type ChannelName = 'pressure' | 'flow' | 'input_1' | 'input_2' | 'input_3' | 'input_4' | 'relay_status_1' | 'relay_status_2'
* ```
*
* **Channel Configuration:**
*
* | Channel Name | Default Min | Default Max | Unit | Configurable |
* |--------------|-------------|-------------|------|-------------|
* | `pressure` | 0 | 100 | % | No |
* | `flow` | 0 | 100 | % | No |
* | `input_1` | 0 | 100 | % | No |
* | `input_2` | 0 | 100 | % | No |
* | `input_3` | 0 | 100 | % | No |
* | `input_4` | 0 | 1 | - | No |
* | `relay_status_1` | 0 | 1 | - | No |
* | `relay_status_2` | 0 | 1 | - | No |
*
* *All channels have fixed ranges that cannot be adjusted.
*
* ### `decodeUplink(input)`
* ```ts
* function decodeUplink(input: UplinkInput): Result
* ```
*
* ### `decodeHexString(hexInput)`
* ```ts
* function decodeHexString(hexInput: HexUplinkInput): DecodeResult
* ```
* `bytes` must have even length; case-insensitive.
*
* ### `adjustRoundingDecimals(decimals)`
* ```ts
* // Smartly adjust number of decimals for rounded values
* // Impacts all numeric values in all outputs
* // Default is 4
* function adjustRoundingDecimals(decimals: number): void
* ```
* Applies to future decodes only.
*
* ## About A2G Channels
*
* **Note:** A2G has fixed measurement ranges for all channels that cannot be adjusted. The device reads 8 different inputs with predefined ranges. No measurement range configuration is required.
*
* ---
*
* ## Quick Start
*
* 1. No measurement range configuration needed (all channels have fixed ranges)
* 2. Add wrapper function if your network server is non-compliant: `function decode(input) { return decodeUplink(input) }`
*
*/