{"version":3,"sources":["jsdelivr-header.js","/npm/ready-knex-postgis@0.0.1/lib/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,aAEA,IAAI,MAAQ,QAAQ,WAEpB,OAAO,QAAU,SAAS,GACxB,IAAI,EAEA,EAAW,OAAO,eAAe,EAAK,OACtC,EAAiB,EAAS,YAiF9B,SAAS,EAAU,GACjB,IAAI,EAAO,MAAM,UAAU,MAAM,KAAK,WAMtC,IAJA,EAAK,aAImC,IAA1B,EAAK,EAAK,OAAS,IAC/B,EAAK,MAGP,IACI,EAAM,EAAO,IADE,EAAK,KAAI,WAAY,MAAO,GAAI,IAAG,KAAK,MACrB,IAGtC,OAFU,EAAK,IAAI,EAAK,EAG1B,CA+BA,OA7HA,EAAY,CAAC,GAEH,QAAU,SAAiB,GACnC,OAAI,aAAiB,GAIA,iBAAV,GAAsB,MAAM,MAAM,GAHpC,EAMA,EAAK,IAAI,KAAM,CAAC,GAE3B,EAEA,EAAU,YAAc,SAAqB,GAC3C,IAAI,EAEJ,GAAI,aAAiB,EACnB,OAAO,EAGT,GAAqB,iBAAV,EAAoB,CAC7B,GAAK,EAAM,MAAM,YACf,OAAO,EAAK,IAAI,KAAM,CAAC,IAEzB,EAAU,CACZ,MACE,EAAU,KAAK,UAAU,GAG3B,OAAO,KAAK,UAAU,MAAM,qBAAqB,GACnD,EAEA,EAAU,YAAc,SAAqB,GAC3C,GAAI,aAAiB,EACnB,OAAO,EAGT,GAAI,OAAO,UAAU,GACnB,OAAO,EAAK,IAAI,SAAU,GACrB,GAAI,MAAM,SAAS,GACxB,OAAO,EAAK,IAAI,KAAM,CAAC,IAEvB,MAAM,IAAI,MAAM,2BAEpB,EAEA,EAAU,WAAa,SAAoB,GACzC,GAAI,aAAiB,EACnB,OAAO,EAGT,GAAI,MAAM,SAAS,GACjB,OAAO,EACF,GAAI,MAAM,SAAS,GAExB,OAAO,EAAK,IAAI,KAAM,CAAC,IAEvB,MAAM,IAAI,MAAM,0BAEpB,EAEA,EAAU,YAAc,SAAqB,GAC3C,GAAI,aAAiB,EACnB,OAAO,EAGT,GAAI,MAAM,UAAU,GAClB,OAAO,EACF,GAAI,MAAM,SAAS,GAExB,OAAO,EAAK,IAAI,KAAM,CAAC,IAEvB,MAAM,IAAI,MAAM,2BAEpB,EAwBA,EAAK,QAAU,QAAQ,cAAR,CAAuB,EAAM,EAAW,GAEvD,EAAK,oBAAsB,SAAS,GAClC,IAAI,EAAM,EAAU,EAAM,EAAW,GACrC,GAAI,EACF,IAAK,IAAI,KAAU,EACjB,EAAK,QAAQ,GAAU,EAAI,EAGjC,EAGA,EAAS,GAAK,SAAY,GACxB,IAAI,EAAY,QAUhB,OAToB,KAAK,IAAI,YAAY,KAAe,KAAK,IAAI,OAAS,EAMxE,KAAK,SAAS,KAAK,SAAS,OAAS,GAAK,GAH1C,KAAK,IAAM,KAAK,IAAM,SACtB,KAAK,SAAS,KAAK,IAKd,IACT,EAEO,EAAK,OACd","file":"/npm/ready-knex-postgis@0.0.1/lib/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/ready-knex-postgis@0.0.1/lib/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nvar utils = require('./utils');\n\nmodule.exports = function(knex) {\n  var formatter;\n\n  var rawProto = Object.getPrototypeOf(knex.raw());\n  var rawConstructor = rawProto.constructor;\n\n\n  formatter = {};\n\n  formatter.wrapWKT = function wrapWKT(value) {\n    if (value instanceof rawConstructor) {\n      return value;\n    }\n\n    if (typeof value === 'string' && utils.isWKT(value)) {\n      return value;\n    } else {\n      return knex.raw('??', [value]);\n    }\n  };\n\n  formatter.wrapGeoJSON = function wrapGeoJSON(value) {\n    var geomStr;\n\n    if (value instanceof rawConstructor) {\n      return value;\n    }\n\n    if (typeof value === 'string') {\n      if ( value.match(/^[^{}]*$/)) {\n        return knex.raw('??', [value]);\n      }\n      geomStr = value;\n    } else {\n      geomStr = JSON.stringify(value);\n    }\n\n    return JSON.stringify(utils.checkGeoJsonGeometry(geomStr));\n  };\n\n  formatter.wrapInteger = function wrapInteger(value) {\n    if (value instanceof rawConstructor) {\n      return value;\n    }\n\n    if (Number.isInteger(value)) {\n      return knex.raw('?::int', value);\n    } else if (utils.isString(value)) {\n      return knex.raw('??', [value]);\n    } else {\n      throw new Error('Invalid integer provided');\n    }\n  };\n\n  formatter.wrapNumber = function wrapNumber(value) {\n    if (value instanceof rawConstructor) {\n      return value;\n    }\n\n    if (utils.isNumber(value)) {\n      return value;\n    } else if (utils.isString(value)) {\n      // If this is a string, it may refer to a field name which is kosher\n      return knex.raw('??', [value]);\n    } else {\n      throw new Error('Invalid number provided');\n    }\n  };\n\n  formatter.wrapBoolean = function wrapBoolean(value) {\n    if (value instanceof rawConstructor) {\n      return value;\n    }\n\n    if (utils.isBoolean(value)) {\n      return value;\n    } else if (utils.isString(value)) {\n      // If this is a string, it may refer to a field name which is kosher\n      return knex.raw('??', [value]);\n    } else {\n      throw new Error('Invalid boolean provided');\n    }\n  };\n\n\n  function postgisFn(name) {\n    var args = Array.prototype.slice.call(arguments);\n    // remove name from the argument list\n    args.shift();\n\n    // last undefined arguments are considered opcional params.\n    // here they are removed to avoid creating placeholders for them\n    while (typeof args[args.length - 1] === 'undefined') {\n      args.pop();\n    }\n\n    var placeholders = args.map(function() {return '?';}).join(', ');\n    var sql = name + '(' + placeholders + ')';\n    var raw = knex.raw(sql, args);\n\n    return raw;\n  }\n\n\n\n  // attach postgis functions\n  knex.postgis = require('./functions')(knex, formatter, postgisFn);\n\n  knex.postgisDefineExtras = function(fnBuilder) {\n    var fns = fnBuilder(knex, formatter, postgisFn);\n    if (fns) {\n      for (var fnName in fns) {\n        knex.postgis[fnName] = fns[fnName];\n      }\n    }\n  };\n\n  // function to add alias to raw sql\n  rawProto.as = function as(alias) {\n    var alias_sql = 'as ??',\n        endsWithAlias = this.sql.lastIndexOf(alias_sql) === this.sql.length - alias_sql.length;\n\n    if (!endsWithAlias) {\n      this.sql = this.sql + ' as ??';\n      this.bindings.push(alias);\n    } else {\n      this.bindings[this.bindings.length - 1] = alias;\n    }\n\n    return this;\n  };\n\n  return knex.postgis;\n};\n"]}