primer cambio
This commit is contained in:
150
node_modules/sequelize/lib/hooks.js
generated
vendored
Normal file
150
node_modules/sequelize/lib/hooks.js
generated
vendored
Normal file
@@ -0,0 +1,150 @@
|
||||
"use strict";
|
||||
const _ = require("lodash");
|
||||
const { logger } = require("./utils/logger");
|
||||
const debug = logger.debugContext("hooks");
|
||||
const hookTypes = {
|
||||
beforeValidate: { params: 2 },
|
||||
afterValidate: { params: 2 },
|
||||
validationFailed: { params: 3 },
|
||||
beforeCreate: { params: 2 },
|
||||
afterCreate: { params: 2 },
|
||||
beforeDestroy: { params: 2 },
|
||||
afterDestroy: { params: 2 },
|
||||
beforeRestore: { params: 2 },
|
||||
afterRestore: { params: 2 },
|
||||
beforeUpdate: { params: 2 },
|
||||
afterUpdate: { params: 2 },
|
||||
beforeSave: { params: 2, proxies: ["beforeUpdate", "beforeCreate"] },
|
||||
afterSave: { params: 2, proxies: ["afterUpdate", "afterCreate"] },
|
||||
beforeUpsert: { params: 2 },
|
||||
afterUpsert: { params: 2 },
|
||||
beforeBulkCreate: { params: 2 },
|
||||
afterBulkCreate: { params: 2 },
|
||||
beforeBulkDestroy: { params: 1 },
|
||||
afterBulkDestroy: { params: 1 },
|
||||
beforeBulkRestore: { params: 1 },
|
||||
afterBulkRestore: { params: 1 },
|
||||
beforeBulkUpdate: { params: 1 },
|
||||
afterBulkUpdate: { params: 1 },
|
||||
beforeFind: { params: 1 },
|
||||
beforeFindAfterExpandIncludeAll: { params: 1 },
|
||||
beforeFindAfterOptions: { params: 1 },
|
||||
afterFind: { params: 2 },
|
||||
beforeCount: { params: 1 },
|
||||
beforeDefine: { params: 2, sync: true, noModel: true },
|
||||
afterDefine: { params: 1, sync: true, noModel: true },
|
||||
beforeInit: { params: 2, sync: true, noModel: true },
|
||||
afterInit: { params: 1, sync: true, noModel: true },
|
||||
beforeAssociate: { params: 2, sync: true },
|
||||
afterAssociate: { params: 2, sync: true },
|
||||
beforeConnect: { params: 1, noModel: true },
|
||||
afterConnect: { params: 2, noModel: true },
|
||||
beforeDisconnect: { params: 1, noModel: true },
|
||||
afterDisconnect: { params: 1, noModel: true },
|
||||
beforePoolAcquire: { params: 1, noModel: true },
|
||||
afterPoolAcquire: { params: 2, noModel: true },
|
||||
beforeSync: { params: 1 },
|
||||
afterSync: { params: 1 },
|
||||
beforeBulkSync: { params: 1 },
|
||||
afterBulkSync: { params: 1 },
|
||||
beforeQuery: { params: 2 },
|
||||
afterQuery: { params: 2 }
|
||||
};
|
||||
exports.hooks = hookTypes;
|
||||
const getProxiedHooks = (hookType) => hookTypes[hookType].proxies ? hookTypes[hookType].proxies.concat(hookType) : [hookType];
|
||||
function getHooks(hooked, hookType) {
|
||||
return (hooked.options.hooks || {})[hookType] || [];
|
||||
}
|
||||
const Hooks = {
|
||||
_setupHooks(hooks) {
|
||||
this.options.hooks = {};
|
||||
_.map(hooks || {}, (hooksArray, hookName) => {
|
||||
if (!Array.isArray(hooksArray))
|
||||
hooksArray = [hooksArray];
|
||||
hooksArray.forEach((hookFn) => this.addHook(hookName, hookFn));
|
||||
});
|
||||
},
|
||||
async runHooks(hooks, ...hookArgs) {
|
||||
if (!hooks)
|
||||
throw new Error("runHooks requires at least 1 argument");
|
||||
let hookType;
|
||||
if (typeof hooks === "string") {
|
||||
hookType = hooks;
|
||||
hooks = getHooks(this, hookType);
|
||||
if (this.sequelize) {
|
||||
hooks = hooks.concat(getHooks(this.sequelize, hookType));
|
||||
}
|
||||
}
|
||||
if (!Array.isArray(hooks)) {
|
||||
hooks = [hooks];
|
||||
}
|
||||
if (hookTypes[hookType] && hookTypes[hookType].sync) {
|
||||
for (let hook of hooks) {
|
||||
if (typeof hook === "object") {
|
||||
hook = hook.fn;
|
||||
}
|
||||
debug(`running hook(sync) ${hookType}`);
|
||||
hook.apply(this, hookArgs);
|
||||
}
|
||||
return;
|
||||
}
|
||||
for (let hook of hooks) {
|
||||
if (typeof hook === "object") {
|
||||
hook = hook.fn;
|
||||
}
|
||||
debug(`running hook ${hookType}`);
|
||||
await hook.apply(this, hookArgs);
|
||||
}
|
||||
},
|
||||
addHook(hookType, name, fn) {
|
||||
if (typeof name === "function") {
|
||||
fn = name;
|
||||
name = null;
|
||||
}
|
||||
debug(`adding hook ${hookType}`);
|
||||
hookType = getProxiedHooks(hookType);
|
||||
hookType.forEach((type) => {
|
||||
const hooks = getHooks(this, type);
|
||||
hooks.push(name ? { name, fn } : fn);
|
||||
this.options.hooks[type] = hooks;
|
||||
});
|
||||
return this;
|
||||
},
|
||||
removeHook(hookType, name) {
|
||||
const isReference = typeof name === "function" ? true : false;
|
||||
if (!this.hasHook(hookType)) {
|
||||
return this;
|
||||
}
|
||||
debug(`removing hook ${hookType}`);
|
||||
hookType = getProxiedHooks(hookType);
|
||||
for (const type of hookType) {
|
||||
this.options.hooks[type] = this.options.hooks[type].filter((hook) => {
|
||||
if (isReference && typeof hook === "function") {
|
||||
return hook !== name;
|
||||
}
|
||||
if (!isReference && typeof hook === "object") {
|
||||
return hook.name !== name;
|
||||
}
|
||||
return true;
|
||||
});
|
||||
}
|
||||
return this;
|
||||
},
|
||||
hasHook(hookType) {
|
||||
return this.options.hooks[hookType] && !!this.options.hooks[hookType].length;
|
||||
}
|
||||
};
|
||||
Hooks.hasHooks = Hooks.hasHook;
|
||||
function applyTo(target, isModel = false) {
|
||||
_.mixin(target, Hooks);
|
||||
for (const hook of Object.keys(hookTypes)) {
|
||||
if (isModel && hookTypes[hook].noModel) {
|
||||
continue;
|
||||
}
|
||||
target[hook] = function(name, callback) {
|
||||
return this.addHook(hook, name, callback);
|
||||
};
|
||||
}
|
||||
}
|
||||
exports.applyTo = applyTo;
|
||||
//# sourceMappingURL=hooks.js.map
|
||||
Reference in New Issue
Block a user