diff --git a/data/db/index.js b/data/db/index.js
deleted file mode 100755
index 2c8d2e1..0000000
--- a/data/db/index.js
+++ /dev/null
@@ -1 +0,0 @@
-exports.sequelize = require('./sequelize');
\ No newline at end of file
diff --git a/data/db/sequelize/index.js b/data/db/sequelize/index.js
deleted file mode 100755
index b72b96f..0000000
--- a/data/db/sequelize/index.js
+++ /dev/null
@@ -1,34 +0,0 @@
-const fs = require('fs');
-const path = require('path');
-var appDir = path.dirname(require.main.filename);
-const Sequelize = require('sequelize');
-const nconf = require.main.require(appDir + '/config');
-
-const username = nconf.get('database:user');
-const password = nconf.get('database:password');
-const dbName = nconf.get('database:name');
-const options = nconf.get('database:options');
-
-const client = new Sequelize(dbName, username, password, options);
-const models = {};
-
-
-fs
- .readdirSync(appDir + '/data/models')
- .filter(function (file) {
- return (file.indexOf('.') !== 0) && (file !== 'index.js');
- })
- .forEach(function (file) {
- var model = client.import(path.join(appDir + '/data/models', file));
- models[model.name] = model;
- });
-
-Object.keys(models).forEach(function (modelName) {
- if (models[modelName].hasOwnProperty('associate')) {
- models[modelName].associate(models);
- }
-});
-
-module.exports = models;
-module.exports.client = client;
-module.exports.Sequelize = client.Sequelize;
diff --git a/data/index.js b/data/index.js
index 7939a66..d46d802 100644
--- a/data/index.js
+++ b/data/index.js
@@ -1,2 +1 @@
-exports.db = require('./db');
-exports.persistence = require('./persistence');
\ No newline at end of file
+exports.persistence = require('./persistence');
diff --git a/data/persistence/utils/persistence-utils.js b/data/persistence/utils/persistence-utils.js
index 734c9b0..f4a218a 100644
--- a/data/persistence/utils/persistence-utils.js
+++ b/data/persistence/utils/persistence-utils.js
@@ -1,365 +1,384 @@
const path = require('path');
const appDir = path.dirname(require.main.filename);
const nconf = require.main.require(appDir + '/config');
-const { Sequelize } = require('../../db').sequelize;
+// const { Sequelize } = require('../../db').sequelize;
-/**
- * Construye los settings de sequelize para filtros, ordenamiento y filtro general pasados
- * como parametro. Se encarga de inicializar las estructuras where, include y order necesarios
- * en el settings de sequelize.
- * @param settings los settings de sequelize a ser inicializados.
- * @param baseModel el model base sobre el cual estamos trabajando.
- * @param filter los filtros a agregar.
- * @param orders los ordenamientos a aplicarse
- * @param paging informacion de paginado
- * @param generalFilterValue valor para el filtro general.
- * @param fieldsInGeneralFilter los campos a usarse para el filtro general. Se inicializara
- * por default a los atributos del baseModel, exceptuando el id y los atributos de
- * created_at y updated_at.
- */
-const constructSettings = (exports.constructSettings = (
- settings = {},
- baseModel,
- filters,
- orders,
- paging,
- generalFilterValue,
- fieldsInGeneralFilter
-) => {
- if (!orders || orders.length === 0) {
- orders = [['id', 'ASC']];
- }
- //Procesamos el filtro general.
- if (generalFilterValue) {
- constructGeneralFilter(
- settings,
- baseModel,
- generalFilterValue,
- fieldsInGeneralFilter
- );
- }
- //Procesamos los filtros especificos
- if (filters) {
- addFiltersToSettings(settings, baseModel, filters);
- }
- //Agregamos los orders
- if (orders) {
- addOrderToSettings(settings, baseModel, orders);
- }
- //Agregamos informacion de paginacion
- if (paging) {
- addPagingToSettings(settings, baseModel, paging);
- }
- return settings;
-});
+const getPersistenceUtils = (sequelize) => {
+ const { Sequelize } = sequelize;
+ /**
+ * Construye los settings de sequelize para filtros, ordenamiento y filtro general pasados
+ * como parametro. Se encarga de inicializar las estructuras where, include y order necesarios
+ * en el settings de sequelize.
+ * @param settings los settings de sequelize a ser inicializados.
+ * @param baseModel el model base sobre el cual estamos trabajando.
+ * @param filter los filtros a agregar.
+ * @param orders los ordenamientos a aplicarse
+ * @param paging informacion de paginado
+ * @param generalFilterValue valor para el filtro general.
+ * @param fieldsInGeneralFilter los campos a usarse para el filtro general. Se inicializara
+ * por default a los atributos del baseModel, exceptuando el id y los atributos de
+ * created_at y updated_at.
+ */
+ const constructSettings = (
+ settings = {},
+ baseModel,
+ filters,
+ orders,
+ paging,
+ generalFilterValue,
+ fieldsInGeneralFilter
+ ) => {
+ if (!orders || orders.length === 0) {
+ orders = [['id', 'ASC']];
+ }
+ //Procesamos el filtro general.
+ if (generalFilterValue) {
+ constructGeneralFilter(
+ settings,
+ baseModel,
+ generalFilterValue,
+ fieldsInGeneralFilter
+ );
+ }
+ //Procesamos los filtros especificos
+ if (filters) {
+ addFiltersToSettings(settings, baseModel, filters);
+ }
+ //Agregamos los orders
+ if (orders) {
+ addOrderToSettings(settings, baseModel, orders);
+ }
+ //Agregamos informacion de paginacion
+ if (paging) {
+ addPagingToSettings(settings, baseModel, paging);
+ }
+ return settings;
+ };
-/**
- * Construye el path teniendo en cuenta los atributos aliased. Por ejemplo, si le pasamos
- * roles.nombreRol, pero el atributo nombreRol en realidad esta aliased en la base de datos
- * bajo el underscore nombre_rol, se encarga de retornar roles.nombre_rol. Opera recursivamente
- * sobre todos los elementos del path pasado como argumento
- * @param path el path a procesar.
- * @param baseModel el model base.
- */
-const getAliasedPath = (exports.getAliasedPath = (path, baseModel) => {
- const splitted = path.split('.');
- let subPath = splitted[0];
- //Solo verificamos en caso de ser un atributo. Si es una asociacion,
- //no hay nada que hacer, ya que recibimos el alias adecuado.
- //console.log('Los attributes son', baseModel.attributes);
- if (baseModel.attributes[subPath]) {
- const attr = baseModel.attributes[subPath];
- if (attr.field) {
- subPath = attr.field;
+ /**
+ * Construye el path teniendo en cuenta los atributos aliased. Por ejemplo, si le pasamos
+ * roles.nombreRol, pero el atributo nombreRol en realidad esta aliased en la base de datos
+ * bajo el underscore nombre_rol, se encarga de retornar roles.nombre_rol. Opera recursivamente
+ * sobre todos los elementos del path pasado como argumento
+ * @param path el path a procesar.
+ * @param baseModel el model base.
+ */
+ const getAliasedPath = (path, baseModel) => {
+ const splitted = path.split('.');
+ let subPath = splitted[0];
+ //Solo verificamos en caso de ser un atributo. Si es una asociacion,
+ //no hay nada que hacer, ya que recibimos el alias adecuado.
+ //console.log('Los attributes son', baseModel.attributes);
+ if (baseModel.attributes[subPath]) {
+ const attr = baseModel.attributes[subPath];
+ if (attr.field) {
+ subPath = attr.field;
+ }
}
- }
- if (baseModel.associations[subPath]) {
- baseModel = baseModel.associations[subPath].target;
- }
- if (splitted.length > 1) {
- splitted.shift();
- subPath = `${subPath}.${getAliasedPath(splitted.join('.'), baseModel)}`;
- }
- return subPath;
-});
-/**
- * Agrega un nuevo path a los settings de sequelize recibido como parametro.
- * @param el path a ser agregado.
- * @param settings es el settings para sequelize.
- * @param baseModel el model sequelize base.
- * @param required en caso de ser necesario hacer nuevos joins para el path, seran required.
- */
-const addPathToSettings = (exports.addPathToSettings = (
- path,
- settings,
- baseModel,
- required = false
-) => {
- const splitted = path.split('.');
- //Si el path no es compuesto, simplemente retornamos
- if (splitted.length == 1) {
- return;
- }
- const subPath = splitted[0];
- //Si no existia include en el settings, agregamos un array vacio
- if (!settings.include) {
- settings.include = [];
- }
- const targetModel = baseModel.associations[subPath].target;
- //Obtenemos el subsetting del setting actual filtrando en el include
- let subsetting = settings.include.filter(x => x.as === subPath)[0];
- //Si no se encuentra el subsetting, entonces creamos un nuevo subsetting
- //para el path que representa la asociacion
- if (!subsetting) {
- subsetting = {
- model: targetModel,
- as: subPath,
- attributes: [],
- required
- };
- settings.include.push(subsetting);
- }
+ if (baseModel.associations[subPath]) {
+ baseModel = baseModel.associations[subPath].target;
+ }
+ if (splitted.length > 1) {
+ splitted.shift();
+ subPath = `${subPath}.${getAliasedPath(splitted.join('.'), baseModel)}`;
+ }
+ return subPath;
+ };
- //Volvemos a construir el path sin el primer elemento
- splitted.shift();
- path = splitted.join('.');
+ /**
+ * Agrega un nuevo path a los settings de sequelize recibido como parametro.
+ * @param el path a ser agregado.
+ * @param settings es el settings para sequelize.
+ * @param baseModel el model sequelize base.
+ * @param required en caso de ser necesario hacer nuevos joins para el path, seran required.
+ */
+ const addPathToSettings = (
+ path,
+ settings,
+ baseModel,
+ required = false
+ ) => {
+ const splitted = path.split('.');
+ //Si el path no es compuesto, simplemente retornamos
+ if (splitted.length == 1) {
+ return;
+ }
+ const subPath = splitted[0];
+ //Si no existia include en el settings, agregamos un array vacio
+ if (!settings.include) {
+ settings.include = [];
+ }
+ const targetModel = baseModel.associations[subPath].target;
+ //Obtenemos el subsetting del setting actual filtrando en el include
+ let subsetting = settings.include.filter(x => x.as === subPath)[0];
+ //Si no se encuentra el subsetting, entonces creamos un nuevo subsetting
+ //para el path que representa la asociacion
+ if (!subsetting) {
+ subsetting = {
+ model: targetModel,
+ as: subPath,
+ attributes: [],
+ required
+ };
+ settings.include.push(subsetting);
+ }
- //Volvemos a procesar de forma recursiva
- addPathToSettings(path, subsetting, targetModel, required);
-});
+ //Volvemos a construir el path sin el primer elemento
+ splitted.shift();
+ path = splitted.join('.');
-/**
- * Contruye el filtro general para un valor determinado.
- * Normalmente, value deberia ser una cadena.
- * @param settings los settings de sequelize que se estan construyendo.
- * @param baseModel model base para el cual se construiran los filtros.
- * @param value el valor con el que sera comparado.
- * @param pathsToCompare array de paths con los cuales se quiere comparar el
- * valor. De no ser proveido, se construye de forma default
- */
-const constructGeneralFilter = (exports.constructGeneralFilter = (
- settings,
- baseModel,
- value,
- pathsToCompare
-) => {
- if (!value) {
- return;
- }
- const pathsExcluded = ['created_at', 'updated_at', 'id'];
- if (!pathsToCompare) {
- //Incluimos los paths del model que no se encuentran en el array de paths excluidos
- pathsToCompare = Object.keys(baseModel.rawAttributes).filter(
- x => pathsExcluded.indexOf(x) < 0
- );
- }
- //Si no tenemos nada con que comparar, retornamos
- if (pathsToCompare.length === 0) {
- return;
- }
+ //Volvemos a procesar de forma recursiva
+ addPathToSettings(path, subsetting, targetModel, required);
+ };
- const or = [];
- for (let path of pathsToCompare) {
- //Agregamos el path al settings por si sea compuesto
- addPathToSettings(path, settings, baseModel);
- if (path.split('.').length === 1) {
- path = `${baseModel.name}.${path}`;
+ /**
+ * Contruye el filtro general para un valor determinado.
+ * Normalmente, value deberia ser una cadena.
+ * @param settings los settings de sequelize que se estan construyendo.
+ * @param baseModel model base para el cual se construiran los filtros.
+ * @param value el valor con el que sera comparado.
+ * @param pathsToCompare array de paths con los cuales se quiere comparar el
+ * valor. De no ser proveido, se construye de forma default
+ */
+ const constructGeneralFilter = (
+ settings,
+ baseModel,
+ value,
+ pathsToCompare
+ ) => {
+ if (!value) {
+ return;
+ }
+ const pathsExcluded = ['created_at', 'updated_at', 'id'];
+ if (!pathsToCompare) {
+ //Incluimos los paths del model que no se encuentran en el array de paths excluidos
+ pathsToCompare = Object.keys(baseModel.rawAttributes).filter(
+ x => pathsExcluded.indexOf(x) < 0
+ );
+ }
+ //Si no tenemos nada con que comparar, retornamos
+ if (pathsToCompare.length === 0) {
+ return;
+ }
+
+ const or = [];
+ for (let path of pathsToCompare) {
+ //Agregamos el path al settings por si sea compuesto
+ addPathToSettings(path, settings, baseModel);
+ if (path.split('.').length === 1) {
+ path = `${baseModel.name}.${path}`;
+ }
+ const likeCondition = nconf.get('database:options:dialect') === 'postgres' ? { $iLike: `%${value}%` } : { $like: `%${value}%` };
+ const condition = Sequelize.where(
+ Sequelize.cast(Sequelize.col(getAliasedPath(path, baseModel)), 'VARCHAR'),
+ likeCondition
+ );
+ or.push(condition);
}
- const likeCondition = nconf.get('database:options:dialect') === 'postgres' ? { $iLike: `%${value}%` } : { $like: `%${value}%` };
- const condition = Sequelize.where(
- Sequelize.cast(Sequelize.col(getAliasedPath(path, baseModel)), 'VARCHAR'),
- likeCondition
- );
- or.push(condition);
- }
- //Ahora, agregamos los ors a las condiciones ya existentes
- if (!settings.where) {
- settings.where = {};
- }
- if (!settings.where.$or) {
- settings.where.$or = [];
- }
- settings.where.$or = [...settings.where.$or, ...or];
-});
+ //Ahora, agregamos los ors a las condiciones ya existentes
+ if (!settings.where) {
+ settings.where = {};
+ }
+ if (!settings.where.$or) {
+ settings.where.$or = [];
+ }
+ settings.where.$or = [...settings.where.$or, ...or];
+ };
-/**
- * Agrega los filtros al setting pasado como parametro. Las nuevas condiciones
- * son agregadas como and a lo que ya exista en el setting.
- * @param setting el setting de sequelize.
- * @param baseModelel modelo base sobre el que se esta trabajando
- * @param filters los filtros. Cada filtro debe necesariamente tener el formato:
- * {
- * path: {
- * condiciones....
- * }
- * }
- * Filtros sin el formato especificado tendran comportamiento incorrecto, deben manejarse
- * manualmente.
- */
-const addFiltersToSettings = (exports.addFiltersToSettings = (
- settings,
- baseModel,
- filters
-) => {
- if (!filters || filters.length === 0) {
- return;
- }
+ /**
+ * Agrega los filtros al setting pasado como parametro. Las nuevas condiciones
+ * son agregadas como and a lo que ya exista en el setting.
+ * @param setting el setting de sequelize.
+ * @param baseModelel modelo base sobre el que se esta trabajando
+ * @param filters los filtros. Cada filtro debe necesariamente tener el formato:
+ * {
+ * path: {
+ * condiciones....
+ * }
+ * }
+ * Filtros sin el formato especificado tendran comportamiento incorrecto, deben manejarse
+ * manualmente.
+ */
+ const addFiltersToSettings = (
+ settings,
+ baseModel,
+ filters
+ ) => {
+ if (!filters || filters.length === 0) {
+ return;
+ }
- if (!settings.where) {
- settings.where = {};
- }
+ if (!settings.where) {
+ settings.where = {};
+ }
- for (let filter of filters) {
- let paths = Object.keys(filter);
- //Por cada uno de los paths de cada filtro, agregamos dicho path al settings
- //y transferimos sus condiciones al settings
- for (let path of paths) {
- addPathToSettings(path, settings, baseModel);
- let key = path.split('.').length > 1 ? '$' + path + '$' : path;
- if (settings.where[key]) {
- settings.where[key] = Object.assign(settings.where[key], filter[path]);
- } else {
- settings.where[key] = filter[path];
+ for (let filter of filters) {
+ let paths = Object.keys(filter);
+ //Por cada uno de los paths de cada filtro, agregamos dicho path al settings
+ //y transferimos sus condiciones al settings
+ for (let path of paths) {
+ addPathToSettings(path, settings, baseModel);
+ let key = path.split('.').length > 1 ? '$' + path + '$' : path;
+ if (settings.where[key]) {
+ settings.where[key] = Object.assign(settings.where[key], filter[path]);
+ } else {
+ settings.where[key] = filter[path];
+ }
}
}
- }
-});
+ };
-/**
- * Agrega ordenamiento al settings pasado como parametro.
- * @param settings los settings sequelize que se estan construyendo.
- * @param baseModel el modelo sequelize base.
- * @param orders la lista de order. Debe tener la siguiente estructura:
- * [
- * ["path1", "ASC"],
- * ["path2", "DESC"]......
- * ]
- */
-const addOrderToSettings = (exports.addOrderToSettings = (
- settings,
- baseModel,
- orders
-) => {
- if (!orders || orders.length === 0) {
- return;
- }
- if (!settings.order) {
- settings.order = [];
- }
- for (const order of orders) {
- addPathToSettings(order[0], settings, baseModel);
- //settings.order.push([`"${order[0]}"`, order[1]]);
- settings.order.push([...order[0].split('.'), order[1]]);
- }
-});
+ /**
+ * Agrega ordenamiento al settings pasado como parametro.
+ * @param settings los settings sequelize que se estan construyendo.
+ * @param baseModel el modelo sequelize base.
+ * @param orders la lista de order. Debe tener la siguiente estructura:
+ * [
+ * ["path1", "ASC"],
+ * ["path2", "DESC"]......
+ * ]
+ */
+ const addOrderToSettings = (
+ settings,
+ baseModel,
+ orders
+ ) => {
+ if (!orders || orders.length === 0) {
+ return;
+ }
+ if (!settings.order) {
+ settings.order = [];
+ }
+ for (const order of orders) {
+ addPathToSettings(order[0], settings, baseModel);
+ //settings.order.push([`"${order[0]}"`, order[1]]);
+ settings.order.push([...order[0].split('.'), order[1]]);
+ }
+ };
-/**
- * Agrega paginacion al settings pasado como parametro.
- * @param settings los settings sequelize que se estan construyendo.
- * @param baseModel el modelo sequelize base.
- * @param paging la informacion de paging. Debe tener la siguiente estructura
- * {
- * page: X,
- * pageSize: Y
- * }
- */
-const addPagingToSettings = (exports.addPagingToSettings = (
- settings,
- baseModel,
- paging
-) => {
- const DEFAULT_PAGE_SIZE = 10;
- const DEFAULT_PAGE = 1;
- let pageSize = DEFAULT_PAGE_SIZE;
- if (paging.pageSize) {
- pageSize = paging.pageSize;
- }
- let page = DEFAULT_PAGE;
- if (paging.page) {
- page = paging.page;
- }
+ /**
+ * Agrega paginacion al settings pasado como parametro.
+ * @param settings los settings sequelize que se estan construyendo.
+ * @param baseModel el modelo sequelize base.
+ * @param paging la informacion de paging. Debe tener la siguiente estructura
+ * {
+ * page: X,
+ * pageSize: Y
+ * }
+ */
+ const addPagingToSettings = (
+ settings,
+ baseModel,
+ paging
+ ) => {
+ const DEFAULT_PAGE_SIZE = 10;
+ const DEFAULT_PAGE = 1;
+ let pageSize = DEFAULT_PAGE_SIZE;
+ if (paging.pageSize) {
+ pageSize = paging.pageSize;
+ }
+ let page = DEFAULT_PAGE;
+ if (paging.page) {
+ page = paging.page;
+ }
+
+ const offset = (page - 1) * pageSize;
+ const limit = pageSize;
+ if (!settings.noLimit) {
+ //el parser genera un LIMIT y un OFFSET pero es utilizado sobre el total registros recien en el cliente
+ settings.limit = limit;
+ settings.offset = offset;
+ }
+ };
+
+ /**
+ * Agrega un inclusion de relacion a un setting que se debe encontrar inicializado.
+ *
+ * @example
+ *
+ * const settings = utils.constructSettings({}, db.sequelize.Usuario, filters, orders, paging, generalFilter);
+ * utils.addIncludeToSetting(settings, db.sequelize.Hotel, 'hotel');
+ * utils.addIncludeToSetting(settings, db.sequelize.Tipo, 'tipo');
+ * return await db.sequelize.Usuario.findAndCountAll(settings);
+ *
+ * @param {object} setting
+ * @param {object} model
+ * @param {string} alias
+ */
+ const addIncludeToSetting = (
+ settings,
+ model,
+ alias
+ ) => {
+ if (!settings.include) {
+ settings.include = [];
+ }
+ let subsetting = settings.include.filter(x => x.as === alias)[0];
+ if (!subsetting) {
+ subsetting = {
+ model: model,
+ as: alias
+ };
+ settings.include.push(subsetting);
+ }
+ delete subsetting.attributes;
+ };
- const offset = (page - 1) * pageSize;
- const limit = pageSize;
- if (!settings.noLimit) {
- //el parser genera un LIMIT y un OFFSET pero es utilizado sobre el total registros recien en el cliente
- settings.limit = limit;
- settings.offset = offset;
- }
-});
+ /**
+ * Retorna un array de paths basicos del modelo que pueden ser utilizados posteriormente para
+ * la comparacion del filtro general. Por defecto, incluye todos los atributos basicos
+ * del modelo excluyendo los campos created_at, updated_at, deleted_at e id
+ * @param {Object} baseModel
+ */
+ const constructPathsToCompare = baseModel => {
+ const pathsExcluded = ['created_at', 'updated_at', 'deleted_at', 'id'];
+ //Incluimos los paths del model que no se encuentran en el array de paths excluidos
+ const pathsToCompare = Object.keys(baseModel.rawAttributes).filter(
+ x => pathsExcluded.indexOf(x) < 0
+ );
+ return pathsToCompare;
+ };
-/**
- * Agrega un inclusion de relacion a un setting que se debe encontrar inicializado.
- *
- * @example
- *
- * const settings = utils.constructSettings({}, db.sequelize.Usuario, filters, orders, paging, generalFilter);
- * utils.addIncludeToSetting(settings, db.sequelize.Hotel, 'hotel');
- * utils.addIncludeToSetting(settings, db.sequelize.Tipo, 'tipo');
- * return await db.sequelize.Usuario.findAndCountAll(settings);
- *
- * @param {object} setting
- * @param {object} model
- * @param {string} alias
- */
-const addIncludeToSetting = (exports.addIncludeToSetting = (
- settings,
- model,
- alias
-) => {
- if (!settings.include) {
- settings.include = [];
- }
- let subsetting = settings.include.filter(x => x.as === alias)[0];
- if (!subsetting) {
- subsetting = {
- model: model,
- as: alias
- };
- settings.include.push(subsetting);
- }
- delete subsetting.attributes;
-});
+ /**
+ * * Retorna un array de paths del modelo que pueden ser utilizados posteriormente para
+ * la comparacion del filtro general. Incluye todos los campos resultantes de
+ * llamar a constructPathsToCompare, y se agrega los elementos del array pasado como parametro.
+ *
+ * @example
+ *
+ *
+ * const pathsInGeneralFilter = utils.constructExtendedPathsToCompare(
+ * db.sequelize.Usuario, ['tipo.nombre', 'hotel.nombre'])
+ * const settings = utils.constructSettings({}, db.sequelize.Usuario, filters,
+ * orders, paging, generalFilter, pathsInGeneralFilter);
+ * utils.addIncludeToSetting(settings, db.sequelize.Hotel, 'hotel');
+ * utils.addIncludeToSetting(settings, db.sequelize.Tipo, 'tipo');
+ * return await db.sequelize.Usuario.findAndCountAll(settings);
+ *
+ *
+ * @param {Object} baseModel
+ * @param {string[]} extendedPaths
+ */
+ const constructExtendedPathsToCompare = (
+ baseModel,
+ extendedPaths
+ ) => {
+ return [...constructPathsToCompare(baseModel), ...extendedPaths];
+ };
-/**
- * Retorna un array de paths basicos del modelo que pueden ser utilizados posteriormente para
- * la comparacion del filtro general. Por defecto, incluye todos los atributos basicos
- * del modelo excluyendo los campos created_at, updated_at, deleted_at e id
- * @param {Object} baseModel
- */
-const constructPathsToCompare = (exports.constructPathsToCompare = baseModel => {
- const pathsExcluded = ['created_at', 'updated_at', 'deleted_at', 'id'];
- //Incluimos los paths del model que no se encuentran en el array de paths excluidos
- const pathsToCompare = Object.keys(baseModel.rawAttributes).filter(
- x => pathsExcluded.indexOf(x) < 0
- );
- return pathsToCompare;
-});
+ return {
+ constructSettings,
+ getAliasedPath,
+ addPathToSettings,
+ constructGeneralFilter,
+ addFiltersToSettings,
+ addOrderToSettings,
+ addPagingToSettings,
+ addIncludeToSetting,
+ constructPathsToCompare,
+ constructExtendedPathsToCompare,
+ };
+};
-/**
- * * Retorna un array de paths del modelo que pueden ser utilizados posteriormente para
- * la comparacion del filtro general. Incluye todos los campos resultantes de
- * llamar a constructPathsToCompare, y se agrega los elementos del array pasado como parametro.
- *
- * @example
- *
- *
- * const pathsInGeneralFilter = utils.constructExtendedPathsToCompare(
- * db.sequelize.Usuario, ['tipo.nombre', 'hotel.nombre'])
- * const settings = utils.constructSettings({}, db.sequelize.Usuario, filters,
- * orders, paging, generalFilter, pathsInGeneralFilter);
- * utils.addIncludeToSetting(settings, db.sequelize.Hotel, 'hotel');
- * utils.addIncludeToSetting(settings, db.sequelize.Tipo, 'tipo');
- * return await db.sequelize.Usuario.findAndCountAll(settings);
- *
- *
- * @param {Object} baseModel
- * @param {string[]} extendedPaths
- */
-const constructExtendedPathsToCompare = (exports.constructExtendedPathsToCompare = (
- baseModel,
- extendedPaths
-) => {
- return [...constructPathsToCompare(baseModel), ...extendedPaths];
-});
+exports.getPersistenceUtils = getPersistenceUtils;
diff --git a/package-lock.json b/package-lock.json
index 12d5e1b..38d6ccd 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,6 +1,6 @@
{
"name": "node-toolkit",
- "version": "0.2.2",
+ "version": "0.3.5",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@@ -19,7 +19,7 @@
"resolved": "https://registry.npmjs.org/abs/-/abs-1.3.10.tgz",
"integrity": "sha1-napqQ1AQAfN/8VoexIIKRklW/8M=",
"requires": {
- "ul": "5.2.13"
+ "ul": "^5.0.0"
}
},
"ansi-escapes": {
@@ -46,7 +46,7 @@
"integrity": "sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8=",
"dev": true,
"requires": {
- "arr-flatten": "1.1.0"
+ "arr-flatten": "^1.0.1"
}
},
"arr-flatten": {
@@ -83,7 +83,7 @@
"integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=",
"dev": true,
"requires": {
- "balanced-match": "1.0.0",
+ "balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
@@ -93,9 +93,9 @@
"integrity": "sha1-uneWLhLf+WnWt2cR6RS3N4V79qc=",
"dev": true,
"requires": {
- "expand-range": "1.8.2",
- "preserve": "0.2.0",
- "repeat-element": "1.1.2"
+ "expand-range": "^1.8.1",
+ "preserve": "^0.2.0",
+ "repeat-element": "^1.1.2"
}
},
"buffer-equal-constant-time": {
@@ -114,7 +114,7 @@
"integrity": "sha1-4TYwdeogahJ2fZK7cRyKL3ahD2I=",
"dev": true,
"requires": {
- "os-homedir": "1.0.2"
+ "os-homedir": "^1.0.1"
}
},
"capture-stack-trace": {
@@ -128,11 +128,11 @@
"integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=",
"dev": true,
"requires": {
- "ansi-styles": "2.2.1",
- "escape-string-regexp": "1.0.5",
- "has-ansi": "2.0.0",
- "strip-ansi": "3.0.1",
- "supports-color": "2.0.0"
+ "ansi-styles": "^2.2.1",
+ "escape-string-regexp": "^1.0.2",
+ "has-ansi": "^2.0.0",
+ "strip-ansi": "^3.0.0",
+ "supports-color": "^2.0.0"
}
},
"cli-cursor": {
@@ -141,7 +141,7 @@
"integrity": "sha1-ZNo/fValRBLll5S9Ytw1KV6PKYc=",
"dev": true,
"requires": {
- "restore-cursor": "1.0.1"
+ "restore-cursor": "^1.0.1"
}
},
"cli-width": {
@@ -155,8 +155,8 @@
"resolved": "https://registry.npmjs.org/cls-bluebird/-/cls-bluebird-2.0.1.tgz",
"integrity": "sha1-wlmkgK4CwOUGE0MHuxPbMERu4uc=",
"requires": {
- "is-bluebird": "1.0.2",
- "shimmer": "1.1.0"
+ "is-bluebird": "^1.0.2",
+ "shimmer": "^1.1.0"
}
},
"code-point-at": {
@@ -171,14 +171,14 @@
"integrity": "sha1-wNAFNe8mTaf2Nzft/aQiiYP6IpE=",
"dev": true,
"requires": {
- "cachedir": "1.1.1",
+ "cachedir": "^1.1.0",
"chalk": "1.1.3",
"cz-conventional-changelog": "1.2.0",
"dedent": "0.6.0",
"detect-indent": "4.0.0",
"find-node-modules": "1.0.4",
"find-root": "1.0.0",
- "fs-extra": "1.0.0",
+ "fs-extra": "^1.0.0",
"glob": "7.1.1",
"inquirer": "1.2.3",
"lodash": "4.17.2",
@@ -194,12 +194,12 @@
"integrity": "sha1-K8oElkyJGbI/P9aonvXmAIsxs/g=",
"dev": true,
"requires": {
- "conventional-commit-types": "2.2.0",
- "lodash.map": "4.6.0",
- "longest": "1.0.1",
- "pad-right": "0.2.2",
- "right-pad": "1.0.1",
- "word-wrap": "1.2.3"
+ "conventional-commit-types": "^2.0.0",
+ "lodash.map": "^4.5.1",
+ "longest": "^1.0.1",
+ "pad-right": "^0.2.2",
+ "right-pad": "^1.0.1",
+ "word-wrap": "^1.0.3"
}
},
"lodash": {
@@ -222,9 +222,9 @@
"integrity": "sha1-CqxmL9Ur54lk1VMvaUeE5wEQrPc=",
"dev": true,
"requires": {
- "inherits": "2.0.3",
- "readable-stream": "2.3.3",
- "typedarray": "0.0.6"
+ "inherits": "^2.0.3",
+ "readable-stream": "^2.2.2",
+ "typedarray": "^0.0.6"
}
},
"conventional-commit-types": {
@@ -243,7 +243,7 @@
"resolved": "https://registry.npmjs.org/create-error-class/-/create-error-class-3.0.2.tgz",
"integrity": "sha1-Br56vvlHo/FKMP1hBnHUAbyot7Y=",
"requires": {
- "capture-stack-trace": "1.0.0"
+ "capture-stack-trace": "^1.0.0"
}
},
"cz-conventional-changelog": {
@@ -252,12 +252,12 @@
"integrity": "sha1-Val5r9/pXnAkh50qD1kkYwFwtTM=",
"dev": true,
"requires": {
- "conventional-commit-types": "2.2.0",
- "lodash.map": "4.6.0",
- "longest": "1.0.1",
- "pad-right": "0.2.2",
- "right-pad": "1.0.1",
- "word-wrap": "1.2.3"
+ "conventional-commit-types": "^2.0.0",
+ "lodash.map": "^4.5.1",
+ "longest": "^1.0.1",
+ "pad-right": "^0.2.2",
+ "right-pad": "^1.0.1",
+ "word-wrap": "^1.0.3"
}
},
"debug": {
@@ -284,7 +284,7 @@
"resolved": "https://registry.npmjs.org/deffy/-/deffy-2.2.2.tgz",
"integrity": "sha1-CI9AkTy0cHhlP6b2l8IG4DRx1SM=",
"requires": {
- "typpy": "2.3.9"
+ "typpy": "^2.0.0"
}
},
"depd": {
@@ -298,7 +298,7 @@
"integrity": "sha1-STXe39lIhkjgBrASlWbpOGcR6mM=",
"dev": true,
"requires": {
- "fs-exists-sync": "0.1.0"
+ "fs-exists-sync": "^0.1.0"
}
},
"detect-indent": {
@@ -307,7 +307,7 @@
"integrity": "sha1-920GQ1LN9Docts5hnE7jqUdd4gg=",
"dev": true,
"requires": {
- "repeating": "2.0.1"
+ "repeating": "^2.0.0"
}
},
"dottie": {
@@ -320,7 +320,7 @@
"resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz",
"integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=",
"requires": {
- "readable-stream": "2.3.3"
+ "readable-stream": "^2.0.2"
}
},
"ecdsa-sig-formatter": {
@@ -328,8 +328,8 @@
"resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.9.tgz",
"integrity": "sha1-S8kmJ07Dtau1AW5+HWCSGsJisqE=",
"requires": {
- "base64url": "2.0.0",
- "safe-buffer": "5.1.1"
+ "base64url": "^2.0.0",
+ "safe-buffer": "^5.0.1"
}
},
"err": {
@@ -337,7 +337,7 @@
"resolved": "https://registry.npmjs.org/err/-/err-1.1.1.tgz",
"integrity": "sha1-65KOLhGjFmSPeCgz0PlyWLpDwvg=",
"requires": {
- "typpy": "2.3.9"
+ "typpy": "^2.2.0"
}
},
"error-ex": {
@@ -345,7 +345,7 @@
"resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.1.tgz",
"integrity": "sha1-+FWobOYa3E6GIcPNoh56dhLDqNw=",
"requires": {
- "is-arrayish": "0.2.1"
+ "is-arrayish": "^0.2.1"
}
},
"escape-string-regexp": {
@@ -359,8 +359,8 @@
"resolved": "https://registry.npmjs.org/exec-limiter/-/exec-limiter-3.2.9.tgz",
"integrity": "sha1-3wR2HxH5KfpITVmI+gbsdWYL7Rc=",
"requires": {
- "limit-it": "3.2.8",
- "typpy": "2.3.9"
+ "limit-it": "^3.0.0",
+ "typpy": "^2.1.0"
}
},
"exit-hook": {
@@ -375,7 +375,7 @@
"integrity": "sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s=",
"dev": true,
"requires": {
- "is-posix-bracket": "0.1.1"
+ "is-posix-bracket": "^0.1.0"
}
},
"expand-range": {
@@ -384,7 +384,7 @@
"integrity": "sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc=",
"dev": true,
"requires": {
- "fill-range": "2.2.3"
+ "fill-range": "^2.1.0"
}
},
"expand-tilde": {
@@ -393,7 +393,7 @@
"integrity": "sha1-C4HrqJflo9MdHD0QL48BRB5VlEk=",
"dev": true,
"requires": {
- "os-homedir": "1.0.2"
+ "os-homedir": "^1.0.1"
}
},
"extend": {
@@ -408,9 +408,9 @@
"integrity": "sha1-Etew24UPf/fnCBuvQAVwAGDEYAs=",
"dev": true,
"requires": {
- "extend": "3.0.1",
- "spawn-sync": "1.0.15",
- "tmp": "0.0.29"
+ "extend": "^3.0.0",
+ "spawn-sync": "^1.0.15",
+ "tmp": "^0.0.29"
},
"dependencies": {
"tmp": {
@@ -419,7 +419,7 @@
"integrity": "sha1-8lEl/w3Z2jzLDC3Tce4SiLuRKMA=",
"dev": true,
"requires": {
- "os-tmpdir": "1.0.2"
+ "os-tmpdir": "~1.0.1"
}
}
}
@@ -430,7 +430,7 @@
"integrity": "sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE=",
"dev": true,
"requires": {
- "is-extglob": "1.0.0"
+ "is-extglob": "^1.0.0"
}
},
"figures": {
@@ -439,8 +439,8 @@
"integrity": "sha1-y+Hjr/zxzUS4DK3+0o3Hk6lwHS4=",
"dev": true,
"requires": {
- "escape-string-regexp": "1.0.5",
- "object-assign": "4.1.1"
+ "escape-string-regexp": "^1.0.5",
+ "object-assign": "^4.1.0"
}
},
"filename-regex": {
@@ -455,11 +455,11 @@
"integrity": "sha1-ULd9/X5Gm8dJJHCWNpn+eoSFpyM=",
"dev": true,
"requires": {
- "is-number": "2.1.0",
- "isobject": "2.1.0",
- "randomatic": "1.1.7",
- "repeat-element": "1.1.2",
- "repeat-string": "1.6.1"
+ "is-number": "^2.1.0",
+ "isobject": "^2.0.0",
+ "randomatic": "^1.1.3",
+ "repeat-element": "^1.1.2",
+ "repeat-string": "^1.5.2"
}
},
"find-node-modules": {
@@ -469,7 +469,7 @@
"dev": true,
"requires": {
"findup-sync": "0.4.2",
- "merge": "1.2.0"
+ "merge": "^1.2.0"
}
},
"find-root": {
@@ -484,10 +484,10 @@
"integrity": "sha1-qBF9D3MST1pFRoOVef5S1xKfteU=",
"dev": true,
"requires": {
- "detect-file": "0.1.0",
- "is-glob": "2.0.1",
- "micromatch": "2.3.11",
- "resolve-dir": "0.1.1"
+ "detect-file": "^0.1.0",
+ "is-glob": "^2.0.1",
+ "micromatch": "^2.3.7",
+ "resolve-dir": "^0.1.0"
}
},
"for-in": {
@@ -502,7 +502,7 @@
"integrity": "sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4=",
"dev": true,
"requires": {
- "for-in": "1.0.2"
+ "for-in": "^1.0.1"
}
},
"fs-exists-sync": {
@@ -517,9 +517,9 @@
"integrity": "sha1-zTzl9+fLYUWIP8rjGR6Yd/hYeVA=",
"dev": true,
"requires": {
- "graceful-fs": "4.1.11",
- "jsonfile": "2.4.0",
- "klaw": "1.3.1"
+ "graceful-fs": "^4.1.2",
+ "jsonfile": "^2.1.0",
+ "klaw": "^1.0.0"
}
},
"fs.realpath": {
@@ -533,7 +533,7 @@
"resolved": "https://registry.npmjs.org/function.name/-/function.name-1.0.9.tgz",
"integrity": "sha1-kcRcj5HyACvGgIbGc4crYH3Yc8M=",
"requires": {
- "noop6": "1.0.7"
+ "noop6": "^1.0.1"
}
},
"generic-pool": {
@@ -546,14 +546,14 @@
"resolved": "https://registry.npmjs.org/git-package-json/-/git-package-json-1.4.7.tgz",
"integrity": "sha1-zRubQIh7vFvU1dIo/OrGHFB20JQ=",
"requires": {
- "deffy": "2.2.2",
- "err": "1.1.1",
- "gry": "5.0.7",
- "normalize-package-data": "2.4.0",
- "oargv": "3.4.8",
- "one-by-one": "3.2.6",
- "r-json": "1.2.8",
- "r-package-json": "1.0.6",
+ "deffy": "^2.2.1",
+ "err": "^1.1.1",
+ "gry": "^5.0.0",
+ "normalize-package-data": "^2.3.5",
+ "oargv": "^3.4.1",
+ "one-by-one": "^3.1.0",
+ "r-json": "^1.2.1",
+ "r-package-json": "^1.0.0",
"tmp": "0.0.28"
}
},
@@ -562,7 +562,7 @@
"resolved": "https://registry.npmjs.org/git-source/-/git-source-1.1.7.tgz",
"integrity": "sha1-AJJHQdlghls0LUoIMSVfD/TyEcU=",
"requires": {
- "git-url-parse": "5.0.1"
+ "git-url-parse": "^5.0.1"
}
},
"git-up": {
@@ -570,8 +570,8 @@
"resolved": "https://registry.npmjs.org/git-up/-/git-up-1.2.1.tgz",
"integrity": "sha1-JkSAoAax2EJhrB/gmjpRacV+oZ0=",
"requires": {
- "is-ssh": "1.3.0",
- "parse-url": "1.3.11"
+ "is-ssh": "^1.0.0",
+ "parse-url": "^1.0.0"
}
},
"git-url-parse": {
@@ -579,7 +579,7 @@
"resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-5.0.1.tgz",
"integrity": "sha1-/j15xnRq4FBIz6UIyB553du6OEM=",
"requires": {
- "git-up": "1.2.1"
+ "git-up": "^1.0.0"
}
},
"glob": {
@@ -588,12 +588,12 @@
"integrity": "sha1-gFIR3wT6rxxjo2ADBs31reULLsg=",
"dev": true,
"requires": {
- "fs.realpath": "1.0.0",
- "inflight": "1.0.6",
- "inherits": "2.0.3",
- "minimatch": "3.0.4",
- "once": "1.4.0",
- "path-is-absolute": "1.0.1"
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.0.2",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
}
},
"glob-base": {
@@ -602,8 +602,8 @@
"integrity": "sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q=",
"dev": true,
"requires": {
- "glob-parent": "2.0.0",
- "is-glob": "2.0.1"
+ "glob-parent": "^2.0.0",
+ "is-glob": "^2.0.0"
}
},
"glob-parent": {
@@ -612,7 +612,7 @@
"integrity": "sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg=",
"dev": true,
"requires": {
- "is-glob": "2.0.1"
+ "is-glob": "^2.0.0"
}
},
"global-modules": {
@@ -621,8 +621,8 @@
"integrity": "sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0=",
"dev": true,
"requires": {
- "global-prefix": "0.1.5",
- "is-windows": "0.2.0"
+ "global-prefix": "^0.1.4",
+ "is-windows": "^0.2.0"
}
},
"global-prefix": {
@@ -631,10 +631,10 @@
"integrity": "sha1-jTvGuNo8qBEqFg2NSW/wRiv+948=",
"dev": true,
"requires": {
- "homedir-polyfill": "1.0.1",
- "ini": "1.3.4",
- "is-windows": "0.2.0",
- "which": "1.3.0"
+ "homedir-polyfill": "^1.0.0",
+ "ini": "^1.3.4",
+ "is-windows": "^0.2.0",
+ "which": "^1.2.12"
}
},
"got": {
@@ -642,21 +642,21 @@
"resolved": "https://registry.npmjs.org/got/-/got-5.7.1.tgz",
"integrity": "sha1-X4FjWmHkplifGAVp6k44FoClHzU=",
"requires": {
- "create-error-class": "3.0.2",
- "duplexer2": "0.1.4",
- "is-redirect": "1.0.0",
- "is-retry-allowed": "1.1.0",
- "is-stream": "1.1.0",
- "lowercase-keys": "1.0.0",
- "node-status-codes": "1.0.0",
- "object-assign": "4.1.1",
- "parse-json": "2.2.0",
- "pinkie-promise": "2.0.1",
- "read-all-stream": "3.1.0",
- "readable-stream": "2.3.3",
- "timed-out": "3.1.3",
- "unzip-response": "1.0.2",
- "url-parse-lax": "1.0.0"
+ "create-error-class": "^3.0.1",
+ "duplexer2": "^0.1.4",
+ "is-redirect": "^1.0.0",
+ "is-retry-allowed": "^1.0.0",
+ "is-stream": "^1.0.0",
+ "lowercase-keys": "^1.0.0",
+ "node-status-codes": "^1.0.0",
+ "object-assign": "^4.0.1",
+ "parse-json": "^2.1.0",
+ "pinkie-promise": "^2.0.0",
+ "read-all-stream": "^3.0.0",
+ "readable-stream": "^2.0.5",
+ "timed-out": "^3.0.0",
+ "unzip-response": "^1.0.2",
+ "url-parse-lax": "^1.0.0"
}
},
"graceful-fs": {
@@ -670,10 +670,10 @@
"resolved": "https://registry.npmjs.org/gry/-/gry-5.0.7.tgz",
"integrity": "sha1-3JjiUO13eOgsSpLCCNc1CzD56c8=",
"requires": {
- "abs": "1.3.10",
- "exec-limiter": "3.2.9",
- "one-by-one": "3.2.6",
- "ul": "5.2.13"
+ "abs": "^1.2.1",
+ "exec-limiter": "^3.0.0",
+ "one-by-one": "^3.0.0",
+ "ul": "^5.0.0"
}
},
"has-ansi": {
@@ -682,7 +682,7 @@
"integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=",
"dev": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
}
},
"hoek": {
@@ -696,7 +696,7 @@
"integrity": "sha1-TCu8inWJmP7r9e1oWA921GdotLw=",
"dev": true,
"requires": {
- "parse-passwd": "1.0.0"
+ "parse-passwd": "^1.0.0"
}
},
"hosted-git-info": {
@@ -715,8 +715,8 @@
"integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
"dev": true,
"requires": {
- "once": "1.4.0",
- "wrappy": "1.0.2"
+ "once": "^1.3.0",
+ "wrappy": "1"
}
},
"inherits": {
@@ -735,20 +735,20 @@
"integrity": "sha1-TexvMvN+97sLLtPx0aXD9UUHSRg=",
"dev": true,
"requires": {
- "ansi-escapes": "1.4.0",
- "chalk": "1.1.3",
- "cli-cursor": "1.0.2",
- "cli-width": "2.2.0",
- "external-editor": "1.1.1",
- "figures": "1.7.0",
- "lodash": "4.17.4",
+ "ansi-escapes": "^1.1.0",
+ "chalk": "^1.0.0",
+ "cli-cursor": "^1.0.1",
+ "cli-width": "^2.0.0",
+ "external-editor": "^1.1.0",
+ "figures": "^1.3.5",
+ "lodash": "^4.3.0",
"mute-stream": "0.0.6",
- "pinkie-promise": "2.0.1",
- "run-async": "2.3.0",
- "rx": "4.1.0",
- "string-width": "1.0.2",
- "strip-ansi": "3.0.1",
- "through": "2.3.8"
+ "pinkie-promise": "^2.0.0",
+ "run-async": "^2.2.0",
+ "rx": "^4.1.0",
+ "string-width": "^1.0.1",
+ "strip-ansi": "^3.0.0",
+ "through": "^2.3.6"
}
},
"interpret": {
@@ -778,7 +778,7 @@
"resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-1.0.0.tgz",
"integrity": "sha1-VAVy0096wxGfj3bDDLwbHgN6/74=",
"requires": {
- "builtin-modules": "1.1.1"
+ "builtin-modules": "^1.0.0"
}
},
"is-dotfile": {
@@ -793,7 +793,7 @@
"integrity": "sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ=",
"dev": true,
"requires": {
- "is-primitive": "2.0.0"
+ "is-primitive": "^2.0.0"
}
},
"is-extendable": {
@@ -814,7 +814,7 @@
"integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=",
"dev": true,
"requires": {
- "number-is-nan": "1.0.1"
+ "number-is-nan": "^1.0.0"
}
},
"is-fullwidth-code-point": {
@@ -823,7 +823,7 @@
"integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
"dev": true,
"requires": {
- "number-is-nan": "1.0.1"
+ "number-is-nan": "^1.0.0"
}
},
"is-glob": {
@@ -832,7 +832,7 @@
"integrity": "sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM=",
"dev": true,
"requires": {
- "is-extglob": "1.0.0"
+ "is-extglob": "^1.0.0"
}
},
"is-number": {
@@ -841,7 +841,7 @@
"integrity": "sha1-Afy7s5NGOlSPL0ZszhbezknbkI8=",
"dev": true,
"requires": {
- "kind-of": "3.2.2"
+ "kind-of": "^3.0.2"
}
},
"is-posix-bracket": {
@@ -877,7 +877,7 @@
"resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.0.tgz",
"integrity": "sha1-6+oRaaJhTaOSpjdANmw84EnY3/Y=",
"requires": {
- "protocols": "1.4.6"
+ "protocols": "^1.1.0"
}
},
"is-stream": {
@@ -926,10 +926,10 @@
"resolved": "https://registry.npmjs.org/joi/-/joi-6.10.1.tgz",
"integrity": "sha1-TVDDGAeRIgAP5fFq8f+OGRe3fgY=",
"requires": {
- "hoek": "2.16.3",
- "isemail": "1.2.0",
- "moment": "2.19.1",
- "topo": "1.1.0"
+ "hoek": "2.x.x",
+ "isemail": "1.x.x",
+ "moment": "2.x.x",
+ "topo": "1.x.x"
}
},
"jsonfile": {
@@ -938,7 +938,7 @@
"integrity": "sha1-NzaitCi4e72gzIO1P6PWM6NcKug=",
"dev": true,
"requires": {
- "graceful-fs": "4.1.11"
+ "graceful-fs": "^4.1.6"
}
},
"jsonwebtoken": {
@@ -946,11 +946,11 @@
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-7.4.1.tgz",
"integrity": "sha1-fKMk9SFfi+A5zTWmxFu4y3SkSPs=",
"requires": {
- "joi": "6.10.1",
- "jws": "3.1.4",
- "lodash.once": "4.1.1",
- "ms": "2.0.0",
- "xtend": "4.0.1"
+ "joi": "^6.10.1",
+ "jws": "^3.1.4",
+ "lodash.once": "^4.0.0",
+ "ms": "^2.0.0",
+ "xtend": "^4.0.1"
}
},
"jwa": {
@@ -961,7 +961,7 @@
"base64url": "2.0.0",
"buffer-equal-constant-time": "1.0.1",
"ecdsa-sig-formatter": "1.0.9",
- "safe-buffer": "5.1.1"
+ "safe-buffer": "^5.0.1"
}
},
"jws": {
@@ -969,9 +969,9 @@
"resolved": "https://registry.npmjs.org/jws/-/jws-3.1.4.tgz",
"integrity": "sha1-+ei5M46KhHJ31kRLFGT2GIDgUKI=",
"requires": {
- "base64url": "2.0.0",
- "jwa": "1.1.5",
- "safe-buffer": "5.1.1"
+ "base64url": "^2.0.0",
+ "jwa": "^1.1.4",
+ "safe-buffer": "^5.0.1"
}
},
"kind-of": {
@@ -980,7 +980,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "1.1.6"
+ "is-buffer": "^1.1.5"
}
},
"klaw": {
@@ -989,7 +989,7 @@
"integrity": "sha1-QIhDO0azsbolnXh4XY6W9zugJDk=",
"dev": true,
"requires": {
- "graceful-fs": "4.1.11"
+ "graceful-fs": "^4.1.9"
}
},
"koa-jwt": {
@@ -1011,7 +1011,7 @@
"resolved": "https://registry.npmjs.org/limit-it/-/limit-it-3.2.8.tgz",
"integrity": "sha1-uXsBRhzPVNt3fP3318Dty/sBCUo=",
"requires": {
- "typpy": "2.3.9"
+ "typpy": "^2.0.0"
}
},
"lodash": {
@@ -1053,19 +1053,19 @@
"integrity": "sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU=",
"dev": true,
"requires": {
- "arr-diff": "2.0.0",
- "array-unique": "0.2.1",
- "braces": "1.8.5",
- "expand-brackets": "0.1.5",
- "extglob": "0.3.2",
- "filename-regex": "2.0.1",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1",
- "kind-of": "3.2.2",
- "normalize-path": "2.1.1",
- "object.omit": "2.0.1",
- "parse-glob": "3.0.4",
- "regex-cache": "0.4.4"
+ "arr-diff": "^2.0.0",
+ "array-unique": "^0.2.1",
+ "braces": "^1.8.2",
+ "expand-brackets": "^0.1.4",
+ "extglob": "^0.3.1",
+ "filename-regex": "^2.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.1",
+ "kind-of": "^3.0.2",
+ "normalize-path": "^2.0.1",
+ "object.omit": "^2.0.0",
+ "parse-glob": "^3.0.4",
+ "regex-cache": "^0.4.2"
}
},
"minimatch": {
@@ -1074,7 +1074,7 @@
"integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
"dev": true,
"requires": {
- "brace-expansion": "1.1.8"
+ "brace-expansion": "^1.1.7"
}
},
"minimist": {
@@ -1092,7 +1092,7 @@
"resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.13.tgz",
"integrity": "sha1-mc5cfYJyYusPH3AgRBd/YHRde5A=",
"requires": {
- "moment": "2.19.1"
+ "moment": ">= 2.9.0"
}
},
"ms": {
@@ -1121,10 +1121,10 @@
"resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.4.0.tgz",
"integrity": "sha512-9jjUFbTPfEy3R/ad/2oNbKtW9Hgovl5O1FvFWKkKblNXoN/Oou6+9+KKohPK13Yc3/TyunyWhJp6gvRNR/PPAw==",
"requires": {
- "hosted-git-info": "2.5.0",
- "is-builtin-module": "1.0.0",
- "semver": "5.4.1",
- "validate-npm-package-license": "3.0.1"
+ "hosted-git-info": "^2.1.4",
+ "is-builtin-module": "^1.0.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
}
},
"normalize-path": {
@@ -1133,7 +1133,7 @@
"integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=",
"dev": true,
"requires": {
- "remove-trailing-separator": "1.1.0"
+ "remove-trailing-separator": "^1.0.1"
}
},
"number-is-nan": {
@@ -1147,8 +1147,8 @@
"resolved": "https://registry.npmjs.org/oargv/-/oargv-3.4.8.tgz",
"integrity": "sha1-e248D8y9TEHkTLQy0PQLc+Ecg1g=",
"requires": {
- "iterate-object": "1.3.2",
- "ul": "5.2.13"
+ "iterate-object": "^1.1.0",
+ "ul": "^5.0.0"
}
},
"obj-def": {
@@ -1156,7 +1156,7 @@
"resolved": "https://registry.npmjs.org/obj-def/-/obj-def-1.0.6.tgz",
"integrity": "sha1-d1ThcohJwvk00f3SvnL+Yn7LWxQ=",
"requires": {
- "deffy": "2.2.2"
+ "deffy": "^2.2.2"
}
},
"object-assign": {
@@ -1170,8 +1170,8 @@
"integrity": "sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo=",
"dev": true,
"requires": {
- "for-own": "0.1.5",
- "is-extendable": "0.1.1"
+ "for-own": "^0.1.4",
+ "is-extendable": "^0.1.1"
}
},
"once": {
@@ -1180,7 +1180,7 @@
"integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
"dev": true,
"requires": {
- "wrappy": "1.0.2"
+ "wrappy": "1"
}
},
"one-by-one": {
@@ -1188,8 +1188,8 @@
"resolved": "https://registry.npmjs.org/one-by-one/-/one-by-one-3.2.6.tgz",
"integrity": "sha1-M+Pelthw+alL3LY/ontRcAvhESs=",
"requires": {
- "obj-def": "1.0.6",
- "sliced": "1.0.1"
+ "obj-def": "^1.0.0",
+ "sliced": "^1.0.1"
}
},
"onetime": {
@@ -1220,10 +1220,10 @@
"resolved": "https://registry.npmjs.org/package-json/-/package-json-2.4.0.tgz",
"integrity": "sha1-DRW9Z9HLvduyyiIv8u24a8sxqLs=",
"requires": {
- "got": "5.7.1",
- "registry-auth-token": "3.3.1",
- "registry-url": "3.1.0",
- "semver": "5.4.1"
+ "got": "^5.0.0",
+ "registry-auth-token": "^3.0.1",
+ "registry-url": "^3.0.3",
+ "semver": "^5.1.0"
}
},
"package-json-path": {
@@ -1231,7 +1231,7 @@
"resolved": "https://registry.npmjs.org/package-json-path/-/package-json-path-1.0.7.tgz",
"integrity": "sha1-wleQnEcBqbNfzjAwZNTOmISJ3S0=",
"requires": {
- "abs": "1.3.10"
+ "abs": "^1.2.1"
}
},
"package.json": {
@@ -1239,9 +1239,9 @@
"resolved": "https://registry.npmjs.org/package.json/-/package.json-2.0.1.tgz",
"integrity": "sha1-+IYFnSpJ7QduZIg2ldc7K0bSHW0=",
"requires": {
- "git-package-json": "1.4.7",
- "git-source": "1.1.7",
- "package-json": "2.4.0"
+ "git-package-json": "^1.4.0",
+ "git-source": "^1.1.0",
+ "package-json": "^2.3.1"
}
},
"pad-right": {
@@ -1250,7 +1250,7 @@
"integrity": "sha1-b7ySQEXSRPKiokRQMGDTv8YAl3Q=",
"dev": true,
"requires": {
- "repeat-string": "1.6.1"
+ "repeat-string": "^1.5.2"
}
},
"parse-glob": {
@@ -1259,10 +1259,10 @@
"integrity": "sha1-ssN2z7EfNVE7rdFz7wu246OIORw=",
"dev": true,
"requires": {
- "glob-base": "0.3.0",
- "is-dotfile": "1.0.3",
- "is-extglob": "1.0.0",
- "is-glob": "2.0.1"
+ "glob-base": "^0.3.0",
+ "is-dotfile": "^1.0.0",
+ "is-extglob": "^1.0.0",
+ "is-glob": "^2.0.0"
}
},
"parse-json": {
@@ -1270,7 +1270,7 @@
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
"requires": {
- "error-ex": "1.3.1"
+ "error-ex": "^1.2.0"
}
},
"parse-passwd": {
@@ -1284,8 +1284,8 @@
"resolved": "https://registry.npmjs.org/parse-url/-/parse-url-1.3.11.tgz",
"integrity": "sha1-V8FUKKuKiSsfQ4aWRccR0OFEtVQ=",
"requires": {
- "is-ssh": "1.3.0",
- "protocols": "1.4.6"
+ "is-ssh": "^1.3.0",
+ "protocols": "^1.4.0"
}
},
"path-exists": {
@@ -1294,7 +1294,7 @@
"integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=",
"dev": true,
"requires": {
- "pinkie-promise": "2.0.1"
+ "pinkie-promise": "^2.0.0"
}
},
"path-is-absolute": {
@@ -1319,7 +1319,7 @@
"resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz",
"integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=",
"requires": {
- "pinkie": "2.0.4"
+ "pinkie": "^2.0.0"
}
},
"prepend-http": {
@@ -1353,8 +1353,8 @@
"resolved": "https://registry.npmjs.org/r-package-json/-/r-package-json-1.0.6.tgz",
"integrity": "sha1-du7E94/EtcGsXD7NsIRA+ChEIsU=",
"requires": {
- "package-json-path": "1.0.7",
- "r-json": "1.2.8"
+ "package-json-path": "^1.0.0",
+ "r-json": "^1.2.1"
}
},
"randomatic": {
@@ -1363,8 +1363,8 @@
"integrity": "sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==",
"dev": true,
"requires": {
- "is-number": "3.0.0",
- "kind-of": "4.0.0"
+ "is-number": "^3.0.0",
+ "kind-of": "^4.0.0"
},
"dependencies": {
"is-number": {
@@ -1373,7 +1373,7 @@
"integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=",
"dev": true,
"requires": {
- "kind-of": "3.2.2"
+ "kind-of": "^3.0.2"
},
"dependencies": {
"kind-of": {
@@ -1382,7 +1382,7 @@
"integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=",
"dev": true,
"requires": {
- "is-buffer": "1.1.6"
+ "is-buffer": "^1.1.5"
}
}
}
@@ -1393,7 +1393,7 @@
"integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=",
"dev": true,
"requires": {
- "is-buffer": "1.1.6"
+ "is-buffer": "^1.1.5"
}
}
}
@@ -1403,10 +1403,10 @@
"resolved": "https://registry.npmjs.org/rc/-/rc-1.2.2.tgz",
"integrity": "sha1-2M6ctX6NZNnHut2YdsfDTL48cHc=",
"requires": {
- "deep-extend": "0.4.2",
- "ini": "1.3.4",
- "minimist": "1.2.0",
- "strip-json-comments": "2.0.1"
+ "deep-extend": "~0.4.0",
+ "ini": "~1.3.0",
+ "minimist": "^1.2.0",
+ "strip-json-comments": "~2.0.1"
}
},
"read-all-stream": {
@@ -1414,8 +1414,8 @@
"resolved": "https://registry.npmjs.org/read-all-stream/-/read-all-stream-3.1.0.tgz",
"integrity": "sha1-NcPhd/IHjveJ7kv6+kNzB06u9Po=",
"requires": {
- "pinkie-promise": "2.0.1",
- "readable-stream": "2.3.3"
+ "pinkie-promise": "^2.0.0",
+ "readable-stream": "^2.0.0"
}
},
"readable-stream": {
@@ -1423,13 +1423,13 @@
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.3.tgz",
"integrity": "sha512-m+qzzcn7KUxEmd1gMbchF+Y2eIUbieUaxkWtptyHywrX0rE8QEYqPC07Vuy4Wm32/xE16NcdBctb8S0Xe/5IeQ==",
"requires": {
- "core-util-is": "1.0.2",
- "inherits": "2.0.3",
- "isarray": "1.0.0",
- "process-nextick-args": "1.0.7",
- "safe-buffer": "5.1.1",
- "string_decoder": "1.0.3",
- "util-deprecate": "1.0.2"
+ "core-util-is": "~1.0.0",
+ "inherits": "~2.0.3",
+ "isarray": "~1.0.0",
+ "process-nextick-args": "~1.0.6",
+ "safe-buffer": "~5.1.1",
+ "string_decoder": "~1.0.3",
+ "util-deprecate": "~1.0.1"
}
},
"rechoir": {
@@ -1438,7 +1438,7 @@
"integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=",
"dev": true,
"requires": {
- "resolve": "1.5.0"
+ "resolve": "^1.1.6"
}
},
"regex-cache": {
@@ -1447,7 +1447,7 @@
"integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==",
"dev": true,
"requires": {
- "is-equal-shallow": "0.1.3"
+ "is-equal-shallow": "^0.1.3"
}
},
"registry-auth-token": {
@@ -1455,8 +1455,8 @@
"resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-3.3.1.tgz",
"integrity": "sha1-+w0yie4Nmtosu1KvXf5mywcNMAY=",
"requires": {
- "rc": "1.2.2",
- "safe-buffer": "5.1.1"
+ "rc": "^1.1.6",
+ "safe-buffer": "^5.0.1"
}
},
"registry-url": {
@@ -1464,7 +1464,7 @@
"resolved": "https://registry.npmjs.org/registry-url/-/registry-url-3.1.0.tgz",
"integrity": "sha1-PU74cPc93h138M+aOBQyRE4XSUI=",
"requires": {
- "rc": "1.2.2"
+ "rc": "^1.0.1"
}
},
"remove-trailing-separator": {
@@ -1491,7 +1491,7 @@
"integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=",
"dev": true,
"requires": {
- "is-finite": "1.0.2"
+ "is-finite": "^1.0.0"
}
},
"resolve": {
@@ -1500,7 +1500,7 @@
"integrity": "sha512-hgoSGrc3pjzAPHNBg+KnFcK2HwlHTs/YrAGUr6qgTVUZmXv1UEXXl0bZNBKMA9fud6lRYFdPGz0xXxycPzmmiw==",
"dev": true,
"requires": {
- "path-parse": "1.0.5"
+ "path-parse": "^1.0.5"
}
},
"resolve-dir": {
@@ -1509,8 +1509,8 @@
"integrity": "sha1-shklmlYC+sXFxJatiUpujMQwJh4=",
"dev": true,
"requires": {
- "expand-tilde": "1.2.2",
- "global-modules": "0.2.3"
+ "expand-tilde": "^1.2.2",
+ "global-modules": "^0.2.3"
}
},
"restore-cursor": {
@@ -1519,8 +1519,8 @@
"integrity": "sha1-NGYfRohjJ/7SmRR5FSJS35LapUE=",
"dev": true,
"requires": {
- "exit-hook": "1.1.1",
- "onetime": "1.1.0"
+ "exit-hook": "^1.0.0",
+ "onetime": "^1.0.0"
}
},
"retry-as-promised": {
@@ -1528,8 +1528,8 @@
"resolved": "https://registry.npmjs.org/retry-as-promised/-/retry-as-promised-2.3.1.tgz",
"integrity": "sha1-91BZGD+XMHccCbrR7tV1N5McvJ0=",
"requires": {
- "bluebird": "3.5.1",
- "debug": "2.6.9"
+ "bluebird": "^3.4.6",
+ "debug": "^2.2.0"
},
"dependencies": {
"debug": {
@@ -1554,7 +1554,7 @@
"integrity": "sha1-A3GrSuC91yDUFm19/aZP96RFpsA=",
"dev": true,
"requires": {
- "is-promise": "2.1.0"
+ "is-promise": "^2.1.0"
}
},
"rx": {
@@ -1578,23 +1578,23 @@
"resolved": "https://registry.npmjs.org/sequelize/-/sequelize-4.18.0.tgz",
"integrity": "sha512-mq5ExgGArDq23fkhjbHHtElUBVO4r/gF9chH0jzCOR+vDMn7Dz/MAgrXR5t1RQHDOoXacTOXzMxJmXbICsZI8A==",
"requires": {
- "bluebird": "3.5.1",
- "cls-bluebird": "2.0.1",
- "debug": "3.1.0",
- "depd": "1.1.1",
- "dottie": "2.0.0",
- "generic-pool": "3.2.0",
+ "bluebird": "^3.4.6",
+ "cls-bluebird": "^2.0.1",
+ "debug": "^3.0.0",
+ "depd": "^1.1.0",
+ "dottie": "^2.0.0",
+ "generic-pool": "^3.1.8",
"inflection": "1.12.0",
- "lodash": "4.17.4",
- "moment": "2.19.1",
- "moment-timezone": "0.5.13",
- "retry-as-promised": "2.3.1",
- "semver": "5.4.1",
- "terraformer-wkt-parser": "1.1.2",
- "toposort-class": "1.0.1",
- "uuid": "3.1.0",
- "validator": "9.1.1",
- "wkx": "0.4.2"
+ "lodash": "^4.17.1",
+ "moment": "^2.13.0",
+ "moment-timezone": "^0.5.4",
+ "retry-as-promised": "^2.3.1",
+ "semver": "^5.0.1",
+ "terraformer-wkt-parser": "^1.1.2",
+ "toposort-class": "^1.0.1",
+ "uuid": "^3.0.0",
+ "validator": "^9.1.0",
+ "wkx": "^0.4.1"
}
},
"shelljs": {
@@ -1603,9 +1603,9 @@
"integrity": "sha1-N5zM+1a5HIYB5HkzVutTgpJN6a0=",
"dev": true,
"requires": {
- "glob": "7.1.1",
- "interpret": "1.0.4",
- "rechoir": "0.6.2"
+ "glob": "^7.0.0",
+ "interpret": "^1.0.0",
+ "rechoir": "^0.6.2"
}
},
"shimmer": {
@@ -1624,8 +1624,8 @@
"integrity": "sha1-sAeZVX63+wyDdsKdROih6mfldHY=",
"dev": true,
"requires": {
- "concat-stream": "1.6.0",
- "os-shim": "0.1.3"
+ "concat-stream": "^1.4.7",
+ "os-shim": "^0.1.2"
}
},
"spdx-correct": {
@@ -1633,7 +1633,7 @@
"resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-1.0.2.tgz",
"integrity": "sha1-SzBz2TP/UfORLwOsVRlJikFQ20A=",
"requires": {
- "spdx-license-ids": "1.2.2"
+ "spdx-license-ids": "^1.0.2"
}
},
"spdx-expression-parse": {
@@ -1646,23 +1646,23 @@
"resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-1.2.2.tgz",
"integrity": "sha1-yd96NCRZSt5r0RkA1ZZpbcBrrFc="
},
- "string_decoder": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
- "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
- "requires": {
- "safe-buffer": "5.1.1"
- }
- },
"string-width": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
"integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
"dev": true,
"requires": {
- "code-point-at": "1.1.0",
- "is-fullwidth-code-point": "1.0.0",
- "strip-ansi": "3.0.1"
+ "code-point-at": "^1.0.0",
+ "is-fullwidth-code-point": "^1.0.0",
+ "strip-ansi": "^3.0.0"
+ }
+ },
+ "string_decoder": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.0.3.tgz",
+ "integrity": "sha512-4AH6Z5fzNNBcH+6XDMfA/BTt87skxqJlO0lAh3Dker5zThcAxG6mKz+iGu308UKoPPQ8Dcqx/4JhujzltRa+hQ==",
+ "requires": {
+ "safe-buffer": "~5.1.0"
}
},
"strip-ansi": {
@@ -1671,7 +1671,7 @@
"integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
"dev": true,
"requires": {
- "ansi-regex": "2.1.1"
+ "ansi-regex": "^2.0.0"
}
},
"strip-json-comments": {
@@ -1690,7 +1690,7 @@
"resolved": "https://registry.npmjs.org/terraformer/-/terraformer-1.0.8.tgz",
"integrity": "sha1-UeCtiXRvzyFh3G9lqnDkI3fItZM=",
"requires": {
- "@types/geojson": "1.0.5"
+ "@types/geojson": "^1.0.0"
}
},
"terraformer-wkt-parser": {
@@ -1698,7 +1698,7 @@
"resolved": "https://registry.npmjs.org/terraformer-wkt-parser/-/terraformer-wkt-parser-1.1.2.tgz",
"integrity": "sha1-M2oMj8gglKWv+DKI9prt7NNpvww=",
"requires": {
- "terraformer": "1.0.8"
+ "terraformer": "~1.0.5"
}
},
"through": {
@@ -1717,7 +1717,7 @@
"resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.28.tgz",
"integrity": "sha1-Fyc1t/YU6nrzlmT6hM8N5OUV0SA=",
"requires": {
- "os-tmpdir": "1.0.2"
+ "os-tmpdir": "~1.0.1"
}
},
"topo": {
@@ -1725,7 +1725,7 @@
"resolved": "https://registry.npmjs.org/topo/-/topo-1.1.0.tgz",
"integrity": "sha1-6ddRYV0buH3IZdsYL6HKCl71NtU=",
"requires": {
- "hoek": "2.16.3"
+ "hoek": "2.x.x"
}
},
"toposort-class": {
@@ -1744,7 +1744,7 @@
"resolved": "https://registry.npmjs.org/typpy/-/typpy-2.3.9.tgz",
"integrity": "sha1-KGZP2l6nHdcYck+J0ABgrx8Jw44=",
"requires": {
- "function.name": "1.0.9"
+ "function.name": "^1.0.3"
}
},
"ul": {
@@ -1752,8 +1752,8 @@
"resolved": "https://registry.npmjs.org/ul/-/ul-5.2.13.tgz",
"integrity": "sha1-n/BQTqNcofdMC/WeZIDe8Am617U=",
"requires": {
- "deffy": "2.2.2",
- "typpy": "2.3.9"
+ "deffy": "^2.2.2",
+ "typpy": "^2.3.4"
}
},
"unzip-response": {
@@ -1766,7 +1766,7 @@
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-1.0.0.tgz",
"integrity": "sha1-evjzA2Rem9eaJy56FKxovAYJ2nM=",
"requires": {
- "prepend-http": "1.0.4"
+ "prepend-http": "^1.0.1"
}
},
"util-deprecate": {
@@ -1784,8 +1784,8 @@
"resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.1.tgz",
"integrity": "sha1-KAS6vnEq0zeUWaz74kdGqywwP7w=",
"requires": {
- "spdx-correct": "1.0.2",
- "spdx-expression-parse": "1.0.4"
+ "spdx-correct": "~1.0.0",
+ "spdx-expression-parse": "~1.0.0"
}
},
"validator": {
@@ -1799,7 +1799,7 @@
"integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==",
"dev": true,
"requires": {
- "isexe": "2.0.0"
+ "isexe": "^2.0.0"
}
},
"wkx": {
@@ -1807,7 +1807,7 @@
"resolved": "https://registry.npmjs.org/wkx/-/wkx-0.4.2.tgz",
"integrity": "sha1-d201pjSlwi5lbkdEvetU+D/Szo0=",
"requires": {
- "@types/node": "8.0.47"
+ "@types/node": "*"
}
},
"word-wrap": {
diff --git a/package.json b/package.json
index 8a97615..f1ea0b3 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "node-toolkit",
- "version": "0.3.4",
+ "version": "1.0.0",
"description": "Helpers para crear APIs con NodeJS",
"main": "app.js",
"scripts": {