opensensemap-client
Version:
The library allows and improves type-based working with the openSenseMap API
13 lines (12 loc) • 19.9 kB
JavaScript
'use strict';var $=require('axios'),superstruct=require('superstruct');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var $__default=/*#__PURE__*/_interopDefault($);/*
* 📦 opensensemap-client
*
* 🏷️ Version: 1.8.1
* 📄 License: MIT
* 🕒 Build: 2025-07-12T10:21:15.428Z
* 🔗 Repository: [object Object]
* 👤 Author: Julian Wowra <development@julianwowra.de>
*/
async function ps(r,e){let t=await $__default.default.post("https://api.opensensemap.org/boxes/claim",{token:r},{headers:{Authorization:`Bearer ${e}`}});return superstruct.mask(t.data,_e)}var _e=superstruct.object({message:superstruct.literal("Device successfully claimed!")});var n=superstruct.pattern(superstruct.string(),/^[a-f0-9]{24}$/),s=superstruct.pattern(superstruct.string(),/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,3})?Z$/);superstruct.pattern(superstruct.string(),/^-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?,-?\d+(\.\d+)?$/);var E=superstruct.union([superstruct.object({lat:superstruct.number(),lng:superstruct.number(),height:superstruct.optional(superstruct.number())}),superstruct.tuple([superstruct.number(),superstruct.number(),superstruct.optional(superstruct.number())])]);var k=superstruct.enums(["indoor","outdoor","mobile","unknown"]),O=superstruct.enums(["boxId","boxName","exposure","height","lat","lon","phenomenon","sensorType","unit"]),A=superstruct.object({type:superstruct.literal("Point"),coordinates:E,timestamp:s}),Ne=superstruct.deprecated(superstruct.object({geometry:A,type:superstruct.literal("Feature")}),(r,e)=>{console.warn(`${e.path.join(".")} is deprecated. Please use 'BoxLocation' instead.`);}),Ce=superstruct.object({enabled:superstruct.boolean(),url:superstruct.string(),topic:superstruct.string(),messageFormat:superstruct.enums(["json","csv"]),decodeOptions:superstruct.string(),connectionOptions:superstruct.string()}),Le=superstruct.object({dev_id:superstruct.string(),app_id:superstruct.string(),profile:superstruct.enums(["lora-serialization","sensebox/home","json","debug","cayenne-lpp"]),decodeOptions:superstruct.optional(superstruct.array(superstruct.unknown())),port:superstruct.min(superstruct.number(),0,{exclusive:true})});superstruct.enums(["homeV2Lora","homeV2Ethernet","homeV2EthernetFeinstaub","homeV2Wifi","homeV2WifiFeinstaub","homeEthernet","homeWifi","homeEthernetFeinstaub","homeWifiFeinstaub","luftdaten_sds011","luftdaten_sds011_dht11","luftdaten_sds011_dht22","luftdaten_sds011_bmp180","luftdaten_sds011_bme280","luftdaten_pms1003","luftdaten_pms1003_bme280","luftdaten_pms3003","luftdaten_pms3003_bme280","luftdaten_pms5003","luftdaten_pms5003_bme280","luftdaten_pms7003","luftdaten_pms7003_bme280","luftdaten_sps30_bme280","luftdaten_sps30_sht3x","hackair_home_v2"]);superstruct.enums(["BME280","BME680","BMP180","BMP280","DHT11","DHT22","DNMS","DPS310","HDC1008","PMS 1003","PMS 3003","PMS 5003","PMS 7003","SCD30","SDS 011","SHT3X","SMT50","SOUNDLEVELMETER","SPS30","TSL45315","VEML6070","WINDSPEED"]);var F=superstruct.object({_id:n,title:superstruct.string(),unit:superstruct.string(),sensorType:superstruct.optional(superstruct.string()),icon:superstruct.optional(superstruct.string())}),y=superstruct.object({_id:n,name:superstruct.string(),createdAt:s,exposure:k,model:superstruct.string(),descriptiom:superstruct.optional(superstruct.string()),grouptag:superstruct.optional(superstruct.array(k)),weblink:superstruct.optional(superstruct.string()),image:superstruct.optional(superstruct.string()),currentLocation:A,loc:superstruct.array(Ne),updatedAt:s,sensor:superstruct.array(),lastMeasurementAt:superstruct.optional(s)}),u=superstruct.intersection([y,superstruct.object({integrations:superstruct.object({mqtt:superstruct.union([superstruct.object({enabled:superstruct.literal(false)}),Ce]),ttn:superstruct.optional(Le)}),access_token:superstruct.string(),useAuth:superstruct.optional(superstruct.boolean())})]),T=superstruct.object({_id:n,boxId:n,token:superstruct.string(),createdAt:s,updatedAt:s,expiresAt:s});async function ys(r,e,t){let o=await $__default.default.post("https://api.opensensemap.org/boxes/transfer",{boxId:r,date:e},{headers:{Authorization:`Bearer ${t}`}});return superstruct.mask(o.data,Fe)}var Fe=superstruct.object({message:superstruct.literal("Box successfully prepared for transfer"),data:T});async function Ds(r,e,t){let o=await $__default.default.delete(`https://api.opensensemap.org/boxes/${r}`,{headers:{Authorization:`Bearer ${t}`},data:{password:e}});return superstruct.mask(o.data,We)}var We=superstruct.object({code:superstruct.literal("Ok"),message:superstruct.literal("box and all associated measurements marked for deletion")});async function bs(){let r=await $__default.default.get("https://api.opensensemap.org/tags");return superstruct.mask(r.data,qe)}var qe=superstruct.object({code:superstruct.literal("Ok"),data:superstruct.array(superstruct.string())});async function Ls(r){let e=await $__default.default.get(`https://api.opensensemap.org/boxes/${r}`,{params:{format:"json"}});return superstruct.mask(e.data,Ke)}var Ke=y;async function Fs(r,e){e?.date&&e.date instanceof Date&&(e.date=e.date.toISOString()),e?.grouptag&&Array.isArray(e.grouptag)&&(e.grouptag=e.grouptag.join()),e?.exposure&&Array.isArray(e.exposure)&&(e.exposure=e.exposure.join());let t=await $__default.default.get("https://api.opensensemap.org/boxes",{params:Object.assign({bbox:r},e)});return superstruct.mask(t.data,rt)}var rt=superstruct.array(y);async function Xs(r,e){e?.["from-date"]&&e["from-date"]instanceof Date&&(e["from-date"]=e["from-date"].toISOString()),e?.["to-date"]&&e["to-date"]instanceof Date&&(e["to-date"]=e["to-date"].toISOString());let t=await $__default.default.get(`https://api.opensensemap.org/boxes/${r}/locations`,{params:e});return superstruct.mask(t.data,nt)}var nt=superstruct.array(A);async function Vs(r,e,t){let o=await $__default.default.get(`https://api.opensensemap.org/boxes/${r}/script`,{headers:{Authorization:`Bearer ${e}`},params:t});return superstruct.mask(o.data,dt)}var dt=superstruct.string();async function Ks(r,e){let t=await $__default.default.get(`https://api.opensensemap.org/boxes/transfer/${r}`,{headers:{Authorization:`Bearer ${e}`}});return superstruct.mask(t.data,St)}var St=superstruct.object({data:T});async function oa(r,e,t,o,a){let f=await $__default.default.post("https://api.opensensemap.org/boxes",Object.assign({name:r,exposure:e,location:t},a),{headers:{Authorization:`Bearer ${o}`}});return superstruct.mask(f.data,Tt)}var Tt=superstruct.object({message:superstruct.literal("Box successfully created"),data:u});async function pa(r,e,t){let o=await $__default.default.delete("https://api.opensensemap.org/boxes/transfer",{headers:{Authorization:`Bearer ${t}`},data:{boxId:r,token:e}});if(o.status!==204)throw new Error("Failed to remove transfer!");return superstruct.mask(o.data,At)}var At=superstruct.never();async function ca(r,e,t){let o=await $__default.default.put(`https://api.opensensemap.org/boxes/${r}`,t,{headers:{Authorization:`Bearer ${e}`}});return superstruct.mask(o.data,bt)}var bt=superstruct.object({code:superstruct.literal("Ok"),data:u});async function Ea(r,e,t,o){let a=await $__default.default.put(`https://api.opensensemap.org/boxes/transfer/${r}`,{token:e,date:t},{headers:{Authorization:`Bearer ${o}`}});return superstruct.mask(a.data,Lt)}var Lt=superstruct.object({message:superstruct.literal("Transfer successfully updated"),data:T});async function ka(r,e,t){t?.["from-date"]&&t["from-date"]instanceof Date&&(t["from-date"]=t["from-date"].toISOString()),t?.["to-date"]&&t["to-date"]instanceof Date&&(t["to-date"]=t["to-date"].toISOString()),t?.exposure&&Array.isArray(t.exposure)&&(t.exposure=t.exposure.join());let o=await $__default.default.get("https://api.opensensemap.org/statistics/idw",{params:Object.assign({phenomenon:r,bbox:e},t)});return superstruct.mask(o.data,Ft)}var Ft=superstruct.union([superstruct.object({code:superstruct.literal("NotFound"),message:superstruct.literal("no measurements found")}),superstruct.object({code:superstruct.literal("Ok"),data:superstruct.object({breaks:superstruct.array(superstruct.number()),featureCollection:superstruct.array(superstruct.object({type:superstruct.literal("FeatureCollection"),features:superstruct.object({type:superstruct.string(),properties:superstruct.optional(superstruct.object({idwValues:superstruct.array(superstruct.number())})),geometry:superstruct.object({type:superstruct.string(),coordinates:superstruct.array(superstruct.array(superstruct.array(superstruct.number())))})})})),timesteps:superstruct.array(s)})})]);async function Wa(r,e,t,o){o?.["from-date"]&&o["from-date"]instanceof Date&&(o["from-date"]=o["from-date"].toISOString()),o?.["to-date"]&&o["to-date"]instanceof Date&&(o["to-date"]=o["to-date"].toISOString()),o&&Array.isArray(o.timestamps)&&(o.timestamps=o.timestamps.map(f=>f instanceof Date?f.toISOString():f));let a=await $__default.default.delete(`https://api.opensensemap.org/boxes/${r}/${e}/measurements`,{headers:{Authorization:`Bearer ${t}`},data:o});return superstruct.mask(a.data,zt)}var zt=superstruct.object({code:superstruct.literal("Ok"),message:superstruct.pattern(superstruct.string(),/^Successfully deleted (all measurements|\d+ measurements|measurements between .+ and .+) of sensor .+$/)});async function Va(r,e,t){t?.["from-date"]&&t["from-date"]instanceof Date&&(t["from-date"]=t["from-date"].toISOString()),t?.["to-date"]&&t["to-date"]instanceof Date&&(t["to-date"]=t["to-date"].toISOString());let o=await $__default.default.get(`https://api.opensensemap.org/boxes/${r}/data/${e}`,{params:t});return superstruct.mask(o.data,Jt)}var Jt=superstruct.array(superstruct.object({value:superstruct.string(),location:E,createdAt:s,isOutlier:superstruct.optional(superstruct.boolean())}));async function Ka(r){try{let e=await $__default.default.get("https://api.opensensemap.org/boxes/data/bytag",{params:{grouptag:Array.isArray(r)?r.join():r}});return superstruct.mask(e.data,sr)}catch(e){if($__default.default.isAxiosError(e)&&e.response?.status===404&&e.response.data?.message==="No senseBoxes found")return [];throw e}}var sr=superstruct.array(superstruct.object({boxId:n,sensorId:n,value:superstruct.string(),createdAt:s}));async function sn(r,e,t){"boxId"in e&&Array.isArray(e.boxId)&&(e.boxId=e.boxId.join()),t?.["from-date"]&&t["from-date"]instanceof Date&&(t["from-date"]=t["from-date"].toISOString()),t?.["to-date"]&&t["to-date"]instanceof Date&&(t["to-date"]=t["to-date"].toISOString()),t?.columns&&Array.isArray(t.columns)&&(t.columns=t.columns.join()),t?.exposure&&Array.isArray(t.exposure)&&(t.exposure=t.exposure.join());let o=await $__default.default.get("https://api.opensensemap.org/boxes/data",{params:Object.assign({format:"json",phenomenon:r},e,t)});return superstruct.mask(o.data,cr)}var cr=superstruct.array(superstruct.intersection([superstruct.object({createdAt:s,value:superstruct.string()}),superstruct.record(O,superstruct.optional(superstruct.string()))]));var lr=superstruct.object({value:superstruct.string(),createdAt:s});superstruct.object({_id:n,value:superstruct.string(),sensor_id:n,createdAt:s,location:superstruct.object({type:superstruct.literal("Point"),coordinates:E})});var I=superstruct.intersection([F,superstruct.object({lastMeasurement:superstruct.optional(lr)})]);async function xn(r,e,t){let o=await $__default.default.get(`https://api.opensensemap.org/boxes/${r}/sensors/${e}`,{params:t});return superstruct.mask(o.data,Or)}var Or=superstruct.optional(superstruct.union([I,superstruct.string()]));superstruct.object({_id:n,name:superstruct.optional(superstruct.string()),sensors:superstruct.array(I),grouptag:superstruct.optional(superstruct.string())});async function Mn(r,e,t,o,a){a?.createdAt&&a.createdAt instanceof Date&&(a.createdAt=a.createdAt.toISOString());let f=await $__default.default.post(`https://api.opensensemap.org/boxes/${r}/${e}`,Object.assign({value:typeof t=="string"?t:t.toString()},a),{headers:o?{Authorization:o}:{}});return superstruct.mask(f.data,br)}var br=superstruct.literal("Measurement saved in box");async function Nn(r,e,t){e=e.map(a=>(typeof a.value=="number"&&(a.value=a.value.toString()),a.createdAt&&a.createdAt instanceof Date&&(a.createdAt=a.createdAt.toISOString()),a));let o=await $__default.default.post(`https://api.opensensemap.org/boxes/${r}/data`,e,{headers:t?{Authorization:t}:{}});return superstruct.mask(o.data,Cr)}var Cr=superstruct.literal("Measurements saved in box");async function vn(r){let e=await $__default.default.get("https://api.opensensemap.org/stats",{params:r});return superstruct.mask(e.data,Fr)}var Fr=superstruct.union([superstruct.array(superstruct.number()),superstruct.array(superstruct.string())]);async function Qn(){let r=await $__default.default.get("https://api.opensensemap.org/");return superstruct.mask(r.data,Wr)}var Wr=superstruct.string();async function op(r,e,t,o,a,f,c){"boxId"in r&&Array.isArray(r.boxId)&&(r.boxId=r.boxId.join()),t instanceof Date&&(t=t.toISOString()),o instanceof Date&&(o=o.toISOString()),c?.columns&&Array.isArray(c.columns)&&(c.columns=c.columns.join()),c?.exposure&&Array.isArray(c.exposure)&&(c.exposure=c.exposure.join());let le=await $__default.default.get("https://api.opensensemap.org/statistics/descriptive",{params:Object.assign({phenomenon:e,"from-date":t,"to-date":o,operation:a,window:f,format:"json"},r,c)});return superstruct.mask(le.data,Yr)}var Yr=superstruct.array(superstruct.intersection([superstruct.object({sensorId:n}),superstruct.record(O,superstruct.optional(superstruct.string())),superstruct.record(s,superstruct.number())]));async function mp(r,e){let t=await $__default.default.post("https://api.opensensemap.org/users/confirm-email",{email:r,token:e});return superstruct.mask(t.data,to)}var to=superstruct.object({code:superstruct.literal("Ok"),message:superstruct.literal("E-Mail successfully confirmed. Thank you")});async function up(r,e){let t=await $__default.default.delete("https://api.opensensemap.org/users/me",{headers:{Authorization:`Bearer ${e}`},data:{password:r}});return superstruct.mask(t.data,ao)}var ao=superstruct.object({code:superstruct.literal("Ok"),message:superstruct.literal("User and all boxes of user marked for deletion. Bye Bye!")});var io=superstruct.pattern(superstruct.string(),/^[a-zA-Z0-9][a-zA-Z0-9 .\-_]{2,39}$/),mo=superstruct.enums(["user","admin"]),fo=superstruct.enums(["de_DE","en_US"]);superstruct.pattern(superstruct.string(),/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/);var i=superstruct.object({name:io,email:superstruct.string(),role:mo,language:fo,boxes:superstruct.array(n),sharedBoxes:superstruct.optional(superstruct.array(n)),emailIsConfirmed:superstruct.boolean(),integrations:superstruct.optional(superstruct.object())});superstruct.intersection([i,superstruct.object({_id:n,unconfirmedEmail:superstruct.string(),lastUpdatedBy:s,createdAt:s,updatedAt:s})]);async function Ap(r){let e=await $__default.default.get("https://api.opensensemap.org/users/me",{headers:{Authorization:`Bearer ${r}`}});return superstruct.mask(e.data,xo)}var xo=superstruct.object({code:superstruct.literal("Ok"),data:superstruct.object({me:i})});async function bp(r,e){let t=await $__default.default.get(`https://api.opensensemap.org/users/me/boxes/${r}`,{headers:{Authorization:`Bearer ${e}`}});return superstruct.mask(t.data,To)}var To=superstruct.object({code:superstruct.literal("Ok"),data:superstruct.object({box:u})});async function Lp(r,e){let t=await $__default.default.get("https://api.opensensemap.org/users/me/boxes",{params:e,headers:{Authorization:`Bearer ${r}`}});return superstruct.mask(t.data,Do)}var Do=superstruct.object({code:superstruct.literal("Ok"),data:superstruct.object({boxes:superstruct.array(u),boxes_count:superstruct.integer(),sharedBoxes:superstruct.array(u)})});async function Pp(r,e){let t=await $__default.default.post("https://api.opensensemap.org/users/password-reset",{password:r,token:e});return superstruct.mask(t.data,bo)}var bo=superstruct.object({code:superstruct.literal("Ok"),message:superstruct.literal("Password successfully changed. You can now login with your new password")});async function Wp(r){let e=await $__default.default.post("https://api.opensensemap.org/users/refresh-auth",{token:r});return superstruct.mask(e.data,No)}var No=superstruct.object({code:superstruct.literal("Authorized"),message:superstruct.literal("Successfully refreshed auth"),data:superstruct.object({user:i}),token:superstruct.string(),refreshToken:superstruct.string()});async function Vp(r,e,t,o){let a=await $__default.default.post("https://api.opensensemap.org/users/register",Object.assign({name:r,email:e,password:t},o));return superstruct.mask(a.data,Bo)}var Bo=superstruct.object({code:superstruct.literal("Created"),message:superstruct.literal("Successfully registered new user"),data:superstruct.object({user:i}),token:superstruct.string(),refreshToken:superstruct.string()});async function Yp(r){let e=await $__default.default.post("https://api.opensensemap.org/users/request-password-reset",{email:r});return superstruct.mask(e.data,Fo)}var Fo=superstruct.object({code:superstruct.literal("Ok"),message:superstruct.literal("Password reset initiated")});async function ti(r){let e=await $__default.default.post("https://api.opensensemap.org/users/me/resend-email-confirmation",void 0,{headers:{Authorization:`Bearer ${r}`}});return superstruct.mask(e.data,vo)}var vo=superstruct.object({code:superstruct.literal("Ok"),message:superstruct.string()});async function ni(r,e){let t=await $__default.default.post("https://api.opensensemap.org/users/sign-in",{email:r,password:e});return superstruct.mask(t.data,Vo)}var Vo=superstruct.object({code:superstruct.literal("Authorized"),message:superstruct.literal("Successfully signed in"),data:superstruct.object({user:i}),token:superstruct.string(),refreshToken:superstruct.string()});async function di(r){let e=await $__default.default.post("https://api.opensensemap.org/users/sign-out",void 0,{headers:{Authorization:`Bearer ${r}`}});return superstruct.mask(e.data,Yo)}var Yo=superstruct.object({code:superstruct.literal("Ok"),message:superstruct.literal("Successfully signed out")});async function xi(r,e,t){let o=await $__default.default.put("https://api.opensensemap.org/users/me",Object.assign({currentPassword:r},t),{headers:{Authorization:`Bearer ${e}`}});return superstruct.mask(o.data,ss)}var rs=superstruct.object({code:superstruct.literal("Ok"),message:superstruct.enums(["User successfully saved.","User successfully saved. E-Mail changed. Please confirm your new address. Until confirmation, sign in using your old address","User successfully saved. Password changed. Please sign in with your new password"]),data:superstruct.object({me:i})}),os=superstruct.object({code:superstruct.literal("Ok"),message:superstruct.literal("User not updated. No changed properties supplied.")}),ss=superstruct.union([rs,os]);
exports.calculateIdw=ka;exports.claimBox=ps;exports.confirmEmail=mp;exports.createTransfer=ys;exports.deleteBox=Ds;exports.deleteMeasurements=Wa;exports.deleteUser=up;exports.descriptive=op;exports.getAllTags=bs;exports.getBox=Ls;exports.getBoxLocations=Xs;exports.getBoxes=Fs;exports.getData=Va;exports.getDataByGroupTag=Ka;exports.getDataMulti=sn;exports.getLatestMeasurementOfSensor=xn;exports.getSketch=Vs;exports.getStatistics=vn;exports.getTransfer=Ks;exports.getUser=Ap;exports.getUserBox=bp;exports.getUserBoxes=Lp;exports.passwordReset=Pp;exports.postNewBox=oa;exports.postNewMeasurement=Mn;exports.postNewMeasurements=Nn;exports.printRoutes=Qn;exports.refreshAuth=Wp;exports.register=Vp;exports.removeTransfer=pa;exports.requestPasswordReset=Yp;exports.resendEmailConfirmation=ti;exports.signIn=ni;exports.signOut=di;exports.updateBox=ca;exports.updateTransfer=Ea;exports.updateUser=xi;//# sourceMappingURL=index.cjs.map
//# sourceMappingURL=index.cjs.map