Cannot modify a property of a sealed object: turf

I got a minified file from a library called turf, but unfortunately getting this error. Is there a way to prevent it from happening? Here is the minified file of the library

(function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.turf = f()}})(function(){var define,module,exports;return (function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c="function"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error("Cannot find module '"+i+"'");throw a.code="MODULE_NOT_FOUND",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u="function"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()({1:[function(require,module,exports){
"use strict";function distance(e,r,a){if(a=a||{},!helpers.isObject(a))throw new Error("options is invalid");var t=a.units,s=invariant.getCoord(e),i=invariant.getCoord(r),n=helpers.degreesToRadians(i[1]-s[1]),o=helpers.degreesToRadians(i[0]-s[0]),h=helpers.degreesToRadians(s[1]),d=helpers.degreesToRadians(i[1]),p=Math.pow(Math.sin(n/2),2)+Math.pow(Math.sin(o/2),2)*Math.cos(h)*Math.cos(d);return helpers.radiansToLength(2*Math.atan2(Math.sqrt(p),Math.sqrt(1-p)),t)}var invariant=require("@turf/invariant"),helpers=require("@turf/helpers");module.exports=distance,module.exports.default=distance;
},{"@turf/helpers":2,"@turf/invariant":3}],2:[function(require,module,exports){
"use strict";function feature(r,e,t){if(t=t||{},!isObject(t))throw new Error("options is invalid");var o=t.bbox,i=t.id;if(void 0===r)throw new Error("geometry is required");if(e&&e.constructor!==Object)throw new Error("properties must be an Object");o&&validateBBox(o),i&&validateId(i);var n={type:"Feature"};return i&&(n.id=i),o&&(n.bbox=o),n.properties=e||{},n.geometry=r,n}function geometry(r,e,t){if(t=t||{},!isObject(t))throw new Error("options is invalid");var o=t.bbox;if(!r)throw new Error("type is required");if(!e)throw new Error("coordinates is required");if(!Array.isArray(e))throw new Error("coordinates must be an Array");o&&validateBBox(o);var i;switch(r){case"Point":i=point(e).geometry;break;case"LineString":i=lineString(e).geometry;break;case"Polygon":i=polygon(e).geometry;break;case"MultiPoint":i=multiPoint(e).geometry;break;case"MultiLineString":i=multiLineString(e).geometry;break;case"MultiPolygon":i=multiPolygon(e).geometry;break;default:throw new Error(r+" is invalid")}return o&&(i.bbox=o),i}function point(r,e,t){if(!r)throw new Error("coordinates is required");if(!Array.isArray(r))throw new Error("coordinates must be an Array");if(r.length<2)throw new Error("coordinates must be at least 2 numbers long");if(!isNumber(r[0])||!isNumber(r[1]))throw new Error("coordinates must contain numbers");return feature({type:"Point",coordinates:r},e,t)}function points(r,e,t){if(!r)throw new Error("coordinates is required");if(!Array.isArray(r))throw new Error("coordinates must be an Array");return featureCollection(r.map(function(r){return point(r,e)}),t)}function polygon(r,e,t){if(!r)throw new Error("coordinates is required");for(var o=0;o<r.length;o++){var i=r[o];if(i.length<4)throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");for(var n=0;n<i[i.length-1].length;n++){if(0===o&&0===n&&!isNumber(i[0][0])||!isNumber(i[0][1]))throw new Error("coordinates must contain numbers");if(i[i.length-1][n]!==i[0][n])throw new Error("First and last Position are not equivalent.")}}return feature({type:"Polygon",coordinates:r},e,t)}function polygons(r,e,t){if(!r)throw new Error("coordinates is required");if(!Array.isArray(r))throw new Error("coordinates must be an Array");return featureCollection(r.map(function(r){return polygon(r,e)}),t)}function lineString(r,e,t){if(!r)throw new Error("coordinates is required");if(r.length<2)throw new Error("coordinates must be an array of two or more positions");if(!isNumber(r[0][1])||!isNumber(r[0][1]))throw new Error("coordinates must contain numbers");return feature({type:"LineString",coordinates:r},e,t)}function lineStrings(r,e,t){if(!r)throw new Error("coordinates is required");if(!Array.isArray(r))throw new Error("coordinates must be an Array");return featureCollection(r.map(function(r){return lineString(r,e)}),t)}function featureCollection(r,e){if(e=e||{},!isObject(e))throw new Error("options is invalid");var t=e.bbox,o=e.id;if(!r)throw new Error("No features passed");if(!Array.isArray(r))throw new Error("features must be an Array");t&&validateBBox(t),o&&validateId(o);var i={type:"FeatureCollection"};return o&&(i.id=o),t&&(i.bbox=t),i.features=r,i}function multiLineString(r,e,t){if(!r)throw new Error("coordinates is required");return feature({type:"MultiLineString",coordinates:r},e,t)}function multiPoint(r,e,t){if(!r)throw new Error("coordinates is required");return feature({type:"MultiPoint",coordinates:r},e,t)}function multiPolygon(r,e,t){if(!r)throw new Error("coordinates is required");return feature({type:"MultiPolygon",coordinates:r},e,t)}function geometryCollection(r,e,t){if(!r)throw new Error("geometries is required");if(!Array.isArray(r))throw new Error("geometries must be an Array");return feature({type:"GeometryCollection",geometries:r},e,t)}function round(r,e){if(void 0===r||null===r||isNaN(r))throw new Error("num is required");if(e&&!(e>=0))throw new Error("precision must be a positive number");var t=Math.pow(10,e||0);return Math.round(r*t)/t}function radiansToLength(r,e){if(void 0===r||null===r)throw new Error("radians is required");if(e&&"string"!=typeof e)throw new Error("units must be a string");var t=factors[e||"kilometers"];if(!t)throw new Error(e+" units is invalid");return r*t}function lengthToRadians(r,e){if(void 0===r||null===r)throw new Error("distance is required");if(e&&"string"!=typeof e)throw new Error("units must be a string");var t=factors[e||"kilometers"];if(!t)throw new Error(e+" units is invalid");return r/t}function lengthToDegrees(r,e){return radiansToDegrees(lengthToRadians(r,e))}function bearingToAzimuth(r){if(null===r||void 0===r)throw new Error("bearing is required");var e=r%360;return e<0&&(e+=360),e}function radiansToDegrees(r){if(null===r||void 0===r)throw new Error("radians is required");return r%(2*Math.PI)*180/Math.PI}function degreesToRadians(r){if(null===r||void 0===r)throw new Error("degrees is required");return r%360*Math.PI/180}function convertLength(r,e,t){if(null===r||void 0===r)throw new Error("length is required");if(!(r>=0))throw new Error("length must be a positive number");return radiansToLength(lengthToRadians(r,e),t||"kilometers")}function convertArea(r,e,t){if(null===r||void 0===r)throw new Error("area is required");if(!(r>=0))throw new Error("area must be a positive number");var o=areaFactors[e||"meters"];if(!o)throw new Error("invalid original units");var i=areaFactors[t||"kilometers"];if(!i)throw new Error("invalid final units");return r/o*i}function isNumber(r){return!isNaN(r)&&null!==r&&!Array.isArray(r)}function isObject(r){return!!r&&r.constructor===Object}function validateBBox(r){if(!r)throw new Error("bbox is required");if(!Array.isArray(r))throw new Error("bbox must be an Array");if(4!==r.length&&6!==r.length)throw new Error("bbox must be an Array of 4 or 6 numbers");r.forEach(function(r){if(!isNumber(r))throw new Error("bbox must only contain numbers")})}function validateId(r){if(!r)throw new Error("id is required");if(-1===["string","number"].indexOf(typeof r))throw new Error("id must be a number or a string")}function radians2degrees(){throw new Error("method has been renamed to `radiansToDegrees`")}function degrees2radians(){throw new Error("method has been renamed to `degreesToRadians`")}function distanceToDegrees(){throw new Error("method has been renamed to `lengthToDegrees`")}function distanceToRadians(){throw new Error("method has been renamed to `lengthToRadians`")}function radiansToDistance(){throw new Error("method has been renamed to `radiansToLength`")}function bearingToAngle(){throw new Error("method has been renamed to `bearingToAzimuth`")}function convertDistance(){throw new Error("method has been renamed to `convertLength`")}Object.defineProperty(exports,"__esModule",{value:!0});var earthRadius=6371008.8,factors={meters:earthRadius,metres:earthRadius,millimeters:1e3*earthRadius,millimetres:1e3*earthRadius,centimeters:100*earthRadius,centimetres:100*earthRadius,kilometers:earthRadius/1e3,kilometres:earthRadius/1e3,miles:earthRadius/1609.344,nauticalmiles:earthRadius/1852,inches:39.37*earthRadius,yards:earthRadius/1.0936,feet:3.28084*earthRadius,radians:1,degrees:earthRadius/111325},unitsFactors={meters:1,metres:1,millimeters:1e3,millimetres:1e3,centimeters:100,centimetres:100,kilometers:.001,kilometres:.001,miles:1/1609.344,nauticalmiles:1/1852,inches:39.37,yards:1/1.0936,feet:3.28084,radians:1/earthRadius,degrees:1/111325},areaFactors={meters:1,metres:1,millimeters:1e6,millimetres:1e6,centimeters:1e4,centimetres:1e4,kilometers:1e-6,kilometres:1e-6,acres:247105e-9,miles:3.86e-7,yards:1.195990046,feet:10.763910417,inches:1550.003100006};exports.earthRadius=earthRadius,exports.factors=factors,exports.unitsFactors=unitsFactors,exports.areaFactors=areaFactors,exports.feature=feature,exports.geometry=geometry,exports.point=point,exports.points=points,exports.polygon=polygon,exports.polygons=polygons,exports.lineString=lineString,exports.lineStrings=lineStrings,exports.featureCollection=featureCollection,exports.multiLineString=multiLineString,exports.multiPoint=multiPoint,exports.multiPolygon=multiPolygon,exports.geometryCollection=geometryCollection,exports.round=round,exports.radiansToLength=radiansToLength,exports.lengthToRadians=lengthToRadians,exports.lengthToDegrees=lengthToDegrees,exports.bearingToAzimuth=bearingToAzimuth,exports.radiansToDegrees=radiansToDegrees,exports.degreesToRadians=degreesToRadians,exports.convertLength=convertLength,exports.convertArea=convertArea,exports.isNumber=isNumber,exports.isObject=isObject,exports.validateBBox=validateBBox,exports.validateId=validateId,exports.radians2degrees=radians2degrees,exports.degrees2radians=degrees2radians,exports.distanceToDegrees=distanceToDegrees,exports.distanceToRadians=distanceToRadians,exports.radiansToDistance=radiansToDistance,exports.bearingToAngle=bearingToAngle,exports.convertDistance=convertDistance;


},{}],3:[function(require,module,exports){
"use strict";function getCoord(e){if(!e)throw new Error("obj is required");var r=getCoords(e);if(r.length>1&&helpers.isNumber(r[0])&&helpers.isNumber(r[1]))return r;throw new Error("Coordinate is not a valid Point")}function getCoords(e){if(!e)throw new Error("obj is required");var r;if(e.length?r=e:e.coordinates?r=e.coordinates:e.geometry&&e.geometry.coordinates&&(r=e.geometry.coordinates),r)return containsNumber(r),r;throw new Error("No valid coordinates")}function containsNumber(e){if(e.length>1&&helpers.isNumber(e[0])&&helpers.isNumber(e[1]))return!0;if(Array.isArray(e[0])&&e[0].length)return containsNumber(e[0]);throw new Error("coordinates must only contain numbers")}function geojsonType(e,r,o){if(!r||!o)throw new Error("type and name required");if(!e||e.type!==r)throw new Error("Invalid input to "+o+": must be a "+r+", given "+e.type)}function featureOf(e,r,o){if(!e)throw new Error("No feature passed");if(!o)throw new Error(".featureOf() requires a name");if(!e||"Feature"!==e.type||!e.geometry)throw new Error("Invalid input to "+o+", Feature with geometry required");if(!e.geometry||e.geometry.type!==r)throw new Error("Invalid input to "+o+": must be a "+r+", given "+e.geometry.type)}function collectionOf(e,r,o){if(!e)throw new Error("No featureCollection passed");if(!o)throw new Error(".collectionOf() requires a name");if(!e||"FeatureCollection"!==e.type)throw new Error("Invalid input to "+o+", FeatureCollection required");for(var t=0;t<e.features.length;t++){var n=e.features[t];if(!n||"Feature"!==n.type||!n.geometry)throw new Error("Invalid input to "+o+", Feature with geometry required");if(!n.geometry||n.geometry.type!==r)throw new Error("Invalid input to "+o+": must be a "+r+", given "+n.geometry.type)}}function getGeom(e){if(!e)throw new Error("geojson is required");if(void 0!==e.geometry)return e.geometry;if(e.coordinates||e.geometries)return e;throw new Error("geojson must be a valid Feature or Geometry Object")}function getGeomType(){throw new Error("invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType")}function getType(e,r){if(!e)throw new Error((r||"geojson")+" is required");if(e.geometry&&e.geometry.type)return e.geometry.type;if(e.type)return e.type;throw new Error((r||"geojson")+" is invalid")}Object.defineProperty(exports,"__esModule",{value:!0});var helpers=require("@turf/helpers");exports.getCoord=getCoord,exports.getCoords=getCoords,exports.containsNumber=containsNumber,exports.geojsonType=geojsonType,exports.featureOf=featureOf,exports.collectionOf=collectionOf,exports.getGeom=getGeom,exports.getGeomType=getGeomType,exports.getType=getType;
},{"@turf/helpers":2}],4:[function(require,module,exports){
module.exports={distance:require("@turf/distance")};
},{"@turf/distance":1}]},{},[4])(4)
});

Solved Solved
0 7 1,358
1 ACCEPTED SOLUTION

Turf, the library for geospatial analysis?

That seems like something you don't want to do in a JS Callout.

Build a nodejs app, hosted in Google App Engine or other similar, and do it there?

View solution in original post

7 REPLIES 7

What is the context you are using this? If you're trying to use this in a JavaScript policy, you may not be able to as libraries aren't easily supported. But I don't want to guess so can you provide more details?

Yes, I am using it as a Javascript policy.

Depending on the packaging, this might not work. The JavaScript policy uses Rhino and turf.js might not be packaged in a way that supports Rhino. I'll see if I can find more details.

Thank you. We decided to carry everything on NodeJS Hosted Target.

Turf, the library for geospatial analysis?

That seems like something you don't want to do in a JS Callout.

Build a nodejs app, hosted in Google App Engine or other similar, and do it there?

Yes that's what we're using it for. We decided to do it on Hosted App recently. It's just that we already had the proxy that does a lot of other things aside from geospatial analysis.

Using Turf within a Hosted Target, rather than from within a JS callout, is a good plan.