@openeo/js-commons
Advanced tools
Comparing version 1.0.0-rc.2 to 1.0.0-rc.3
168
dist/main.js
@@ -189,4 +189,2 @@ (function webpackUniversalModuleDefinition(root, factory) { | ||
const semver = /^v?(?:\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+))?(?:-[\da-z\-]+(?:\.[\da-z\-]+)*)?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i; | ||
class Versions { | ||
@@ -203,9 +201,4 @@ | ||
// Function or regexp is coming from compare-version, but not exposed so copied it here. | ||
// See also https://github.com/omichelsen/compare-versions/issues/37 | ||
static validate(version) { | ||
if (typeof version !== 'string') { | ||
return false; | ||
} | ||
return semver.test(version); | ||
return VersionCompare.validate(version); | ||
} | ||
@@ -285,3 +278,2 @@ | ||
const MigrateProcesses = __webpack_require__(6); | ||
const MigrateProcessGraphs = __webpack_require__(7); | ||
// Others | ||
@@ -295,3 +287,2 @@ const Versions = __webpack_require__(1); | ||
MigrateProcesses, | ||
MigrateProcessGraphs, | ||
Versions, | ||
@@ -439,5 +430,26 @@ Utils, | ||
// convert v0.4 endpoints to v1.0 | ||
if (Versions.compare(version, "0.4.x", "=")) { | ||
if (updatePaths) { | ||
endpoints = endpoints.map(e => { | ||
if (updatePaths) { | ||
let isV04 = Versions.compare(version, "0.4.x", "="); | ||
let isLtV100RC2 = Versions.compare(version, "1.0.0-rc.2", "<"); | ||
let addPutToPg = function(endpoints) { | ||
let newPgPath = '/process_graphs/{process_graph_id}'; | ||
let i = endpoints.findIndex(e => e.path === newPgPath); | ||
if (i >= 0) { | ||
if (endpoints[i].methods.indexOf('PUT') === -1) { | ||
endpoints[i].methods.push('PUT'); | ||
} | ||
} | ||
else { | ||
endpoints.push({ | ||
path: newPgPath, | ||
methods: ['PUT'] | ||
}); | ||
} | ||
return endpoints; | ||
}; | ||
for(var i in endpoints) { | ||
let e = endpoints[i]; | ||
if (isV04) { | ||
switch (e.path) { | ||
@@ -454,8 +466,22 @@ case '/output_formats': | ||
} | ||
return e; | ||
}); | ||
} | ||
if (isLtV100RC2) { | ||
switch (e.path) { | ||
case '/process_graphs': | ||
let post = e.methods.indexOf('POST'); | ||
if (post >= 0) { | ||
e.methods.splice(post, 1); | ||
addPutToPg(endpoints); | ||
} | ||
break; | ||
case '/process_graphs/{process_graph_id}': | ||
let patch = e.methods.indexOf('PATCH'); | ||
if (patch >= 0) { | ||
e.methods.splice(patch, 1); | ||
addPutToPg(endpoints); | ||
} | ||
break; | ||
} | ||
} | ||
} | ||
else { | ||
// Nothing to do as structure has not changed. | ||
} | ||
} | ||
@@ -659,2 +685,10 @@ return endpoints; | ||
var operatorResMap = { | ||
'>': [1], | ||
'>=': [0, 1], | ||
'=': [0], | ||
'<=': [-1, 0], | ||
'<': [-1] | ||
}; | ||
function validateOperator(op) { | ||
@@ -669,2 +703,6 @@ if (typeof op !== 'string') { | ||
compareVersions.validate = function(version) { | ||
return typeof version === 'string' && semver.test(version); | ||
} | ||
compareVersions.compare = function (v1, v2, operator) { | ||
@@ -674,16 +712,6 @@ // Validate operator | ||
// TODO: there might be a better way instead of doing this | ||
switch(operator) { | ||
case '>': | ||
return compareVersions(v1, v2) > 0; | ||
case '>=': | ||
return compareVersions(v1, v2) >= 0; | ||
case '<': | ||
return compareVersions(v1, v2) < 0; | ||
case '<=': | ||
return compareVersions(v1, v2) <= 0; | ||
default: | ||
// Since validateOperator already checks the operator, this case in the switch checks for the '=' operator | ||
return compareVersions(v1, v2) === 0; | ||
} | ||
// since result of compareVersions can only be -1 or 0 or 1 | ||
// a simple map can be used to replace switch | ||
var res = compareVersions(v1, v2); | ||
return operatorResMap[operator].indexOf(res) > -1; | ||
} | ||
@@ -1029,2 +1057,4 @@ | ||
// Update process graph -> nothing to do yet | ||
return process; | ||
@@ -1126,78 +1156,4 @@ } | ||
/***/ }), | ||
/* 7 */ | ||
/***/ (function(module, exports, __webpack_require__) { | ||
const Utils = __webpack_require__(0); | ||
const Versions = __webpack_require__(1); | ||
class MigrateProcessGraphs { | ||
// Always returns a copy of the input object | ||
static convertProcessGraphToLatestSpec(originalProcessGraph, version) { | ||
if (Versions.compare(version, "0.3.x", "<=")) { | ||
throw "Migrating from API version 0.3.0 and older is not supported."; | ||
} | ||
let pg = {}; | ||
if (Utils.isObject(originalProcessGraph)) { | ||
pg = Utils.deepClone(originalProcessGraph); | ||
} | ||
if (Versions.compare(version, "0.4.x", "=")) { | ||
pg = migrateNodes(pg, version); | ||
} | ||
return pg; | ||
} | ||
} | ||
function migrateNodes(nodes, version) { | ||
for(let id in nodes) { | ||
if (!Utils.isObject(nodes[id].arguments)) { | ||
continue; | ||
} | ||
for(let argName in nodes[id].arguments) { | ||
nodes[id].arguments[argName] = migrateArgs(nodes[id].arguments[argName], version); | ||
} | ||
} | ||
return nodes; | ||
} | ||
function migrateArgs(arg, version) { | ||
if (!arg || typeof arg !== 'object') { | ||
return arg; | ||
} | ||
let isObject = Utils.isObject(arg); | ||
if (isObject && typeof arg.callback !== 'undefined') { | ||
arg = { | ||
process_graph: migrateNodes(arg.callback, version) | ||
}; | ||
} | ||
else if (isObject && typeof arg.from_argument !== 'undefined') { | ||
arg = { | ||
from_parameter: arg.from_argument | ||
}; | ||
} | ||
else if (isObject && typeof arg.variable_id !== 'undefined') { | ||
arg = { | ||
from_parameter: arg.variable_id | ||
}; | ||
} | ||
else { | ||
for(let key in arg) { | ||
arg[key] = migrateArgs(arg[key]); | ||
} | ||
} | ||
return arg; | ||
} | ||
module.exports = MigrateProcessGraphs; | ||
/***/ }) | ||
/******/ ]); | ||
}); |
@@ -1,1 +0,1 @@ | ||
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(window,(function(){return function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}([function(e,t){class r{static isObject(e){return"object"==typeof e&&e===Object(e)&&!Array.isArray(e)}static size(e){return"object"==typeof e&&null!==e?Array.isArray(e)?e.length:Object.keys(e).length:0}static isNumeric(e){return!isNaN(parseFloat(e))&&isFinite(e)}static deepClone(e){return JSON.parse(JSON.stringify(e))}static normalizeUrl(e,t=null){let r=e.replace(/\/$/,"");return"string"==typeof t&&("/"!==t.substr(0,1)&&(t="/"+t),r+=t.replace(/\/$/,"")),r}static replacePlaceholders(e,t={}){if("string"==typeof e&&r.isObject(t))for(var i in t){let r=t[i];e=e.replace("{"+i+"}",Array.isArray(r)?r.join("; "):r)}return e}}e.exports=r},function(e,t,r){const i=r(4),n=/^v?(?:\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+))?(?:-[\da-z\-]+(?:\.[\da-z\-]+)*)?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i;class s{static compare(e,t,r=null){return null!==r?i.compare(e,t,r):i(e,t)}static validate(e){return"string"==typeof e&&n.test(e)}static findCompatible(e,t=!0,r=null,i=null){if(!Array.isArray(e)||0===e.length)return[];let n=e.filter(e=>{if("string"==typeof e.url&&s.validate(e.api_version)){let t=s.validate(r),n=s.validate(i);return t&&n?s.compare(e.api_version,r,">=")&&s.compare(e.api_version,i,"<="):t?s.compare(e.api_version,r,">="):!n||s.compare(e.api_version,i,"<=")}return!1});return 0===n.length?[]:n.sort((e,r)=>{let i=!1!==e.production,n=!1!==r.production;return t&&i!==n?i?-1:1:-1*s.compare(e.api_version,r.api_version)})}static findLatest(e,t=!0,r=null,i=null){let n=s.findCompatible(e,t,r,i);return n.length>0?n[0]:null}}e.exports=s},function(e,t,r){const i=r(3),n=r(5),s=r(6),a=r(7),o=r(1),p=r(0);e.exports={MigrateCapabilities:i,MigrateCollections:n,MigrateProcesses:s,MigrateProcessGraphs:a,Versions:o,Utils:p}},function(e,t,r){const i=r(0),n=r(1);e.exports=class{static guessApiVersion(e){if(!i.isObject(e))return"0.0.0";if(n.validate(e.api_version))return e.api_version;if(n.validate(e.version))return e.version;if(Array.isArray(e.endpoints)){if(e.endpoints.filter(e=>"/file_formats"===e.path||"/conformance"===e.path||"/files"===e.path).length>0)return"1.0.0";if(e.endpoints.filter(e=>"/output_formats"===e.path||"/files/{user_id}"===e.path).length>0)return"0.4.2";if(!(e.backend_version||e.title||e.description||e.links))return"0.3.1"}return"0.0.0"}static convertCapabilitiesToLatestSpec(e,t=null,r=!0,s=!0,a="unknown",o="Unknown",p="Unknown"){if(null===t&&(t=this.guessApiVersion(e)),"0.0.0"===t)return{};if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let l=i.deepClone(e);return l.api_version=r?"1.0.0":t,i.isObject(l.billing)?l.billing=this.convertBillingToLatestSpec(l.billing,t):delete l.billing,l.endpoints=this.convertEndpointsToLatestSpec(l.endpoints,t,s),!r&&n.compare(t,"0.4.x","=")?l.stac_version="0.6.2":(r||"string"!=typeof l.stac_version)&&(l.stac_version="0.9.0"),"string"!=typeof l.backend_version&&(l.backend_version=p),"string"!=typeof l.id&&(l.id=a),"string"!=typeof l.title&&(l.title=o),"string"!=typeof l.description&&(l.description=""),Array.isArray(l.links)||(l.links=[]),l}static convertBillingToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r={};return i.isObject(e)&&(r=i.deepClone(e)),"string"!=typeof r.currency&&(r.currency=null),r}static convertEndpointsToLatestSpec(e,t,r=!1){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";if(!Array.isArray(e))return[];let s=i.deepClone(e);return n.compare(t,"0.4.x","=")&&r&&(s=s.map(e=>{switch(e.path){case"/output_formats":e.path="/file_formats";break;case"/files/{user_id}":e.path="/files";break;case"/files/{user_id}/{path}":e.path="/files/{path}"}return e})),s}static convertOutputFormatsToLatestSpec(e,t){return this.convertFileFormatsToLatestSpec(e,t)}static convertFileFormatsToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r={};return i.isObject(e)&&(r=i.deepClone(e)),n.compare(t,"0.4.x","=")&&i.isObject(r)&&(r={output:r}),i.isObject(r.input)||(r.input={}),i.isObject(r.output)||(r.output={}),r}static convertServiceTypesToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r={};if(i.isObject(e)&&(r=i.deepClone(e)),n.compare(t,"0.4.x","="))for(let e in r)i.isObject(r[e])?(delete r[e].attributes,i.isObject(r[e].parameters)&&(r[e].configuration=r[e].parameters),delete r[e].parameters,Array.isArray(r[e].variables)&&(r[e].process_parameters=r[e].variables.map(e=>{let t={name:e.variable_id,description:"string"==typeof e.description?e.description:"",schema:{type:["string"==typeof e.type?e.type:"string","null"]}};return void 0!==e.default&&(t.default=e.default),t})),delete r[e].variables):r[e]={};return r}static convertUdfRuntimesToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r=i.deepClone(e);if(n.compare(t,"0.4.x","="))for(let e in r)i.isObject(r[e])?null===r[e].description&&(r[e].description=""):delete r[e];return r}}},function(e,t,r){var i,n,s;n=[],void 0===(s="function"==typeof(i=function(){var e=/^v?(?:\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+))?(?:-[\da-z\-]+(?:\.[\da-z\-]+)*)?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i;function t(e){var t,r,i=e.replace(/^v/,"").replace(/\+.*$/,""),n=(r="-",-1===(t=i).indexOf(r)?t.length:t.indexOf(r)),s=i.substring(0,n).split(".");return s.push(i.substring(n+1)),s}function r(e){return isNaN(Number(e))?e:Number(e)}function i(t){if("string"!=typeof t)throw new TypeError("Invalid argument expected string");if(!e.test(t))throw new Error("Invalid argument not valid semver ('"+t+"' received)")}function n(e,n){[e,n].forEach(i);for(var s=t(e),a=t(n),o=0;o<Math.max(s.length-1,a.length-1);o++){var p=parseInt(s[o]||0,10),l=parseInt(a[o]||0,10);if(p>l)return 1;if(l>p)return-1}var c=s[s.length-1],u=a[a.length-1];if(c&&u){var f=c.split(".").map(r),d=u.split(".").map(r);for(o=0;o<Math.max(f.length,d.length);o++){if(void 0===f[o]||"string"==typeof d[o]&&"number"==typeof f[o])return-1;if(void 0===d[o]||"string"==typeof f[o]&&"number"==typeof d[o])return 1;if(f[o]>d[o])return 1;if(d[o]>f[o])return-1}}else if(c||u)return c?-1:1;return 0}var s=[">",">=","=","<","<="];return n.compare=function(e,t,r){switch(function(e){if("string"!=typeof e)throw new TypeError("Invalid operator type, expected string but got "+typeof e);if(-1===s.indexOf(e))throw new TypeError("Invalid operator, expected one of "+s.join("|"))}(r),r){case">":return n(e,t)>0;case">=":return n(e,t)>=0;case"<":return n(e,t)<0;case"<=":return n(e,t)<=0;default:return 0===n(e,t)}},n})?i.apply(t,n):i)||(e.exports=s)},function(e,t,r){const i=r(0),n=r(1),s={cube:"datacube",eo:"eo",label:"label",pc:"pointcloud",proj:"projection",sar:"sar",sat:"sat",sci:"scientific",view:"view"},a={"item:license":"license","item:providers":"providers","eo:instrument":"instruments","eo:platform":"platform","eo:constellation":"constellation","eo:epsg":"proj:epsg","eo:off_nadir":"view:off_nadir","eo:azimuth":"view:azimuth","eo:sun_azimuth":"view:sun_azimuth","eo:sun_elevation":"view:sun_elevation","dtr:start_datetime":"start_datetime","dtr:end_datetime":"end_datetime","pc:schema":"pc:schemas","sar:type":"sar:product_type","sar:polarization":"sar:polarizations","sar:instrument":"instruments","sar:platform":"platform","sar:constellation":"constellation","sar:off_nadir":"sat:off_nadir_angle","sar:relative_orbit":"sat:relative_orbit","sar:pass_direction":"sat:orbit_state"},o=["cube:dimensions","sci:publications","sci:doi","sci:citation"];e.exports=class{static convertCollectionToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r=i.deepClone(e);if("string"!=typeof r.id||0===r.id.length)return{};if(n.validate(r.stac_version)&&!n.compare(r.stac_version,"0.9.0","<")||(r.stac_version="0.9.0"),i.isObject(r.extent)||(r.extent={}),n.compare(t,"0.4.x","=")){if(Array.isArray(r.extent.spatial)&&(r.extent.spatial={bbox:[r.extent.spatial]}),Array.isArray(r.extent.temporal)&&(r.extent.temporal={interval:[r.extent.temporal]}),i.isObject(r.properties)){i.isObject(r.other_properties)||(r.other_properties={});for(let e in r.properties)r.other_properties[e]={values:[r.properties[e]]}}delete r.properties;let e=i.isObject(r.other_properties)?r.other_properties:{};for(let t in e){let n=e[t];if(i.isObject(n)&&(Array.isArray(n.extent)||Array.isArray(n.values)))if(Array.isArray(n.extent))e[t]={min:n.extent[0],max:n.extent[1]};else{0===n.values.filter(e=>!Array.isArray(e)).length?n.values.length<2?e[t]=n.values[0]:e[t]=n.values.reduce((e,t)=>e.concat(t)):e[t]=n.values}else void 0===r[t]&&(r[t]=n),delete e[t]}delete r.other_properties,r.summaries=i.isObject(r.summaries)?r.summaries:{};for(let t in e){let i=e[t];"sar:pass_direction"===t&&(i=i.map(e=>null===e?"geostationary":e)),("sar:resolution"===t||"sar:pixel_spacing"===t||"sar:looks"===t)&&Array.isArray(i)&&i.length>=2?(r.summaries[t+"_range"]=i.slice(0,1),r.summaries[t+"_azimuth"]=i.slice(1,2),i.length>2&&(r.summaries[t+"_equivalent_number"]=i.slice(2,3))):"string"==typeof a[t]?r.summaries[a[t]]=i:o.includes(t)&&Array.isArray(i)&&1===i.length?r[t]=i[0]:r.summaries[t]=i}}"string"!=typeof r.description&&(r.description=""),i.isObject(r.extent.spatial)||(r.extent.spatial={}),i.isObject(r.extent.temporal)||(r.extent.temporal={}),"string"!=typeof r.license&&(r.license="proprietary"),i.isObject(r.summaries)||(r.summaries={}),i.isObject(r["cube:dimensions"])||(r["cube:dimensions"]={}),Array.isArray(r.links)||(r.links=[]),r.links=r.links.map(e=>(e.rel="string"==typeof e.rel?e.rel:"related",e));var p=Array.isArray(r.stac_extensions)?r.stac_extensions:[];for(var l in r){let e=null,t=l.split(":",1);"deprecated"===l||"version"===l?e="version":"string"==typeof s[t]&&(e=s[t]),null===e||p.includes(e)||p.push(e)}return p.sort(),r.stac_extensions=p,r}}},function(e,t,r){const i=r(0),n=r(1);function s(e,t,r=!0){var i={};if(e.schema&&"object"==typeof e.schema&&(i=e.schema),n.compare(t,"0.4.x","=")){for(let t of["anyOf","oneOf"])if(Array.isArray(i[t])){r&&void 0!==i.default&&(e.default=i.default),i=i[t];break}let s=n.compare(t,"0.4.x")<=0&&void 0!==e.media_type,o=Array.isArray(i)?i:[i];for(let t of o)t=a(t),r&&void 0!==t.default&&(e.default=t.default,delete t.default),s&&(t.contentMediaType=e.media_type);s&&delete e.media_type}return e.schema=i,e}function a(e){if(i.isObject(e)&&void 0!==e.type&&"string"==typeof e.format){switch(e.format){case"url":e.format="uri";break;case"proj-definition":e.deprecated=!0;break;case"callback":if(e.format="process-graph",i.isObject(e.parameters)){let t=[];for(let r in e.parameters){let i=e.parameters[r],n={name:r,description:"string"==typeof i.description?i.description:"",schema:i};t.push(n)}e.parameters=t}}e.subtype=e.format,["date-time","time","date","uri"].includes(e.format)||delete e.format}for(let t in e)e[t]&&"object"==typeof e[t]&&(e[t]=a(e[t]));return e}e.exports=class{static convertProcessToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r=i.deepClone(e);if("string"!=typeof r.id||0===r.id.length)return{};if(n.compare(t,"0.4.x","=")){if(!Array.isArray(r.parameter_order)||0===r.parameter_order.length){r.parameter_order=[];for(let e in r.parameters)r.parameter_order.push(e)}let e=[];for(let t of r.parameter_order){let n={name:t};i.isObject(r.parameters[t])&&Object.assign(n,r.parameters[t]),n.required||(n.optional=!0),delete n.required,e.push(n)}delete r.parameter_order,r.parameters=e}if("string"!=typeof r.description&&(r.description=""),Array.isArray(r.parameters))for(let e in r.parameters){let n=r.parameters[e];i.isObject(n)&&("string"!=typeof n.description&&(n.description=""),r.parameters[e]=s(n,t))}else r.parameters=[];return i.isObject(r.returns)||(r.returns={}),r.returns=s(r.returns,t,!1),r}}},function(e,t,r){const i=r(0),n=r(1);function s(e,t){for(let r in e)if(i.isObject(e[r].arguments))for(let i in e[r].arguments)e[r].arguments[i]=a(e[r].arguments[i],t);return e}function a(e,t){if(!e||"object"!=typeof e)return e;let r=i.isObject(e);if(r&&void 0!==e.callback)e={process_graph:s(e.callback,t)};else if(r&&void 0!==e.from_argument)e={from_parameter:e.from_argument};else if(r&&void 0!==e.variable_id)e={from_parameter:e.variable_id};else for(let t in e)e[t]=a(e[t]);return e}e.exports=class{static convertProcessGraphToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r={};return i.isObject(e)&&(r=i.deepClone(e)),n.compare(t,"0.4.x","=")&&(r=s(r,t)),r}}}])})); | ||
!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t();else if("function"==typeof define&&define.amd)define([],t);else{var r=t();for(var i in r)("object"==typeof exports?exports:e)[i]=r[i]}}(window,(function(){return function(e){var t={};function r(i){if(t[i])return t[i].exports;var n=t[i]={i:i,l:!1,exports:{}};return e[i].call(n.exports,n,n.exports,r),n.l=!0,n.exports}return r.m=e,r.c=t,r.d=function(e,t,i){r.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},r.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.t=function(e,t){if(1&t&&(e=r(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(r.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var n in e)r.d(i,n,function(t){return e[t]}.bind(null,n));return i},r.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return r.d(t,"a",t),t},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},r.p="",r(r.s=2)}([function(e,t){class r{static isObject(e){return"object"==typeof e&&e===Object(e)&&!Array.isArray(e)}static size(e){return"object"==typeof e&&null!==e?Array.isArray(e)?e.length:Object.keys(e).length:0}static isNumeric(e){return!isNaN(parseFloat(e))&&isFinite(e)}static deepClone(e){return JSON.parse(JSON.stringify(e))}static normalizeUrl(e,t=null){let r=e.replace(/\/$/,"");return"string"==typeof t&&("/"!==t.substr(0,1)&&(t="/"+t),r+=t.replace(/\/$/,"")),r}static replacePlaceholders(e,t={}){if("string"==typeof e&&r.isObject(t))for(var i in t){let r=t[i];e=e.replace("{"+i+"}",Array.isArray(r)?r.join("; "):r)}return e}}e.exports=r},function(e,t,r){const i=r(4);class n{static compare(e,t,r=null){return null!==r?i.compare(e,t,r):i(e,t)}static validate(e){return i.validate(e)}static findCompatible(e,t=!0,r=null,i=null){if(!Array.isArray(e)||0===e.length)return[];let s=e.filter(e=>{if("string"==typeof e.url&&n.validate(e.api_version)){let t=n.validate(r),s=n.validate(i);return t&&s?n.compare(e.api_version,r,">=")&&n.compare(e.api_version,i,"<="):t?n.compare(e.api_version,r,">="):!s||n.compare(e.api_version,i,"<=")}return!1});return 0===s.length?[]:s.sort((e,r)=>{let i=!1!==e.production,s=!1!==r.production;return t&&i!==s?i?-1:1:-1*n.compare(e.api_version,r.api_version)})}static findLatest(e,t=!0,r=null,i=null){let s=n.findCompatible(e,t,r,i);return s.length>0?s[0]:null}}e.exports=n},function(e,t,r){const i=r(3),n=r(5),s=r(6),a=r(1),o=r(0);e.exports={MigrateCapabilities:i,MigrateCollections:n,MigrateProcesses:s,Versions:a,Utils:o}},function(e,t,r){const i=r(0),n=r(1);e.exports=class{static guessApiVersion(e){if(!i.isObject(e))return"0.0.0";if(n.validate(e.api_version))return e.api_version;if(n.validate(e.version))return e.version;if(Array.isArray(e.endpoints)){if(e.endpoints.filter(e=>"/file_formats"===e.path||"/conformance"===e.path||"/files"===e.path).length>0)return"1.0.0";if(e.endpoints.filter(e=>"/output_formats"===e.path||"/files/{user_id}"===e.path).length>0)return"0.4.2";if(!(e.backend_version||e.title||e.description||e.links))return"0.3.1"}return"0.0.0"}static convertCapabilitiesToLatestSpec(e,t=null,r=!0,s=!0,a="unknown",o="Unknown",p="Unknown"){if(null===t&&(t=this.guessApiVersion(e)),"0.0.0"===t)return{};if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let l=i.deepClone(e);return l.api_version=r?"1.0.0":t,i.isObject(l.billing)?l.billing=this.convertBillingToLatestSpec(l.billing,t):delete l.billing,l.endpoints=this.convertEndpointsToLatestSpec(l.endpoints,t,s),!r&&n.compare(t,"0.4.x","=")?l.stac_version="0.6.2":(r||"string"!=typeof l.stac_version)&&(l.stac_version="0.9.0"),"string"!=typeof l.backend_version&&(l.backend_version=p),"string"!=typeof l.id&&(l.id=a),"string"!=typeof l.title&&(l.title=o),"string"!=typeof l.description&&(l.description=""),Array.isArray(l.links)||(l.links=[]),l}static convertBillingToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r={};return i.isObject(e)&&(r=i.deepClone(e)),"string"!=typeof r.currency&&(r.currency=null),r}static convertEndpointsToLatestSpec(e,t,r=!1){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";if(!Array.isArray(e))return[];let s=i.deepClone(e);if(r){let e=n.compare(t,"0.4.x","="),r=n.compare(t,"1.0.0-rc.2","<"),i=function(e){let t="/process_graphs/{process_graph_id}",r=e.findIndex(e=>e.path===t);return r>=0?-1===e[r].methods.indexOf("PUT")&&e[r].methods.push("PUT"):e.push({path:t,methods:["PUT"]}),e};for(var a in s){let t=s[a];if(e)switch(t.path){case"/output_formats":t.path="/file_formats";break;case"/files/{user_id}":t.path="/files";break;case"/files/{user_id}/{path}":t.path="/files/{path}"}if(r)switch(t.path){case"/process_graphs":let e=t.methods.indexOf("POST");e>=0&&(t.methods.splice(e,1),i(s));break;case"/process_graphs/{process_graph_id}":let r=t.methods.indexOf("PATCH");r>=0&&(t.methods.splice(r,1),i(s))}}}return s}static convertOutputFormatsToLatestSpec(e,t){return this.convertFileFormatsToLatestSpec(e,t)}static convertFileFormatsToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r={};return i.isObject(e)&&(r=i.deepClone(e)),n.compare(t,"0.4.x","=")&&i.isObject(r)&&(r={output:r}),i.isObject(r.input)||(r.input={}),i.isObject(r.output)||(r.output={}),r}static convertServiceTypesToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r={};if(i.isObject(e)&&(r=i.deepClone(e)),n.compare(t,"0.4.x","="))for(let e in r)i.isObject(r[e])?(delete r[e].attributes,i.isObject(r[e].parameters)&&(r[e].configuration=r[e].parameters),delete r[e].parameters,Array.isArray(r[e].variables)&&(r[e].process_parameters=r[e].variables.map(e=>{let t={name:e.variable_id,description:"string"==typeof e.description?e.description:"",schema:{type:["string"==typeof e.type?e.type:"string","null"]}};return void 0!==e.default&&(t.default=e.default),t})),delete r[e].variables):r[e]={};return r}static convertUdfRuntimesToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r=i.deepClone(e);if(n.compare(t,"0.4.x","="))for(let e in r)i.isObject(r[e])?null===r[e].description&&(r[e].description=""):delete r[e];return r}}},function(e,t,r){var i,n,s;n=[],void 0===(s="function"==typeof(i=function(){var e=/^v?(?:\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+))?(?:-[\da-z\-]+(?:\.[\da-z\-]+)*)?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i;function t(e){var t,r,i=e.replace(/^v/,"").replace(/\+.*$/,""),n=(r="-",-1===(t=i).indexOf(r)?t.length:t.indexOf(r)),s=i.substring(0,n).split(".");return s.push(i.substring(n+1)),s}function r(e){return isNaN(Number(e))?e:Number(e)}function i(t){if("string"!=typeof t)throw new TypeError("Invalid argument expected string");if(!e.test(t))throw new Error("Invalid argument not valid semver ('"+t+"' received)")}function n(e,n){[e,n].forEach(i);for(var s=t(e),a=t(n),o=0;o<Math.max(s.length-1,a.length-1);o++){var p=parseInt(s[o]||0,10),l=parseInt(a[o]||0,10);if(p>l)return 1;if(l>p)return-1}var c=s[s.length-1],u=a[a.length-1];if(c&&u){var f=c.split(".").map(r),d=u.split(".").map(r);for(o=0;o<Math.max(f.length,d.length);o++){if(void 0===f[o]||"string"==typeof d[o]&&"number"==typeof f[o])return-1;if(void 0===d[o]||"string"==typeof f[o]&&"number"==typeof d[o])return 1;if(f[o]>d[o])return 1;if(d[o]>f[o])return-1}}else if(c||u)return c?-1:1;return 0}var s=[">",">=","=","<","<="],a={">":[1],">=":[0,1],"=":[0],"<=":[-1,0],"<":[-1]};return n.validate=function(t){return"string"==typeof t&&e.test(t)},n.compare=function(e,t,r){!function(e){if("string"!=typeof e)throw new TypeError("Invalid operator type, expected string but got "+typeof e);if(-1===s.indexOf(e))throw new TypeError("Invalid operator, expected one of "+s.join("|"))}(r);var i=n(e,t);return a[r].indexOf(i)>-1},n})?i.apply(t,n):i)||(e.exports=s)},function(e,t,r){const i=r(0),n=r(1),s={cube:"datacube",eo:"eo",label:"label",pc:"pointcloud",proj:"projection",sar:"sar",sat:"sat",sci:"scientific",view:"view"},a={"item:license":"license","item:providers":"providers","eo:instrument":"instruments","eo:platform":"platform","eo:constellation":"constellation","eo:epsg":"proj:epsg","eo:off_nadir":"view:off_nadir","eo:azimuth":"view:azimuth","eo:sun_azimuth":"view:sun_azimuth","eo:sun_elevation":"view:sun_elevation","dtr:start_datetime":"start_datetime","dtr:end_datetime":"end_datetime","pc:schema":"pc:schemas","sar:type":"sar:product_type","sar:polarization":"sar:polarizations","sar:instrument":"instruments","sar:platform":"platform","sar:constellation":"constellation","sar:off_nadir":"sat:off_nadir_angle","sar:relative_orbit":"sat:relative_orbit","sar:pass_direction":"sat:orbit_state"},o=["cube:dimensions","sci:publications","sci:doi","sci:citation"];e.exports=class{static convertCollectionToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r=i.deepClone(e);if("string"!=typeof r.id||0===r.id.length)return{};if(n.validate(r.stac_version)&&!n.compare(r.stac_version,"0.9.0","<")||(r.stac_version="0.9.0"),i.isObject(r.extent)||(r.extent={}),n.compare(t,"0.4.x","=")){if(Array.isArray(r.extent.spatial)&&(r.extent.spatial={bbox:[r.extent.spatial]}),Array.isArray(r.extent.temporal)&&(r.extent.temporal={interval:[r.extent.temporal]}),i.isObject(r.properties)){i.isObject(r.other_properties)||(r.other_properties={});for(let e in r.properties)r.other_properties[e]={values:[r.properties[e]]}}delete r.properties;let e=i.isObject(r.other_properties)?r.other_properties:{};for(let t in e){let n=e[t];if(i.isObject(n)&&(Array.isArray(n.extent)||Array.isArray(n.values)))if(Array.isArray(n.extent))e[t]={min:n.extent[0],max:n.extent[1]};else{0===n.values.filter(e=>!Array.isArray(e)).length?n.values.length<2?e[t]=n.values[0]:e[t]=n.values.reduce((e,t)=>e.concat(t)):e[t]=n.values}else void 0===r[t]&&(r[t]=n),delete e[t]}delete r.other_properties,r.summaries=i.isObject(r.summaries)?r.summaries:{};for(let t in e){let i=e[t];"sar:pass_direction"===t&&(i=i.map(e=>null===e?"geostationary":e)),("sar:resolution"===t||"sar:pixel_spacing"===t||"sar:looks"===t)&&Array.isArray(i)&&i.length>=2?(r.summaries[t+"_range"]=i.slice(0,1),r.summaries[t+"_azimuth"]=i.slice(1,2),i.length>2&&(r.summaries[t+"_equivalent_number"]=i.slice(2,3))):"string"==typeof a[t]?r.summaries[a[t]]=i:o.includes(t)&&Array.isArray(i)&&1===i.length?r[t]=i[0]:r.summaries[t]=i}}"string"!=typeof r.description&&(r.description=""),i.isObject(r.extent.spatial)||(r.extent.spatial={}),i.isObject(r.extent.temporal)||(r.extent.temporal={}),"string"!=typeof r.license&&(r.license="proprietary"),i.isObject(r.summaries)||(r.summaries={}),i.isObject(r["cube:dimensions"])||(r["cube:dimensions"]={}),Array.isArray(r.links)||(r.links=[]),r.links=r.links.map(e=>(e.rel="string"==typeof e.rel?e.rel:"related",e));var p=Array.isArray(r.stac_extensions)?r.stac_extensions:[];for(var l in r){let e=null,t=l.split(":",1);"deprecated"===l||"version"===l?e="version":"string"==typeof s[t]&&(e=s[t]),null===e||p.includes(e)||p.push(e)}return p.sort(),r.stac_extensions=p,r}}},function(e,t,r){const i=r(0),n=r(1);function s(e,t,r=!0){var i={};if(e.schema&&"object"==typeof e.schema&&(i=e.schema),n.compare(t,"0.4.x","=")){for(let t of["anyOf","oneOf"])if(Array.isArray(i[t])){r&&void 0!==i.default&&(e.default=i.default),i=i[t];break}let s=n.compare(t,"0.4.x")<=0&&void 0!==e.media_type,o=Array.isArray(i)?i:[i];for(let t of o)t=a(t),r&&void 0!==t.default&&(e.default=t.default,delete t.default),s&&(t.contentMediaType=e.media_type);s&&delete e.media_type}return e.schema=i,e}function a(e){if(i.isObject(e)&&void 0!==e.type&&"string"==typeof e.format){switch(e.format){case"url":e.format="uri";break;case"proj-definition":e.deprecated=!0;break;case"callback":if(e.format="process-graph",i.isObject(e.parameters)){let t=[];for(let r in e.parameters){let i=e.parameters[r],n={name:r,description:"string"==typeof i.description?i.description:"",schema:i};t.push(n)}e.parameters=t}}e.subtype=e.format,["date-time","time","date","uri"].includes(e.format)||delete e.format}for(let t in e)e[t]&&"object"==typeof e[t]&&(e[t]=a(e[t]));return e}e.exports=class{static convertProcessToLatestSpec(e,t){if(n.compare(t,"0.3.x","<="))throw"Migrating from API version 0.3.0 and older is not supported.";let r=i.deepClone(e);if("string"!=typeof r.id||0===r.id.length)return{};if(n.compare(t,"0.4.x","=")){if(!Array.isArray(r.parameter_order)||0===r.parameter_order.length){r.parameter_order=[];for(let e in r.parameters)r.parameter_order.push(e)}let e=[];for(let t of r.parameter_order){let n={name:t};i.isObject(r.parameters[t])&&Object.assign(n,r.parameters[t]),n.required||(n.optional=!0),delete n.required,e.push(n)}delete r.parameter_order,r.parameters=e}if("string"!=typeof r.description&&(r.description=""),Array.isArray(r.parameters))for(let e in r.parameters){let n=r.parameters[e];i.isObject(n)&&("string"!=typeof n.description&&(n.description=""),r.parameters[e]=s(n,t))}else r.parameters=[];return i.isObject(r.returns)||(r.returns={}),r.returns=s(r.returns,t,!1),r}}}])})); |
{ | ||
"name": "@openeo/js-commons", | ||
"version": "1.0.0-rc.2", | ||
"version": "1.0.0-rc.3", | ||
"apiVersions": [ | ||
@@ -31,13 +31,13 @@ "0.4.x", | ||
"@babel/core": "^7.0.0", | ||
"jest": "^24.8.0", | ||
"jest-html-reporter": "^2.5.0", | ||
"jest": "^25.3.0", | ||
"jest-html-reporter": "^3.1.0", | ||
"jsdoc": "^3.5.5", | ||
"jshint": "^2.10.2", | ||
"unminified-webpack-plugin": "^2.0.0", | ||
"webpack": "^4.35.2", | ||
"webpack-bundle-analyzer": "^3.3.2", | ||
"webpack-cli": "^3.3.6" | ||
"webpack": "^4.42.1", | ||
"webpack-bundle-analyzer": "^3.7.0", | ||
"webpack-cli": "^3.3.11" | ||
}, | ||
"dependencies": { | ||
"compare-versions": "^3.4.0" | ||
"compare-versions": "^3.6.0" | ||
}, | ||
@@ -44,0 +44,0 @@ "scripts": { |
@@ -7,7 +7,7 @@ # @openeo/js-commons | ||
This is the stable **master branch**, this library version is **1.0.0-rc.2**. | ||
This is the stable **master branch**, this library version is **1.0.0-rc.3**. | ||
[![Build Status](https://travis-ci.org/Open-EO/openeo-js-commons.svg?branch=master)](https://travis-ci.org/Open-EO/openeo-js-commons) | ||
![Minified Size](https://img.shields.io/bundlephobia/min/@openeo/js-commons/1.0.0-rc.2) | ||
![Minzipped Size](https://img.shields.io/bundlephobia/minzip/@openeo/js-commons/1.0.0-rc.2) | ||
![Minified Size](https://img.shields.io/bundlephobia/min/@openeo/js-commons/1.0.0-rc.3) | ||
![Minzipped Size](https://img.shields.io/bundlephobia/minzip/@openeo/js-commons/1.0.0-rc.3 | ||
@@ -22,3 +22,2 @@ ## Features | ||
- UDF Runtimes | ||
- Process Graphs (structure only) | ||
- Back-end feature detection | ||
@@ -40,6 +39,6 @@ - Validate, compare and prioritize version numbers (e.g. for well-known discovery) | ||
```html | ||
<script src="https://cdn.jsdelivr.net/npm/@openeo/js-commons@1.0.0-rc.2/dist/main.min.js"></script> | ||
<script src="https://cdn.jsdelivr.net/npm/@openeo/js-commons@1.0.0-rc.3/dist/main.min.js"></script> | ||
``` | ||
<!-- When releasing a stable release, change the version to @1 instead of 1.0.0 to allow backward-compatible upgrades --> | ||
More information can be found in the [**JS commons documentation**](https://open-eo.github.io/openeo-js-commons/1.0.0-rc.2/). | ||
More information can be found in the [**JS commons documentation**](https://open-eo.github.io/openeo-js-commons/1.0.0-rc.3/). |
@@ -5,3 +5,2 @@ // Migrations | ||
const MigrateProcesses = require('./migrate/processes'); | ||
const MigrateProcessGraphs = require('./migrate/process_graphs.js'); | ||
// Others | ||
@@ -15,5 +14,4 @@ const Versions = require('./versions'); | ||
MigrateProcesses, | ||
MigrateProcessGraphs, | ||
Versions, | ||
Utils, | ||
}; |
@@ -135,5 +135,26 @@ const Utils = require('../utils.js'); | ||
// convert v0.4 endpoints to v1.0 | ||
if (Versions.compare(version, "0.4.x", "=")) { | ||
if (updatePaths) { | ||
endpoints = endpoints.map(e => { | ||
if (updatePaths) { | ||
let isV04 = Versions.compare(version, "0.4.x", "="); | ||
let isLtV100RC2 = Versions.compare(version, "1.0.0-rc.2", "<"); | ||
let addPutToPg = function(endpoints) { | ||
let newPgPath = '/process_graphs/{process_graph_id}'; | ||
let i = endpoints.findIndex(e => e.path === newPgPath); | ||
if (i >= 0) { | ||
if (endpoints[i].methods.indexOf('PUT') === -1) { | ||
endpoints[i].methods.push('PUT'); | ||
} | ||
} | ||
else { | ||
endpoints.push({ | ||
path: newPgPath, | ||
methods: ['PUT'] | ||
}); | ||
} | ||
return endpoints; | ||
}; | ||
for(var i in endpoints) { | ||
let e = endpoints[i]; | ||
if (isV04) { | ||
switch (e.path) { | ||
@@ -150,8 +171,22 @@ case '/output_formats': | ||
} | ||
return e; | ||
}); | ||
} | ||
if (isLtV100RC2) { | ||
switch (e.path) { | ||
case '/process_graphs': | ||
let post = e.methods.indexOf('POST'); | ||
if (post >= 0) { | ||
e.methods.splice(post, 1); | ||
addPutToPg(endpoints); | ||
} | ||
break; | ||
case '/process_graphs/{process_graph_id}': | ||
let patch = e.methods.indexOf('PATCH'); | ||
if (patch >= 0) { | ||
e.methods.splice(patch, 1); | ||
addPutToPg(endpoints); | ||
} | ||
break; | ||
} | ||
} | ||
} | ||
else { | ||
// Nothing to do as structure has not changed. | ||
} | ||
} | ||
@@ -158,0 +193,0 @@ return endpoints; |
@@ -84,2 +84,4 @@ const Utils = require('../utils.js'); | ||
// Update process graph -> nothing to do yet | ||
return process; | ||
@@ -86,0 +88,0 @@ } |
const VersionCompare = require('compare-versions'); | ||
const semver = /^v?(?:\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+)(\.(?:[x*]|\d+))?(?:-[\da-z\-]+(?:\.[\da-z\-]+)*)?(?:\+[\da-z\-]+(?:\.[\da-z\-]+)*)?)?)?$/i; | ||
class Versions { | ||
@@ -16,9 +14,4 @@ | ||
// Function or regexp is coming from compare-version, but not exposed so copied it here. | ||
// See also https://github.com/omichelsen/compare-versions/issues/37 | ||
static validate(version) { | ||
if (typeof version !== 'string') { | ||
return false; | ||
} | ||
return semver.test(version); | ||
return VersionCompare.validate(version); | ||
} | ||
@@ -25,0 +18,0 @@ |
99479
11
1806
41
Updatedcompare-versions@^3.6.0