mirror of
https://github.com/verdaccio/verdaccio.git
synced 2025-02-17 23:45:29 -05:00
change intervals formatting to match nginx
see http://wiki.nginx.org/ConfigNotation
This commit is contained in:
parent
6a2a463b76
commit
48825a2e46
3 changed files with 37 additions and 10 deletions
|
@ -152,20 +152,32 @@ Config.prototype.authenticate = function(user, password) {
|
||||||
module.exports = Config
|
module.exports = Config
|
||||||
|
|
||||||
var parse_interval_table = {
|
var parse_interval_table = {
|
||||||
'': 1,
|
'': 1000,
|
||||||
ms: 1,
|
ms: 1,
|
||||||
s: 1000,
|
s: 1000,
|
||||||
m: 60*1000,
|
m: 60*1000,
|
||||||
h: 60*60*1000,
|
h: 60*60*1000,
|
||||||
d: 86400000,
|
d: 86400000,
|
||||||
|
w: 7*86400000,
|
||||||
M: 30*86400000,
|
M: 30*86400000,
|
||||||
y: 365.25*30*86400000,
|
y: 365*86400000,
|
||||||
}
|
}
|
||||||
|
|
||||||
module.exports.parse_interval = function(interval) {
|
module.exports.parse_interval = function(interval) {
|
||||||
if (typeof(interval) === 'number') return interval
|
if (typeof(interval) === 'number') return interval * 1000
|
||||||
var m = interval.match(/^((0|[1-9][0-9]*)(\.[0-9]+)?)(ms|s|m|h|d|M|y|)$/)
|
|
||||||
if (!m) throw new Error('invalid interval: ' + interval)
|
var result = 0
|
||||||
return Number(m[1]) * parse_interval_table[m[4]]
|
var last_suffix = Infinity
|
||||||
|
interval.split(/\s+/).forEach(function(x) {
|
||||||
|
var m = x.match(/^((0|[1-9][0-9]*)(\.[0-9]+)?)(ms|s|m|h|d|w|M|y|)$/)
|
||||||
|
if (!m
|
||||||
|
|| parse_interval_table[m[4]] >= last_suffix
|
||||||
|
|| (m[4] === '' && last_suffix !== Infinity)) {
|
||||||
|
throw new Error('invalid interval: ' + interval)
|
||||||
|
}
|
||||||
|
last_suffix = parse_interval_table[m[4]]
|
||||||
|
result += Number(m[1]) * parse_interval_table[m[4]]
|
||||||
|
})
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,9 @@ function Storage(config, mainconfig) {
|
||||||
|
|
||||||
this.config.url = this.config.url.replace(/\/$/, '')
|
this.config.url = this.config.url.replace(/\/$/, '')
|
||||||
this.maxage = parse_interval(this.config.maxage || '2m')
|
this.maxage = parse_interval(this.config.maxage || '2m')
|
||||||
|
if (Number(this.config.timeout) >= 1000) {
|
||||||
|
this.logger.warn('Too big timeout value: ' + this.config.timeout + '\nWe changed time format to nginx-like one\n(see http://wiki.nginx.org/ConfigNotation)\nso please update your config accordingly')
|
||||||
|
}
|
||||||
this.timeout = parse_interval(this.config.timeout || '30s')
|
this.timeout = parse_interval(this.config.timeout || '30s')
|
||||||
this.max_fails = Number(this.config.max_fails) || 2
|
this.max_fails = Number(this.config.max_fails) || 2
|
||||||
this.fail_timeout = parse_interval(this.config.fail_timeout || '5m')
|
this.fail_timeout = parse_interval(this.config.fail_timeout || '5m')
|
||||||
|
|
|
@ -4,18 +4,30 @@ var assert = require('assert')
|
||||||
describe('Parse interval', function() {
|
describe('Parse interval', function() {
|
||||||
function add_test(str, res) {
|
function add_test(str, res) {
|
||||||
it('parse ' + str, function() {
|
it('parse ' + str, function() {
|
||||||
assert.strictEqual(parse_interval(str), res)
|
if (res === null) {
|
||||||
|
assert.throws(function() {
|
||||||
|
console.log(parse_interval(str))
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
assert.strictEqual(parse_interval(str), res)
|
||||||
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
add_test(12345, 12345)
|
add_test(12345, 12345000)
|
||||||
add_test('1000', 1000)
|
add_test('1000', 1000000)
|
||||||
add_test('1.5s', 1500)
|
add_test('1.5s', 1500)
|
||||||
add_test('25ms', 25)
|
add_test('25ms', 25)
|
||||||
add_test('2m', 2*1000*60)
|
add_test('2m', 2*1000*60)
|
||||||
add_test('3h', 3*1000*60*60)
|
add_test('3h', 3*1000*60*60)
|
||||||
add_test('0.5d', 0.5*1000*60*60*24)
|
add_test('0.5d', 0.5*1000*60*60*24)
|
||||||
|
add_test('0.5w', 0.5*1000*60*60*24*7)
|
||||||
add_test('1M', 1000*60*60*24*30)
|
add_test('1M', 1000*60*60*24*30)
|
||||||
add_test('1y', 1000*60*60*24*30*365.25)
|
add_test('5s 20ms', 5020)
|
||||||
|
add_test('1y', 1000*60*60*24*365)
|
||||||
|
add_test('1y 5', null)
|
||||||
|
add_test('1m 1m', null)
|
||||||
|
add_test('1m 1y', null)
|
||||||
|
add_test('1y 1M 1w 1d 1h 1m 1s 1ms', 34822861001)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue