{"version":3,"sources":["jsdelivr-header.js","/npm/connect-loopback-datasource-juggler@0.0.2/index.js"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA,ACNA,IAAI,SAAW,CACb,MAAO,WACP,OAAQ,SAGV,SAAS,OAAQ,CAEjB,OAAO,QAAU,SAAS,GACxB,aACA,IAAI,EAAQ,EAAQ,MAEpB,SAAS,EAAa,EAAQ,GAC5B,EAAU,GAAW,CAAC,EACtB,EAAM,KAAK,KAAM,GACjB,KAAK,OAAS,EAAQ,QAAU,SAAS,OACzC,IAAI,EAAO,KAAK,WAAa,EAAO,OAAO,UAAW,CACpD,IAAK,CACH,KAAM,OACN,OAAO,GAET,QAAS,CACP,KAAM,KACN,OAAO,GAET,QAAS,EAAO,YAAY,MAC3B,CACD,MAAO,EAAQ,OAAS,SAAS,QAGnC,EAAK,sBAAsB,OAG3B,EAAK,UAAY,SAAS,GACxB,EAAK,KAAK,CACR,MAAO,CACL,QAAS,CACP,IAAK,IAAI,SAET,SAAS,EAAO,GAClB,EAAS,SAAQ,SAAS,GACxB,EAAQ,SACV,IAEA,GACF,GACJ,CACF,CAmGA,OA9FA,QAAQ,QAAQ,SAAS,EAAc,GASvC,EAAa,UAAU,IAAM,SAAS,EAAK,GACzC,IAAI,EAAO,KACX,EAAW,GAAY,KACvB,KAAK,WAAW,QAAQ,CAAC,MAAO,CAAC,IAAK,KAAO,SAAS,EAAK,GACzD,OAAI,EAAY,EAAS,GACpB,QACA,EAAQ,SAAW,IAAI,KAAS,EAAQ,QAC3C,EAAS,KAAM,EAAQ,SAEvB,EAAK,QAAQ,EAAK,IAJC,GAMvB,GACF,EAUA,EAAa,UAAU,IAAM,SAAS,EAAK,EAAS,GAClD,EAAW,GAAY,KACvB,IAAI,EAAI,CACN,QAAS,GAEP,GAAW,EAAQ,QAAU,EAAQ,OAAO,QAC9C,EAAE,QAAU,IAAI,KAAK,EAAQ,OAAO,SAEpC,EAAE,QAAU,IAAI,KAAK,KAAK,MAAQ,KAAK,QAEzC,IAAI,EAAO,KAAK,WAChB,EAAK,QAAQ,CAAC,MAAO,CAAC,IAAK,KAAO,SAAS,EAAK,GAC9C,GAAI,EAAK,OAAO,EAAS,GACrB,EACF,EAAQ,iBAAiB,GAAG,SAAS,GACnC,EAAS,EACX,KAEA,EAAE,IAAM,EACR,EAAK,OAAO,GAAG,SAAS,GACtB,EAAS,EACX,IAEJ,GACF,EASA,EAAa,UAAU,QAAU,SAAS,EAAK,GAC7C,EAAW,GAAY,KACZ,KAAK,WACX,QAAQ,CAAC,MAAO,CAAC,IAAK,KAAO,SAAS,EAAK,GAC9C,OAAI,EAAY,EAAS,GACpB,OACL,EAAQ,QAAQ,GADK,GAEvB,GACF,EAQA,EAAa,UAAU,OAAS,SAAS,GACvC,KAAK,WAAW,MAAM,EACxB,EAQA,EAAa,UAAU,MAAQ,SAAS,GACtC,KAAK,WAAW,WAAW,EAC7B,EAEO,CACT","file":"/npm/connect-loopback-datasource-juggler@0.0.2/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/connect-loopback-datasource-juggler@0.0.2/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","var defaults = {\n  table: 'sessions',\n  maxAge: 1000 * 60 * 60 * 24 * 14\n};\n\nfunction noop() {}\n\nmodule.exports = function(session) {\n  \"use strict\";\n  var Store = session.Store;\n\n  function JugglerStore(schema, options) {\n    options = options || {};\n    Store.call(this, options);\n    this.maxAge = options.maxAge || defaults.maxAge;\n    var coll = this.collection = schema.define('session', {\n      sid: {\n        type: String,\n        index: true\n      },\n      expires: {\n        type: Date,\n        index: true\n      },\n      session: schema.constructor.JSON\n    }, {\n      table: options.table || defaults.table\n    });\n\n    coll.validatesUniquenessOf('sid');\n\n    // destroy all expired sessions after each create/update\n    coll.afterSave = function(next) {\n      coll.find({\n        where: {\n          expires: {\n            lte: new Date()\n          }\n        }}, function(error, sessions) {\n          sessions.forEach(function(session) {\n            session.destroy();\n          });\n\n          next();\n        });\n    };\n  }\n\n  /**\n   * Inherit from `Store`.\n   */\n  require('util').inherits(JugglerStore, Store);\n\n  /**\n   * Attempt to fetch session by the given `sid`.\n   *\n   * @param {String} sid\n   * @param {Function} callback\n   * @api public\n   */\n  JugglerStore.prototype.get = function(sid, callback) {\n    var self = this;\n    callback = callback || noop;\n    this.collection.findOne({where: {sid: sid}}, function(err, session) {\n      if (err) return callback(err);\n      if (!session) return callback();\n      if (!session.expires || new Date() < session.expires) {\n        callback(null, session.session);\n      } else {\n        self.destroy(sid, callback);\n      }\n    });\n  };\n\n  /**\n   * Commit the given `session` object associated with the given `sid`.\n   *\n   * @param {String} sid\n   * @param {Session} session\n   * @param {Function} callback\n   * @api public\n   */\n  JugglerStore.prototype.set = function(sid, session, callback) {\n    callback = callback || noop;\n    var s = {\n      session: session\n    };\n    if (session && session.cookie && session.cookie.expires) {\n      s.expires = new Date(session.cookie.expires);\n    } else {\n      s.expires = new Date(Date.now() + this.maxAge);\n    }\n    var coll = this.collection;\n    coll.findOne({where: {sid: sid}}, function(err, session) {\n      if (err) return callback(err);\n      if (session) {\n        session.updateAttributes(s, function(err) {\n          callback(err);\n        });\n      } else {\n        s.sid = sid;\n        coll.create(s, function(err) {\n          callback(err);\n        });\n      }\n    });\n  };\n\n  /**\n   * Destroy the session associated with the given `sid`.\n   *\n   * @param {String} sid\n   * @param {Function} callback\n   * @api public\n   */\n  JugglerStore.prototype.destroy = function(sid, callback) {\n    callback = callback || noop;\n    var coll = this.collection;\n    coll.findOne({where: {sid: sid}}, function(err, session) {\n      if (err) return callback(err);\n      if (!session) return callback();\n      session.destroy(callback);\n    });\n  };\n\n  /**\n   * Fetch number of sessions.\n   *\n   * @param {Function} callback\n   * @api public\n   */\n  JugglerStore.prototype.length = function(callback) {\n    this.collection.count(callback);\n  };\n\n  /**\n   * Clear all sessions.\n   *\n   * @param {Function} callback\n   * @api public\n   */\n  JugglerStore.prototype.clear = function(callback) {\n    this.collection.destroyAll(callback);\n  };\n\n  return JugglerStore;\n};\n"]}