1 | "use strict";
|
2 |
|
3 | var isValue = require("type/value/is")
|
4 | , ensureString = require("type/string/ensure")
|
5 | , primitiveSet = require("es5-ext/object/primitive-set")
|
6 | , Duration = require("duration");
|
7 |
|
8 | var possibleModes = primitiveSet("abs", "rel");
|
9 |
|
10 | var resolveMode = function (mode) {
|
11 | if (!isValue(mode)) return "rel";
|
12 | mode = ensureString(mode);
|
13 | return possibleModes[mode] ? mode : "rel";
|
14 | };
|
15 |
|
16 | var getRelativeResolver = function () {
|
17 | var duration = new Duration(new Date());
|
18 | return function () {
|
19 | duration.to = new Date();
|
20 | return String(duration);
|
21 | };
|
22 | };
|
23 |
|
24 | var absoluteResolver = function () { return new Date().toISOString(); };
|
25 |
|
26 | module.exports = function (mode) {
|
27 | mode = resolveMode(mode);
|
28 | if (mode === "rel") return getRelativeResolver();
|
29 | return absoluteResolver;
|
30 | };
|