q-koa 13.2.1 → 13.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/core/app.js CHANGED
@@ -2201,7 +2201,9 @@ APP.getConfig = (app) => ({
2201
2201
  /^(http:\/\/|https:\/\/)?(\d{1,3}\.){3}\d{1,3}:\d{1,5}/
2202
2202
  )
2203
2203
  })
2204
- .filter((host) => !host.includes(app.appConfig.ip))
2204
+ .filter((host) =>
2205
+ app.appConfig.ip ? !host.includes(app.appConfig.ip) : false
2206
+ )
2205
2207
 
2206
2208
  Promise.all(
2207
2209
  ipHost.map((host) => {
@@ -1,4 +1,4 @@
1
- const { getConfig, lodash } = require('q-koa')
1
+ const { getConfig, lodash, Sequelize } = require('q-koa')
2
2
  const { formatLiteralObj } = require('../../utils')
3
3
  const formatPostFunction = (str) => `eval(${str})`
4
4
  const nodeVm = require('vm')
@@ -2,6 +2,7 @@ const { lodash } = require('q-koa')
2
2
  const Sequelize = require('sequelize')
3
3
  const md5 = require('md5')
4
4
  const moment = require('moment')
5
+ const _ = require('lodash')
5
6
 
6
7
  const findConfig = (type) => (item) =>
7
8
  item.key === type ||
@@ -208,14 +209,19 @@ exports.signResult = (params, salt) => {
208
209
  return md5(signStr)
209
210
  }
210
211
 
211
- function isDateTime(str) {
212
- const dateRegex = /^[\u4e00-\u9fa5]{4}-[\u4e00-\u9fa5]{2}-[\u4e00-\u9fa5]{2}$/
212
+ const isDateTime = (str) => {
213
+ const dateRegex =
214
+ /^(\d{4}-\d{2}-\d{2})([T\s](\d{2}:\d{2}(:\d{2}(\.\d+)?)?)([+-]\d{2}:\d{2}|Z)?)?$/
213
215
  return dateRegex.test(str)
214
216
  }
215
-
216
217
  const $lt = {
217
218
  check: (param) => typeof param === 'string',
218
219
  result: (param, key) => {
220
+ if (isDateTime(param[key])) {
221
+ return {
222
+ [key]: param[key],
223
+ }
224
+ }
219
225
  return {
220
226
  [key]: Sequelize.literal(param[key]),
221
227
  }
@@ -233,6 +239,11 @@ const $between = {
233
239
  check: (param) =>
234
240
  Array.isArray(param) && param.every((p) => typeof param === 'string'),
235
241
  result: (param, key) => {
242
+ if (param[key].every((i) => isDateTime(i))) {
243
+ return {
244
+ [key]: param[key],
245
+ }
246
+ }
236
247
  return {
237
248
  [key]: param[key].map(Sequelize.literal),
238
249
  }
@@ -266,12 +277,11 @@ exports.formatLiteralObj = (target) => {
266
277
 
267
278
  exports.filterFunction = (target, data) => {
268
279
  if (!target) {
269
- console.error(`target为null`)
270
280
  return false
271
281
  }
272
282
  return Object.keys(target).every((key) => {
273
283
  if (key.includes('.')) {
274
- return lodash.get(data, key) === target[key]
284
+ return _.get(data, key) === target[key]
275
285
  }
276
286
  if (typeof target[key] === 'boolean') {
277
287
  return Boolean(data[key]) === target[key]
@@ -279,48 +289,49 @@ exports.filterFunction = (target, data) => {
279
289
  if (Array.isArray(target[key])) {
280
290
  return target[key].includes(data[key])
281
291
  }
282
- if (lodash.isObject(target[key])) {
283
- if (Object.prototype.hasOwnProperty.call(target[key], '$gt')) {
292
+ if (_.isObject(target[key])) {
293
+ if ('$gt' in target[key]) {
284
294
  if (key.endsWith('time') || key.endsWith('_at')) {
285
295
  return moment(data[key]).diff(moment(target[key].$gt), 'seconds') > 0
286
296
  }
287
297
  return data[key] > target[key].$gt
288
- } else if (Object.prototype.hasOwnProperty.call(target[key], '$gte')) {
298
+ } else if ('$gte' in target[key]) {
289
299
  if (key.endsWith('time') || key.endsWith('_at')) {
290
300
  return moment(data[key]).diff(moment(target[key].$gt), 'seconds') >= 0
291
301
  }
292
302
  return data[key] >= target[key].$gte
293
- } else if (Object.prototype.hasOwnProperty.call(target[key], '$lt')) {
303
+ } else if ('$lt' in target[key]) {
294
304
  if (key.endsWith('time') || key.endsWith('_at')) {
295
305
  return moment(target[key].$gt).diff(moment(data[key]), 'seconds') < 0
296
306
  }
297
307
  return data[key] < target[key].$lt
298
- } else if (Object.prototype.hasOwnProperty.call(target[key], '$lte')) {
308
+ } else if ('$lte' in target[key]) {
299
309
  if (key.endsWith('time') || key.endsWith('_at')) {
300
310
  return moment(target[key].$gt).diff(moment(data[key]), 'seconds') <= 0
301
311
  }
302
312
  return data[key] <= target[key].$lte
303
- } else if (Object.prototype.hasOwnProperty.call(target[key], '$notIn')) {
313
+ } else if ('$notIn' in target[key]) {
304
314
  return !target[key].$notIn.includes(data[key])
305
- } else if (Object.prototype.hasOwnProperty.call(target[key], '$in')) {
315
+ } else if ('$in' in target[key]) {
306
316
  return target[key].$in.includes(data[key])
307
- } else if (
308
- Object.prototype.hasOwnProperty.call(target[key], '$between')
309
- ) {
317
+ } else if ('$between' in target[key]) {
310
318
  if (
311
319
  !Array.isArray(target[key].$between) ||
312
320
  target[key].$between.length !== 2
313
321
  ) {
314
- throw new Error(`$between example : [2,5]`)
322
+ throw new Error('$between example : [2,5]')
315
323
  }
316
324
  const min = target[key].$between[0]
317
325
  const max = target[key].$between[1]
318
326
  return data[key] >= min && data[key] <= max
319
- } else if (Object.prototype.hasOwnProperty.call(target[key], '$ne')) {
327
+ } else if ('$ne' in target[key]) {
320
328
  return data[key] !== target[key].$ne
321
- } else if (Object.prototype.hasOwnProperty.call(target[key], '$neq')) {
329
+ } else if ('$neq' in target[key]) {
322
330
  return data[key] !== target[key].$neq
323
- } else if (Object.prototype.hasOwnProperty.call(target[key], '$eq')) {
331
+ } else if ('$eq' in target[key]) {
332
+ if (Array.isArray(target[key].$eq)) {
333
+ return JSON.stringify(data[key]) === JSON.stringify(target[key].$eq)
334
+ }
324
335
  return data[key] === target[key].$eq
325
336
  }
326
337
  return data[key] === target[key]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "q-koa",
3
- "version": "13.2.1",
3
+ "version": "13.2.2",
4
4
  "description": "",
5
5
  "main": "index.js",
6
6
  "scripts": {