{"version":3,"sources":["jsdelivr-header.js","/npm/mongodb-extjson@2.1.5/dist/bundle.js"],"names":[],"mappings":"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","file":"/npm/mongodb-extjson@2.1.5/dist/bundle.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/mongodb-extjson@2.1.5/dist/bundle.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory(require('bson')) :\n\ttypeof define === 'function' && define.amd ? define(['bson'], factory) :\n\t(global['mongodb-extjson'] = factory(global.bson));\n}(this, (function (bson) { 'use strict';\n\nbson = bson && bson.hasOwnProperty('default') ? bson['default'] : bson;\n\n/**\n * Module dependencies.\n * @ignore\n */\n\nfunction convert(integer) {\n  var str = Number(integer).toString(16);\n  return str.length === 1 ? '0' + str : str;\n}\n\nfunction toExtendedJSON(obj) {\n  var base64String = Buffer.isBuffer(obj.buffer) ? obj.buffer.toString('base64') : Buffer.from(obj.buffer).toString('base64');\n\n  return {\n    $binary: {\n      base64: base64String,\n      subType: convert(obj.sub_type)\n    }\n  };\n}\n\nfunction fromExtendedJSON(BSON, doc) {\n  var type = doc.$binary.subType ? parseInt(doc.$binary.subType, 16) : 0;\n\n  var data = new Buffer(doc.$binary.base64, 'base64');\n\n  return new BSON.Binary(data, type);\n}\n\nvar binary = {\n  toExtendedJSON: toExtendedJSON,\n  fromExtendedJSON: fromExtendedJSON\n};\n\nfunction toExtendedJSON$1(obj) {\n  if (obj.scope) {\n    return { $code: obj.code, $scope: obj.scope };\n  }\n\n  return { $code: obj.code };\n}\n\nfunction fromExtendedJSON$1(BSON, doc) {\n  return new BSON.Code(doc.$code, doc.$scope);\n}\n\nvar code = {\n  toExtendedJSON: toExtendedJSON$1,\n  fromExtendedJSON: fromExtendedJSON$1\n};\n\nfunction toExtendedJSON$2(obj) {\n  var o = {\n    $ref: obj.collection || obj.namespace,\n    $id: obj.oid\n  };\n  if (obj.db) o.$db = obj.db;\n  o = Object.assign(o, obj.fields);\n  return o;\n}\n\nfunction fromExtendedJSON$2(BSON, doc) {\n  var copy = Object.assign({}, doc);\n  ['$ref', '$id', '$db'].forEach(function (k) {\n    return delete copy[k];\n  });\n  return new BSON.DBRef(doc.$ref, doc.$id, doc.$db, copy);\n}\n\nvar db_ref = {\n  toExtendedJSON: toExtendedJSON$2,\n  fromExtendedJSON: fromExtendedJSON$2\n};\n\nfunction toExtendedJSON$3(obj) {\n  return { $numberDecimal: obj.toString() };\n}\n\nfunction fromExtendedJSON$3(BSON, doc) {\n  return new BSON.Decimal128.fromString(doc.$numberDecimal);\n}\n\nvar decimal128 = {\n  toExtendedJSON: toExtendedJSON$3,\n  fromExtendedJSON: fromExtendedJSON$3\n};\n\nfunction toExtendedJSON$4(obj, options) {\n  if (options && options.relaxed && Number.isFinite(obj.value)) {\n    return obj.value;\n  }\n\n  // NOTE: JavaScript has +0 and -0, apparently to model limit calculations. If a user\n  // explicitly provided `-0` then we need to ensure the sign makes it into the output\n  if (Object.is(Math.sign(obj.value), -0)) {\n    return { $numberDouble: '-' + obj.value.toFixed(1) };\n  }\n\n  var $numberDouble = void 0;\n  if (Number.isInteger(obj.value)) {\n    $numberDouble = obj.value.toFixed(1);\n    if ($numberDouble.length >= 13) {\n      $numberDouble = obj.value.toExponential(13).toUpperCase();\n    }\n  } else {\n    $numberDouble = obj.value.toString();\n  }\n\n  return { $numberDouble: $numberDouble };\n}\n\nfunction fromExtendedJSON$4(BSON, doc, options) {\n  return options && options.relaxed ? parseFloat(doc.$numberDouble) : new BSON.Double(parseFloat(doc.$numberDouble));\n}\n\nvar double_1 = {\n  toExtendedJSON: toExtendedJSON$4,\n  fromExtendedJSON: fromExtendedJSON$4\n};\n\nfunction toExtendedJSON$5(obj, options) {\n  if (options && options.relaxed) return obj.value;\n  return { $numberInt: obj.value.toString() };\n}\n\nfunction fromExtendedJSON$5(BSON, doc, options) {\n  return options && options.relaxed ? parseInt(doc.$numberInt, 10) : new BSON.Int32(doc.$numberInt);\n}\n\nvar int_32 = {\n  toExtendedJSON: toExtendedJSON$5,\n  fromExtendedJSON: fromExtendedJSON$5\n};\n\nfunction toExtendedJSON$6(obj, options) {\n  if (options && options.relaxed) return obj.toNumber();\n  return { $numberLong: obj.toString() };\n}\n\nfunction fromExtendedJSON$6(BSON, doc, options) {\n  var result = BSON.Long.fromString(doc.$numberLong);\n  return options && options.relaxed ? result.toNumber() : result;\n}\n\nvar long_1 = {\n  toExtendedJSON: toExtendedJSON$6,\n  fromExtendedJSON: fromExtendedJSON$6\n};\n\nfunction toExtendedJSON$7() {\n  return { $maxKey: 1 };\n}\n\nfunction fromExtendedJSON$7(BSON) {\n  return new BSON.MaxKey();\n}\n\nvar max_key = {\n  toExtendedJSON: toExtendedJSON$7,\n  fromExtendedJSON: fromExtendedJSON$7\n};\n\nfunction toExtendedJSON$8() {\n  return { $minKey: 1 };\n}\n\nfunction fromExtendedJSON$8(BSON) {\n  return new BSON.MinKey();\n}\n\nvar min_key = {\n  toExtendedJSON: toExtendedJSON$8,\n  fromExtendedJSON: fromExtendedJSON$8\n};\n\nfunction toExtendedJSON$9(obj) {\n  if (obj.toHexString) return { $oid: obj.toHexString() };\n  return { $oid: obj.toString('hex') };\n}\n\nfunction fromExtendedJSON$9(BSON, doc) {\n  return new BSON.ObjectID(doc.$oid);\n}\n\nvar objectid = {\n  toExtendedJSON: toExtendedJSON$9,\n  fromExtendedJSON: fromExtendedJSON$9\n};\n\nfunction toExtendedJSON$10(obj) {\n  return { $regularExpression: { pattern: obj.pattern, options: obj.options } };\n}\n\nfunction fromExtendedJSON$10(BSON, doc) {\n  return new BSON.BSONRegExp(doc.$regularExpression.pattern, doc.$regularExpression.options.split('').sort().join(''));\n}\n\nvar regexp = {\n  toExtendedJSON: toExtendedJSON$10,\n  fromExtendedJSON: fromExtendedJSON$10\n};\n\nfunction toExtendedJSON$11(obj) {\n  return { $symbol: obj.value };\n}\n\nfunction fromExtendedJSON$11(BSON, doc) {\n  return new BSON.Symbol(doc.$symbol);\n}\n\nvar symbol = {\n  toExtendedJSON: toExtendedJSON$11,\n  fromExtendedJSON: fromExtendedJSON$11\n};\n\nfunction toExtendedJSON$12(obj) {\n  return {\n    $timestamp: {\n      t: obj.high_,\n      i: obj.low_\n    }\n  };\n}\n\nfunction fromExtendedJSON$12(BSON, doc) {\n  return new BSON.Timestamp(doc.$timestamp.i, doc.$timestamp.t);\n}\n\nvar timestamp = {\n  toExtendedJSON: toExtendedJSON$12,\n  fromExtendedJSON: fromExtendedJSON$12\n};\n\nvar bson$1 = {\n  Binary: binary,\n  Code: code,\n  DBRef: db_ref,\n  Decimal128: decimal128,\n  Double: double_1,\n  Int32: int_32,\n  Long: long_1,\n  MaxKey: max_key,\n  MinKey: min_key,\n  ObjectID: objectid,\n  BSONRegExp: regexp,\n  Symbol: symbol,\n  Timestamp: timestamp\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar BSON = bson;\n\nvar BSONTypes = ['Binary', 'Code', 'DBRef', 'Decimal128', 'Double', 'Int32', 'Long', 'MaxKey', 'MinKey', 'ObjectID', 'BSONRegExp', 'Symbol', 'Timestamp'];\n\nsetBSONModule(BSON);\n\n// all the types where we don't need to do any special processing and can just pass the EJSON\n//straight to type.fromExtendedJSON\nvar keysToCodecs = {\n  $oid: bson$1.ObjectID,\n  $binary: bson$1.Binary,\n  $symbol: bson$1.Symbol,\n  $numberInt: bson$1.Int32,\n  $numberDecimal: bson$1.Decimal128,\n  $numberDouble: bson$1.Double,\n  $numberLong: bson$1.Long,\n  $minKey: bson$1.MinKey,\n  $maxKey: bson$1.MaxKey,\n  $regularExpression: bson$1.BSONRegExp,\n  $timestamp: bson$1.Timestamp\n};\n\nfunction setBSONModule(module) {\n  BSONTypes.forEach(function (t) {\n    if (!module[t]) throw new Error('passed in module does not contain all BSON types required');\n  });\n  BSON = module;\n}\n\nfunction deserializeValue(self, key, value, options) {\n  if (typeof value === 'number') {\n    // if it's an integer, should interpret as smallest BSON integer\n    // that can represent it exactly. (if out of range, interpret as double.)\n    if (Math.floor(value) === value) {\n      var int32Range = value >= BSON_INT32_MIN && value <= BSON_INT32_MAX,\n          int64Range = value >= BSON_INT64_MIN && value <= BSON_INT64_MAX;\n\n      if (int32Range) return options.strict ? new BSON.Int32(value) : value;\n      if (int64Range) return options.strict ? new BSON.Long.fromNumber(value) : value;\n    }\n    // If the number is a non-integer or out of integer range, should interpret as BSON Double.\n    return new BSON.Double(value);\n  }\n\n  // from here on out we're looking for bson types, so bail if its not an object\n  if (value == null || (typeof value === 'undefined' ? 'undefined' : _typeof(value)) !== 'object') return value;\n\n  // upgrade deprecated undefined to null\n  if (value.$undefined) return null;\n\n  var keys = Object.keys(value).filter(function (k) {\n    return k.startsWith('$') && value[k] != null;\n  });\n  for (var i = 0; i < keys.length; i++) {\n    var c = keysToCodecs[keys[i]];\n    if (c) return c.fromExtendedJSON(BSON, value, options);\n  }\n\n  if (value.$date != null) {\n    var d = value.$date,\n        date = new Date();\n\n    if (typeof d === 'string') date.setTime(Date.parse(d));else if (d instanceof BSON.Long) date.setTime(d.toNumber());else if (typeof d === 'number' && options.relaxed) date.setTime(d);\n    return date;\n  }\n\n  if (value.$code != null) {\n    if (value.$scope) var scope = deserializeValue(self, null, value.$scope);\n    var copy = Object.assign({}, value);\n    copy.$scope = scope;\n    return bson$1.Code.fromExtendedJSON(BSON, value);\n  }\n\n  if (value.$ref != null || value.$dbPointer != null) {\n    var v = value.$ref ? value : value.$dbPointer;\n\n    // we run into this in a \"degenerate EJSON\" case (with $id and $ref order flipped)\n    // because of the order JSON.parse goes through the document\n    if (v instanceof BSON.DBRef) return v;\n\n    var dollarKeys = Object.keys(v).filter(function (k) {\n      return k.startsWith('$');\n    }),\n        valid = true;\n    dollarKeys.forEach(function (k) {\n      if (['$ref', '$id', '$db'].indexOf(k) === -1) valid = false;\n    });\n\n    // only make DBRef if $ keys are all valid\n    if (valid) return bson$1.DBRef.fromExtendedJSON(BSON, v);\n  }\n\n  return value;\n}\n\nvar parse = function parse(text, options) {\n  var self = this;\n  options = options || { relaxed: false };\n\n  // relaxed implies not strict\n  if (typeof options.relaxed === 'boolean') options.strict = !options.relaxed;\n  if (typeof options.strict === 'boolean') options.relaxed = !options.strict;\n\n  return JSON.parse(text, function (key, value) {\n    return deserializeValue(self, key, value, options);\n  });\n};\n\n//\n// Serializer\n//\n\n// MAX INT32 boundaries\nvar BSON_INT32_MAX = 0x7fffffff,\n    BSON_INT32_MIN = -0x80000000,\n    BSON_INT64_MAX = 0x7fffffffffffffff,\n    BSON_INT64_MIN = -0x8000000000000000;\n\nvar stringify = function stringify(value, reducer, indents, options) {\n  var opts = {};\n  if (options != null && (typeof options === 'undefined' ? 'undefined' : _typeof(options)) === 'object') opts = options;else if (indents != null && (typeof indents === 'undefined' ? 'undefined' : _typeof(indents)) === 'object') {\n    opts = indents;\n    indents = 0;\n  } else if (reducer != null && (typeof reducer === 'undefined' ? 'undefined' : _typeof(reducer)) === 'object') {\n    opts = reducer;\n    reducer = null;\n  }\n\n  var doc = Array.isArray(value) ? serializeArray(value, opts) : serializeDocument(value, opts);\n  return JSON.stringify(doc, reducer, indents);\n};\n\nfunction serializeArray(array, options) {\n  return array.map(function (v) {\n    return serializeValue(v, options);\n  });\n}\n\nfunction getISOString(date) {\n  var isoStr = date.toISOString();\n  // we should only show milliseconds in timestamp if they're non-zero\n  return date.getUTCMilliseconds() !== 0 ? isoStr : isoStr.slice(0, -5) + 'Z';\n}\n\nfunction serializeValue(value, options) {\n  if (Array.isArray(value)) return serializeArray(value, options);\n\n  if (value === undefined) return null;\n\n  if (value instanceof Date) {\n    var dateNum = value.getTime(),\n\n    // is it in year range 1970-9999?\n    inRange = dateNum > -1 && dateNum < 253402318800000;\n\n    return options.relaxed && inRange ? { $date: getISOString(value) } : { $date: { $numberLong: value.getTime().toString() } };\n  }\n\n  if (typeof value === 'number' && !options.relaxed) {\n    // it's an integer\n    if (Math.floor(value) === value) {\n      var int32Range = value >= BSON_INT32_MIN && value <= BSON_INT32_MAX,\n          int64Range = value >= BSON_INT64_MIN && value <= BSON_INT64_MAX;\n\n      // interpret as being of the smallest BSON integer type that can represent the number exactly\n      if (int32Range) return { $numberInt: value.toString() };\n      if (int64Range) return { $numberLong: value.toString() };\n    }\n    return { $numberDouble: value.toString() };\n  }\n\n  if (value != null && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === 'object') return serializeDocument(value, options);\n  return value;\n}\n\nfunction serializeDocument(doc, options) {\n  if (doc == null || (typeof doc === 'undefined' ? 'undefined' : _typeof(doc)) !== 'object') throw new Error('not an object instance');\n\n  // the document itself is a BSON type\n  if (doc._bsontype && BSONTypes.indexOf(doc._bsontype) !== -1) {\n    // we need to separately serialize the embedded scope document\n    if (doc._bsontype === 'Code' && doc.scope) {\n      var tempScope = serializeDocument(doc.scope, options),\n          tempDoc = Object.assign({}, doc, { scope: tempScope });\n      return bson$1['Code'].toExtendedJSON(tempDoc, options);\n      // we need to separately serialize the embedded OID document\n    } else if (doc._bsontype === 'DBRef' && doc.oid) {\n      var tempId = serializeDocument(doc.oid, options),\n          _tempDoc = Object.assign({}, doc, { oid: tempId });\n      return bson$1['DBRef'].toExtendedJSON(_tempDoc, options);\n    }\n    return bson$1[doc._bsontype].toExtendedJSON(doc, options);\n  }\n\n  // the document is an object with nested BSON types\n  var _doc = {};\n  for (var name in doc) {\n    var val = doc[name];\n    if (Array.isArray(val)) {\n      _doc[name] = serializeArray(val, options);\n    } else if (val != null && val._bsontype && BSONTypes.indexOf(val._bsontype) !== -1) {\n      // we need to separately serialize the embedded scope document\n      if (val._bsontype === 'Code' && val.scope) {\n        var _tempScope = serializeDocument(val.scope, options),\n            tempVal = Object.assign({}, val, { scope: _tempScope });\n        _doc[name] = bson$1['Code'].toExtendedJSON(tempVal, options);\n        // we need to separately serialize the embedded OID document\n      } else if (val._bsontype === 'DBRef' && val.oid) {\n        var _tempId = serializeDocument(val.oid, options),\n            _tempVal = Object.assign({}, val, { oid: _tempId });\n        _doc[name] = bson$1['DBRef'].toExtendedJSON(_tempVal, options);\n      } else _doc[name] = bson$1[val._bsontype].toExtendedJSON(val, options);\n    } else if (val instanceof Date) {\n      _doc[name] = serializeValue(val, options);\n    } else if (val != null && (typeof val === 'undefined' ? 'undefined' : _typeof(val)) === 'object') {\n      _doc[name] = serializeDocument(val, options);\n    }\n    _doc[name] = serializeValue(val, options);\n    if (val instanceof RegExp) {\n      var flags = val.flags;\n      if (flags === undefined) {\n        flags = val.toString().match(/[gimuy]*$/)[0];\n      }\n      _doc[name] = bson$1['BSONRegExp'].toExtendedJSON({ pattern: val.source, options: flags });\n    }\n  }\n\n  return _doc;\n}\n\nvar ext_json = {\n  parse: parse,\n  stringify: stringify,\n  setBSONModule: setBSONModule,\n  BSON: BSON\n};\n\nvar mongodbExtjson = ext_json;\n\nreturn mongodbExtjson;\n\n})));\n"]}