summaryrefslogtreecommitdiff
path: root/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dynamicDefaults.js
diff options
context:
space:
mode:
Diffstat (limited to 'tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dynamicDefaults.js')
-rw-r--r--tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dynamicDefaults.js68
1 files changed, 68 insertions, 0 deletions
diff --git a/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dynamicDefaults.js b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dynamicDefaults.js
new file mode 100644
index 0000000000..e6766d1211
--- /dev/null
+++ b/tools/node_modules/eslint/node_modules/ajv-keywords/keywords/dynamicDefaults.js
@@ -0,0 +1,68 @@
+'use strict';
+
+var sequences = {};
+
+var DEFAULTS = {
+ timestamp: function() { return Date.now(); },
+ datetime: function() { return (new Date).toISOString(); },
+ date: function() { return (new Date).toISOString().slice(0, 10); },
+ time: function() { return (new Date).toISOString().slice(11); },
+ random: function() { return Math.random(); },
+ randomint: function (args) {
+ var limit = args && args.max || 2;
+ return function() { return Math.floor(Math.random() * limit); };
+ },
+ seq: function (args) {
+ var name = args && args.name || '';
+ sequences[name] = sequences[name] || 0;
+ return function() { return sequences[name]++; };
+ }
+};
+
+module.exports = function defFunc(ajv) {
+ defFunc.definition = {
+ compile: function (schema, parentSchema, it) {
+ var funcs = {};
+
+ for (var key in schema) {
+ var d = schema[key];
+ var func = getDefault(typeof d == 'string' ? d : d.func);
+ funcs[key] = func.length ? func(d.args) : func;
+ }
+
+ return it.opts.useDefaults && !it.compositeRule
+ ? assignDefaults
+ : noop;
+
+ function assignDefaults(data) {
+ for (var prop in schema)
+ if (data[prop] === undefined) data[prop] = funcs[prop]();
+ return true;
+ }
+
+ function noop() { return true; }
+ },
+ DEFAULTS: DEFAULTS,
+ metaSchema: {
+ type: 'object',
+ additionalProperties: {
+ type: ['string', 'object'],
+ additionalProperties: false,
+ required: ['func', 'args'],
+ properties: {
+ func: { type: 'string' },
+ args: { type: 'object' }
+ }
+ }
+ }
+ };
+
+ ajv.addKeyword('dynamicDefaults', defFunc.definition);
+ return ajv;
+
+ function getDefault(d) {
+ var def = DEFAULTS[d];
+ if (def) return def;
+ throw new Error('invalid "dynamicDefaults" keyword property value: ' + d);
+ }
+};