UNPKG

qp-well-parser

Version:

A small package to help destructure api responses into standard well objects

2 lines (1 loc) 3.57 kB
"use strict";function drillDirectionParser(e){if("string"!=typeof e)return!1;var r;switch(e.toLowerCase()){case"vt":case"vert":case"vertical":r="VT";break;case"hz":case"horz":case"horizontal":r="HZ";break;case"dir":case"directional":r="DIR";break;case"slt":case"slant":r="SLT";break;default:r=!1}return r}function bcWellParser(e){return{get primaryHeader(){return{label:"Well Name",value:e.WellName}},get subheader(){return{label:"UWI",value:e.UWI}},get govId(){return{label:"Well Authorization",value:e.WellAuthorization}},get surfaceLocation(){return{label:"Surface Location",value:e.SurfaceLocation}},get owner(){return{label:"Operator Abbreviation",value:e.OperatorAbbreviation}},get attributes(){return{region:e.Region,country:e.Country,coordinates:e.Location?{lat:e.Location.lat,lon:e.Location.lon}:null,wellStatus:e.WellMode,substance:e.WellFluid,drillDirection:drillDirectionParser(),isLatest:"null"===e.Next||!e.Next}}}}function albertaWellParser(e){return{get primaryHeader(){return{label:"Well Name",value:e.WellName}},get subheader(){return{label:"UWI",value:e.UWI}},get govId(){return{label:"License Number",value:e.LicenseNumber}},get surfaceLocation(){return{label:"Surface Location",value:e.SurfaceLocation}},get owner(){return{label:"Licensee",value:e.LicenseeName}},get attributes(){return{region:e.Region,country:e.Country,coordinates:e.SurfaceCoordinates?{lat:e.SurfaceCoordinates.lat,lon:e.SurfaceCoordinates.lon}:null,wellStatus:e.LaheeClassification,substance:e.Substance,drillDirection:drillDirectionParser(e.DrillingOperation),isLatest:"null"===e.Next||!e.Next}}}}function saskatchewanWellParser(e){var r=e.Components.reduce(function(e,r){return!e.UWI||e.UWI.slice(-2)<r.UWI.slice(-2)?r:e},{});return{get primaryHeader(){return{label:"Well Name",value:e.WellName}},get subheader(){return{label:"UWI",value:r.UWI}},get govId(){return{label:"License Number",value:e.LicenseNumber}},get surfaceLocation(){return{label:"Surface Land Description",value:e.SurfaceLandDescription}},get owner(){return{label:"Licensee",value:e.LicenseeName}},get attributes(){return{region:e.Region,country:e.Country,coordinates:e.SurfaceCoordinates?e.SurfaceCoordinates:null,wellStatus:e.LaheeClass||null,substance:null,drillDirection:drillDirectionParser(r.Trajectory),isLatest:"null"===e.Next||!e.Next}}}}var parsers={BC:bcWellParser,AB:albertaWellParser,SK:saskatchewanWellParser},standardWell={uuid:"",primaryHeader:{label:"",value:""},subheader:{label:"",value:""},govId:{label:"",value:""},surfaceLocation:{label:"",value:""},owner:{label:"",value:""},attributes:{country:"",region:"",coordinates:{lat:0,lon:0},wellStatus:"",substance:"",drillDirection:"",isLatest:!0},wellData:{}};function parse(e){if(!e||!e.Region)throw new Error(".Region not provided");var r=e.Region;if(!parsers[r])throw new Error(".Region not supported: "+r);var a=parsers[r](e);return{uuid:e.Uuid,primaryHeader:a.primaryHeader,subheader:a.subheader,govId:a.govId,surfaceLocation:a.surfaceLocation,owner:a.owner,attributes:a.attributes,wellData:e}}var v1Parser={parse:parse,standardWell:standardWell},versions={v1:v1Parser};function ensureVersion(e){for(var r=!1,a=["v1"],t=0;t<a.length;t++){if(e===a[t]){r=!0;break}}return r}function WellParser(e){if("string"!=typeof e&&(e="v1"),!ensureVersion(e))throw new Error("Please specify a valid apiVersion");return Object.assign(function(r){return versions[e].parse(r)},{valueOf:function(){return versions[e].standardWell},get version(){return e},get apiVersion(){return e},v1Parse:function(e){return v1Parser.parse(e)}})}module.exports=WellParser;