{"version":3,"sources":["jsdelivr-header.js","/npm/passport-local-mongoose@9.0.1/dist/index.js"],"names":[],"mappings":"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","file":"/npm/passport-local-mongoose@9.0.1/dist/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/passport-local-mongoose@9.0.1/dist/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\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    var desc = Object.getOwnPropertyDescriptor(m, k);\n    if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n      desc = { enumerable: true, get: function() { return m[k]; } };\n    }\n    Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n    if (k2 === undefined) k2 = k;\n    o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n    Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n    o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || (function () {\n    var ownKeys = function(o) {\n        ownKeys = Object.getOwnPropertyNames || function (o) {\n            var ar = [];\n            for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;\n            return ar;\n        };\n        return ownKeys(o);\n    };\n    return function (mod) {\n        if (mod && mod.__esModule) return mod;\n        var result = {};\n        if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== \"default\") __createBinding(result, mod, k[i]);\n        __setModuleDefault(result, mod);\n        return result;\n    };\n})();\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.errors = void 0;\nconst crypto_1 = __importDefault(require(\"crypto\"));\nconst util_1 = require(\"util\");\nconst passport_local_1 = require(\"passport-local\");\nconst pbkdf2_1 = require(\"./lib/pbkdf2\");\nconst errors = __importStar(require(\"./lib/errors\"));\nexports.errors = errors;\nconst authenticate_1 = require(\"./lib/authenticate\");\nconst randomBytesAsync = (0, util_1.promisify)(crypto_1.default.randomBytes);\nfunction passportLocalMongoose(schema, options) {\n    const opts = {\n        saltlen: 32,\n        iterations: 25000,\n        keylen: 512,\n        encoding: 'hex',\n        digestAlgorithm: 'sha256',\n        usernameField: 'username',\n        usernameUnique: true,\n        usernameQueryFields: [],\n        usernameCaseInsensitive: false,\n        usernameLowerCase: false,\n        hashField: 'hash',\n        saltField: 'salt',\n        limitAttempts: false,\n        lastLoginField: 'last',\n        attemptsField: 'attempts',\n        interval: 100,\n        maxInterval: 300000,\n        maxAttempts: Infinity,\n        unlockInterval: undefined,\n        passwordValidator: (_password) => Promise.resolve(),\n        findByUsername: (model, queryParameters) => model.findOne(queryParameters),\n        selectFields: undefined,\n        populateFields: undefined,\n        errorMessages: {},\n        ...options,\n    };\n    // Set default error messages\n    opts.errorMessages.MissingPasswordError = opts.errorMessages.MissingPasswordError || 'No password was given';\n    opts.errorMessages.AttemptTooSoonError = opts.errorMessages.AttemptTooSoonError || 'Account is currently locked. Try again later';\n    opts.errorMessages.TooManyAttemptsError =\n        opts.errorMessages.TooManyAttemptsError || 'Account locked due to too many failed login attempts';\n    opts.errorMessages.NoSaltValueStoredError =\n        opts.errorMessages.NoSaltValueStoredError || 'Authentication not possible. No salt value stored';\n    opts.errorMessages.IncorrectPasswordError = opts.errorMessages.IncorrectPasswordError || 'Password or username is incorrect';\n    opts.errorMessages.IncorrectUsernameError = opts.errorMessages.IncorrectUsernameError || 'Password or username is incorrect';\n    opts.errorMessages.MissingUsernameError = opts.errorMessages.MissingUsernameError || 'No username was given';\n    opts.errorMessages.UserExistsError = opts.errorMessages.UserExistsError || 'A user with the given username is already registered';\n    // Populate username query fields\n    if (options?.usernameQueryFields) {\n        opts.usernameQueryFields.push(...options.usernameQueryFields, opts.usernameField);\n    }\n    else {\n        opts.usernameQueryFields = [opts.usernameField];\n    }\n    const schemaFields = {};\n    if (!schema.path(opts.usernameField)) {\n        schemaFields[opts.usernameField] = { type: String, unique: opts.usernameUnique };\n    }\n    schemaFields[opts.hashField] = { type: String, select: false };\n    schemaFields[opts.saltField] = { type: String, select: false };\n    if (opts.limitAttempts) {\n        schemaFields[opts.attemptsField] = { type: Number, default: 0 };\n        schemaFields[opts.lastLoginField] = { type: Date, default: Date.now };\n    }\n    schema.add(schemaFields);\n    schema.pre('save', function () {\n        if (opts.usernameLowerCase && this.get(opts.usernameField)) {\n            this.set(opts.usernameField, this.get(opts.usernameField).toLowerCase());\n        }\n    });\n    schema.methods.setPassword = async function (password) {\n        if (!password) {\n            throw new errors.MissingPasswordError(opts.errorMessages.MissingPasswordError);\n        }\n        await opts.passwordValidator(password);\n        const saltBuffer = await randomBytesAsync(opts.saltlen);\n        const salt = saltBuffer.toString(opts.encoding);\n        this.set(opts.saltField, salt);\n        const hashRaw = await (0, pbkdf2_1.pbkdf2)(password, salt, opts);\n        this.set(opts.hashField, Buffer.from(hashRaw).toString(opts.encoding));\n        return this;\n    };\n    schema.methods.changePassword = async function (oldPassword, newPassword) {\n        if (!oldPassword || !newPassword) {\n            throw new errors.MissingPasswordError(opts.errorMessages.MissingPasswordError);\n        }\n        const { user, error } = await this.authenticate(oldPassword);\n        if (!user) {\n            throw error;\n        }\n        await this.setPassword(newPassword);\n        await this.save();\n        return this;\n    };\n    schema.methods.authenticate = async function (password) {\n        if (this.get(opts.saltField)) {\n            return await (0, authenticate_1.authenticate)(this, password, opts);\n        }\n        const ThisModel = this.constructor;\n        const user = await ThisModel.findByUsername(this.get(opts.usernameField), true);\n        if (user) {\n            return await (0, authenticate_1.authenticate)(user, password, opts);\n        }\n        return { user: false, error: new errors.IncorrectUsernameError(opts.errorMessages.IncorrectUsernameError) };\n    };\n    if (opts.limitAttempts) {\n        schema.methods.resetAttempts = async function () {\n            this.set(opts.attemptsField, 0);\n            return await this.save();\n        };\n    }\n    // Passport Local Interface\n    schema.statics.authenticate = function () {\n        return (username, password, cb) => {\n            const promise = Promise.resolve()\n                .then(() => this.findByUsername(username, true))\n                .then((user) => {\n                if (user) {\n                    return user.authenticate(password);\n                }\n                return { user: false, error: new errors.IncorrectUsernameError(opts.errorMessages.IncorrectUsernameError) };\n            });\n            if (!cb) {\n                return promise;\n            }\n            return promise.then(({ user, error }) => cb(null, user, error)).catch((err) => cb(err));\n        };\n    };\n    // Passport Interface\n    schema.statics.serializeUser = function () {\n        return function (user, cb) {\n            cb(null, user.get(opts.usernameField));\n        };\n    };\n    schema.statics.deserializeUser = function () {\n        return async (username, cb) => {\n            try {\n                const user = await this.findByUsername(username);\n                cb(null, user);\n            }\n            catch (err) {\n                cb(err);\n            }\n        };\n    };\n    schema.statics.register = async function (user, password) {\n        // Create an instance of this in case user isn't already an instance\n        if (!(user instanceof this)) {\n            user = new this(user);\n        }\n        if (!user.get(opts.usernameField)) {\n            throw new errors.MissingUsernameError(opts.errorMessages.MissingUsernameError);\n        }\n        const existingUser = await this.findByUsername(user.get(opts.usernameField));\n        if (existingUser) {\n            throw new errors.UserExistsError(opts.errorMessages.UserExistsError);\n        }\n        await user.setPassword(password);\n        return await user.save();\n    };\n    schema.statics.findByUsername = function (username, selectOrOpts) {\n        let selectOpts = {};\n        if (typeof selectOrOpts === 'boolean') {\n            selectOpts = {\n                selectHashSaltFields: selectOrOpts,\n            };\n        }\n        else if (selectOrOpts) {\n            selectOpts = selectOrOpts;\n        }\n        selectOpts.selectHashSaltFields = !!selectOpts.selectHashSaltFields;\n        // if specified, convert the username to lowercase\n        let queryUsername = username;\n        if (username !== undefined && opts.usernameLowerCase) {\n            queryUsername = username.toLowerCase();\n        }\n        // escape regex tokens\n        if (username !== undefined && opts.usernameCaseInsensitive) {\n            queryUsername = username.replace(/[!#$()*+\\-./:<=>?[\\\\\\]^{|}]/g, '\\\\$&');\n        }\n        // Add each username query field\n        const queryOrParameters = [];\n        for (let i = 0; i < opts.usernameQueryFields.length; i++) {\n            const parameter = {};\n            parameter[opts.usernameQueryFields[i]] = opts.usernameCaseInsensitive ? new RegExp(`^${queryUsername}$`, 'i') : queryUsername;\n            queryOrParameters.push(parameter);\n        }\n        const query = opts.findByUsername(this, { $or: queryOrParameters });\n        if (selectOpts.selectHashSaltFields) {\n            query.select('+' + opts.hashField + ' +' + opts.saltField);\n        }\n        if (opts.selectFields) {\n            query.select(opts.selectFields);\n        }\n        if (opts.populateFields) {\n            query.populate(opts.populateFields);\n        }\n        return query;\n    };\n    schema.statics.createStrategy = function () {\n        return new passport_local_1.Strategy(opts, this.authenticate());\n    };\n}\npassportLocalMongoose.errors = errors;\nexports.default = passportLocalMongoose;\n"]}