summaryrefslogtreecommitdiff
path: root/node_modules/ajv-keywords/keywords/dynamicDefaults.js
diff options
context:
space:
mode:
authorlittleblack111 <littleblack11111@gmail.com>2023-11-05 17:16:09 +0800
committerlittleblack111 <littleblack11111@gmail.com>2023-11-05 17:16:09 +0800
commitd1d9f00b1bd660842addf5e6b1d1b64c852a9eea (patch)
tree60fb37ae73a1109d95301de5ec9b61b5726a4b61 /node_modules/ajv-keywords/keywords/dynamicDefaults.js
parent7c85166c4cbdd862fc4252007d2df5befcbc2a58 (diff)
added hover prefixer
Diffstat (limited to 'node_modules/ajv-keywords/keywords/dynamicDefaults.js')
-rw-r--r--node_modules/ajv-keywords/keywords/dynamicDefaults.js72
1 files changed, 72 insertions, 0 deletions
diff --git a/node_modules/ajv-keywords/keywords/dynamicDefaults.js b/node_modules/ajv-keywords/keywords/dynamicDefaults.js
new file mode 100644
index 00000000..5323bb8c
--- /dev/null
+++ b/node_modules/ajv-keywords/keywords/dynamicDefaults.js
@@ -0,0 +1,72 @@
+'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
+ || (it.opts.useDefaults == 'empty'
+ && (data[prop] === null || data[prop] === '')))
+ 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);
+ }
+};