| [ Index ] |
PHP Cross Reference of WordPress Trunk (Updated Daily) |
[Summary view] [Print] [Text view]
1 var __create = Object.create; 2 var __defProp = Object.defineProperty; 3 var __getOwnPropDesc = Object.getOwnPropertyDescriptor; 4 var __getOwnPropNames = Object.getOwnPropertyNames; 5 var __getProtoOf = Object.getPrototypeOf; 6 var __hasOwnProp = Object.prototype.hasOwnProperty; 7 var __commonJS = (cb, mod) => function __require() { 8 return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; 9 }; 10 var __export = (target, all) => { 11 for (var name in all) 12 __defProp(target, name, { get: all[name], enumerable: true }); 13 }; 14 var __copyProps = (to, from, except, desc) => { 15 if (from && typeof from === "object" || typeof from === "function") { 16 for (let key of __getOwnPropNames(from)) 17 if (!__hasOwnProp.call(to, key) && key !== except) 18 __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); 19 } 20 return to; 21 }; 22 var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( 23 // If the importer is in node compatibility mode or this is not an ESM 24 // file that has been converted to a CommonJS file using a Babel- 25 // compatible transform (i.e. "__esModule" has not been set), then set 26 // "default" to the CommonJS "module.exports" for node compatibility. 27 isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, 28 mod 29 )); 30 31 // package-external:@wordpress/data 32 var require_data = __commonJS({ 33 "package-external:@wordpress/data"(exports, module) { 34 module.exports = window.wp.data; 35 } 36 }); 37 38 // package-external:@wordpress/i18n 39 var require_i18n = __commonJS({ 40 "package-external:@wordpress/i18n"(exports, module) { 41 module.exports = window.wp.i18n; 42 } 43 }); 44 45 // node_modules/ajv/dist/compile/codegen/code.js 46 var require_code = __commonJS({ 47 "node_modules/ajv/dist/compile/codegen/code.js"(exports) { 48 "use strict"; 49 Object.defineProperty(exports, "__esModule", { value: true }); 50 exports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0; 51 var _CodeOrName = class { 52 }; 53 exports._CodeOrName = _CodeOrName; 54 exports.IDENTIFIER = /^[a-z$_][a-z$_0-9]*$/i; 55 var Name = class extends _CodeOrName { 56 constructor(s) { 57 super(); 58 if (!exports.IDENTIFIER.test(s)) 59 throw new Error("CodeGen: name must be a valid identifier"); 60 this.str = s; 61 } 62 toString() { 63 return this.str; 64 } 65 emptyStr() { 66 return false; 67 } 68 get names() { 69 return { [this.str]: 1 }; 70 } 71 }; 72 exports.Name = Name; 73 var _Code = class extends _CodeOrName { 74 constructor(code) { 75 super(); 76 this._items = typeof code === "string" ? [code] : code; 77 } 78 toString() { 79 return this.str; 80 } 81 emptyStr() { 82 if (this._items.length > 1) 83 return false; 84 const item = this._items[0]; 85 return item === "" || item === '""'; 86 } 87 get str() { 88 var _a; 89 return (_a = this._str) !== null && _a !== void 0 ? _a : this._str = this._items.reduce((s, c) => `$s}$c}`, ""); 90 } 91 get names() { 92 var _a; 93 return (_a = this._names) !== null && _a !== void 0 ? _a : this._names = this._items.reduce((names, c) => { 94 if (c instanceof Name) 95 names[c.str] = (names[c.str] || 0) + 1; 96 return names; 97 }, {}); 98 } 99 }; 100 exports._Code = _Code; 101 exports.nil = new _Code(""); 102 function _(strs, ...args) { 103 const code = [strs[0]]; 104 let i = 0; 105 while (i < args.length) { 106 addCodeArg(code, args[i]); 107 code.push(strs[++i]); 108 } 109 return new _Code(code); 110 } 111 exports._ = _; 112 var plus = new _Code("+"); 113 function str(strs, ...args) { 114 const expr = [safeStringify(strs[0])]; 115 let i = 0; 116 while (i < args.length) { 117 expr.push(plus); 118 addCodeArg(expr, args[i]); 119 expr.push(plus, safeStringify(strs[++i])); 120 } 121 optimize(expr); 122 return new _Code(expr); 123 } 124 exports.str = str; 125 function addCodeArg(code, arg) { 126 if (arg instanceof _Code) 127 code.push(...arg._items); 128 else if (arg instanceof Name) 129 code.push(arg); 130 else 131 code.push(interpolate(arg)); 132 } 133 exports.addCodeArg = addCodeArg; 134 function optimize(expr) { 135 let i = 1; 136 while (i < expr.length - 1) { 137 if (expr[i] === plus) { 138 const res = mergeExprItems(expr[i - 1], expr[i + 1]); 139 if (res !== void 0) { 140 expr.splice(i - 1, 3, res); 141 continue; 142 } 143 expr[i++] = "+"; 144 } 145 i++; 146 } 147 } 148 function mergeExprItems(a, b) { 149 if (b === '""') 150 return a; 151 if (a === '""') 152 return b; 153 if (typeof a == "string") { 154 if (b instanceof Name || a[a.length - 1] !== '"') 155 return; 156 if (typeof b != "string") 157 return `$a.slice(0, -1)}$b}"`; 158 if (b[0] === '"') 159 return a.slice(0, -1) + b.slice(1); 160 return; 161 } 162 if (typeof b == "string" && b[0] === '"' && !(a instanceof Name)) 163 return `"$a}$b.slice(1)}`; 164 return; 165 } 166 function strConcat(c1, c2) { 167 return c2.emptyStr() ? c1 : c1.emptyStr() ? c2 : str`$c1}$c2}`; 168 } 169 exports.strConcat = strConcat; 170 function interpolate(x) { 171 return typeof x == "number" || typeof x == "boolean" || x === null ? x : safeStringify(Array.isArray(x) ? x.join(",") : x); 172 } 173 function stringify(x) { 174 return new _Code(safeStringify(x)); 175 } 176 exports.stringify = stringify; 177 function safeStringify(x) { 178 return JSON.stringify(x).replace(/\u2028/g, "\\u2028").replace(/\u2029/g, "\\u2029"); 179 } 180 exports.safeStringify = safeStringify; 181 function getProperty(key) { 182 return typeof key == "string" && exports.IDENTIFIER.test(key) ? new _Code(`.$key}`) : _`[$key}]`; 183 } 184 exports.getProperty = getProperty; 185 function getEsmExportName(key) { 186 if (typeof key == "string" && exports.IDENTIFIER.test(key)) { 187 return new _Code(`$key}`); 188 } 189 throw new Error(`CodeGen: invalid export name: $key}, use explicit $id name mapping`); 190 } 191 exports.getEsmExportName = getEsmExportName; 192 function regexpCode(rx) { 193 return new _Code(rx.toString()); 194 } 195 exports.regexpCode = regexpCode; 196 } 197 }); 198 199 // node_modules/ajv/dist/compile/codegen/scope.js 200 var require_scope = __commonJS({ 201 "node_modules/ajv/dist/compile/codegen/scope.js"(exports) { 202 "use strict"; 203 Object.defineProperty(exports, "__esModule", { value: true }); 204 exports.ValueScope = exports.ValueScopeName = exports.Scope = exports.varKinds = exports.UsedValueState = void 0; 205 var code_1 = require_code(); 206 var ValueError = class extends Error { 207 constructor(name) { 208 super(`CodeGen: "code" for $name} not defined`); 209 this.value = name.value; 210 } 211 }; 212 var UsedValueState; 213 (function(UsedValueState2) { 214 UsedValueState2[UsedValueState2["Started"] = 0] = "Started"; 215 UsedValueState2[UsedValueState2["Completed"] = 1] = "Completed"; 216 })(UsedValueState || (exports.UsedValueState = UsedValueState = {})); 217 exports.varKinds = { 218 const: new code_1.Name("const"), 219 let: new code_1.Name("let"), 220 var: new code_1.Name("var") 221 }; 222 var Scope = class { 223 constructor({ prefixes, parent } = {}) { 224 this._names = {}; 225 this._prefixes = prefixes; 226 this._parent = parent; 227 } 228 toName(nameOrPrefix) { 229 return nameOrPrefix instanceof code_1.Name ? nameOrPrefix : this.name(nameOrPrefix); 230 } 231 name(prefix) { 232 return new code_1.Name(this._newName(prefix)); 233 } 234 _newName(prefix) { 235 const ng = this._names[prefix] || this._nameGroup(prefix); 236 return `$prefix}$ng.index++}`; 237 } 238 _nameGroup(prefix) { 239 var _a, _b; 240 if (((_b = (_a = this._parent) === null || _a === void 0 ? void 0 : _a._prefixes) === null || _b === void 0 ? void 0 : _b.has(prefix)) || this._prefixes && !this._prefixes.has(prefix)) { 241 throw new Error(`CodeGen: prefix "$prefix}" is not allowed in this scope`); 242 } 243 return this._names[prefix] = { prefix, index: 0 }; 244 } 245 }; 246 exports.Scope = Scope; 247 var ValueScopeName = class extends code_1.Name { 248 constructor(prefix, nameStr) { 249 super(nameStr); 250 this.prefix = prefix; 251 } 252 setValue(value, { property, itemIndex }) { 253 this.value = value; 254 this.scopePath = (0, code_1._)`.$new code_1.Name(property)}[$itemIndex}]`; 255 } 256 }; 257 exports.ValueScopeName = ValueScopeName; 258 var line = (0, code_1._)`\n`; 259 var ValueScope = class extends Scope { 260 constructor(opts) { 261 super(opts); 262 this._values = {}; 263 this._scope = opts.scope; 264 this.opts = { ...opts, _n: opts.lines ? line : code_1.nil }; 265 } 266 get() { 267 return this._scope; 268 } 269 name(prefix) { 270 return new ValueScopeName(prefix, this._newName(prefix)); 271 } 272 value(nameOrPrefix, value) { 273 var _a; 274 if (value.ref === void 0) 275 throw new Error("CodeGen: ref must be passed in value"); 276 const name = this.toName(nameOrPrefix); 277 const { prefix } = name; 278 const valueKey = (_a = value.key) !== null && _a !== void 0 ? _a : value.ref; 279 let vs = this._values[prefix]; 280 if (vs) { 281 const _name = vs.get(valueKey); 282 if (_name) 283 return _name; 284 } else { 285 vs = this._values[prefix] = /* @__PURE__ */ new Map(); 286 } 287 vs.set(valueKey, name); 288 const s = this._scope[prefix] || (this._scope[prefix] = []); 289 const itemIndex = s.length; 290 s[itemIndex] = value.ref; 291 name.setValue(value, { property: prefix, itemIndex }); 292 return name; 293 } 294 getValue(prefix, keyOrRef) { 295 const vs = this._values[prefix]; 296 if (!vs) 297 return; 298 return vs.get(keyOrRef); 299 } 300 scopeRefs(scopeName, values = this._values) { 301 return this._reduceValues(values, (name) => { 302 if (name.scopePath === void 0) 303 throw new Error(`CodeGen: name "$name}" has no value`); 304 return (0, code_1._)`$scopeName}$name.scopePath}`; 305 }); 306 } 307 scopeCode(values = this._values, usedValues, getCode) { 308 return this._reduceValues(values, (name) => { 309 if (name.value === void 0) 310 throw new Error(`CodeGen: name "$name}" has no value`); 311 return name.value.code; 312 }, usedValues, getCode); 313 } 314 _reduceValues(values, valueCode, usedValues = {}, getCode) { 315 let code = code_1.nil; 316 for (const prefix in values) { 317 const vs = values[prefix]; 318 if (!vs) 319 continue; 320 const nameSet = usedValues[prefix] = usedValues[prefix] || /* @__PURE__ */ new Map(); 321 vs.forEach((name) => { 322 if (nameSet.has(name)) 323 return; 324 nameSet.set(name, UsedValueState.Started); 325 let c = valueCode(name); 326 if (c) { 327 const def = this.opts.es5 ? exports.varKinds.var : exports.varKinds.const; 328 code = (0, code_1._)`$code}$def} $name} = $c};$this.opts._n}`; 329 } else if (c = getCode === null || getCode === void 0 ? void 0 : getCode(name)) { 330 code = (0, code_1._)`$code}$c}$this.opts._n}`; 331 } else { 332 throw new ValueError(name); 333 } 334 nameSet.set(name, UsedValueState.Completed); 335 }); 336 } 337 return code; 338 } 339 }; 340 exports.ValueScope = ValueScope; 341 } 342 }); 343 344 // node_modules/ajv/dist/compile/codegen/index.js 345 var require_codegen = __commonJS({ 346 "node_modules/ajv/dist/compile/codegen/index.js"(exports) { 347 "use strict"; 348 Object.defineProperty(exports, "__esModule", { value: true }); 349 exports.or = exports.and = exports.not = exports.CodeGen = exports.operators = exports.varKinds = exports.ValueScopeName = exports.ValueScope = exports.Scope = exports.Name = exports.regexpCode = exports.stringify = exports.getProperty = exports.nil = exports.strConcat = exports.str = exports._ = void 0; 350 var code_1 = require_code(); 351 var scope_1 = require_scope(); 352 var code_2 = require_code(); 353 Object.defineProperty(exports, "_", { enumerable: true, get: function() { 354 return code_2._; 355 } }); 356 Object.defineProperty(exports, "str", { enumerable: true, get: function() { 357 return code_2.str; 358 } }); 359 Object.defineProperty(exports, "strConcat", { enumerable: true, get: function() { 360 return code_2.strConcat; 361 } }); 362 Object.defineProperty(exports, "nil", { enumerable: true, get: function() { 363 return code_2.nil; 364 } }); 365 Object.defineProperty(exports, "getProperty", { enumerable: true, get: function() { 366 return code_2.getProperty; 367 } }); 368 Object.defineProperty(exports, "stringify", { enumerable: true, get: function() { 369 return code_2.stringify; 370 } }); 371 Object.defineProperty(exports, "regexpCode", { enumerable: true, get: function() { 372 return code_2.regexpCode; 373 } }); 374 Object.defineProperty(exports, "Name", { enumerable: true, get: function() { 375 return code_2.Name; 376 } }); 377 var scope_2 = require_scope(); 378 Object.defineProperty(exports, "Scope", { enumerable: true, get: function() { 379 return scope_2.Scope; 380 } }); 381 Object.defineProperty(exports, "ValueScope", { enumerable: true, get: function() { 382 return scope_2.ValueScope; 383 } }); 384 Object.defineProperty(exports, "ValueScopeName", { enumerable: true, get: function() { 385 return scope_2.ValueScopeName; 386 } }); 387 Object.defineProperty(exports, "varKinds", { enumerable: true, get: function() { 388 return scope_2.varKinds; 389 } }); 390 exports.operators = { 391 GT: new code_1._Code(">"), 392 GTE: new code_1._Code(">="), 393 LT: new code_1._Code("<"), 394 LTE: new code_1._Code("<="), 395 EQ: new code_1._Code("==="), 396 NEQ: new code_1._Code("!=="), 397 NOT: new code_1._Code("!"), 398 OR: new code_1._Code("||"), 399 AND: new code_1._Code("&&"), 400 ADD: new code_1._Code("+") 401 }; 402 var Node = class { 403 optimizeNodes() { 404 return this; 405 } 406 optimizeNames(_names, _constants) { 407 return this; 408 } 409 }; 410 var Def = class extends Node { 411 constructor(varKind, name, rhs) { 412 super(); 413 this.varKind = varKind; 414 this.name = name; 415 this.rhs = rhs; 416 } 417 render({ es5, _n }) { 418 const varKind = es5 ? scope_1.varKinds.var : this.varKind; 419 const rhs = this.rhs === void 0 ? "" : ` = $this.rhs}`; 420 return `$varKind} $this.name}$rhs};` + _n; 421 } 422 optimizeNames(names, constants) { 423 if (!names[this.name.str]) 424 return; 425 if (this.rhs) 426 this.rhs = optimizeExpr(this.rhs, names, constants); 427 return this; 428 } 429 get names() { 430 return this.rhs instanceof code_1._CodeOrName ? this.rhs.names : {}; 431 } 432 }; 433 var Assign = class extends Node { 434 constructor(lhs, rhs, sideEffects) { 435 super(); 436 this.lhs = lhs; 437 this.rhs = rhs; 438 this.sideEffects = sideEffects; 439 } 440 render({ _n }) { 441 return `$this.lhs} = $this.rhs};` + _n; 442 } 443 optimizeNames(names, constants) { 444 if (this.lhs instanceof code_1.Name && !names[this.lhs.str] && !this.sideEffects) 445 return; 446 this.rhs = optimizeExpr(this.rhs, names, constants); 447 return this; 448 } 449 get names() { 450 const names = this.lhs instanceof code_1.Name ? {} : { ...this.lhs.names }; 451 return addExprNames(names, this.rhs); 452 } 453 }; 454 var AssignOp = class extends Assign { 455 constructor(lhs, op, rhs, sideEffects) { 456 super(lhs, rhs, sideEffects); 457 this.op = op; 458 } 459 render({ _n }) { 460 return `$this.lhs} $this.op}= $this.rhs};` + _n; 461 } 462 }; 463 var Label = class extends Node { 464 constructor(label) { 465 super(); 466 this.label = label; 467 this.names = {}; 468 } 469 render({ _n }) { 470 return `$this.label}:` + _n; 471 } 472 }; 473 var Break = class extends Node { 474 constructor(label) { 475 super(); 476 this.label = label; 477 this.names = {}; 478 } 479 render({ _n }) { 480 const label = this.label ? ` $this.label}` : ""; 481 return `break$label};` + _n; 482 } 483 }; 484 var Throw = class extends Node { 485 constructor(error) { 486 super(); 487 this.error = error; 488 } 489 render({ _n }) { 490 return `throw $this.error};` + _n; 491 } 492 get names() { 493 return this.error.names; 494 } 495 }; 496 var AnyCode = class extends Node { 497 constructor(code) { 498 super(); 499 this.code = code; 500 } 501 render({ _n }) { 502 return `$this.code};` + _n; 503 } 504 optimizeNodes() { 505 return `$this.code}` ? this : void 0; 506 } 507 optimizeNames(names, constants) { 508 this.code = optimizeExpr(this.code, names, constants); 509 return this; 510 } 511 get names() { 512 return this.code instanceof code_1._CodeOrName ? this.code.names : {}; 513 } 514 }; 515 var ParentNode = class extends Node { 516 constructor(nodes = []) { 517 super(); 518 this.nodes = nodes; 519 } 520 render(opts) { 521 return this.nodes.reduce((code, n) => code + n.render(opts), ""); 522 } 523 optimizeNodes() { 524 const { nodes } = this; 525 let i = nodes.length; 526 while (i--) { 527 const n = nodes[i].optimizeNodes(); 528 if (Array.isArray(n)) 529 nodes.splice(i, 1, ...n); 530 else if (n) 531 nodes[i] = n; 532 else 533 nodes.splice(i, 1); 534 } 535 return nodes.length > 0 ? this : void 0; 536 } 537 optimizeNames(names, constants) { 538 const { nodes } = this; 539 let i = nodes.length; 540 while (i--) { 541 const n = nodes[i]; 542 if (n.optimizeNames(names, constants)) 543 continue; 544 subtractNames(names, n.names); 545 nodes.splice(i, 1); 546 } 547 return nodes.length > 0 ? this : void 0; 548 } 549 get names() { 550 return this.nodes.reduce((names, n) => addNames(names, n.names), {}); 551 } 552 }; 553 var BlockNode = class extends ParentNode { 554 render(opts) { 555 return "{" + opts._n + super.render(opts) + "}" + opts._n; 556 } 557 }; 558 var Root = class extends ParentNode { 559 }; 560 var Else = class extends BlockNode { 561 }; 562 Else.kind = "else"; 563 var If = class _If extends BlockNode { 564 constructor(condition, nodes) { 565 super(nodes); 566 this.condition = condition; 567 } 568 render(opts) { 569 let code = `if($this.condition})` + super.render(opts); 570 if (this.else) 571 code += "else " + this.else.render(opts); 572 return code; 573 } 574 optimizeNodes() { 575 super.optimizeNodes(); 576 const cond = this.condition; 577 if (cond === true) 578 return this.nodes; 579 let e = this.else; 580 if (e) { 581 const ns = e.optimizeNodes(); 582 e = this.else = Array.isArray(ns) ? new Else(ns) : ns; 583 } 584 if (e) { 585 if (cond === false) 586 return e instanceof _If ? e : e.nodes; 587 if (this.nodes.length) 588 return this; 589 return new _If(not(cond), e instanceof _If ? [e] : e.nodes); 590 } 591 if (cond === false || !this.nodes.length) 592 return void 0; 593 return this; 594 } 595 optimizeNames(names, constants) { 596 var _a; 597 this.else = (_a = this.else) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants); 598 if (!(super.optimizeNames(names, constants) || this.else)) 599 return; 600 this.condition = optimizeExpr(this.condition, names, constants); 601 return this; 602 } 603 get names() { 604 const names = super.names; 605 addExprNames(names, this.condition); 606 if (this.else) 607 addNames(names, this.else.names); 608 return names; 609 } 610 }; 611 If.kind = "if"; 612 var For = class extends BlockNode { 613 }; 614 For.kind = "for"; 615 var ForLoop = class extends For { 616 constructor(iteration) { 617 super(); 618 this.iteration = iteration; 619 } 620 render(opts) { 621 return `for($this.iteration})` + super.render(opts); 622 } 623 optimizeNames(names, constants) { 624 if (!super.optimizeNames(names, constants)) 625 return; 626 this.iteration = optimizeExpr(this.iteration, names, constants); 627 return this; 628 } 629 get names() { 630 return addNames(super.names, this.iteration.names); 631 } 632 }; 633 var ForRange = class extends For { 634 constructor(varKind, name, from, to) { 635 super(); 636 this.varKind = varKind; 637 this.name = name; 638 this.from = from; 639 this.to = to; 640 } 641 render(opts) { 642 const varKind = opts.es5 ? scope_1.varKinds.var : this.varKind; 643 const { name, from, to } = this; 644 return `for($varKind} $name}=$from}; $name}<$to}; $name}++)` + super.render(opts); 645 } 646 get names() { 647 const names = addExprNames(super.names, this.from); 648 return addExprNames(names, this.to); 649 } 650 }; 651 var ForIter = class extends For { 652 constructor(loop, varKind, name, iterable) { 653 super(); 654 this.loop = loop; 655 this.varKind = varKind; 656 this.name = name; 657 this.iterable = iterable; 658 } 659 render(opts) { 660 return `for($this.varKind} $this.name} $this.loop} $this.iterable})` + super.render(opts); 661 } 662 optimizeNames(names, constants) { 663 if (!super.optimizeNames(names, constants)) 664 return; 665 this.iterable = optimizeExpr(this.iterable, names, constants); 666 return this; 667 } 668 get names() { 669 return addNames(super.names, this.iterable.names); 670 } 671 }; 672 var Func = class extends BlockNode { 673 constructor(name, args, async) { 674 super(); 675 this.name = name; 676 this.args = args; 677 this.async = async; 678 } 679 render(opts) { 680 const _async = this.async ? "async " : ""; 681 return `$_async}function $this.name}($this.args})` + super.render(opts); 682 } 683 }; 684 Func.kind = "func"; 685 var Return = class extends ParentNode { 686 render(opts) { 687 return "return " + super.render(opts); 688 } 689 }; 690 Return.kind = "return"; 691 var Try = class extends BlockNode { 692 render(opts) { 693 let code = "try" + super.render(opts); 694 if (this.catch) 695 code += this.catch.render(opts); 696 if (this.finally) 697 code += this.finally.render(opts); 698 return code; 699 } 700 optimizeNodes() { 701 var _a, _b; 702 super.optimizeNodes(); 703 (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNodes(); 704 (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNodes(); 705 return this; 706 } 707 optimizeNames(names, constants) { 708 var _a, _b; 709 super.optimizeNames(names, constants); 710 (_a = this.catch) === null || _a === void 0 ? void 0 : _a.optimizeNames(names, constants); 711 (_b = this.finally) === null || _b === void 0 ? void 0 : _b.optimizeNames(names, constants); 712 return this; 713 } 714 get names() { 715 const names = super.names; 716 if (this.catch) 717 addNames(names, this.catch.names); 718 if (this.finally) 719 addNames(names, this.finally.names); 720 return names; 721 } 722 }; 723 var Catch = class extends BlockNode { 724 constructor(error) { 725 super(); 726 this.error = error; 727 } 728 render(opts) { 729 return `catch($this.error})` + super.render(opts); 730 } 731 }; 732 Catch.kind = "catch"; 733 var Finally = class extends BlockNode { 734 render(opts) { 735 return "finally" + super.render(opts); 736 } 737 }; 738 Finally.kind = "finally"; 739 var CodeGen = class { 740 constructor(extScope, opts = {}) { 741 this._values = {}; 742 this._blockStarts = []; 743 this._constants = {}; 744 this.opts = { ...opts, _n: opts.lines ? "\n" : "" }; 745 this._extScope = extScope; 746 this._scope = new scope_1.Scope({ parent: extScope }); 747 this._nodes = [new Root()]; 748 } 749 toString() { 750 return this._root.render(this.opts); 751 } 752 // returns unique name in the internal scope 753 name(prefix) { 754 return this._scope.name(prefix); 755 } 756 // reserves unique name in the external scope 757 scopeName(prefix) { 758 return this._extScope.name(prefix); 759 } 760 // reserves unique name in the external scope and assigns value to it 761 scopeValue(prefixOrName, value) { 762 const name = this._extScope.value(prefixOrName, value); 763 const vs = this._values[name.prefix] || (this._values[name.prefix] = /* @__PURE__ */ new Set()); 764 vs.add(name); 765 return name; 766 } 767 getScopeValue(prefix, keyOrRef) { 768 return this._extScope.getValue(prefix, keyOrRef); 769 } 770 // return code that assigns values in the external scope to the names that are used internally 771 // (same names that were returned by gen.scopeName or gen.scopeValue) 772 scopeRefs(scopeName) { 773 return this._extScope.scopeRefs(scopeName, this._values); 774 } 775 scopeCode() { 776 return this._extScope.scopeCode(this._values); 777 } 778 _def(varKind, nameOrPrefix, rhs, constant) { 779 const name = this._scope.toName(nameOrPrefix); 780 if (rhs !== void 0 && constant) 781 this._constants[name.str] = rhs; 782 this._leafNode(new Def(varKind, name, rhs)); 783 return name; 784 } 785 // `const` declaration (`var` in es5 mode) 786 const(nameOrPrefix, rhs, _constant) { 787 return this._def(scope_1.varKinds.const, nameOrPrefix, rhs, _constant); 788 } 789 // `let` declaration with optional assignment (`var` in es5 mode) 790 let(nameOrPrefix, rhs, _constant) { 791 return this._def(scope_1.varKinds.let, nameOrPrefix, rhs, _constant); 792 } 793 // `var` declaration with optional assignment 794 var(nameOrPrefix, rhs, _constant) { 795 return this._def(scope_1.varKinds.var, nameOrPrefix, rhs, _constant); 796 } 797 // assignment code 798 assign(lhs, rhs, sideEffects) { 799 return this._leafNode(new Assign(lhs, rhs, sideEffects)); 800 } 801 // `+=` code 802 add(lhs, rhs) { 803 return this._leafNode(new AssignOp(lhs, exports.operators.ADD, rhs)); 804 } 805 // appends passed SafeExpr to code or executes Block 806 code(c) { 807 if (typeof c == "function") 808 c(); 809 else if (c !== code_1.nil) 810 this._leafNode(new AnyCode(c)); 811 return this; 812 } 813 // returns code for object literal for the passed argument list of key-value pairs 814 object(...keyValues) { 815 const code = ["{"]; 816 for (const [key, value] of keyValues) { 817 if (code.length > 1) 818 code.push(","); 819 code.push(key); 820 if (key !== value || this.opts.es5) { 821 code.push(":"); 822 (0, code_1.addCodeArg)(code, value); 823 } 824 } 825 code.push("}"); 826 return new code_1._Code(code); 827 } 828 // `if` clause (or statement if `thenBody` and, optionally, `elseBody` are passed) 829 if(condition, thenBody, elseBody) { 830 this._blockNode(new If(condition)); 831 if (thenBody && elseBody) { 832 this.code(thenBody).else().code(elseBody).endIf(); 833 } else if (thenBody) { 834 this.code(thenBody).endIf(); 835 } else if (elseBody) { 836 throw new Error('CodeGen: "else" body without "then" body'); 837 } 838 return this; 839 } 840 // `else if` clause - invalid without `if` or after `else` clauses 841 elseIf(condition) { 842 return this._elseNode(new If(condition)); 843 } 844 // `else` clause - only valid after `if` or `else if` clauses 845 else() { 846 return this._elseNode(new Else()); 847 } 848 // end `if` statement (needed if gen.if was used only with condition) 849 endIf() { 850 return this._endBlockNode(If, Else); 851 } 852 _for(node, forBody) { 853 this._blockNode(node); 854 if (forBody) 855 this.code(forBody).endFor(); 856 return this; 857 } 858 // a generic `for` clause (or statement if `forBody` is passed) 859 for(iteration, forBody) { 860 return this._for(new ForLoop(iteration), forBody); 861 } 862 // `for` statement for a range of values 863 forRange(nameOrPrefix, from, to, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.let) { 864 const name = this._scope.toName(nameOrPrefix); 865 return this._for(new ForRange(varKind, name, from, to), () => forBody(name)); 866 } 867 // `for-of` statement (in es5 mode replace with a normal for loop) 868 forOf(nameOrPrefix, iterable, forBody, varKind = scope_1.varKinds.const) { 869 const name = this._scope.toName(nameOrPrefix); 870 if (this.opts.es5) { 871 const arr = iterable instanceof code_1.Name ? iterable : this.var("_arr", iterable); 872 return this.forRange("_i", 0, (0, code_1._)`$arr}.length`, (i) => { 873 this.var(name, (0, code_1._)`$arr}[$i}]`); 874 forBody(name); 875 }); 876 } 877 return this._for(new ForIter("of", varKind, name, iterable), () => forBody(name)); 878 } 879 // `for-in` statement. 880 // With option `ownProperties` replaced with a `for-of` loop for object keys 881 forIn(nameOrPrefix, obj, forBody, varKind = this.opts.es5 ? scope_1.varKinds.var : scope_1.varKinds.const) { 882 if (this.opts.ownProperties) { 883 return this.forOf(nameOrPrefix, (0, code_1._)`Object.keys($obj})`, forBody); 884 } 885 const name = this._scope.toName(nameOrPrefix); 886 return this._for(new ForIter("in", varKind, name, obj), () => forBody(name)); 887 } 888 // end `for` loop 889 endFor() { 890 return this._endBlockNode(For); 891 } 892 // `label` statement 893 label(label) { 894 return this._leafNode(new Label(label)); 895 } 896 // `break` statement 897 break(label) { 898 return this._leafNode(new Break(label)); 899 } 900 // `return` statement 901 return(value) { 902 const node = new Return(); 903 this._blockNode(node); 904 this.code(value); 905 if (node.nodes.length !== 1) 906 throw new Error('CodeGen: "return" should have one node'); 907 return this._endBlockNode(Return); 908 } 909 // `try` statement 910 try(tryBody, catchCode, finallyCode) { 911 if (!catchCode && !finallyCode) 912 throw new Error('CodeGen: "try" without "catch" and "finally"'); 913 const node = new Try(); 914 this._blockNode(node); 915 this.code(tryBody); 916 if (catchCode) { 917 const error = this.name("e"); 918 this._currNode = node.catch = new Catch(error); 919 catchCode(error); 920 } 921 if (finallyCode) { 922 this._currNode = node.finally = new Finally(); 923 this.code(finallyCode); 924 } 925 return this._endBlockNode(Catch, Finally); 926 } 927 // `throw` statement 928 throw(error) { 929 return this._leafNode(new Throw(error)); 930 } 931 // start self-balancing block 932 block(body, nodeCount) { 933 this._blockStarts.push(this._nodes.length); 934 if (body) 935 this.code(body).endBlock(nodeCount); 936 return this; 937 } 938 // end the current self-balancing block 939 endBlock(nodeCount) { 940 const len = this._blockStarts.pop(); 941 if (len === void 0) 942 throw new Error("CodeGen: not in self-balancing block"); 943 const toClose = this._nodes.length - len; 944 if (toClose < 0 || nodeCount !== void 0 && toClose !== nodeCount) { 945 throw new Error(`CodeGen: wrong number of nodes: $toClose} vs $nodeCount} expected`); 946 } 947 this._nodes.length = len; 948 return this; 949 } 950 // `function` heading (or definition if funcBody is passed) 951 func(name, args = code_1.nil, async, funcBody) { 952 this._blockNode(new Func(name, args, async)); 953 if (funcBody) 954 this.code(funcBody).endFunc(); 955 return this; 956 } 957 // end function definition 958 endFunc() { 959 return this._endBlockNode(Func); 960 } 961 optimize(n = 1) { 962 while (n-- > 0) { 963 this._root.optimizeNodes(); 964 this._root.optimizeNames(this._root.names, this._constants); 965 } 966 } 967 _leafNode(node) { 968 this._currNode.nodes.push(node); 969 return this; 970 } 971 _blockNode(node) { 972 this._currNode.nodes.push(node); 973 this._nodes.push(node); 974 } 975 _endBlockNode(N1, N2) { 976 const n = this._currNode; 977 if (n instanceof N1 || N2 && n instanceof N2) { 978 this._nodes.pop(); 979 return this; 980 } 981 throw new Error(`CodeGen: not in block "$N2 ? `$N1.kind}/$N2.kind}` : N1.kind}"`); 982 } 983 _elseNode(node) { 984 const n = this._currNode; 985 if (!(n instanceof If)) { 986 throw new Error('CodeGen: "else" without "if"'); 987 } 988 this._currNode = n.else = node; 989 return this; 990 } 991 get _root() { 992 return this._nodes[0]; 993 } 994 get _currNode() { 995 const ns = this._nodes; 996 return ns[ns.length - 1]; 997 } 998 set _currNode(node) { 999 const ns = this._nodes; 1000 ns[ns.length - 1] = node; 1001 } 1002 }; 1003 exports.CodeGen = CodeGen; 1004 function addNames(names, from) { 1005 for (const n in from) 1006 names[n] = (names[n] || 0) + (from[n] || 0); 1007 return names; 1008 } 1009 function addExprNames(names, from) { 1010 return from instanceof code_1._CodeOrName ? addNames(names, from.names) : names; 1011 } 1012 function optimizeExpr(expr, names, constants) { 1013 if (expr instanceof code_1.Name) 1014 return replaceName(expr); 1015 if (!canOptimize(expr)) 1016 return expr; 1017 return new code_1._Code(expr._items.reduce((items, c) => { 1018 if (c instanceof code_1.Name) 1019 c = replaceName(c); 1020 if (c instanceof code_1._Code) 1021 items.push(...c._items); 1022 else 1023 items.push(c); 1024 return items; 1025 }, [])); 1026 function replaceName(n) { 1027 const c = constants[n.str]; 1028 if (c === void 0 || names[n.str] !== 1) 1029 return n; 1030 delete names[n.str]; 1031 return c; 1032 } 1033 function canOptimize(e) { 1034 return e instanceof code_1._Code && e._items.some((c) => c instanceof code_1.Name && names[c.str] === 1 && constants[c.str] !== void 0); 1035 } 1036 } 1037 function subtractNames(names, from) { 1038 for (const n in from) 1039 names[n] = (names[n] || 0) - (from[n] || 0); 1040 } 1041 function not(x) { 1042 return typeof x == "boolean" || typeof x == "number" || x === null ? !x : (0, code_1._)`!$par(x)}`; 1043 } 1044 exports.not = not; 1045 var andCode = mappend(exports.operators.AND); 1046 function and(...args) { 1047 return args.reduce(andCode); 1048 } 1049 exports.and = and; 1050 var orCode = mappend(exports.operators.OR); 1051 function or(...args) { 1052 return args.reduce(orCode); 1053 } 1054 exports.or = or; 1055 function mappend(op) { 1056 return (x, y) => x === code_1.nil ? y : y === code_1.nil ? x : (0, code_1._)`$par(x)} $op} $par(y)}`; 1057 } 1058 function par(x) { 1059 return x instanceof code_1.Name ? x : (0, code_1._)`($x})`; 1060 } 1061 } 1062 }); 1063 1064 // node_modules/ajv/dist/compile/util.js 1065 var require_util = __commonJS({ 1066 "node_modules/ajv/dist/compile/util.js"(exports) { 1067 "use strict"; 1068 Object.defineProperty(exports, "__esModule", { value: true }); 1069 exports.checkStrictMode = exports.getErrorPath = exports.Type = exports.useFunc = exports.setEvaluated = exports.evaluatedPropsToName = exports.mergeEvaluated = exports.eachItem = exports.unescapeJsonPointer = exports.escapeJsonPointer = exports.escapeFragment = exports.unescapeFragment = exports.schemaRefOrVal = exports.schemaHasRulesButRef = exports.schemaHasRules = exports.checkUnknownRules = exports.alwaysValidSchema = exports.toHash = void 0; 1070 var codegen_1 = require_codegen(); 1071 var code_1 = require_code(); 1072 function toHash(arr) { 1073 const hash = {}; 1074 for (const item of arr) 1075 hash[item] = true; 1076 return hash; 1077 } 1078 exports.toHash = toHash; 1079 function alwaysValidSchema(it, schema) { 1080 if (typeof schema == "boolean") 1081 return schema; 1082 if (Object.keys(schema).length === 0) 1083 return true; 1084 checkUnknownRules(it, schema); 1085 return !schemaHasRules(schema, it.self.RULES.all); 1086 } 1087 exports.alwaysValidSchema = alwaysValidSchema; 1088 function checkUnknownRules(it, schema = it.schema) { 1089 const { opts, self } = it; 1090 if (!opts.strictSchema) 1091 return; 1092 if (typeof schema === "boolean") 1093 return; 1094 const rules = self.RULES.keywords; 1095 for (const key in schema) { 1096 if (!rules[key]) 1097 checkStrictMode(it, `unknown keyword: "$key}"`); 1098 } 1099 } 1100 exports.checkUnknownRules = checkUnknownRules; 1101 function schemaHasRules(schema, rules) { 1102 if (typeof schema == "boolean") 1103 return !schema; 1104 for (const key in schema) 1105 if (rules[key]) 1106 return true; 1107 return false; 1108 } 1109 exports.schemaHasRules = schemaHasRules; 1110 function schemaHasRulesButRef(schema, RULES) { 1111 if (typeof schema == "boolean") 1112 return !schema; 1113 for (const key in schema) 1114 if (key !== "$ref" && RULES.all[key]) 1115 return true; 1116 return false; 1117 } 1118 exports.schemaHasRulesButRef = schemaHasRulesButRef; 1119 function schemaRefOrVal({ topSchemaRef, schemaPath }, schema, keyword, $data) { 1120 if (!$data) { 1121 if (typeof schema == "number" || typeof schema == "boolean") 1122 return schema; 1123 if (typeof schema == "string") 1124 return (0, codegen_1._)`$schema}`; 1125 } 1126 return (0, codegen_1._)`$topSchemaRef}$schemaPath}${(0, codegen_1.getProperty)(keyword)}`; 1127 } 1128 exports.schemaRefOrVal = schemaRefOrVal; 1129 function unescapeFragment(str) { 1130 return unescapeJsonPointer(decodeURIComponent(str)); 1131 } 1132 exports.unescapeFragment = unescapeFragment; 1133 function escapeFragment(str) { 1134 return encodeURIComponent(escapeJsonPointer(str)); 1135 } 1136 exports.escapeFragment = escapeFragment; 1137 function escapeJsonPointer(str) { 1138 if (typeof str == "number") 1139 return `$str}`; 1140 return str.replace(/~/g, "~0").replace(/\//g, "~1"); 1141 } 1142 exports.escapeJsonPointer = escapeJsonPointer; 1143 function unescapeJsonPointer(str) { 1144 return str.replace(/~1/g, "/").replace(/~0/g, "~"); 1145 } 1146 exports.unescapeJsonPointer = unescapeJsonPointer; 1147 function eachItem(xs, f) { 1148 if (Array.isArray(xs)) { 1149 for (const x of xs) 1150 f(x); 1151 } else { 1152 f(xs); 1153 } 1154 } 1155 exports.eachItem = eachItem; 1156 function makeMergeEvaluated({ mergeNames, mergeToName, mergeValues, resultToName }) { 1157 return (gen, from, to, toName) => { 1158 const res = to === void 0 ? from : to instanceof codegen_1.Name ? (from instanceof codegen_1.Name ? mergeNames(gen, from, to) : mergeToName(gen, from, to), to) : from instanceof codegen_1.Name ? (mergeToName(gen, to, from), from) : mergeValues(from, to); 1159 return toName === codegen_1.Name && !(res instanceof codegen_1.Name) ? resultToName(gen, res) : res; 1160 }; 1161 } 1162 exports.mergeEvaluated = { 1163 props: makeMergeEvaluated({ 1164 mergeNames: (gen, from, to) => gen.if((0, codegen_1._)`$to} !== true && $from} !== undefined`, () => { 1165 gen.if((0, codegen_1._)`$from} === true`, () => gen.assign(to, true), () => gen.assign(to, (0, codegen_1._)`$to} || {}`).code((0, codegen_1._)`Object.assign($to}, $from})`)); 1166 }), 1167 mergeToName: (gen, from, to) => gen.if((0, codegen_1._)`$to} !== true`, () => { 1168 if (from === true) { 1169 gen.assign(to, true); 1170 } else { 1171 gen.assign(to, (0, codegen_1._)`$to} || {}`); 1172 setEvaluated(gen, to, from); 1173 } 1174 }), 1175 mergeValues: (from, to) => from === true ? true : { ...from, ...to }, 1176 resultToName: evaluatedPropsToName 1177 }), 1178 items: makeMergeEvaluated({ 1179 mergeNames: (gen, from, to) => gen.if((0, codegen_1._)`$to} !== true && $from} !== undefined`, () => gen.assign(to, (0, codegen_1._)`$from} === true ? true : $to} > $from} ? $to} : $from}`)), 1180 mergeToName: (gen, from, to) => gen.if((0, codegen_1._)`$to} !== true`, () => gen.assign(to, from === true ? true : (0, codegen_1._)`$to} > $from} ? $to} : $from}`)), 1181 mergeValues: (from, to) => from === true ? true : Math.max(from, to), 1182 resultToName: (gen, items) => gen.var("items", items) 1183 }) 1184 }; 1185 function evaluatedPropsToName(gen, ps) { 1186 if (ps === true) 1187 return gen.var("props", true); 1188 const props = gen.var("props", (0, codegen_1._)`{}`); 1189 if (ps !== void 0) 1190 setEvaluated(gen, props, ps); 1191 return props; 1192 } 1193 exports.evaluatedPropsToName = evaluatedPropsToName; 1194 function setEvaluated(gen, props, ps) { 1195 Object.keys(ps).forEach((p) => gen.assign((0, codegen_1._)`$props}${(0, codegen_1.getProperty)(p)}`, true)); 1196 } 1197 exports.setEvaluated = setEvaluated; 1198 var snippets = {}; 1199 function useFunc(gen, f) { 1200 return gen.scopeValue("func", { 1201 ref: f, 1202 code: snippets[f.code] || (snippets[f.code] = new code_1._Code(f.code)) 1203 }); 1204 } 1205 exports.useFunc = useFunc; 1206 var Type; 1207 (function(Type2) { 1208 Type2[Type2["Num"] = 0] = "Num"; 1209 Type2[Type2["Str"] = 1] = "Str"; 1210 })(Type || (exports.Type = Type = {})); 1211 function getErrorPath(dataProp, dataPropType, jsPropertySyntax) { 1212 if (dataProp instanceof codegen_1.Name) { 1213 const isNumber = dataPropType === Type.Num; 1214 return jsPropertySyntax ? isNumber ? (0, codegen_1._)`"[" + $dataProp} + "]"` : (0, codegen_1._)`"['" + $dataProp} + "']"` : isNumber ? (0, codegen_1._)`"/" + $dataProp}` : (0, codegen_1._)`"/" + $dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")`; 1215 } 1216 return jsPropertySyntax ? (0, codegen_1.getProperty)(dataProp).toString() : "/" + escapeJsonPointer(dataProp); 1217 } 1218 exports.getErrorPath = getErrorPath; 1219 function checkStrictMode(it, msg, mode = it.opts.strictSchema) { 1220 if (!mode) 1221 return; 1222 msg = `strict mode: $msg}`; 1223 if (mode === true) 1224 throw new Error(msg); 1225 it.self.logger.warn(msg); 1226 } 1227 exports.checkStrictMode = checkStrictMode; 1228 } 1229 }); 1230 1231 // node_modules/ajv/dist/compile/names.js 1232 var require_names = __commonJS({ 1233 "node_modules/ajv/dist/compile/names.js"(exports) { 1234 "use strict"; 1235 Object.defineProperty(exports, "__esModule", { value: true }); 1236 var codegen_1 = require_codegen(); 1237 var names = { 1238 // validation function arguments 1239 data: new codegen_1.Name("data"), 1240 // data passed to validation function 1241 // args passed from referencing schema 1242 valCxt: new codegen_1.Name("valCxt"), 1243 // validation/data context - should not be used directly, it is destructured to the names below 1244 instancePath: new codegen_1.Name("instancePath"), 1245 parentData: new codegen_1.Name("parentData"), 1246 parentDataProperty: new codegen_1.Name("parentDataProperty"), 1247 rootData: new codegen_1.Name("rootData"), 1248 // root data - same as the data passed to the first/top validation function 1249 dynamicAnchors: new codegen_1.Name("dynamicAnchors"), 1250 // used to support recursiveRef and dynamicRef 1251 // function scoped variables 1252 vErrors: new codegen_1.Name("vErrors"), 1253 // null or array of validation errors 1254 errors: new codegen_1.Name("errors"), 1255 // counter of validation errors 1256 this: new codegen_1.Name("this"), 1257 // "globals" 1258 self: new codegen_1.Name("self"), 1259 scope: new codegen_1.Name("scope"), 1260 // JTD serialize/parse name for JSON string and position 1261 json: new codegen_1.Name("json"), 1262 jsonPos: new codegen_1.Name("jsonPos"), 1263 jsonLen: new codegen_1.Name("jsonLen"), 1264 jsonPart: new codegen_1.Name("jsonPart") 1265 }; 1266 exports.default = names; 1267 } 1268 }); 1269 1270 // node_modules/ajv/dist/compile/errors.js 1271 var require_errors = __commonJS({ 1272 "node_modules/ajv/dist/compile/errors.js"(exports) { 1273 "use strict"; 1274 Object.defineProperty(exports, "__esModule", { value: true }); 1275 exports.extendErrors = exports.resetErrorsCount = exports.reportExtraError = exports.reportError = exports.keyword$DataError = exports.keywordError = void 0; 1276 var codegen_1 = require_codegen(); 1277 var util_1 = require_util(); 1278 var names_1 = require_names(); 1279 exports.keywordError = { 1280 message: ({ keyword }) => (0, codegen_1.str)`must pass "$keyword}" keyword validation` 1281 }; 1282 exports.keyword$DataError = { 1283 message: ({ keyword, schemaType }) => schemaType ? (0, codegen_1.str)`"$keyword}" keyword must be $schemaType} ($data)` : (0, codegen_1.str)`"$keyword}" keyword is invalid ($data)` 1284 }; 1285 function reportError(cxt, error = exports.keywordError, errorPaths, overrideAllErrors) { 1286 const { it } = cxt; 1287 const { gen, compositeRule, allErrors } = it; 1288 const errObj = errorObjectCode(cxt, error, errorPaths); 1289 if (overrideAllErrors !== null && overrideAllErrors !== void 0 ? overrideAllErrors : compositeRule || allErrors) { 1290 addError(gen, errObj); 1291 } else { 1292 returnErrors(it, (0, codegen_1._)`[$errObj}]`); 1293 } 1294 } 1295 exports.reportError = reportError; 1296 function reportExtraError(cxt, error = exports.keywordError, errorPaths) { 1297 const { it } = cxt; 1298 const { gen, compositeRule, allErrors } = it; 1299 const errObj = errorObjectCode(cxt, error, errorPaths); 1300 addError(gen, errObj); 1301 if (!(compositeRule || allErrors)) { 1302 returnErrors(it, names_1.default.vErrors); 1303 } 1304 } 1305 exports.reportExtraError = reportExtraError; 1306 function resetErrorsCount(gen, errsCount) { 1307 gen.assign(names_1.default.errors, errsCount); 1308 gen.if((0, codegen_1._)`$names_1.default.vErrors} !== null`, () => gen.if(errsCount, () => gen.assign((0, codegen_1._)`$names_1.default.vErrors}.length`, errsCount), () => gen.assign(names_1.default.vErrors, null))); 1309 } 1310 exports.resetErrorsCount = resetErrorsCount; 1311 function extendErrors({ gen, keyword, schemaValue, data, errsCount, it }) { 1312 if (errsCount === void 0) 1313 throw new Error("ajv implementation error"); 1314 const err = gen.name("err"); 1315 gen.forRange("i", errsCount, names_1.default.errors, (i) => { 1316 gen.const(err, (0, codegen_1._)`$names_1.default.vErrors}[$i}]`); 1317 gen.if((0, codegen_1._)`$err}.instancePath === undefined`, () => gen.assign((0, codegen_1._)`$err}.instancePath`, (0, codegen_1.strConcat)(names_1.default.instancePath, it.errorPath))); 1318 gen.assign((0, codegen_1._)`$err}.schemaPath`, (0, codegen_1.str)`$it.errSchemaPath}/$keyword}`); 1319 if (it.opts.verbose) { 1320 gen.assign((0, codegen_1._)`$err}.schema`, schemaValue); 1321 gen.assign((0, codegen_1._)`$err}.data`, data); 1322 } 1323 }); 1324 } 1325 exports.extendErrors = extendErrors; 1326 function addError(gen, errObj) { 1327 const err = gen.const("err", errObj); 1328 gen.if((0, codegen_1._)`$names_1.default.vErrors} === null`, () => gen.assign(names_1.default.vErrors, (0, codegen_1._)`[$err}]`), (0, codegen_1._)`$names_1.default.vErrors}.push($err})`); 1329 gen.code((0, codegen_1._)`$names_1.default.errors}++`); 1330 } 1331 function returnErrors(it, errs) { 1332 const { gen, validateName, schemaEnv } = it; 1333 if (schemaEnv.$async) { 1334 gen.throw((0, codegen_1._)`new $it.ValidationError}($errs})`); 1335 } else { 1336 gen.assign((0, codegen_1._)`$validateName}.errors`, errs); 1337 gen.return(false); 1338 } 1339 } 1340 var E = { 1341 keyword: new codegen_1.Name("keyword"), 1342 schemaPath: new codegen_1.Name("schemaPath"), 1343 // also used in JTD errors 1344 params: new codegen_1.Name("params"), 1345 propertyName: new codegen_1.Name("propertyName"), 1346 message: new codegen_1.Name("message"), 1347 schema: new codegen_1.Name("schema"), 1348 parentSchema: new codegen_1.Name("parentSchema") 1349 }; 1350 function errorObjectCode(cxt, error, errorPaths) { 1351 const { createErrors } = cxt.it; 1352 if (createErrors === false) 1353 return (0, codegen_1._)`{}`; 1354 return errorObject(cxt, error, errorPaths); 1355 } 1356 function errorObject(cxt, error, errorPaths = {}) { 1357 const { gen, it } = cxt; 1358 const keyValues = [ 1359 errorInstancePath(it, errorPaths), 1360 errorSchemaPath(cxt, errorPaths) 1361 ]; 1362 extraErrorProps(cxt, error, keyValues); 1363 return gen.object(...keyValues); 1364 } 1365 function errorInstancePath({ errorPath }, { instancePath }) { 1366 const instPath = instancePath ? (0, codegen_1.str)`$errorPath}${(0, util_1.getErrorPath)(instancePath, util_1.Type.Str)}` : errorPath; 1367 return [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, instPath)]; 1368 } 1369 function errorSchemaPath({ keyword, it: { errSchemaPath } }, { schemaPath, parentSchema }) { 1370 let schPath = parentSchema ? errSchemaPath : (0, codegen_1.str)`$errSchemaPath}/$keyword}`; 1371 if (schemaPath) { 1372 schPath = (0, codegen_1.str)`$schPath}${(0, util_1.getErrorPath)(schemaPath, util_1.Type.Str)}`; 1373 } 1374 return [E.schemaPath, schPath]; 1375 } 1376 function extraErrorProps(cxt, { params, message }, keyValues) { 1377 const { keyword, data, schemaValue, it } = cxt; 1378 const { opts, propertyName, topSchemaRef, schemaPath } = it; 1379 keyValues.push([E.keyword, keyword], [E.params, typeof params == "function" ? params(cxt) : params || (0, codegen_1._)`{}`]); 1380 if (opts.messages) { 1381 keyValues.push([E.message, typeof message == "function" ? message(cxt) : message]); 1382 } 1383 if (opts.verbose) { 1384 keyValues.push([E.schema, schemaValue], [E.parentSchema, (0, codegen_1._)`$topSchemaRef}$schemaPath}`], [names_1.default.data, data]); 1385 } 1386 if (propertyName) 1387 keyValues.push([E.propertyName, propertyName]); 1388 } 1389 } 1390 }); 1391 1392 // node_modules/ajv/dist/compile/validate/boolSchema.js 1393 var require_boolSchema = __commonJS({ 1394 "node_modules/ajv/dist/compile/validate/boolSchema.js"(exports) { 1395 "use strict"; 1396 Object.defineProperty(exports, "__esModule", { value: true }); 1397 exports.boolOrEmptySchema = exports.topBoolOrEmptySchema = void 0; 1398 var errors_1 = require_errors(); 1399 var codegen_1 = require_codegen(); 1400 var names_1 = require_names(); 1401 var boolError = { 1402 message: "boolean schema is false" 1403 }; 1404 function topBoolOrEmptySchema(it) { 1405 const { gen, schema, validateName } = it; 1406 if (schema === false) { 1407 falseSchemaError(it, false); 1408 } else if (typeof schema == "object" && schema.$async === true) { 1409 gen.return(names_1.default.data); 1410 } else { 1411 gen.assign((0, codegen_1._)`$validateName}.errors`, null); 1412 gen.return(true); 1413 } 1414 } 1415 exports.topBoolOrEmptySchema = topBoolOrEmptySchema; 1416 function boolOrEmptySchema(it, valid) { 1417 const { gen, schema } = it; 1418 if (schema === false) { 1419 gen.var(valid, false); 1420 falseSchemaError(it); 1421 } else { 1422 gen.var(valid, true); 1423 } 1424 } 1425 exports.boolOrEmptySchema = boolOrEmptySchema; 1426 function falseSchemaError(it, overrideAllErrors) { 1427 const { gen, data } = it; 1428 const cxt = { 1429 gen, 1430 keyword: "false schema", 1431 data, 1432 schema: false, 1433 schemaCode: false, 1434 schemaValue: false, 1435 params: {}, 1436 it 1437 }; 1438 (0, errors_1.reportError)(cxt, boolError, void 0, overrideAllErrors); 1439 } 1440 } 1441 }); 1442 1443 // node_modules/ajv/dist/compile/rules.js 1444 var require_rules = __commonJS({ 1445 "node_modules/ajv/dist/compile/rules.js"(exports) { 1446 "use strict"; 1447 Object.defineProperty(exports, "__esModule", { value: true }); 1448 exports.getRules = exports.isJSONType = void 0; 1449 var _jsonTypes = ["string", "number", "integer", "boolean", "null", "object", "array"]; 1450 var jsonTypes = new Set(_jsonTypes); 1451 function isJSONType(x) { 1452 return typeof x == "string" && jsonTypes.has(x); 1453 } 1454 exports.isJSONType = isJSONType; 1455 function getRules() { 1456 const groups = { 1457 number: { type: "number", rules: [] }, 1458 string: { type: "string", rules: [] }, 1459 array: { type: "array", rules: [] }, 1460 object: { type: "object", rules: [] } 1461 }; 1462 return { 1463 types: { ...groups, integer: true, boolean: true, null: true }, 1464 rules: [{ rules: [] }, groups.number, groups.string, groups.array, groups.object], 1465 post: { rules: [] }, 1466 all: {}, 1467 keywords: {} 1468 }; 1469 } 1470 exports.getRules = getRules; 1471 } 1472 }); 1473 1474 // node_modules/ajv/dist/compile/validate/applicability.js 1475 var require_applicability = __commonJS({ 1476 "node_modules/ajv/dist/compile/validate/applicability.js"(exports) { 1477 "use strict"; 1478 Object.defineProperty(exports, "__esModule", { value: true }); 1479 exports.shouldUseRule = exports.shouldUseGroup = exports.schemaHasRulesForType = void 0; 1480 function schemaHasRulesForType({ schema, self }, type) { 1481 const group = self.RULES.types[type]; 1482 return group && group !== true && shouldUseGroup(schema, group); 1483 } 1484 exports.schemaHasRulesForType = schemaHasRulesForType; 1485 function shouldUseGroup(schema, group) { 1486 return group.rules.some((rule) => shouldUseRule(schema, rule)); 1487 } 1488 exports.shouldUseGroup = shouldUseGroup; 1489 function shouldUseRule(schema, rule) { 1490 var _a; 1491 return schema[rule.keyword] !== void 0 || ((_a = rule.definition.implements) === null || _a === void 0 ? void 0 : _a.some((kwd) => schema[kwd] !== void 0)); 1492 } 1493 exports.shouldUseRule = shouldUseRule; 1494 } 1495 }); 1496 1497 // node_modules/ajv/dist/compile/validate/dataType.js 1498 var require_dataType = __commonJS({ 1499 "node_modules/ajv/dist/compile/validate/dataType.js"(exports) { 1500 "use strict"; 1501 Object.defineProperty(exports, "__esModule", { value: true }); 1502 exports.reportTypeError = exports.checkDataTypes = exports.checkDataType = exports.coerceAndCheckDataType = exports.getJSONTypes = exports.getSchemaTypes = exports.DataType = void 0; 1503 var rules_1 = require_rules(); 1504 var applicability_1 = require_applicability(); 1505 var errors_1 = require_errors(); 1506 var codegen_1 = require_codegen(); 1507 var util_1 = require_util(); 1508 var DataType; 1509 (function(DataType2) { 1510 DataType2[DataType2["Correct"] = 0] = "Correct"; 1511 DataType2[DataType2["Wrong"] = 1] = "Wrong"; 1512 })(DataType || (exports.DataType = DataType = {})); 1513 function getSchemaTypes(schema) { 1514 const types = getJSONTypes(schema.type); 1515 const hasNull = types.includes("null"); 1516 if (hasNull) { 1517 if (schema.nullable === false) 1518 throw new Error("type: null contradicts nullable: false"); 1519 } else { 1520 if (!types.length && schema.nullable !== void 0) { 1521 throw new Error('"nullable" cannot be used without "type"'); 1522 } 1523 if (schema.nullable === true) 1524 types.push("null"); 1525 } 1526 return types; 1527 } 1528 exports.getSchemaTypes = getSchemaTypes; 1529 function getJSONTypes(ts) { 1530 const types = Array.isArray(ts) ? ts : ts ? [ts] : []; 1531 if (types.every(rules_1.isJSONType)) 1532 return types; 1533 throw new Error("type must be JSONType or JSONType[]: " + types.join(",")); 1534 } 1535 exports.getJSONTypes = getJSONTypes; 1536 function coerceAndCheckDataType(it, types) { 1537 const { gen, data, opts } = it; 1538 const coerceTo = coerceToTypes(types, opts.coerceTypes); 1539 const checkTypes = types.length > 0 && !(coerceTo.length === 0 && types.length === 1 && (0, applicability_1.schemaHasRulesForType)(it, types[0])); 1540 if (checkTypes) { 1541 const wrongType = checkDataTypes(types, data, opts.strictNumbers, DataType.Wrong); 1542 gen.if(wrongType, () => { 1543 if (coerceTo.length) 1544 coerceData(it, types, coerceTo); 1545 else 1546 reportTypeError(it); 1547 }); 1548 } 1549 return checkTypes; 1550 } 1551 exports.coerceAndCheckDataType = coerceAndCheckDataType; 1552 var COERCIBLE = /* @__PURE__ */ new Set(["string", "number", "integer", "boolean", "null"]); 1553 function coerceToTypes(types, coerceTypes) { 1554 return coerceTypes ? types.filter((t) => COERCIBLE.has(t) || coerceTypes === "array" && t === "array") : []; 1555 } 1556 function coerceData(it, types, coerceTo) { 1557 const { gen, data, opts } = it; 1558 const dataType = gen.let("dataType", (0, codegen_1._)`typeof $data}`); 1559 const coerced = gen.let("coerced", (0, codegen_1._)`undefined`); 1560 if (opts.coerceTypes === "array") { 1561 gen.if((0, codegen_1._)`$dataType} == 'object' && Array.isArray($data}) && $data}.length == 1`, () => gen.assign(data, (0, codegen_1._)`$data}[0]`).assign(dataType, (0, codegen_1._)`typeof $data}`).if(checkDataTypes(types, data, opts.strictNumbers), () => gen.assign(coerced, data))); 1562 } 1563 gen.if((0, codegen_1._)`$coerced} !== undefined`); 1564 for (const t of coerceTo) { 1565 if (COERCIBLE.has(t) || t === "array" && opts.coerceTypes === "array") { 1566 coerceSpecificType(t); 1567 } 1568 } 1569 gen.else(); 1570 reportTypeError(it); 1571 gen.endIf(); 1572 gen.if((0, codegen_1._)`$coerced} !== undefined`, () => { 1573 gen.assign(data, coerced); 1574 assignParentData(it, coerced); 1575 }); 1576 function coerceSpecificType(t) { 1577 switch (t) { 1578 case "string": 1579 gen.elseIf((0, codegen_1._)`$dataType} == "number" || $dataType} == "boolean"`).assign(coerced, (0, codegen_1._)`"" + $data}`).elseIf((0, codegen_1._)`$data} === null`).assign(coerced, (0, codegen_1._)`""`); 1580 return; 1581 case "number": 1582 gen.elseIf((0, codegen_1._)`$dataType} == "boolean" || $data} === null 1583 || ($dataType} == "string" && $data} && $data} == +$data})`).assign(coerced, (0, codegen_1._)`+$data}`); 1584 return; 1585 case "integer": 1586 gen.elseIf((0, codegen_1._)`$dataType} === "boolean" || $data} === null 1587 || ($dataType} === "string" && $data} && $data} == +$data} && !($data} % 1))`).assign(coerced, (0, codegen_1._)`+$data}`); 1588 return; 1589 case "boolean": 1590 gen.elseIf((0, codegen_1._)`$data} === "false" || $data} === 0 || $data} === null`).assign(coerced, false).elseIf((0, codegen_1._)`$data} === "true" || $data} === 1`).assign(coerced, true); 1591 return; 1592 case "null": 1593 gen.elseIf((0, codegen_1._)`$data} === "" || $data} === 0 || $data} === false`); 1594 gen.assign(coerced, null); 1595 return; 1596 case "array": 1597 gen.elseIf((0, codegen_1._)`$dataType} === "string" || $dataType} === "number" 1598 || $dataType} === "boolean" || $data} === null`).assign(coerced, (0, codegen_1._)`[$data}]`); 1599 } 1600 } 1601 } 1602 function assignParentData({ gen, parentData, parentDataProperty }, expr) { 1603 gen.if((0, codegen_1._)`$parentData} !== undefined`, () => gen.assign((0, codegen_1._)`$parentData}[$parentDataProperty}]`, expr)); 1604 } 1605 function checkDataType(dataType, data, strictNums, correct = DataType.Correct) { 1606 const EQ = correct === DataType.Correct ? codegen_1.operators.EQ : codegen_1.operators.NEQ; 1607 let cond; 1608 switch (dataType) { 1609 case "null": 1610 return (0, codegen_1._)`$data} $EQ} null`; 1611 case "array": 1612 cond = (0, codegen_1._)`Array.isArray($data})`; 1613 break; 1614 case "object": 1615 cond = (0, codegen_1._)`$data} && typeof $data} == "object" && !Array.isArray($data})`; 1616 break; 1617 case "integer": 1618 cond = numCond((0, codegen_1._)`!($data} % 1) && !isNaN($data})`); 1619 break; 1620 case "number": 1621 cond = numCond(); 1622 break; 1623 default: 1624 return (0, codegen_1._)`typeof $data} $EQ} $dataType}`; 1625 } 1626 return correct === DataType.Correct ? cond : (0, codegen_1.not)(cond); 1627 function numCond(_cond = codegen_1.nil) { 1628 return (0, codegen_1.and)((0, codegen_1._)`typeof $data} == "number"`, _cond, strictNums ? (0, codegen_1._)`isFinite($data})` : codegen_1.nil); 1629 } 1630 } 1631 exports.checkDataType = checkDataType; 1632 function checkDataTypes(dataTypes, data, strictNums, correct) { 1633 if (dataTypes.length === 1) { 1634 return checkDataType(dataTypes[0], data, strictNums, correct); 1635 } 1636 let cond; 1637 const types = (0, util_1.toHash)(dataTypes); 1638 if (types.array && types.object) { 1639 const notObj = (0, codegen_1._)`typeof $data} != "object"`; 1640 cond = types.null ? notObj : (0, codegen_1._)`!$data} || $notObj}`; 1641 delete types.null; 1642 delete types.array; 1643 delete types.object; 1644 } else { 1645 cond = codegen_1.nil; 1646 } 1647 if (types.number) 1648 delete types.integer; 1649 for (const t in types) 1650 cond = (0, codegen_1.and)(cond, checkDataType(t, data, strictNums, correct)); 1651 return cond; 1652 } 1653 exports.checkDataTypes = checkDataTypes; 1654 var typeError = { 1655 message: ({ schema }) => `must be $schema}`, 1656 params: ({ schema, schemaValue }) => typeof schema == "string" ? (0, codegen_1._)`{type: $schema}}` : (0, codegen_1._)`{type: $schemaValue}}` 1657 }; 1658 function reportTypeError(it) { 1659 const cxt = getTypeErrorContext(it); 1660 (0, errors_1.reportError)(cxt, typeError); 1661 } 1662 exports.reportTypeError = reportTypeError; 1663 function getTypeErrorContext(it) { 1664 const { gen, data, schema } = it; 1665 const schemaCode = (0, util_1.schemaRefOrVal)(it, schema, "type"); 1666 return { 1667 gen, 1668 keyword: "type", 1669 data, 1670 schema: schema.type, 1671 schemaCode, 1672 schemaValue: schemaCode, 1673 parentSchema: schema, 1674 params: {}, 1675 it 1676 }; 1677 } 1678 } 1679 }); 1680 1681 // node_modules/ajv/dist/compile/validate/defaults.js 1682 var require_defaults = __commonJS({ 1683 "node_modules/ajv/dist/compile/validate/defaults.js"(exports) { 1684 "use strict"; 1685 Object.defineProperty(exports, "__esModule", { value: true }); 1686 exports.assignDefaults = void 0; 1687 var codegen_1 = require_codegen(); 1688 var util_1 = require_util(); 1689 function assignDefaults(it, ty) { 1690 const { properties, items } = it.schema; 1691 if (ty === "object" && properties) { 1692 for (const key in properties) { 1693 assignDefault(it, key, properties[key].default); 1694 } 1695 } else if (ty === "array" && Array.isArray(items)) { 1696 items.forEach((sch, i) => assignDefault(it, i, sch.default)); 1697 } 1698 } 1699 exports.assignDefaults = assignDefaults; 1700 function assignDefault(it, prop, defaultValue) { 1701 const { gen, compositeRule, data, opts } = it; 1702 if (defaultValue === void 0) 1703 return; 1704 const childData = (0, codegen_1._)`$data}${(0, codegen_1.getProperty)(prop)}`; 1705 if (compositeRule) { 1706 (0, util_1.checkStrictMode)(it, `default is ignored for: $childData}`); 1707 return; 1708 } 1709 let condition = (0, codegen_1._)`$childData} === undefined`; 1710 if (opts.useDefaults === "empty") { 1711 condition = (0, codegen_1._)`$condition} || $childData} === null || $childData} === ""`; 1712 } 1713 gen.if(condition, (0, codegen_1._)`$childData} = ${(0, codegen_1.stringify)(defaultValue)}`); 1714 } 1715 } 1716 }); 1717 1718 // node_modules/ajv/dist/vocabularies/code.js 1719 var require_code2 = __commonJS({ 1720 "node_modules/ajv/dist/vocabularies/code.js"(exports) { 1721 "use strict"; 1722 Object.defineProperty(exports, "__esModule", { value: true }); 1723 exports.validateUnion = exports.validateArray = exports.usePattern = exports.callValidateCode = exports.schemaProperties = exports.allSchemaProperties = exports.noPropertyInData = exports.propertyInData = exports.isOwnProperty = exports.hasPropFunc = exports.reportMissingProp = exports.checkMissingProp = exports.checkReportMissingProp = void 0; 1724 var codegen_1 = require_codegen(); 1725 var util_1 = require_util(); 1726 var names_1 = require_names(); 1727 var util_2 = require_util(); 1728 function checkReportMissingProp(cxt, prop) { 1729 const { gen, data, it } = cxt; 1730 gen.if(noPropertyInData(gen, data, prop, it.opts.ownProperties), () => { 1731 cxt.setParams({ missingProperty: (0, codegen_1._)`$prop}` }, true); 1732 cxt.error(); 1733 }); 1734 } 1735 exports.checkReportMissingProp = checkReportMissingProp; 1736 function checkMissingProp({ gen, data, it: { opts } }, properties, missing) { 1737 return (0, codegen_1.or)(...properties.map((prop) => (0, codegen_1.and)(noPropertyInData(gen, data, prop, opts.ownProperties), (0, codegen_1._)`$missing} = $prop}`))); 1738 } 1739 exports.checkMissingProp = checkMissingProp; 1740 function reportMissingProp(cxt, missing) { 1741 cxt.setParams({ missingProperty: missing }, true); 1742 cxt.error(); 1743 } 1744 exports.reportMissingProp = reportMissingProp; 1745 function hasPropFunc(gen) { 1746 return gen.scopeValue("func", { 1747 // eslint-disable-next-line @typescript-eslint/unbound-method 1748 ref: Object.prototype.hasOwnProperty, 1749 code: (0, codegen_1._)`Object.prototype.hasOwnProperty` 1750 }); 1751 } 1752 exports.hasPropFunc = hasPropFunc; 1753 function isOwnProperty(gen, data, property) { 1754 return (0, codegen_1._)`$hasPropFunc(gen)}.call($data}, $property})`; 1755 } 1756 exports.isOwnProperty = isOwnProperty; 1757 function propertyInData(gen, data, property, ownProperties) { 1758 const cond = (0, codegen_1._)`$data}${(0, codegen_1.getProperty)(property)} !== undefined`; 1759 return ownProperties ? (0, codegen_1._)`$cond} && $isOwnProperty(gen, data, property)}` : cond; 1760 } 1761 exports.propertyInData = propertyInData; 1762 function noPropertyInData(gen, data, property, ownProperties) { 1763 const cond = (0, codegen_1._)`$data}${(0, codegen_1.getProperty)(property)} === undefined`; 1764 return ownProperties ? (0, codegen_1.or)(cond, (0, codegen_1.not)(isOwnProperty(gen, data, property))) : cond; 1765 } 1766 exports.noPropertyInData = noPropertyInData; 1767 function allSchemaProperties(schemaMap) { 1768 return schemaMap ? Object.keys(schemaMap).filter((p) => p !== "__proto__") : []; 1769 } 1770 exports.allSchemaProperties = allSchemaProperties; 1771 function schemaProperties(it, schemaMap) { 1772 return allSchemaProperties(schemaMap).filter((p) => !(0, util_1.alwaysValidSchema)(it, schemaMap[p])); 1773 } 1774 exports.schemaProperties = schemaProperties; 1775 function callValidateCode({ schemaCode, data, it: { gen, topSchemaRef, schemaPath, errorPath }, it }, func, context, passSchema) { 1776 const dataAndSchema = passSchema ? (0, codegen_1._)`$schemaCode}, $data}, $topSchemaRef}$schemaPath}` : data; 1777 const valCxt = [ 1778 [names_1.default.instancePath, (0, codegen_1.strConcat)(names_1.default.instancePath, errorPath)], 1779 [names_1.default.parentData, it.parentData], 1780 [names_1.default.parentDataProperty, it.parentDataProperty], 1781 [names_1.default.rootData, names_1.default.rootData] 1782 ]; 1783 if (it.opts.dynamicRef) 1784 valCxt.push([names_1.default.dynamicAnchors, names_1.default.dynamicAnchors]); 1785 const args = (0, codegen_1._)`$dataAndSchema}, $gen.object(...valCxt)}`; 1786 return context !== codegen_1.nil ? (0, codegen_1._)`$func}.call($context}, $args})` : (0, codegen_1._)`$func}($args})`; 1787 } 1788 exports.callValidateCode = callValidateCode; 1789 var newRegExp = (0, codegen_1._)`new RegExp`; 1790 function usePattern({ gen, it: { opts } }, pattern) { 1791 const u = opts.unicodeRegExp ? "u" : ""; 1792 const { regExp } = opts.code; 1793 const rx = regExp(pattern, u); 1794 return gen.scopeValue("pattern", { 1795 key: rx.toString(), 1796 ref: rx, 1797 code: (0, codegen_1._)`$regExp.code === "new RegExp" ? newRegExp : (0, util_2.useFunc)(gen, regExp)}($pattern}, $u})` 1798 }); 1799 } 1800 exports.usePattern = usePattern; 1801 function validateArray(cxt) { 1802 const { gen, data, keyword, it } = cxt; 1803 const valid = gen.name("valid"); 1804 if (it.allErrors) { 1805 const validArr = gen.let("valid", true); 1806 validateItems(() => gen.assign(validArr, false)); 1807 return validArr; 1808 } 1809 gen.var(valid, true); 1810 validateItems(() => gen.break()); 1811 return valid; 1812 function validateItems(notValid) { 1813 const len = gen.const("len", (0, codegen_1._)`$data}.length`); 1814 gen.forRange("i", 0, len, (i) => { 1815 cxt.subschema({ 1816 keyword, 1817 dataProp: i, 1818 dataPropType: util_1.Type.Num 1819 }, valid); 1820 gen.if((0, codegen_1.not)(valid), notValid); 1821 }); 1822 } 1823 } 1824 exports.validateArray = validateArray; 1825 function validateUnion(cxt) { 1826 const { gen, schema, keyword, it } = cxt; 1827 if (!Array.isArray(schema)) 1828 throw new Error("ajv implementation error"); 1829 const alwaysValid = schema.some((sch) => (0, util_1.alwaysValidSchema)(it, sch)); 1830 if (alwaysValid && !it.opts.unevaluated) 1831 return; 1832 const valid = gen.let("valid", false); 1833 const schValid = gen.name("_valid"); 1834 gen.block(() => schema.forEach((_sch, i) => { 1835 const schCxt = cxt.subschema({ 1836 keyword, 1837 schemaProp: i, 1838 compositeRule: true 1839 }, schValid); 1840 gen.assign(valid, (0, codegen_1._)`$valid} || $schValid}`); 1841 const merged = cxt.mergeValidEvaluated(schCxt, schValid); 1842 if (!merged) 1843 gen.if((0, codegen_1.not)(valid)); 1844 })); 1845 cxt.result(valid, () => cxt.reset(), () => cxt.error(true)); 1846 } 1847 exports.validateUnion = validateUnion; 1848 } 1849 }); 1850 1851 // node_modules/ajv/dist/compile/validate/keyword.js 1852 var require_keyword = __commonJS({ 1853 "node_modules/ajv/dist/compile/validate/keyword.js"(exports) { 1854 "use strict"; 1855 Object.defineProperty(exports, "__esModule", { value: true }); 1856 exports.validateKeywordUsage = exports.validSchemaType = exports.funcKeywordCode = exports.macroKeywordCode = void 0; 1857 var codegen_1 = require_codegen(); 1858 var names_1 = require_names(); 1859 var code_1 = require_code2(); 1860 var errors_1 = require_errors(); 1861 function macroKeywordCode(cxt, def) { 1862 const { gen, keyword, schema, parentSchema, it } = cxt; 1863 const macroSchema = def.macro.call(it.self, schema, parentSchema, it); 1864 const schemaRef = useKeyword(gen, keyword, macroSchema); 1865 if (it.opts.validateSchema !== false) 1866 it.self.validateSchema(macroSchema, true); 1867 const valid = gen.name("valid"); 1868 cxt.subschema({ 1869 schema: macroSchema, 1870 schemaPath: codegen_1.nil, 1871 errSchemaPath: `$it.errSchemaPath}/$keyword}`, 1872 topSchemaRef: schemaRef, 1873 compositeRule: true 1874 }, valid); 1875 cxt.pass(valid, () => cxt.error(true)); 1876 } 1877 exports.macroKeywordCode = macroKeywordCode; 1878 function funcKeywordCode(cxt, def) { 1879 var _a; 1880 const { gen, keyword, schema, parentSchema, $data, it } = cxt; 1881 checkAsyncKeyword(it, def); 1882 const validate = !$data && def.compile ? def.compile.call(it.self, schema, parentSchema, it) : def.validate; 1883 const validateRef = useKeyword(gen, keyword, validate); 1884 const valid = gen.let("valid"); 1885 cxt.block$data(valid, validateKeyword); 1886 cxt.ok((_a = def.valid) !== null && _a !== void 0 ? _a : valid); 1887 function validateKeyword() { 1888 if (def.errors === false) { 1889 assignValid(); 1890 if (def.modifying) 1891 modifyData(cxt); 1892 reportErrs(() => cxt.error()); 1893 } else { 1894 const ruleErrs = def.async ? validateAsync() : validateSync(); 1895 if (def.modifying) 1896 modifyData(cxt); 1897 reportErrs(() => addErrs(cxt, ruleErrs)); 1898 } 1899 } 1900 function validateAsync() { 1901 const ruleErrs = gen.let("ruleErrs", null); 1902 gen.try(() => assignValid((0, codegen_1._)`await `), (e) => gen.assign(valid, false).if((0, codegen_1._)`$e} instanceof $it.ValidationError}`, () => gen.assign(ruleErrs, (0, codegen_1._)`$e}.errors`), () => gen.throw(e))); 1903 return ruleErrs; 1904 } 1905 function validateSync() { 1906 const validateErrs = (0, codegen_1._)`$validateRef}.errors`; 1907 gen.assign(validateErrs, null); 1908 assignValid(codegen_1.nil); 1909 return validateErrs; 1910 } 1911 function assignValid(_await = def.async ? (0, codegen_1._)`await ` : codegen_1.nil) { 1912 const passCxt = it.opts.passContext ? names_1.default.this : names_1.default.self; 1913 const passSchema = !("compile" in def && !$data || def.schema === false); 1914 gen.assign(valid, (0, codegen_1._)`$_await}${(0, code_1.callValidateCode)(cxt, validateRef, passCxt, passSchema)}`, def.modifying); 1915 } 1916 function reportErrs(errors) { 1917 var _a2; 1918 gen.if((0, codegen_1.not)((_a2 = def.valid) !== null && _a2 !== void 0 ? _a2 : valid), errors); 1919 } 1920 } 1921 exports.funcKeywordCode = funcKeywordCode; 1922 function modifyData(cxt) { 1923 const { gen, data, it } = cxt; 1924 gen.if(it.parentData, () => gen.assign(data, (0, codegen_1._)`$it.parentData}[$it.parentDataProperty}]`)); 1925 } 1926 function addErrs(cxt, errs) { 1927 const { gen } = cxt; 1928 gen.if((0, codegen_1._)`Array.isArray($errs})`, () => { 1929 gen.assign(names_1.default.vErrors, (0, codegen_1._)`$names_1.default.vErrors} === null ? $errs} : $names_1.default.vErrors}.concat($errs})`).assign(names_1.default.errors, (0, codegen_1._)`$names_1.default.vErrors}.length`); 1930 (0, errors_1.extendErrors)(cxt); 1931 }, () => cxt.error()); 1932 } 1933 function checkAsyncKeyword({ schemaEnv }, def) { 1934 if (def.async && !schemaEnv.$async) 1935 throw new Error("async keyword in sync schema"); 1936 } 1937 function useKeyword(gen, keyword, result) { 1938 if (result === void 0) 1939 throw new Error(`keyword "$keyword}" failed to compile`); 1940 return gen.scopeValue("keyword", typeof result == "function" ? { ref: result } : { ref: result, code: (0, codegen_1.stringify)(result) }); 1941 } 1942 function validSchemaType(schema, schemaType, allowUndefined = false) { 1943 return !schemaType.length || schemaType.some((st) => st === "array" ? Array.isArray(schema) : st === "object" ? schema && typeof schema == "object" && !Array.isArray(schema) : typeof schema == st || allowUndefined && typeof schema == "undefined"); 1944 } 1945 exports.validSchemaType = validSchemaType; 1946 function validateKeywordUsage({ schema, opts, self, errSchemaPath }, def, keyword) { 1947 if (Array.isArray(def.keyword) ? !def.keyword.includes(keyword) : def.keyword !== keyword) { 1948 throw new Error("ajv implementation error"); 1949 } 1950 const deps = def.dependencies; 1951 if (deps === null || deps === void 0 ? void 0 : deps.some((kwd) => !Object.prototype.hasOwnProperty.call(schema, kwd))) { 1952 throw new Error(`parent schema must have dependencies of $keyword}: $deps.join(",")}`); 1953 } 1954 if (def.validateSchema) { 1955 const valid = def.validateSchema(schema[keyword]); 1956 if (!valid) { 1957 const msg = `keyword "$keyword}" value is invalid at path "$errSchemaPath}": ` + self.errorsText(def.validateSchema.errors); 1958 if (opts.validateSchema === "log") 1959 self.logger.error(msg); 1960 else 1961 throw new Error(msg); 1962 } 1963 } 1964 } 1965 exports.validateKeywordUsage = validateKeywordUsage; 1966 } 1967 }); 1968 1969 // node_modules/ajv/dist/compile/validate/subschema.js 1970 var require_subschema = __commonJS({ 1971 "node_modules/ajv/dist/compile/validate/subschema.js"(exports) { 1972 "use strict"; 1973 Object.defineProperty(exports, "__esModule", { value: true }); 1974 exports.extendSubschemaMode = exports.extendSubschemaData = exports.getSubschema = void 0; 1975 var codegen_1 = require_codegen(); 1976 var util_1 = require_util(); 1977 function getSubschema(it, { keyword, schemaProp, schema, schemaPath, errSchemaPath, topSchemaRef }) { 1978 if (keyword !== void 0 && schema !== void 0) { 1979 throw new Error('both "keyword" and "schema" passed, only one allowed'); 1980 } 1981 if (keyword !== void 0) { 1982 const sch = it.schema[keyword]; 1983 return schemaProp === void 0 ? { 1984 schema: sch, 1985 schemaPath: (0, codegen_1._)`$it.schemaPath}${(0, codegen_1.getProperty)(keyword)}`, 1986 errSchemaPath: `$it.errSchemaPath}/$keyword}` 1987 } : { 1988 schema: sch[schemaProp], 1989 schemaPath: (0, codegen_1._)`$it.schemaPath}${(0, codegen_1.getProperty)(keyword)}${(0, codegen_1.getProperty)(schemaProp)}`, 1990 errSchemaPath: `$it.errSchemaPath}/$keyword}/${(0, util_1.escapeFragment)(schemaProp)}` 1991 }; 1992 } 1993 if (schema !== void 0) { 1994 if (schemaPath === void 0 || errSchemaPath === void 0 || topSchemaRef === void 0) { 1995 throw new Error('"schemaPath", "errSchemaPath" and "topSchemaRef" are required with "schema"'); 1996 } 1997 return { 1998 schema, 1999 schemaPath, 2000 topSchemaRef, 2001 errSchemaPath 2002 }; 2003 } 2004 throw new Error('either "keyword" or "schema" must be passed'); 2005 } 2006 exports.getSubschema = getSubschema; 2007 function extendSubschemaData(subschema, it, { dataProp, dataPropType: dpType, data, dataTypes, propertyName }) { 2008 if (data !== void 0 && dataProp !== void 0) { 2009 throw new Error('both "data" and "dataProp" passed, only one allowed'); 2010 } 2011 const { gen } = it; 2012 if (dataProp !== void 0) { 2013 const { errorPath, dataPathArr, opts } = it; 2014 const nextData = gen.let("data", (0, codegen_1._)`$it.data}${(0, codegen_1.getProperty)(dataProp)}`, true); 2015 dataContextProps(nextData); 2016 subschema.errorPath = (0, codegen_1.str)`$errorPath}${(0, util_1.getErrorPath)(dataProp, dpType, opts.jsPropertySyntax)}`; 2017 subschema.parentDataProperty = (0, codegen_1._)`$dataProp}`; 2018 subschema.dataPathArr = [...dataPathArr, subschema.parentDataProperty]; 2019 } 2020 if (data !== void 0) { 2021 const nextData = data instanceof codegen_1.Name ? data : gen.let("data", data, true); 2022 dataContextProps(nextData); 2023 if (propertyName !== void 0) 2024 subschema.propertyName = propertyName; 2025 } 2026 if (dataTypes) 2027 subschema.dataTypes = dataTypes; 2028 function dataContextProps(_nextData) { 2029 subschema.data = _nextData; 2030 subschema.dataLevel = it.dataLevel + 1; 2031 subschema.dataTypes = []; 2032 it.definedProperties = /* @__PURE__ */ new Set(); 2033 subschema.parentData = it.data; 2034 subschema.dataNames = [...it.dataNames, _nextData]; 2035 } 2036 } 2037 exports.extendSubschemaData = extendSubschemaData; 2038 function extendSubschemaMode(subschema, { jtdDiscriminator, jtdMetadata, compositeRule, createErrors, allErrors }) { 2039 if (compositeRule !== void 0) 2040 subschema.compositeRule = compositeRule; 2041 if (createErrors !== void 0) 2042 subschema.createErrors = createErrors; 2043 if (allErrors !== void 0) 2044 subschema.allErrors = allErrors; 2045 subschema.jtdDiscriminator = jtdDiscriminator; 2046 subschema.jtdMetadata = jtdMetadata; 2047 } 2048 exports.extendSubschemaMode = extendSubschemaMode; 2049 } 2050 }); 2051 2052 // node_modules/fast-deep-equal/index.js 2053 var require_fast_deep_equal = __commonJS({ 2054 "node_modules/fast-deep-equal/index.js"(exports, module) { 2055 "use strict"; 2056 module.exports = function equal(a, b) { 2057 if (a === b) return true; 2058 if (a && b && typeof a == "object" && typeof b == "object") { 2059 if (a.constructor !== b.constructor) return false; 2060 var length, i, keys; 2061 if (Array.isArray(a)) { 2062 length = a.length; 2063 if (length != b.length) return false; 2064 for (i = length; i-- !== 0; ) 2065 if (!equal(a[i], b[i])) return false; 2066 return true; 2067 } 2068 if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags; 2069 if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf(); 2070 if (a.toString !== Object.prototype.toString) return a.toString() === b.toString(); 2071 keys = Object.keys(a); 2072 length = keys.length; 2073 if (length !== Object.keys(b).length) return false; 2074 for (i = length; i-- !== 0; ) 2075 if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false; 2076 for (i = length; i-- !== 0; ) { 2077 var key = keys[i]; 2078 if (!equal(a[key], b[key])) return false; 2079 } 2080 return true; 2081 } 2082 return a !== a && b !== b; 2083 }; 2084 } 2085 }); 2086 2087 // node_modules/ajv/node_modules/json-schema-traverse/index.js 2088 var require_json_schema_traverse = __commonJS({ 2089 "node_modules/ajv/node_modules/json-schema-traverse/index.js"(exports, module) { 2090 "use strict"; 2091 var traverse = module.exports = function(schema, opts, cb) { 2092 if (typeof opts == "function") { 2093 cb = opts; 2094 opts = {}; 2095 } 2096 cb = opts.cb || cb; 2097 var pre = typeof cb == "function" ? cb : cb.pre || function() { 2098 }; 2099 var post = cb.post || function() { 2100 }; 2101 _traverse(opts, pre, post, schema, "", schema); 2102 }; 2103 traverse.keywords = { 2104 additionalItems: true, 2105 items: true, 2106 contains: true, 2107 additionalProperties: true, 2108 propertyNames: true, 2109 not: true, 2110 if: true, 2111 then: true, 2112 else: true 2113 }; 2114 traverse.arrayKeywords = { 2115 items: true, 2116 allOf: true, 2117 anyOf: true, 2118 oneOf: true 2119 }; 2120 traverse.propsKeywords = { 2121 $defs: true, 2122 definitions: true, 2123 properties: true, 2124 patternProperties: true, 2125 dependencies: true 2126 }; 2127 traverse.skipKeywords = { 2128 default: true, 2129 enum: true, 2130 const: true, 2131 required: true, 2132 maximum: true, 2133 minimum: true, 2134 exclusiveMaximum: true, 2135 exclusiveMinimum: true, 2136 multipleOf: true, 2137 maxLength: true, 2138 minLength: true, 2139 pattern: true, 2140 format: true, 2141 maxItems: true, 2142 minItems: true, 2143 uniqueItems: true, 2144 maxProperties: true, 2145 minProperties: true 2146 }; 2147 function _traverse(opts, pre, post, schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex) { 2148 if (schema && typeof schema == "object" && !Array.isArray(schema)) { 2149 pre(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); 2150 for (var key in schema) { 2151 var sch = schema[key]; 2152 if (Array.isArray(sch)) { 2153 if (key in traverse.arrayKeywords) { 2154 for (var i = 0; i < sch.length; i++) 2155 _traverse(opts, pre, post, sch[i], jsonPtr + "/" + key + "/" + i, rootSchema, jsonPtr, key, schema, i); 2156 } 2157 } else if (key in traverse.propsKeywords) { 2158 if (sch && typeof sch == "object") { 2159 for (var prop in sch) 2160 _traverse(opts, pre, post, sch[prop], jsonPtr + "/" + key + "/" + escapeJsonPtr(prop), rootSchema, jsonPtr, key, schema, prop); 2161 } 2162 } else if (key in traverse.keywords || opts.allKeys && !(key in traverse.skipKeywords)) { 2163 _traverse(opts, pre, post, sch, jsonPtr + "/" + key, rootSchema, jsonPtr, key, schema); 2164 } 2165 } 2166 post(schema, jsonPtr, rootSchema, parentJsonPtr, parentKeyword, parentSchema, keyIndex); 2167 } 2168 } 2169 function escapeJsonPtr(str) { 2170 return str.replace(/~/g, "~0").replace(/\//g, "~1"); 2171 } 2172 } 2173 }); 2174 2175 // node_modules/ajv/dist/compile/resolve.js 2176 var require_resolve = __commonJS({ 2177 "node_modules/ajv/dist/compile/resolve.js"(exports) { 2178 "use strict"; 2179 Object.defineProperty(exports, "__esModule", { value: true }); 2180 exports.getSchemaRefs = exports.resolveUrl = exports.normalizeId = exports._getFullPath = exports.getFullPath = exports.inlineRef = void 0; 2181 var util_1 = require_util(); 2182 var equal = require_fast_deep_equal(); 2183 var traverse = require_json_schema_traverse(); 2184 var SIMPLE_INLINED = /* @__PURE__ */ new Set([ 2185 "type", 2186 "format", 2187 "pattern", 2188 "maxLength", 2189 "minLength", 2190 "maxProperties", 2191 "minProperties", 2192 "maxItems", 2193 "minItems", 2194 "maximum", 2195 "minimum", 2196 "uniqueItems", 2197 "multipleOf", 2198 "required", 2199 "enum", 2200 "const" 2201 ]); 2202 function inlineRef(schema, limit = true) { 2203 if (typeof schema == "boolean") 2204 return true; 2205 if (limit === true) 2206 return !hasRef(schema); 2207 if (!limit) 2208 return false; 2209 return countKeys(schema) <= limit; 2210 } 2211 exports.inlineRef = inlineRef; 2212 var REF_KEYWORDS = /* @__PURE__ */ new Set([ 2213 "$ref", 2214 "$recursiveRef", 2215 "$recursiveAnchor", 2216 "$dynamicRef", 2217 "$dynamicAnchor" 2218 ]); 2219 function hasRef(schema) { 2220 for (const key in schema) { 2221 if (REF_KEYWORDS.has(key)) 2222 return true; 2223 const sch = schema[key]; 2224 if (Array.isArray(sch) && sch.some(hasRef)) 2225 return true; 2226 if (typeof sch == "object" && hasRef(sch)) 2227 return true; 2228 } 2229 return false; 2230 } 2231 function countKeys(schema) { 2232 let count = 0; 2233 for (const key in schema) { 2234 if (key === "$ref") 2235 return Infinity; 2236 count++; 2237 if (SIMPLE_INLINED.has(key)) 2238 continue; 2239 if (typeof schema[key] == "object") { 2240 (0, util_1.eachItem)(schema[key], (sch) => count += countKeys(sch)); 2241 } 2242 if (count === Infinity) 2243 return Infinity; 2244 } 2245 return count; 2246 } 2247 function getFullPath(resolver, id = "", normalize) { 2248 if (normalize !== false) 2249 id = normalizeId(id); 2250 const p = resolver.parse(id); 2251 return _getFullPath(resolver, p); 2252 } 2253 exports.getFullPath = getFullPath; 2254 function _getFullPath(resolver, p) { 2255 const serialized = resolver.serialize(p); 2256 return serialized.split("#")[0] + "#"; 2257 } 2258 exports._getFullPath = _getFullPath; 2259 var TRAILING_SLASH_HASH = /#\/?$/; 2260 function normalizeId(id) { 2261 return id ? id.replace(TRAILING_SLASH_HASH, "") : ""; 2262 } 2263 exports.normalizeId = normalizeId; 2264 function resolveUrl(resolver, baseId, id) { 2265 id = normalizeId(id); 2266 return resolver.resolve(baseId, id); 2267 } 2268 exports.resolveUrl = resolveUrl; 2269 var ANCHOR = /^[a-z_][-a-z0-9._]*$/i; 2270 function getSchemaRefs(schema, baseId) { 2271 if (typeof schema == "boolean") 2272 return {}; 2273 const { schemaId, uriResolver } = this.opts; 2274 const schId = normalizeId(schema[schemaId] || baseId); 2275 const baseIds = { "": schId }; 2276 const pathPrefix = getFullPath(uriResolver, schId, false); 2277 const localRefs = {}; 2278 const schemaRefs = /* @__PURE__ */ new Set(); 2279 traverse(schema, { allKeys: true }, (sch, jsonPtr, _, parentJsonPtr) => { 2280 if (parentJsonPtr === void 0) 2281 return; 2282 const fullPath = pathPrefix + jsonPtr; 2283 let innerBaseId = baseIds[parentJsonPtr]; 2284 if (typeof sch[schemaId] == "string") 2285 innerBaseId = addRef.call(this, sch[schemaId]); 2286 addAnchor.call(this, sch.$anchor); 2287 addAnchor.call(this, sch.$dynamicAnchor); 2288 baseIds[jsonPtr] = innerBaseId; 2289 function addRef(ref) { 2290 const _resolve = this.opts.uriResolver.resolve; 2291 ref = normalizeId(innerBaseId ? _resolve(innerBaseId, ref) : ref); 2292 if (schemaRefs.has(ref)) 2293 throw ambiguos(ref); 2294 schemaRefs.add(ref); 2295 let schOrRef = this.refs[ref]; 2296 if (typeof schOrRef == "string") 2297 schOrRef = this.refs[schOrRef]; 2298 if (typeof schOrRef == "object") { 2299 checkAmbiguosRef(sch, schOrRef.schema, ref); 2300 } else if (ref !== normalizeId(fullPath)) { 2301 if (ref[0] === "#") { 2302 checkAmbiguosRef(sch, localRefs[ref], ref); 2303 localRefs[ref] = sch; 2304 } else { 2305 this.refs[ref] = fullPath; 2306 } 2307 } 2308 return ref; 2309 } 2310 function addAnchor(anchor) { 2311 if (typeof anchor == "string") { 2312 if (!ANCHOR.test(anchor)) 2313 throw new Error(`invalid anchor "$anchor}"`); 2314 addRef.call(this, `#$anchor}`); 2315 } 2316 } 2317 }); 2318 return localRefs; 2319 function checkAmbiguosRef(sch1, sch2, ref) { 2320 if (sch2 !== void 0 && !equal(sch1, sch2)) 2321 throw ambiguos(ref); 2322 } 2323 function ambiguos(ref) { 2324 return new Error(`reference "$ref}" resolves to more than one schema`); 2325 } 2326 } 2327 exports.getSchemaRefs = getSchemaRefs; 2328 } 2329 }); 2330 2331 // node_modules/ajv/dist/compile/validate/index.js 2332 var require_validate = __commonJS({ 2333 "node_modules/ajv/dist/compile/validate/index.js"(exports) { 2334 "use strict"; 2335 Object.defineProperty(exports, "__esModule", { value: true }); 2336 exports.getData = exports.KeywordCxt = exports.validateFunctionCode = void 0; 2337 var boolSchema_1 = require_boolSchema(); 2338 var dataType_1 = require_dataType(); 2339 var applicability_1 = require_applicability(); 2340 var dataType_2 = require_dataType(); 2341 var defaults_1 = require_defaults(); 2342 var keyword_1 = require_keyword(); 2343 var subschema_1 = require_subschema(); 2344 var codegen_1 = require_codegen(); 2345 var names_1 = require_names(); 2346 var resolve_1 = require_resolve(); 2347 var util_1 = require_util(); 2348 var errors_1 = require_errors(); 2349 function validateFunctionCode(it) { 2350 if (isSchemaObj(it)) { 2351 checkKeywords(it); 2352 if (schemaCxtHasRules(it)) { 2353 topSchemaObjCode(it); 2354 return; 2355 } 2356 } 2357 validateFunction(it, () => (0, boolSchema_1.topBoolOrEmptySchema)(it)); 2358 } 2359 exports.validateFunctionCode = validateFunctionCode; 2360 function validateFunction({ gen, validateName, schema, schemaEnv, opts }, body) { 2361 if (opts.code.es5) { 2362 gen.func(validateName, (0, codegen_1._)`$names_1.default.data}, $names_1.default.valCxt}`, schemaEnv.$async, () => { 2363 gen.code((0, codegen_1._)`"use strict"; $funcSourceUrl(schema, opts)}`); 2364 destructureValCxtES5(gen, opts); 2365 gen.code(body); 2366 }); 2367 } else { 2368 gen.func(validateName, (0, codegen_1._)`$names_1.default.data}, $destructureValCxt(opts)}`, schemaEnv.$async, () => gen.code(funcSourceUrl(schema, opts)).code(body)); 2369 } 2370 } 2371 function destructureValCxt(opts) { 2372 return (0, codegen_1._)`{$names_1.default.instancePath}="", $names_1.default.parentData}, $names_1.default.parentDataProperty}, $names_1.default.rootData}=$names_1.default.data}$opts.dynamicRef ? (0, codegen_1._)`, $names_1.default.dynamicAnchors}={}` : codegen_1.nil}}={}`; 2373 } 2374 function destructureValCxtES5(gen, opts) { 2375 gen.if(names_1.default.valCxt, () => { 2376 gen.var(names_1.default.instancePath, (0, codegen_1._)`$names_1.default.valCxt}.$names_1.default.instancePath}`); 2377 gen.var(names_1.default.parentData, (0, codegen_1._)`$names_1.default.valCxt}.$names_1.default.parentData}`); 2378 gen.var(names_1.default.parentDataProperty, (0, codegen_1._)`$names_1.default.valCxt}.$names_1.default.parentDataProperty}`); 2379 gen.var(names_1.default.rootData, (0, codegen_1._)`$names_1.default.valCxt}.$names_1.default.rootData}`); 2380 if (opts.dynamicRef) 2381 gen.var(names_1.default.dynamicAnchors, (0, codegen_1._)`$names_1.default.valCxt}.$names_1.default.dynamicAnchors}`); 2382 }, () => { 2383 gen.var(names_1.default.instancePath, (0, codegen_1._)`""`); 2384 gen.var(names_1.default.parentData, (0, codegen_1._)`undefined`); 2385 gen.var(names_1.default.parentDataProperty, (0, codegen_1._)`undefined`); 2386 gen.var(names_1.default.rootData, names_1.default.data); 2387 if (opts.dynamicRef) 2388 gen.var(names_1.default.dynamicAnchors, (0, codegen_1._)`{}`); 2389 }); 2390 } 2391 function topSchemaObjCode(it) { 2392 const { schema, opts, gen } = it; 2393 validateFunction(it, () => { 2394 if (opts.$comment && schema.$comment) 2395 commentKeyword(it); 2396 checkNoDefault(it); 2397 gen.let(names_1.default.vErrors, null); 2398 gen.let(names_1.default.errors, 0); 2399 if (opts.unevaluated) 2400 resetEvaluated(it); 2401 typeAndKeywords(it); 2402 returnResults(it); 2403 }); 2404 return; 2405 } 2406 function resetEvaluated(it) { 2407 const { gen, validateName } = it; 2408 it.evaluated = gen.const("evaluated", (0, codegen_1._)`$validateName}.evaluated`); 2409 gen.if((0, codegen_1._)`$it.evaluated}.dynamicProps`, () => gen.assign((0, codegen_1._)`$it.evaluated}.props`, (0, codegen_1._)`undefined`)); 2410 gen.if((0, codegen_1._)`$it.evaluated}.dynamicItems`, () => gen.assign((0, codegen_1._)`$it.evaluated}.items`, (0, codegen_1._)`undefined`)); 2411 } 2412 function funcSourceUrl(schema, opts) { 2413 const schId = typeof schema == "object" && schema[opts.schemaId]; 2414 return schId && (opts.code.source || opts.code.process) ? (0, codegen_1._)`/*# sourceURL=${schId} */` : codegen_1.nil; 2415 } 2416 function subschemaCode(it, valid) { 2417 if (isSchemaObj(it)) { 2418 checkKeywords(it); 2419 if (schemaCxtHasRules(it)) { 2420 subSchemaObjCode(it, valid); 2421 return; 2422 } 2423 } 2424 (0, boolSchema_1.boolOrEmptySchema)(it, valid); 2425 } 2426 function schemaCxtHasRules({ schema, self }) { 2427 if (typeof schema == "boolean") 2428 return !schema; 2429 for (const key in schema) 2430 if (self.RULES.all[key]) 2431 return true; 2432 return false; 2433 } 2434 function isSchemaObj(it) { 2435 return typeof it.schema != "boolean"; 2436 } 2437 function subSchemaObjCode(it, valid) { 2438 const { schema, gen, opts } = it; 2439 if (opts.$comment && schema.$comment) 2440 commentKeyword(it); 2441 updateContext(it); 2442 checkAsyncSchema(it); 2443 const errsCount = gen.const("_errs", names_1.default.errors); 2444 typeAndKeywords(it, errsCount); 2445 gen.var(valid, (0, codegen_1._)`$errsCount} === $names_1.default.errors}`); 2446 } 2447 function checkKeywords(it) { 2448 (0, util_1.checkUnknownRules)(it); 2449 checkRefsAndKeywords(it); 2450 } 2451 function typeAndKeywords(it, errsCount) { 2452 if (it.opts.jtd) 2453 return schemaKeywords(it, [], false, errsCount); 2454 const types = (0, dataType_1.getSchemaTypes)(it.schema); 2455 const checkedTypes = (0, dataType_1.coerceAndCheckDataType)(it, types); 2456 schemaKeywords(it, types, !checkedTypes, errsCount); 2457 } 2458 function checkRefsAndKeywords(it) { 2459 const { schema, errSchemaPath, opts, self } = it; 2460 if (schema.$ref && opts.ignoreKeywordsWithRef && (0, util_1.schemaHasRulesButRef)(schema, self.RULES)) { 2461 self.logger.warn(`$ref: keywords ignored in schema at path "$errSchemaPath}"`); 2462 } 2463 } 2464 function checkNoDefault(it) { 2465 const { schema, opts } = it; 2466 if (schema.default !== void 0 && opts.useDefaults && opts.strictSchema) { 2467 (0, util_1.checkStrictMode)(it, "default is ignored in the schema root"); 2468 } 2469 } 2470 function updateContext(it) { 2471 const schId = it.schema[it.opts.schemaId]; 2472 if (schId) 2473 it.baseId = (0, resolve_1.resolveUrl)(it.opts.uriResolver, it.baseId, schId); 2474 } 2475 function checkAsyncSchema(it) { 2476 if (it.schema.$async && !it.schemaEnv.$async) 2477 throw new Error("async schema in sync schema"); 2478 } 2479 function commentKeyword({ gen, schemaEnv, schema, errSchemaPath, opts }) { 2480 const msg = schema.$comment; 2481 if (opts.$comment === true) { 2482 gen.code((0, codegen_1._)`$names_1.default.self}.logger.log($msg})`); 2483 } else if (typeof opts.$comment == "function") { 2484 const schemaPath = (0, codegen_1.str)`$errSchemaPath}/$comment`; 2485 const rootName = gen.scopeValue("root", { ref: schemaEnv.root }); 2486 gen.code((0, codegen_1._)`$names_1.default.self}.opts.$comment($msg}, $schemaPath}, $rootName}.schema)`); 2487 } 2488 } 2489 function returnResults(it) { 2490 const { gen, schemaEnv, validateName, ValidationError, opts } = it; 2491 if (schemaEnv.$async) { 2492 gen.if((0, codegen_1._)`$names_1.default.errors} === 0`, () => gen.return(names_1.default.data), () => gen.throw((0, codegen_1._)`new $ValidationError}($names_1.default.vErrors})`)); 2493 } else { 2494 gen.assign((0, codegen_1._)`$validateName}.errors`, names_1.default.vErrors); 2495 if (opts.unevaluated) 2496 assignEvaluated(it); 2497 gen.return((0, codegen_1._)`$names_1.default.errors} === 0`); 2498 } 2499 } 2500 function assignEvaluated({ gen, evaluated, props, items }) { 2501 if (props instanceof codegen_1.Name) 2502 gen.assign((0, codegen_1._)`$evaluated}.props`, props); 2503 if (items instanceof codegen_1.Name) 2504 gen.assign((0, codegen_1._)`$evaluated}.items`, items); 2505 } 2506 function schemaKeywords(it, types, typeErrors, errsCount) { 2507 const { gen, schema, data, allErrors, opts, self } = it; 2508 const { RULES } = self; 2509 if (schema.$ref && (opts.ignoreKeywordsWithRef || !(0, util_1.schemaHasRulesButRef)(schema, RULES))) { 2510 gen.block(() => keywordCode(it, "$ref", RULES.all.$ref.definition)); 2511 return; 2512 } 2513 if (!opts.jtd) 2514 checkStrictTypes(it, types); 2515 gen.block(() => { 2516 for (const group of RULES.rules) 2517 groupKeywords(group); 2518 groupKeywords(RULES.post); 2519 }); 2520 function groupKeywords(group) { 2521 if (!(0, applicability_1.shouldUseGroup)(schema, group)) 2522 return; 2523 if (group.type) { 2524 gen.if((0, dataType_2.checkDataType)(group.type, data, opts.strictNumbers)); 2525 iterateKeywords(it, group); 2526 if (types.length === 1 && types[0] === group.type && typeErrors) { 2527 gen.else(); 2528 (0, dataType_2.reportTypeError)(it); 2529 } 2530 gen.endIf(); 2531 } else { 2532 iterateKeywords(it, group); 2533 } 2534 if (!allErrors) 2535 gen.if((0, codegen_1._)`$names_1.default.errors} === $errsCount || 0}`); 2536 } 2537 } 2538 function iterateKeywords(it, group) { 2539 const { gen, schema, opts: { useDefaults } } = it; 2540 if (useDefaults) 2541 (0, defaults_1.assignDefaults)(it, group.type); 2542 gen.block(() => { 2543 for (const rule of group.rules) { 2544 if ((0, applicability_1.shouldUseRule)(schema, rule)) { 2545 keywordCode(it, rule.keyword, rule.definition, group.type); 2546 } 2547 } 2548 }); 2549 } 2550 function checkStrictTypes(it, types) { 2551 if (it.schemaEnv.meta || !it.opts.strictTypes) 2552 return; 2553 checkContextTypes(it, types); 2554 if (!it.opts.allowUnionTypes) 2555 checkMultipleTypes(it, types); 2556 checkKeywordTypes(it, it.dataTypes); 2557 } 2558 function checkContextTypes(it, types) { 2559 if (!types.length) 2560 return; 2561 if (!it.dataTypes.length) { 2562 it.dataTypes = types; 2563 return; 2564 } 2565 types.forEach((t) => { 2566 if (!includesType(it.dataTypes, t)) { 2567 strictTypesError(it, `type "$t}" not allowed by context "$it.dataTypes.join(",")}"`); 2568 } 2569 }); 2570 narrowSchemaTypes(it, types); 2571 } 2572 function checkMultipleTypes(it, ts) { 2573 if (ts.length > 1 && !(ts.length === 2 && ts.includes("null"))) { 2574 strictTypesError(it, "use allowUnionTypes to allow union type keyword"); 2575 } 2576 } 2577 function checkKeywordTypes(it, ts) { 2578 const rules = it.self.RULES.all; 2579 for (const keyword in rules) { 2580 const rule = rules[keyword]; 2581 if (typeof rule == "object" && (0, applicability_1.shouldUseRule)(it.schema, rule)) { 2582 const { type } = rule.definition; 2583 if (type.length && !type.some((t) => hasApplicableType(ts, t))) { 2584 strictTypesError(it, `missing type "$type.join(",")}" for keyword "$keyword}"`); 2585 } 2586 } 2587 } 2588 } 2589 function hasApplicableType(schTs, kwdT) { 2590 return schTs.includes(kwdT) || kwdT === "number" && schTs.includes("integer"); 2591 } 2592 function includesType(ts, t) { 2593 return ts.includes(t) || t === "integer" && ts.includes("number"); 2594 } 2595 function narrowSchemaTypes(it, withTypes) { 2596 const ts = []; 2597 for (const t of it.dataTypes) { 2598 if (includesType(withTypes, t)) 2599 ts.push(t); 2600 else if (withTypes.includes("integer") && t === "number") 2601 ts.push("integer"); 2602 } 2603 it.dataTypes = ts; 2604 } 2605 function strictTypesError(it, msg) { 2606 const schemaPath = it.schemaEnv.baseId + it.errSchemaPath; 2607 msg += ` at "$schemaPath}" (strictTypes)`; 2608 (0, util_1.checkStrictMode)(it, msg, it.opts.strictTypes); 2609 } 2610 var KeywordCxt = class { 2611 constructor(it, def, keyword) { 2612 (0, keyword_1.validateKeywordUsage)(it, def, keyword); 2613 this.gen = it.gen; 2614 this.allErrors = it.allErrors; 2615 this.keyword = keyword; 2616 this.data = it.data; 2617 this.schema = it.schema[keyword]; 2618 this.$data = def.$data && it.opts.$data && this.schema && this.schema.$data; 2619 this.schemaValue = (0, util_1.schemaRefOrVal)(it, this.schema, keyword, this.$data); 2620 this.schemaType = def.schemaType; 2621 this.parentSchema = it.schema; 2622 this.params = {}; 2623 this.it = it; 2624 this.def = def; 2625 if (this.$data) { 2626 this.schemaCode = it.gen.const("vSchema", getData(this.$data, it)); 2627 } else { 2628 this.schemaCode = this.schemaValue; 2629 if (!(0, keyword_1.validSchemaType)(this.schema, def.schemaType, def.allowUndefined)) { 2630 throw new Error(`$keyword} value must be $JSON.stringify(def.schemaType)}`); 2631 } 2632 } 2633 if ("code" in def ? def.trackErrors : def.errors !== false) { 2634 this.errsCount = it.gen.const("_errs", names_1.default.errors); 2635 } 2636 } 2637 result(condition, successAction, failAction) { 2638 this.failResult((0, codegen_1.not)(condition), successAction, failAction); 2639 } 2640 failResult(condition, successAction, failAction) { 2641 this.gen.if(condition); 2642 if (failAction) 2643 failAction(); 2644 else 2645 this.error(); 2646 if (successAction) { 2647 this.gen.else(); 2648 successAction(); 2649 if (this.allErrors) 2650 this.gen.endIf(); 2651 } else { 2652 if (this.allErrors) 2653 this.gen.endIf(); 2654 else 2655 this.gen.else(); 2656 } 2657 } 2658 pass(condition, failAction) { 2659 this.failResult((0, codegen_1.not)(condition), void 0, failAction); 2660 } 2661 fail(condition) { 2662 if (condition === void 0) { 2663 this.error(); 2664 if (!this.allErrors) 2665 this.gen.if(false); 2666 return; 2667 } 2668 this.gen.if(condition); 2669 this.error(); 2670 if (this.allErrors) 2671 this.gen.endIf(); 2672 else 2673 this.gen.else(); 2674 } 2675 fail$data(condition) { 2676 if (!this.$data) 2677 return this.fail(condition); 2678 const { schemaCode } = this; 2679 this.fail((0, codegen_1._)`$schemaCode} !== undefined && (${(0, codegen_1.or)(this.invalid$data(), condition)})`); 2680 } 2681 error(append, errorParams, errorPaths) { 2682 if (errorParams) { 2683 this.setParams(errorParams); 2684 this._error(append, errorPaths); 2685 this.setParams({}); 2686 return; 2687 } 2688 this._error(append, errorPaths); 2689 } 2690 _error(append, errorPaths) { 2691 ; 2692 (append ? errors_1.reportExtraError : errors_1.reportError)(this, this.def.error, errorPaths); 2693 } 2694 $dataError() { 2695 (0, errors_1.reportError)(this, this.def.$dataError || errors_1.keyword$DataError); 2696 } 2697 reset() { 2698 if (this.errsCount === void 0) 2699 throw new Error('add "trackErrors" to keyword definition'); 2700 (0, errors_1.resetErrorsCount)(this.gen, this.errsCount); 2701 } 2702 ok(cond) { 2703 if (!this.allErrors) 2704 this.gen.if(cond); 2705 } 2706 setParams(obj, assign) { 2707 if (assign) 2708 Object.assign(this.params, obj); 2709 else 2710 this.params = obj; 2711 } 2712 block$data(valid, codeBlock, $dataValid = codegen_1.nil) { 2713 this.gen.block(() => { 2714 this.check$data(valid, $dataValid); 2715 codeBlock(); 2716 }); 2717 } 2718 check$data(valid = codegen_1.nil, $dataValid = codegen_1.nil) { 2719 if (!this.$data) 2720 return; 2721 const { gen, schemaCode, schemaType, def } = this; 2722 gen.if((0, codegen_1.or)((0, codegen_1._)`$schemaCode} === undefined`, $dataValid)); 2723 if (valid !== codegen_1.nil) 2724 gen.assign(valid, true); 2725 if (schemaType.length || def.validateSchema) { 2726 gen.elseIf(this.invalid$data()); 2727 this.$dataError(); 2728 if (valid !== codegen_1.nil) 2729 gen.assign(valid, false); 2730 } 2731 gen.else(); 2732 } 2733 invalid$data() { 2734 const { gen, schemaCode, schemaType, def, it } = this; 2735 return (0, codegen_1.or)(wrong$DataType(), invalid$DataSchema()); 2736 function wrong$DataType() { 2737 if (schemaType.length) { 2738 if (!(schemaCode instanceof codegen_1.Name)) 2739 throw new Error("ajv implementation error"); 2740 const st = Array.isArray(schemaType) ? schemaType : [schemaType]; 2741 return (0, codegen_1._)`${(0, dataType_2.checkDataTypes)(st, schemaCode, it.opts.strictNumbers, dataType_2.DataType.Wrong)}`; 2742 } 2743 return codegen_1.nil; 2744 } 2745 function invalid$DataSchema() { 2746 if (def.validateSchema) { 2747 const validateSchemaRef = gen.scopeValue("validate$data", { ref: def.validateSchema }); 2748 return (0, codegen_1._)`!$validateSchemaRef}($schemaCode})`; 2749 } 2750 return codegen_1.nil; 2751 } 2752 } 2753 subschema(appl, valid) { 2754 const subschema = (0, subschema_1.getSubschema)(this.it, appl); 2755 (0, subschema_1.extendSubschemaData)(subschema, this.it, appl); 2756 (0, subschema_1.extendSubschemaMode)(subschema, appl); 2757 const nextContext = { ...this.it, ...subschema, items: void 0, props: void 0 }; 2758 subschemaCode(nextContext, valid); 2759 return nextContext; 2760 } 2761 mergeEvaluated(schemaCxt, toName) { 2762 const { it, gen } = this; 2763 if (!it.opts.unevaluated) 2764 return; 2765 if (it.props !== true && schemaCxt.props !== void 0) { 2766 it.props = util_1.mergeEvaluated.props(gen, schemaCxt.props, it.props, toName); 2767 } 2768 if (it.items !== true && schemaCxt.items !== void 0) { 2769 it.items = util_1.mergeEvaluated.items(gen, schemaCxt.items, it.items, toName); 2770 } 2771 } 2772 mergeValidEvaluated(schemaCxt, valid) { 2773 const { it, gen } = this; 2774 if (it.opts.unevaluated && (it.props !== true || it.items !== true)) { 2775 gen.if(valid, () => this.mergeEvaluated(schemaCxt, codegen_1.Name)); 2776 return true; 2777 } 2778 } 2779 }; 2780 exports.KeywordCxt = KeywordCxt; 2781 function keywordCode(it, keyword, def, ruleType) { 2782 const cxt = new KeywordCxt(it, def, keyword); 2783 if ("code" in def) { 2784 def.code(cxt, ruleType); 2785 } else if (cxt.$data && def.validate) { 2786 (0, keyword_1.funcKeywordCode)(cxt, def); 2787 } else if ("macro" in def) { 2788 (0, keyword_1.macroKeywordCode)(cxt, def); 2789 } else if (def.compile || def.validate) { 2790 (0, keyword_1.funcKeywordCode)(cxt, def); 2791 } 2792 } 2793 var JSON_POINTER = /^\/(?:[^~]|~0|~1)*$/; 2794 var RELATIVE_JSON_POINTER = /^([0-9]+)(#|\/(?:[^~]|~0|~1)*)?$/; 2795 function getData($data, { dataLevel, dataNames, dataPathArr }) { 2796 let jsonPointer; 2797 let data; 2798 if ($data === "") 2799 return names_1.default.rootData; 2800 if ($data[0] === "/") { 2801 if (!JSON_POINTER.test($data)) 2802 throw new Error(`Invalid JSON-pointer: ${$data}`); 2803 jsonPointer = $data; 2804 data = names_1.default.rootData; 2805 } else { 2806 const matches = RELATIVE_JSON_POINTER.exec($data); 2807 if (!matches) 2808 throw new Error(`Invalid JSON-pointer: ${$data}`); 2809 const up = +matches[1]; 2810 jsonPointer = matches[2]; 2811 if (jsonPointer === "#") { 2812 if (up >= dataLevel) 2813 throw new Error(errorMsg("property/index", up)); 2814 return dataPathArr[dataLevel - up]; 2815 } 2816 if (up > dataLevel) 2817 throw new Error(errorMsg("data", up)); 2818 data = dataNames[dataLevel - up]; 2819 if (!jsonPointer) 2820 return data; 2821 } 2822 let expr = data; 2823 const segments = jsonPointer.split("/"); 2824 for (const segment of segments) { 2825 if (segment) { 2826 data = (0, codegen_1._)`$data}${(0, codegen_1.getProperty)((0, util_1.unescapeJsonPointer)(segment))}`; 2827 expr = (0, codegen_1._)`$expr} && $data}`; 2828 } 2829 } 2830 return expr; 2831 function errorMsg(pointerType, up) { 2832 return `Cannot access $pointerType} $up} levels up, current level is $dataLevel}`; 2833 } 2834 } 2835 exports.getData = getData; 2836 } 2837 }); 2838 2839 // node_modules/ajv/dist/runtime/validation_error.js 2840 var require_validation_error = __commonJS({ 2841 "node_modules/ajv/dist/runtime/validation_error.js"(exports) { 2842 "use strict"; 2843 Object.defineProperty(exports, "__esModule", { value: true }); 2844 var ValidationError = class extends Error { 2845 constructor(errors) { 2846 super("validation failed"); 2847 this.errors = errors; 2848 this.ajv = this.validation = true; 2849 } 2850 }; 2851 exports.default = ValidationError; 2852 } 2853 }); 2854 2855 // node_modules/ajv/dist/compile/ref_error.js 2856 var require_ref_error = __commonJS({ 2857 "node_modules/ajv/dist/compile/ref_error.js"(exports) { 2858 "use strict"; 2859 Object.defineProperty(exports, "__esModule", { value: true }); 2860 var resolve_1 = require_resolve(); 2861 var MissingRefError = class extends Error { 2862 constructor(resolver, baseId, ref, msg) { 2863 super(msg || `can't resolve reference $ref} from id $baseId}`); 2864 this.missingRef = (0, resolve_1.resolveUrl)(resolver, baseId, ref); 2865 this.missingSchema = (0, resolve_1.normalizeId)((0, resolve_1.getFullPath)(resolver, this.missingRef)); 2866 } 2867 }; 2868 exports.default = MissingRefError; 2869 } 2870 }); 2871 2872 // node_modules/ajv/dist/compile/index.js 2873 var require_compile = __commonJS({ 2874 "node_modules/ajv/dist/compile/index.js"(exports) { 2875 "use strict"; 2876 Object.defineProperty(exports, "__esModule", { value: true }); 2877 exports.resolveSchema = exports.getCompilingSchema = exports.resolveRef = exports.compileSchema = exports.SchemaEnv = void 0; 2878 var codegen_1 = require_codegen(); 2879 var validation_error_1 = require_validation_error(); 2880 var names_1 = require_names(); 2881 var resolve_1 = require_resolve(); 2882 var util_1 = require_util(); 2883 var validate_1 = require_validate(); 2884 var SchemaEnv = class { 2885 constructor(env) { 2886 var _a; 2887 this.refs = {}; 2888 this.dynamicAnchors = {}; 2889 let schema; 2890 if (typeof env.schema == "object") 2891 schema = env.schema; 2892 this.schema = env.schema; 2893 this.schemaId = env.schemaId; 2894 this.root = env.root || this; 2895 this.baseId = (_a = env.baseId) !== null && _a !== void 0 ? _a : (0, resolve_1.normalizeId)(schema === null || schema === void 0 ? void 0 : schema[env.schemaId || "$id"]); 2896 this.schemaPath = env.schemaPath; 2897 this.localRefs = env.localRefs; 2898 this.meta = env.meta; 2899 this.$async = schema === null || schema === void 0 ? void 0 : schema.$async; 2900 this.refs = {}; 2901 } 2902 }; 2903 exports.SchemaEnv = SchemaEnv; 2904 function compileSchema(sch) { 2905 const _sch = getCompilingSchema.call(this, sch); 2906 if (_sch) 2907 return _sch; 2908 const rootId = (0, resolve_1.getFullPath)(this.opts.uriResolver, sch.root.baseId); 2909 const { es5, lines } = this.opts.code; 2910 const { ownProperties } = this.opts; 2911 const gen = new codegen_1.CodeGen(this.scope, { es5, lines, ownProperties }); 2912 let _ValidationError; 2913 if (sch.$async) { 2914 _ValidationError = gen.scopeValue("Error", { 2915 ref: validation_error_1.default, 2916 code: (0, codegen_1._)`require("ajv/dist/runtime/validation_error").default` 2917 }); 2918 } 2919 const validateName = gen.scopeName("validate"); 2920 sch.validateName = validateName; 2921 const schemaCxt = { 2922 gen, 2923 allErrors: this.opts.allErrors, 2924 data: names_1.default.data, 2925 parentData: names_1.default.parentData, 2926 parentDataProperty: names_1.default.parentDataProperty, 2927 dataNames: [names_1.default.data], 2928 dataPathArr: [codegen_1.nil], 2929 // TODO can its length be used as dataLevel if nil is removed? 2930 dataLevel: 0, 2931 dataTypes: [], 2932 definedProperties: /* @__PURE__ */ new Set(), 2933 topSchemaRef: gen.scopeValue("schema", this.opts.code.source === true ? { ref: sch.schema, code: (0, codegen_1.stringify)(sch.schema) } : { ref: sch.schema }), 2934 validateName, 2935 ValidationError: _ValidationError, 2936 schema: sch.schema, 2937 schemaEnv: sch, 2938 rootId, 2939 baseId: sch.baseId || rootId, 2940 schemaPath: codegen_1.nil, 2941 errSchemaPath: sch.schemaPath || (this.opts.jtd ? "" : "#"), 2942 errorPath: (0, codegen_1._)`""`, 2943 opts: this.opts, 2944 self: this 2945 }; 2946 let sourceCode; 2947 try { 2948 this._compilations.add(sch); 2949 (0, validate_1.validateFunctionCode)(schemaCxt); 2950 gen.optimize(this.opts.code.optimize); 2951 const validateCode = gen.toString(); 2952 sourceCode = `$gen.scopeRefs(names_1.default.scope)}return $validateCode}`; 2953 if (this.opts.code.process) 2954 sourceCode = this.opts.code.process(sourceCode, sch); 2955 const makeValidate = new Function(`$names_1.default.self}`, `$names_1.default.scope}`, sourceCode); 2956 const validate = makeValidate(this, this.scope.get()); 2957 this.scope.value(validateName, { ref: validate }); 2958 validate.errors = null; 2959 validate.schema = sch.schema; 2960 validate.schemaEnv = sch; 2961 if (sch.$async) 2962 validate.$async = true; 2963 if (this.opts.code.source === true) { 2964 validate.source = { validateName, validateCode, scopeValues: gen._values }; 2965 } 2966 if (this.opts.unevaluated) { 2967 const { props, items } = schemaCxt; 2968 validate.evaluated = { 2969 props: props instanceof codegen_1.Name ? void 0 : props, 2970 items: items instanceof codegen_1.Name ? void 0 : items, 2971 dynamicProps: props instanceof codegen_1.Name, 2972 dynamicItems: items instanceof codegen_1.Name 2973 }; 2974 if (validate.source) 2975 validate.source.evaluated = (0, codegen_1.stringify)(validate.evaluated); 2976 } 2977 sch.validate = validate; 2978 return sch; 2979 } catch (e) { 2980 delete sch.validate; 2981 delete sch.validateName; 2982 if (sourceCode) 2983 this.logger.error("Error compiling schema, function code:", sourceCode); 2984 throw e; 2985 } finally { 2986 this._compilations.delete(sch); 2987 } 2988 } 2989 exports.compileSchema = compileSchema; 2990 function resolveRef(root, baseId, ref) { 2991 var _a; 2992 ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, ref); 2993 const schOrFunc = root.refs[ref]; 2994 if (schOrFunc) 2995 return schOrFunc; 2996 let _sch = resolve.call(this, root, ref); 2997 if (_sch === void 0) { 2998 const schema = (_a = root.localRefs) === null || _a === void 0 ? void 0 : _a[ref]; 2999 const { schemaId } = this.opts; 3000 if (schema) 3001 _sch = new SchemaEnv({ schema, schemaId, root, baseId }); 3002 } 3003 if (_sch === void 0) 3004 return; 3005 return root.refs[ref] = inlineOrCompile.call(this, _sch); 3006 } 3007 exports.resolveRef = resolveRef; 3008 function inlineOrCompile(sch) { 3009 if ((0, resolve_1.inlineRef)(sch.schema, this.opts.inlineRefs)) 3010 return sch.schema; 3011 return sch.validate ? sch : compileSchema.call(this, sch); 3012 } 3013 function getCompilingSchema(schEnv) { 3014 for (const sch of this._compilations) { 3015 if (sameSchemaEnv(sch, schEnv)) 3016 return sch; 3017 } 3018 } 3019 exports.getCompilingSchema = getCompilingSchema; 3020 function sameSchemaEnv(s1, s2) { 3021 return s1.schema === s2.schema && s1.root === s2.root && s1.baseId === s2.baseId; 3022 } 3023 function resolve(root, ref) { 3024 let sch; 3025 while (typeof (sch = this.refs[ref]) == "string") 3026 ref = sch; 3027 return sch || this.schemas[ref] || resolveSchema.call(this, root, ref); 3028 } 3029 function resolveSchema(root, ref) { 3030 const p = this.opts.uriResolver.parse(ref); 3031 const refPath = (0, resolve_1._getFullPath)(this.opts.uriResolver, p); 3032 let baseId = (0, resolve_1.getFullPath)(this.opts.uriResolver, root.baseId, void 0); 3033 if (Object.keys(root.schema).length > 0 && refPath === baseId) { 3034 return getJsonPointer.call(this, p, root); 3035 } 3036 const id = (0, resolve_1.normalizeId)(refPath); 3037 const schOrRef = this.refs[id] || this.schemas[id]; 3038 if (typeof schOrRef == "string") { 3039 const sch = resolveSchema.call(this, root, schOrRef); 3040 if (typeof (sch === null || sch === void 0 ? void 0 : sch.schema) !== "object") 3041 return; 3042 return getJsonPointer.call(this, p, sch); 3043 } 3044 if (typeof (schOrRef === null || schOrRef === void 0 ? void 0 : schOrRef.schema) !== "object") 3045 return; 3046 if (!schOrRef.validate) 3047 compileSchema.call(this, schOrRef); 3048 if (id === (0, resolve_1.normalizeId)(ref)) { 3049 const { schema } = schOrRef; 3050 const { schemaId } = this.opts; 3051 const schId = schema[schemaId]; 3052 if (schId) 3053 baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId); 3054 return new SchemaEnv({ schema, schemaId, root, baseId }); 3055 } 3056 return getJsonPointer.call(this, p, schOrRef); 3057 } 3058 exports.resolveSchema = resolveSchema; 3059 var PREVENT_SCOPE_CHANGE = /* @__PURE__ */ new Set([ 3060 "properties", 3061 "patternProperties", 3062 "enum", 3063 "dependencies", 3064 "definitions" 3065 ]); 3066 function getJsonPointer(parsedRef, { baseId, schema, root }) { 3067 var _a; 3068 if (((_a = parsedRef.fragment) === null || _a === void 0 ? void 0 : _a[0]) !== "/") 3069 return; 3070 for (const part of parsedRef.fragment.slice(1).split("/")) { 3071 if (typeof schema === "boolean") 3072 return; 3073 const partSchema = schema[(0, util_1.unescapeFragment)(part)]; 3074 if (partSchema === void 0) 3075 return; 3076 schema = partSchema; 3077 const schId = typeof schema === "object" && schema[this.opts.schemaId]; 3078 if (!PREVENT_SCOPE_CHANGE.has(part) && schId) { 3079 baseId = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schId); 3080 } 3081 } 3082 let env; 3083 if (typeof schema != "boolean" && schema.$ref && !(0, util_1.schemaHasRulesButRef)(schema, this.RULES)) { 3084 const $ref = (0, resolve_1.resolveUrl)(this.opts.uriResolver, baseId, schema.$ref); 3085 env = resolveSchema.call(this, root, $ref); 3086 } 3087 const { schemaId } = this.opts; 3088 env = env || new SchemaEnv({ schema, schemaId, root, baseId }); 3089 if (env.schema !== env.root.schema) 3090 return env; 3091 return void 0; 3092 } 3093 } 3094 }); 3095 3096 // node_modules/ajv/dist/refs/data.json 3097 var require_data2 = __commonJS({ 3098 "node_modules/ajv/dist/refs/data.json"(exports, module) { 3099 module.exports = { 3100 $id: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#", 3101 description: "Meta-schema for $data reference (JSON AnySchema extension proposal)", 3102 type: "object", 3103 required: ["$data"], 3104 properties: { 3105 $data: { 3106 type: "string", 3107 anyOf: [{ format: "relative-json-pointer" }, { format: "json-pointer" }] 3108 } 3109 }, 3110 additionalProperties: false 3111 }; 3112 } 3113 }); 3114 3115 // node_modules/fast-uri/lib/scopedChars.js 3116 var require_scopedChars = __commonJS({ 3117 "node_modules/fast-uri/lib/scopedChars.js"(exports, module) { 3118 "use strict"; 3119 var HEX = { 3120 0: 0, 3121 1: 1, 3122 2: 2, 3123 3: 3, 3124 4: 4, 3125 5: 5, 3126 6: 6, 3127 7: 7, 3128 8: 8, 3129 9: 9, 3130 a: 10, 3131 A: 10, 3132 b: 11, 3133 B: 11, 3134 c: 12, 3135 C: 12, 3136 d: 13, 3137 D: 13, 3138 e: 14, 3139 E: 14, 3140 f: 15, 3141 F: 15 3142 }; 3143 module.exports = { 3144 HEX 3145 }; 3146 } 3147 }); 3148 3149 // node_modules/fast-uri/lib/utils.js 3150 var require_utils = __commonJS({ 3151 "node_modules/fast-uri/lib/utils.js"(exports, module) { 3152 "use strict"; 3153 var { HEX } = require_scopedChars(); 3154 function normalizeIPv4(host) { 3155 if (findToken(host, ".") < 3) { 3156 return { host, isIPV4: false }; 3157 } 3158 const matches = host.match(/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/u) || []; 3159 const [address] = matches; 3160 if (address) { 3161 return { host: stripLeadingZeros(address, "."), isIPV4: true }; 3162 } else { 3163 return { host, isIPV4: false }; 3164 } 3165 } 3166 function stringArrayToHexStripped(input, keepZero = false) { 3167 let acc = ""; 3168 let strip = true; 3169 for (const c of input) { 3170 if (HEX[c] === void 0) return void 0; 3171 if (c !== "0" && strip === true) strip = false; 3172 if (!strip) acc += c; 3173 } 3174 if (keepZero && acc.length === 0) acc = "0"; 3175 return acc; 3176 } 3177 function getIPV6(input) { 3178 let tokenCount = 0; 3179 const output = { error: false, address: "", zone: "" }; 3180 const address = []; 3181 const buffer = []; 3182 let isZone = false; 3183 let endipv6Encountered = false; 3184 let endIpv6 = false; 3185 function consume() { 3186 if (buffer.length) { 3187 if (isZone === false) { 3188 const hex = stringArrayToHexStripped(buffer); 3189 if (hex !== void 0) { 3190 address.push(hex); 3191 } else { 3192 output.error = true; 3193 return false; 3194 } 3195 } 3196 buffer.length = 0; 3197 } 3198 return true; 3199 } 3200 for (let i = 0; i < input.length; i++) { 3201 const cursor = input[i]; 3202 if (cursor === "[" || cursor === "]") { 3203 continue; 3204 } 3205 if (cursor === ":") { 3206 if (endipv6Encountered === true) { 3207 endIpv6 = true; 3208 } 3209 if (!consume()) { 3210 break; 3211 } 3212 tokenCount++; 3213 address.push(":"); 3214 if (tokenCount > 7) { 3215 output.error = true; 3216 break; 3217 } 3218 if (i - 1 >= 0 && input[i - 1] === ":") { 3219 endipv6Encountered = true; 3220 } 3221 continue; 3222 } else if (cursor === "%") { 3223 if (!consume()) { 3224 break; 3225 } 3226 isZone = true; 3227 } else { 3228 buffer.push(cursor); 3229 continue; 3230 } 3231 } 3232 if (buffer.length) { 3233 if (isZone) { 3234 output.zone = buffer.join(""); 3235 } else if (endIpv6) { 3236 address.push(buffer.join("")); 3237 } else { 3238 address.push(stringArrayToHexStripped(buffer)); 3239 } 3240 } 3241 output.address = address.join(""); 3242 return output; 3243 } 3244 function normalizeIPv6(host, opts = {}) { 3245 if (findToken(host, ":") < 2) { 3246 return { host, isIPV6: false }; 3247 } 3248 const ipv6 = getIPV6(host); 3249 if (!ipv6.error) { 3250 let newHost = ipv6.address; 3251 let escapedHost = ipv6.address; 3252 if (ipv6.zone) { 3253 newHost += "%" + ipv6.zone; 3254 escapedHost += "%25" + ipv6.zone; 3255 } 3256 return { host: newHost, escapedHost, isIPV6: true }; 3257 } else { 3258 return { host, isIPV6: false }; 3259 } 3260 } 3261 function stripLeadingZeros(str, token) { 3262 let out = ""; 3263 let skip = true; 3264 const l = str.length; 3265 for (let i = 0; i < l; i++) { 3266 const c = str[i]; 3267 if (c === "0" && skip) { 3268 if (i + 1 <= l && str[i + 1] === token || i + 1 === l) { 3269 out += c; 3270 skip = false; 3271 } 3272 } else { 3273 if (c === token) { 3274 skip = true; 3275 } else { 3276 skip = false; 3277 } 3278 out += c; 3279 } 3280 } 3281 return out; 3282 } 3283 function findToken(str, token) { 3284 let ind = 0; 3285 for (let i = 0; i < str.length; i++) { 3286 if (str[i] === token) ind++; 3287 } 3288 return ind; 3289 } 3290 var RDS1 = /^\.\.?\//u; 3291 var RDS2 = /^\/\.(?:\/|$)/u; 3292 var RDS3 = /^\/\.\.(?:\/|$)/u; 3293 var RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/u; 3294 function removeDotSegments(input) { 3295 const output = []; 3296 while (input.length) { 3297 if (input.match(RDS1)) { 3298 input = input.replace(RDS1, ""); 3299 } else if (input.match(RDS2)) { 3300 input = input.replace(RDS2, "/"); 3301 } else if (input.match(RDS3)) { 3302 input = input.replace(RDS3, "/"); 3303 output.pop(); 3304 } else if (input === "." || input === "..") { 3305 input = ""; 3306 } else { 3307 const im = input.match(RDS5); 3308 if (im) { 3309 const s = im[0]; 3310 input = input.slice(s.length); 3311 output.push(s); 3312 } else { 3313 throw new Error("Unexpected dot segment condition"); 3314 } 3315 } 3316 } 3317 return output.join(""); 3318 } 3319 function normalizeComponentEncoding(components, esc) { 3320 const func = esc !== true ? escape : unescape; 3321 if (components.scheme !== void 0) { 3322 components.scheme = func(components.scheme); 3323 } 3324 if (components.userinfo !== void 0) { 3325 components.userinfo = func(components.userinfo); 3326 } 3327 if (components.host !== void 0) { 3328 components.host = func(components.host); 3329 } 3330 if (components.path !== void 0) { 3331 components.path = func(components.path); 3332 } 3333 if (components.query !== void 0) { 3334 components.query = func(components.query); 3335 } 3336 if (components.fragment !== void 0) { 3337 components.fragment = func(components.fragment); 3338 } 3339 return components; 3340 } 3341 function recomposeAuthority(components, options) { 3342 const uriTokens = []; 3343 if (components.userinfo !== void 0) { 3344 uriTokens.push(components.userinfo); 3345 uriTokens.push("@"); 3346 } 3347 if (components.host !== void 0) { 3348 let host = unescape(components.host); 3349 const ipV4res = normalizeIPv4(host); 3350 if (ipV4res.isIPV4) { 3351 host = ipV4res.host; 3352 } else { 3353 const ipV6res = normalizeIPv6(ipV4res.host, { isIPV4: false }); 3354 if (ipV6res.isIPV6 === true) { 3355 host = `[$ipV6res.escapedHost}]`; 3356 } else { 3357 host = components.host; 3358 } 3359 } 3360 uriTokens.push(host); 3361 } 3362 if (typeof components.port === "number" || typeof components.port === "string") { 3363 uriTokens.push(":"); 3364 uriTokens.push(String(components.port)); 3365 } 3366 return uriTokens.length ? uriTokens.join("") : void 0; 3367 } 3368 module.exports = { 3369 recomposeAuthority, 3370 normalizeComponentEncoding, 3371 removeDotSegments, 3372 normalizeIPv4, 3373 normalizeIPv6, 3374 stringArrayToHexStripped 3375 }; 3376 } 3377 }); 3378 3379 // node_modules/fast-uri/lib/schemes.js 3380 var require_schemes = __commonJS({ 3381 "node_modules/fast-uri/lib/schemes.js"(exports, module) { 3382 "use strict"; 3383 var UUID_REG = /^[\da-f]{8}\b-[\da-f]{4}\b-[\da-f]{4}\b-[\da-f]{4}\b-[\da-f]{12}$/iu; 3384 var URN_REG = /([\da-z][\d\-a-z]{0,31}):((?:[\w!$'()*+,\-.:;=@]|%[\da-f]{2})+)/iu; 3385 function isSecure(wsComponents) { 3386 return typeof wsComponents.secure === "boolean" ? wsComponents.secure : String(wsComponents.scheme).toLowerCase() === "wss"; 3387 } 3388 function httpParse(components) { 3389 if (!components.host) { 3390 components.error = components.error || "HTTP URIs must have a host."; 3391 } 3392 return components; 3393 } 3394 function httpSerialize(components) { 3395 const secure = String(components.scheme).toLowerCase() === "https"; 3396 if (components.port === (secure ? 443 : 80) || components.port === "") { 3397 components.port = void 0; 3398 } 3399 if (!components.path) { 3400 components.path = "/"; 3401 } 3402 return components; 3403 } 3404 function wsParse(wsComponents) { 3405 wsComponents.secure = isSecure(wsComponents); 3406 wsComponents.resourceName = (wsComponents.path || "/") + (wsComponents.query ? "?" + wsComponents.query : ""); 3407 wsComponents.path = void 0; 3408 wsComponents.query = void 0; 3409 return wsComponents; 3410 } 3411 function wsSerialize(wsComponents) { 3412 if (wsComponents.port === (isSecure(wsComponents) ? 443 : 80) || wsComponents.port === "") { 3413 wsComponents.port = void 0; 3414 } 3415 if (typeof wsComponents.secure === "boolean") { 3416 wsComponents.scheme = wsComponents.secure ? "wss" : "ws"; 3417 wsComponents.secure = void 0; 3418 } 3419 if (wsComponents.resourceName) { 3420 const [path, query] = wsComponents.resourceName.split("?"); 3421 wsComponents.path = path && path !== "/" ? path : void 0; 3422 wsComponents.query = query; 3423 wsComponents.resourceName = void 0; 3424 } 3425 wsComponents.fragment = void 0; 3426 return wsComponents; 3427 } 3428 function urnParse(urnComponents, options) { 3429 if (!urnComponents.path) { 3430 urnComponents.error = "URN can not be parsed"; 3431 return urnComponents; 3432 } 3433 const matches = urnComponents.path.match(URN_REG); 3434 if (matches) { 3435 const scheme = options.scheme || urnComponents.scheme || "urn"; 3436 urnComponents.nid = matches[1].toLowerCase(); 3437 urnComponents.nss = matches[2]; 3438 const urnScheme = `$scheme}:$options.nid || urnComponents.nid}`; 3439 const schemeHandler = SCHEMES[urnScheme]; 3440 urnComponents.path = void 0; 3441 if (schemeHandler) { 3442 urnComponents = schemeHandler.parse(urnComponents, options); 3443 } 3444 } else { 3445 urnComponents.error = urnComponents.error || "URN can not be parsed."; 3446 } 3447 return urnComponents; 3448 } 3449 function urnSerialize(urnComponents, options) { 3450 const scheme = options.scheme || urnComponents.scheme || "urn"; 3451 const nid = urnComponents.nid.toLowerCase(); 3452 const urnScheme = `$scheme}:$options.nid || nid}`; 3453 const schemeHandler = SCHEMES[urnScheme]; 3454 if (schemeHandler) { 3455 urnComponents = schemeHandler.serialize(urnComponents, options); 3456 } 3457 const uriComponents = urnComponents; 3458 const nss = urnComponents.nss; 3459 uriComponents.path = `$nid || options.nid}:$nss}`; 3460 options.skipEscape = true; 3461 return uriComponents; 3462 } 3463 function urnuuidParse(urnComponents, options) { 3464 const uuidComponents = urnComponents; 3465 uuidComponents.uuid = uuidComponents.nss; 3466 uuidComponents.nss = void 0; 3467 if (!options.tolerant && (!uuidComponents.uuid || !UUID_REG.test(uuidComponents.uuid))) { 3468 uuidComponents.error = uuidComponents.error || "UUID is not valid."; 3469 } 3470 return uuidComponents; 3471 } 3472 function urnuuidSerialize(uuidComponents) { 3473 const urnComponents = uuidComponents; 3474 urnComponents.nss = (uuidComponents.uuid || "").toLowerCase(); 3475 return urnComponents; 3476 } 3477 var http = { 3478 scheme: "http", 3479 domainHost: true, 3480 parse: httpParse, 3481 serialize: httpSerialize 3482 }; 3483 var https = { 3484 scheme: "https", 3485 domainHost: http.domainHost, 3486 parse: httpParse, 3487 serialize: httpSerialize 3488 }; 3489 var ws = { 3490 scheme: "ws", 3491 domainHost: true, 3492 parse: wsParse, 3493 serialize: wsSerialize 3494 }; 3495 var wss = { 3496 scheme: "wss", 3497 domainHost: ws.domainHost, 3498 parse: ws.parse, 3499 serialize: ws.serialize 3500 }; 3501 var urn = { 3502 scheme: "urn", 3503 parse: urnParse, 3504 serialize: urnSerialize, 3505 skipNormalize: true 3506 }; 3507 var urnuuid = { 3508 scheme: "urn:uuid", 3509 parse: urnuuidParse, 3510 serialize: urnuuidSerialize, 3511 skipNormalize: true 3512 }; 3513 var SCHEMES = { 3514 http, 3515 https, 3516 ws, 3517 wss, 3518 urn, 3519 "urn:uuid": urnuuid 3520 }; 3521 module.exports = SCHEMES; 3522 } 3523 }); 3524 3525 // node_modules/fast-uri/index.js 3526 var require_fast_uri = __commonJS({ 3527 "node_modules/fast-uri/index.js"(exports, module) { 3528 "use strict"; 3529 var { normalizeIPv6, normalizeIPv4, removeDotSegments, recomposeAuthority, normalizeComponentEncoding } = require_utils(); 3530 var SCHEMES = require_schemes(); 3531 function normalize(uri, options) { 3532 if (typeof uri === "string") { 3533 uri = serialize(parse(uri, options), options); 3534 } else if (typeof uri === "object") { 3535 uri = parse(serialize(uri, options), options); 3536 } 3537 return uri; 3538 } 3539 function resolve(baseURI, relativeURI, options) { 3540 const schemelessOptions = Object.assign({ scheme: "null" }, options); 3541 const resolved = resolveComponents(parse(baseURI, schemelessOptions), parse(relativeURI, schemelessOptions), schemelessOptions, true); 3542 return serialize(resolved, { ...schemelessOptions, skipEscape: true }); 3543 } 3544 function resolveComponents(base, relative, options, skipNormalization) { 3545 const target = {}; 3546 if (!skipNormalization) { 3547 base = parse(serialize(base, options), options); 3548 relative = parse(serialize(relative, options), options); 3549 } 3550 options = options || {}; 3551 if (!options.tolerant && relative.scheme) { 3552 target.scheme = relative.scheme; 3553 target.userinfo = relative.userinfo; 3554 target.host = relative.host; 3555 target.port = relative.port; 3556 target.path = removeDotSegments(relative.path || ""); 3557 target.query = relative.query; 3558 } else { 3559 if (relative.userinfo !== void 0 || relative.host !== void 0 || relative.port !== void 0) { 3560 target.userinfo = relative.userinfo; 3561 target.host = relative.host; 3562 target.port = relative.port; 3563 target.path = removeDotSegments(relative.path || ""); 3564 target.query = relative.query; 3565 } else { 3566 if (!relative.path) { 3567 target.path = base.path; 3568 if (relative.query !== void 0) { 3569 target.query = relative.query; 3570 } else { 3571 target.query = base.query; 3572 } 3573 } else { 3574 if (relative.path.charAt(0) === "/") { 3575 target.path = removeDotSegments(relative.path); 3576 } else { 3577 if ((base.userinfo !== void 0 || base.host !== void 0 || base.port !== void 0) && !base.path) { 3578 target.path = "/" + relative.path; 3579 } else if (!base.path) { 3580 target.path = relative.path; 3581 } else { 3582 target.path = base.path.slice(0, base.path.lastIndexOf("/") + 1) + relative.path; 3583 } 3584 target.path = removeDotSegments(target.path); 3585 } 3586 target.query = relative.query; 3587 } 3588 target.userinfo = base.userinfo; 3589 target.host = base.host; 3590 target.port = base.port; 3591 } 3592 target.scheme = base.scheme; 3593 } 3594 target.fragment = relative.fragment; 3595 return target; 3596 } 3597 function equal(uriA, uriB, options) { 3598 if (typeof uriA === "string") { 3599 uriA = unescape(uriA); 3600 uriA = serialize(normalizeComponentEncoding(parse(uriA, options), true), { ...options, skipEscape: true }); 3601 } else if (typeof uriA === "object") { 3602 uriA = serialize(normalizeComponentEncoding(uriA, true), { ...options, skipEscape: true }); 3603 } 3604 if (typeof uriB === "string") { 3605 uriB = unescape(uriB); 3606 uriB = serialize(normalizeComponentEncoding(parse(uriB, options), true), { ...options, skipEscape: true }); 3607 } else if (typeof uriB === "object") { 3608 uriB = serialize(normalizeComponentEncoding(uriB, true), { ...options, skipEscape: true }); 3609 } 3610 return uriA.toLowerCase() === uriB.toLowerCase(); 3611 } 3612 function serialize(cmpts, opts) { 3613 const components = { 3614 host: cmpts.host, 3615 scheme: cmpts.scheme, 3616 userinfo: cmpts.userinfo, 3617 port: cmpts.port, 3618 path: cmpts.path, 3619 query: cmpts.query, 3620 nid: cmpts.nid, 3621 nss: cmpts.nss, 3622 uuid: cmpts.uuid, 3623 fragment: cmpts.fragment, 3624 reference: cmpts.reference, 3625 resourceName: cmpts.resourceName, 3626 secure: cmpts.secure, 3627 error: "" 3628 }; 3629 const options = Object.assign({}, opts); 3630 const uriTokens = []; 3631 const schemeHandler = SCHEMES[(options.scheme || components.scheme || "").toLowerCase()]; 3632 if (schemeHandler && schemeHandler.serialize) schemeHandler.serialize(components, options); 3633 if (components.path !== void 0) { 3634 if (!options.skipEscape) { 3635 components.path = escape(components.path); 3636 if (components.scheme !== void 0) { 3637 components.path = components.path.split("%3A").join(":"); 3638 } 3639 } else { 3640 components.path = unescape(components.path); 3641 } 3642 } 3643 if (options.reference !== "suffix" && components.scheme) { 3644 uriTokens.push(components.scheme); 3645 uriTokens.push(":"); 3646 } 3647 const authority = recomposeAuthority(components, options); 3648 if (authority !== void 0) { 3649 if (options.reference !== "suffix") { 3650 uriTokens.push("//"); 3651 } 3652 uriTokens.push(authority); 3653 if (components.path && components.path.charAt(0) !== "/") { 3654 uriTokens.push("/"); 3655 } 3656 } 3657 if (components.path !== void 0) { 3658 let s = components.path; 3659 if (!options.absolutePath && (!schemeHandler || !schemeHandler.absolutePath)) { 3660 s = removeDotSegments(s); 3661 } 3662 if (authority === void 0) { 3663 s = s.replace(/^\/\//u, "/%2F"); 3664 } 3665 uriTokens.push(s); 3666 } 3667 if (components.query !== void 0) { 3668 uriTokens.push("?"); 3669 uriTokens.push(components.query); 3670 } 3671 if (components.fragment !== void 0) { 3672 uriTokens.push("#"); 3673 uriTokens.push(components.fragment); 3674 } 3675 return uriTokens.join(""); 3676 } 3677 var hexLookUp = Array.from({ length: 127 }, (v, k) => /[^!"$&'()*+,\-.;=_`a-z{}~]/u.test(String.fromCharCode(k))); 3678 function nonSimpleDomain(value) { 3679 let code = 0; 3680 for (let i = 0, len = value.length; i < len; ++i) { 3681 code = value.charCodeAt(i); 3682 if (code > 126 || hexLookUp[code]) { 3683 return true; 3684 } 3685 } 3686 return false; 3687 } 3688 var URI_PARSE = /^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u; 3689 function parse(uri, opts) { 3690 const options = Object.assign({}, opts); 3691 const parsed = { 3692 scheme: void 0, 3693 userinfo: void 0, 3694 host: "", 3695 port: void 0, 3696 path: "", 3697 query: void 0, 3698 fragment: void 0 3699 }; 3700 const gotEncoding = uri.indexOf("%") !== -1; 3701 let isIP = false; 3702 if (options.reference === "suffix") uri = (options.scheme ? options.scheme + ":" : "") + "//" + uri; 3703 const matches = uri.match(URI_PARSE); 3704 if (matches) { 3705 parsed.scheme = matches[1]; 3706 parsed.userinfo = matches[3]; 3707 parsed.host = matches[4]; 3708 parsed.port = parseInt(matches[5], 10); 3709 parsed.path = matches[6] || ""; 3710 parsed.query = matches[7]; 3711 parsed.fragment = matches[8]; 3712 if (isNaN(parsed.port)) { 3713 parsed.port = matches[5]; 3714 } 3715 if (parsed.host) { 3716 const ipv4result = normalizeIPv4(parsed.host); 3717 if (ipv4result.isIPV4 === false) { 3718 const ipv6result = normalizeIPv6(ipv4result.host, { isIPV4: false }); 3719 parsed.host = ipv6result.host.toLowerCase(); 3720 isIP = ipv6result.isIPV6; 3721 } else { 3722 parsed.host = ipv4result.host; 3723 isIP = true; 3724 } 3725 } 3726 if (parsed.scheme === void 0 && parsed.userinfo === void 0 && parsed.host === void 0 && parsed.port === void 0 && !parsed.path && parsed.query === void 0) { 3727 parsed.reference = "same-document"; 3728 } else if (parsed.scheme === void 0) { 3729 parsed.reference = "relative"; 3730 } else if (parsed.fragment === void 0) { 3731 parsed.reference = "absolute"; 3732 } else { 3733 parsed.reference = "uri"; 3734 } 3735 if (options.reference && options.reference !== "suffix" && options.reference !== parsed.reference) { 3736 parsed.error = parsed.error || "URI is not a " + options.reference + " reference."; 3737 } 3738 const schemeHandler = SCHEMES[(options.scheme || parsed.scheme || "").toLowerCase()]; 3739 if (!options.unicodeSupport && (!schemeHandler || !schemeHandler.unicodeSupport)) { 3740 if (parsed.host && (options.domainHost || schemeHandler && schemeHandler.domainHost) && isIP === false && nonSimpleDomain(parsed.host)) { 3741 try { 3742 parsed.host = URL.domainToASCII(parsed.host.toLowerCase()); 3743 } catch (e) { 3744 parsed.error = parsed.error || "Host's domain name can not be converted to ASCII: " + e; 3745 } 3746 } 3747 } 3748 if (!schemeHandler || schemeHandler && !schemeHandler.skipNormalize) { 3749 if (gotEncoding && parsed.scheme !== void 0) { 3750 parsed.scheme = unescape(parsed.scheme); 3751 } 3752 if (gotEncoding && parsed.userinfo !== void 0) { 3753 parsed.userinfo = unescape(parsed.userinfo); 3754 } 3755 if (gotEncoding && parsed.host !== void 0) { 3756 parsed.host = unescape(parsed.host); 3757 } 3758 if (parsed.path !== void 0 && parsed.path.length) { 3759 parsed.path = escape(unescape(parsed.path)); 3760 } 3761 if (parsed.fragment !== void 0 && parsed.fragment.length) { 3762 parsed.fragment = encodeURI(decodeURIComponent(parsed.fragment)); 3763 } 3764 } 3765 if (schemeHandler && schemeHandler.parse) { 3766 schemeHandler.parse(parsed, options); 3767 } 3768 } else { 3769 parsed.error = parsed.error || "URI can not be parsed."; 3770 } 3771 return parsed; 3772 } 3773 var fastUri = { 3774 SCHEMES, 3775 normalize, 3776 resolve, 3777 resolveComponents, 3778 equal, 3779 serialize, 3780 parse 3781 }; 3782 module.exports = fastUri; 3783 module.exports.default = fastUri; 3784 module.exports.fastUri = fastUri; 3785 } 3786 }); 3787 3788 // node_modules/ajv/dist/runtime/uri.js 3789 var require_uri = __commonJS({ 3790 "node_modules/ajv/dist/runtime/uri.js"(exports) { 3791 "use strict"; 3792 Object.defineProperty(exports, "__esModule", { value: true }); 3793 var uri = require_fast_uri(); 3794 uri.code = 'require("ajv/dist/runtime/uri").default'; 3795 exports.default = uri; 3796 } 3797 }); 3798 3799 // node_modules/ajv/dist/core.js 3800 var require_core = __commonJS({ 3801 "node_modules/ajv/dist/core.js"(exports) { 3802 "use strict"; 3803 Object.defineProperty(exports, "__esModule", { value: true }); 3804 exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0; 3805 var validate_1 = require_validate(); 3806 Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function() { 3807 return validate_1.KeywordCxt; 3808 } }); 3809 var codegen_1 = require_codegen(); 3810 Object.defineProperty(exports, "_", { enumerable: true, get: function() { 3811 return codegen_1._; 3812 } }); 3813 Object.defineProperty(exports, "str", { enumerable: true, get: function() { 3814 return codegen_1.str; 3815 } }); 3816 Object.defineProperty(exports, "stringify", { enumerable: true, get: function() { 3817 return codegen_1.stringify; 3818 } }); 3819 Object.defineProperty(exports, "nil", { enumerable: true, get: function() { 3820 return codegen_1.nil; 3821 } }); 3822 Object.defineProperty(exports, "Name", { enumerable: true, get: function() { 3823 return codegen_1.Name; 3824 } }); 3825 Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function() { 3826 return codegen_1.CodeGen; 3827 } }); 3828 var validation_error_1 = require_validation_error(); 3829 var ref_error_1 = require_ref_error(); 3830 var rules_1 = require_rules(); 3831 var compile_1 = require_compile(); 3832 var codegen_2 = require_codegen(); 3833 var resolve_1 = require_resolve(); 3834 var dataType_1 = require_dataType(); 3835 var util_1 = require_util(); 3836 var $dataRefSchema = require_data2(); 3837 var uri_1 = require_uri(); 3838 var defaultRegExp = (str, flags) => new RegExp(str, flags); 3839 defaultRegExp.code = "new RegExp"; 3840 var META_IGNORE_OPTIONS = ["removeAdditional", "useDefaults", "coerceTypes"]; 3841 var EXT_SCOPE_NAMES = /* @__PURE__ */ new Set([ 3842 "validate", 3843 "serialize", 3844 "parse", 3845 "wrapper", 3846 "root", 3847 "schema", 3848 "keyword", 3849 "pattern", 3850 "formats", 3851 "validate$data", 3852 "func", 3853 "obj", 3854 "Error" 3855 ]); 3856 var removedOptions = { 3857 errorDataPath: "", 3858 format: "`validateFormats: false` can be used instead.", 3859 nullable: '"nullable" keyword is supported by default.', 3860 jsonPointers: "Deprecated jsPropertySyntax can be used instead.", 3861 extendRefs: "Deprecated ignoreKeywordsWithRef can be used instead.", 3862 missingRefs: "Pass empty schema with $id that should be ignored to ajv.addSchema.", 3863 processCode: "Use option `code: {process: (code, schemaEnv: object) => string}`", 3864 sourceCode: "Use option `code: {source: true}`", 3865 strictDefaults: "It is default now, see option `strict`.", 3866 strictKeywords: "It is default now, see option `strict`.", 3867 uniqueItems: '"uniqueItems" keyword is always validated.', 3868 unknownFormats: "Disable strict mode or pass `true` to `ajv.addFormat` (or `formats` option).", 3869 cache: "Map is used as cache, schema object as key.", 3870 serialize: "Map is used as cache, schema object as key.", 3871 ajvErrors: "It is default now." 3872 }; 3873 var deprecatedOptions = { 3874 ignoreKeywordsWithRef: "", 3875 jsPropertySyntax: "", 3876 unicode: '"minLength"/"maxLength" account for unicode characters by default.' 3877 }; 3878 var MAX_EXPRESSION = 200; 3879 function requiredOptions(o) { 3880 var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0; 3881 const s = o.strict; 3882 const _optz = (_a = o.code) === null || _a === void 0 ? void 0 : _a.optimize; 3883 const optimize = _optz === true || _optz === void 0 ? 1 : _optz || 0; 3884 const regExp = (_c = (_b = o.code) === null || _b === void 0 ? void 0 : _b.regExp) !== null && _c !== void 0 ? _c : defaultRegExp; 3885 const uriResolver = (_d = o.uriResolver) !== null && _d !== void 0 ? _d : uri_1.default; 3886 return { 3887 strictSchema: (_f = (_e = o.strictSchema) !== null && _e !== void 0 ? _e : s) !== null && _f !== void 0 ? _f : true, 3888 strictNumbers: (_h = (_g = o.strictNumbers) !== null && _g !== void 0 ? _g : s) !== null && _h !== void 0 ? _h : true, 3889 strictTypes: (_k = (_j = o.strictTypes) !== null && _j !== void 0 ? _j : s) !== null && _k !== void 0 ? _k : "log", 3890 strictTuples: (_m = (_l = o.strictTuples) !== null && _l !== void 0 ? _l : s) !== null && _m !== void 0 ? _m : "log", 3891 strictRequired: (_p = (_o = o.strictRequired) !== null && _o !== void 0 ? _o : s) !== null && _p !== void 0 ? _p : false, 3892 code: o.code ? { ...o.code, optimize, regExp } : { optimize, regExp }, 3893 loopRequired: (_q = o.loopRequired) !== null && _q !== void 0 ? _q : MAX_EXPRESSION, 3894 loopEnum: (_r = o.loopEnum) !== null && _r !== void 0 ? _r : MAX_EXPRESSION, 3895 meta: (_s = o.meta) !== null && _s !== void 0 ? _s : true, 3896 messages: (_t = o.messages) !== null && _t !== void 0 ? _t : true, 3897 inlineRefs: (_u = o.inlineRefs) !== null && _u !== void 0 ? _u : true, 3898 schemaId: (_v = o.schemaId) !== null && _v !== void 0 ? _v : "$id", 3899 addUsedSchema: (_w = o.addUsedSchema) !== null && _w !== void 0 ? _w : true, 3900 validateSchema: (_x = o.validateSchema) !== null && _x !== void 0 ? _x : true, 3901 validateFormats: (_y = o.validateFormats) !== null && _y !== void 0 ? _y : true, 3902 unicodeRegExp: (_z = o.unicodeRegExp) !== null && _z !== void 0 ? _z : true, 3903 int32range: (_0 = o.int32range) !== null && _0 !== void 0 ? _0 : true, 3904 uriResolver 3905 }; 3906 } 3907 var Ajv2 = class { 3908 constructor(opts = {}) { 3909 this.schemas = {}; 3910 this.refs = {}; 3911 this.formats = {}; 3912 this._compilations = /* @__PURE__ */ new Set(); 3913 this._loading = {}; 3914 this._cache = /* @__PURE__ */ new Map(); 3915 opts = this.opts = { ...opts, ...requiredOptions(opts) }; 3916 const { es5, lines } = this.opts.code; 3917 this.scope = new codegen_2.ValueScope({ scope: {}, prefixes: EXT_SCOPE_NAMES, es5, lines }); 3918 this.logger = getLogger(opts.logger); 3919 const formatOpt = opts.validateFormats; 3920 opts.validateFormats = false; 3921 this.RULES = (0, rules_1.getRules)(); 3922 checkOptions.call(this, removedOptions, opts, "NOT SUPPORTED"); 3923 checkOptions.call(this, deprecatedOptions, opts, "DEPRECATED", "warn"); 3924 this._metaOpts = getMetaSchemaOptions.call(this); 3925 if (opts.formats) 3926 addInitialFormats.call(this); 3927 this._addVocabularies(); 3928 this._addDefaultMetaSchema(); 3929 if (opts.keywords) 3930 addInitialKeywords.call(this, opts.keywords); 3931 if (typeof opts.meta == "object") 3932 this.addMetaSchema(opts.meta); 3933 addInitialSchemas.call(this); 3934 opts.validateFormats = formatOpt; 3935 } 3936 _addVocabularies() { 3937 this.addKeyword("$async"); 3938 } 3939 _addDefaultMetaSchema() { 3940 const { $data, meta, schemaId } = this.opts; 3941 let _dataRefSchema = $dataRefSchema; 3942 if (schemaId === "id") { 3943 _dataRefSchema = { ...$dataRefSchema }; 3944 _dataRefSchema.id = _dataRefSchema.$id; 3945 delete _dataRefSchema.$id; 3946 } 3947 if (meta && $data) 3948 this.addMetaSchema(_dataRefSchema, _dataRefSchema[schemaId], false); 3949 } 3950 defaultMeta() { 3951 const { meta, schemaId } = this.opts; 3952 return this.opts.defaultMeta = typeof meta == "object" ? meta[schemaId] || meta : void 0; 3953 } 3954 validate(schemaKeyRef, data) { 3955 let v; 3956 if (typeof schemaKeyRef == "string") { 3957 v = this.getSchema(schemaKeyRef); 3958 if (!v) 3959 throw new Error(`no schema with key or ref "$schemaKeyRef}"`); 3960 } else { 3961 v = this.compile(schemaKeyRef); 3962 } 3963 const valid = v(data); 3964 if (!("$async" in v)) 3965 this.errors = v.errors; 3966 return valid; 3967 } 3968 compile(schema, _meta) { 3969 const sch = this._addSchema(schema, _meta); 3970 return sch.validate || this._compileSchemaEnv(sch); 3971 } 3972 compileAsync(schema, meta) { 3973 if (typeof this.opts.loadSchema != "function") { 3974 throw new Error("options.loadSchema should be a function"); 3975 } 3976 const { loadSchema } = this.opts; 3977 return runCompileAsync.call(this, schema, meta); 3978 async function runCompileAsync(_schema, _meta) { 3979 await loadMetaSchema.call(this, _schema.$schema); 3980 const sch = this._addSchema(_schema, _meta); 3981 return sch.validate || _compileAsync.call(this, sch); 3982 } 3983 async function loadMetaSchema($ref) { 3984 if ($ref && !this.getSchema($ref)) { 3985 await runCompileAsync.call(this, { $ref }, true); 3986 } 3987 } 3988 async function _compileAsync(sch) { 3989 try { 3990 return this._compileSchemaEnv(sch); 3991 } catch (e) { 3992 if (!(e instanceof ref_error_1.default)) 3993 throw e; 3994 checkLoaded.call(this, e); 3995 await loadMissingSchema.call(this, e.missingSchema); 3996 return _compileAsync.call(this, sch); 3997 } 3998 } 3999 function checkLoaded({ missingSchema: ref, missingRef }) { 4000 if (this.refs[ref]) { 4001 throw new Error(`AnySchema $ref} is loaded but $missingRef} cannot be resolved`); 4002 } 4003 } 4004 async function loadMissingSchema(ref) { 4005 const _schema = await _loadSchema.call(this, ref); 4006 if (!this.refs[ref]) 4007 await loadMetaSchema.call(this, _schema.$schema); 4008 if (!this.refs[ref]) 4009 this.addSchema(_schema, ref, meta); 4010 } 4011 async function _loadSchema(ref) { 4012 const p = this._loading[ref]; 4013 if (p) 4014 return p; 4015 try { 4016 return await (this._loading[ref] = loadSchema(ref)); 4017 } finally { 4018 delete this._loading[ref]; 4019 } 4020 } 4021 } 4022 // Adds schema to the instance 4023 addSchema(schema, key, _meta, _validateSchema = this.opts.validateSchema) { 4024 if (Array.isArray(schema)) { 4025 for (const sch of schema) 4026 this.addSchema(sch, void 0, _meta, _validateSchema); 4027 return this; 4028 } 4029 let id; 4030 if (typeof schema === "object") { 4031 const { schemaId } = this.opts; 4032 id = schema[schemaId]; 4033 if (id !== void 0 && typeof id != "string") { 4034 throw new Error(`schema $schemaId} must be string`); 4035 } 4036 } 4037 key = (0, resolve_1.normalizeId)(key || id); 4038 this._checkUnique(key); 4039 this.schemas[key] = this._addSchema(schema, _meta, key, _validateSchema, true); 4040 return this; 4041 } 4042 // Add schema that will be used to validate other schemas 4043 // options in META_IGNORE_OPTIONS are alway set to false 4044 addMetaSchema(schema, key, _validateSchema = this.opts.validateSchema) { 4045 this.addSchema(schema, key, true, _validateSchema); 4046 return this; 4047 } 4048 // Validate schema against its meta-schema 4049 validateSchema(schema, throwOrLogError) { 4050 if (typeof schema == "boolean") 4051 return true; 4052 let $schema; 4053 $schema = schema.$schema; 4054 if ($schema !== void 0 && typeof $schema != "string") { 4055 throw new Error("$schema must be a string"); 4056 } 4057 $schema = $schema || this.opts.defaultMeta || this.defaultMeta(); 4058 if (!$schema) { 4059 this.logger.warn("meta-schema not available"); 4060 this.errors = null; 4061 return true; 4062 } 4063 const valid = this.validate($schema, schema); 4064 if (!valid && throwOrLogError) { 4065 const message = "schema is invalid: " + this.errorsText(); 4066 if (this.opts.validateSchema === "log") 4067 this.logger.error(message); 4068 else 4069 throw new Error(message); 4070 } 4071 return valid; 4072 } 4073 // Get compiled schema by `key` or `ref`. 4074 // (`key` that was passed to `addSchema` or full schema reference - `schema.$id` or resolved id) 4075 getSchema(keyRef) { 4076 let sch; 4077 while (typeof (sch = getSchEnv.call(this, keyRef)) == "string") 4078 keyRef = sch; 4079 if (sch === void 0) { 4080 const { schemaId } = this.opts; 4081 const root = new compile_1.SchemaEnv({ schema: {}, schemaId }); 4082 sch = compile_1.resolveSchema.call(this, root, keyRef); 4083 if (!sch) 4084 return; 4085 this.refs[keyRef] = sch; 4086 } 4087 return sch.validate || this._compileSchemaEnv(sch); 4088 } 4089 // Remove cached schema(s). 4090 // If no parameter is passed all schemas but meta-schemas are removed. 4091 // If RegExp is passed all schemas with key/id matching pattern but meta-schemas are removed. 4092 // Even if schema is referenced by other schemas it still can be removed as other schemas have local references. 4093 removeSchema(schemaKeyRef) { 4094 if (schemaKeyRef instanceof RegExp) { 4095 this._removeAllSchemas(this.schemas, schemaKeyRef); 4096 this._removeAllSchemas(this.refs, schemaKeyRef); 4097 return this; 4098 } 4099 switch (typeof schemaKeyRef) { 4100 case "undefined": 4101 this._removeAllSchemas(this.schemas); 4102 this._removeAllSchemas(this.refs); 4103 this._cache.clear(); 4104 return this; 4105 case "string": { 4106 const sch = getSchEnv.call(this, schemaKeyRef); 4107 if (typeof sch == "object") 4108 this._cache.delete(sch.schema); 4109 delete this.schemas[schemaKeyRef]; 4110 delete this.refs[schemaKeyRef]; 4111 return this; 4112 } 4113 case "object": { 4114 const cacheKey = schemaKeyRef; 4115 this._cache.delete(cacheKey); 4116 let id = schemaKeyRef[this.opts.schemaId]; 4117 if (id) { 4118 id = (0, resolve_1.normalizeId)(id); 4119 delete this.schemas[id]; 4120 delete this.refs[id]; 4121 } 4122 return this; 4123 } 4124 default: 4125 throw new Error("ajv.removeSchema: invalid parameter"); 4126 } 4127 } 4128 // add "vocabulary" - a collection of keywords 4129 addVocabulary(definitions) { 4130 for (const def of definitions) 4131 this.addKeyword(def); 4132 return this; 4133 } 4134 addKeyword(kwdOrDef, def) { 4135 let keyword; 4136 if (typeof kwdOrDef == "string") { 4137 keyword = kwdOrDef; 4138 if (typeof def == "object") { 4139 this.logger.warn("these parameters are deprecated, see docs for addKeyword"); 4140 def.keyword = keyword; 4141 } 4142 } else if (typeof kwdOrDef == "object" && def === void 0) { 4143 def = kwdOrDef; 4144 keyword = def.keyword; 4145 if (Array.isArray(keyword) && !keyword.length) { 4146 throw new Error("addKeywords: keyword must be string or non-empty array"); 4147 } 4148 } else { 4149 throw new Error("invalid addKeywords parameters"); 4150 } 4151 checkKeyword.call(this, keyword, def); 4152 if (!def) { 4153 (0, util_1.eachItem)(keyword, (kwd) => addRule.call(this, kwd)); 4154 return this; 4155 } 4156 keywordMetaschema.call(this, def); 4157 const definition = { 4158 ...def, 4159 type: (0, dataType_1.getJSONTypes)(def.type), 4160 schemaType: (0, dataType_1.getJSONTypes)(def.schemaType) 4161 }; 4162 (0, util_1.eachItem)(keyword, definition.type.length === 0 ? (k) => addRule.call(this, k, definition) : (k) => definition.type.forEach((t) => addRule.call(this, k, definition, t))); 4163 return this; 4164 } 4165 getKeyword(keyword) { 4166 const rule = this.RULES.all[keyword]; 4167 return typeof rule == "object" ? rule.definition : !!rule; 4168 } 4169 // Remove keyword 4170 removeKeyword(keyword) { 4171 const { RULES } = this; 4172 delete RULES.keywords[keyword]; 4173 delete RULES.all[keyword]; 4174 for (const group of RULES.rules) { 4175 const i = group.rules.findIndex((rule) => rule.keyword === keyword); 4176 if (i >= 0) 4177 group.rules.splice(i, 1); 4178 } 4179 return this; 4180 } 4181 // Add format 4182 addFormat(name, format) { 4183 if (typeof format == "string") 4184 format = new RegExp(format); 4185 this.formats[name] = format; 4186 return this; 4187 } 4188 errorsText(errors = this.errors, { separator = ", ", dataVar = "data" } = {}) { 4189 if (!errors || errors.length === 0) 4190 return "No errors"; 4191 return errors.map((e) => `$dataVar}$e.instancePath} $e.message}`).reduce((text, msg) => text + separator + msg); 4192 } 4193 $dataMetaSchema(metaSchema, keywordsJsonPointers) { 4194 const rules = this.RULES.all; 4195 metaSchema = JSON.parse(JSON.stringify(metaSchema)); 4196 for (const jsonPointer of keywordsJsonPointers) { 4197 const segments = jsonPointer.split("/").slice(1); 4198 let keywords = metaSchema; 4199 for (const seg of segments) 4200 keywords = keywords[seg]; 4201 for (const key in rules) { 4202 const rule = rules[key]; 4203 if (typeof rule != "object") 4204 continue; 4205 const { $data } = rule.definition; 4206 const schema = keywords[key]; 4207 if ($data && schema) 4208 keywords[key] = schemaOrData(schema); 4209 } 4210 } 4211 return metaSchema; 4212 } 4213 _removeAllSchemas(schemas, regex) { 4214 for (const keyRef in schemas) { 4215 const sch = schemas[keyRef]; 4216 if (!regex || regex.test(keyRef)) { 4217 if (typeof sch == "string") { 4218 delete schemas[keyRef]; 4219 } else if (sch && !sch.meta) { 4220 this._cache.delete(sch.schema); 4221 delete schemas[keyRef]; 4222 } 4223 } 4224 } 4225 } 4226 _addSchema(schema, meta, baseId, validateSchema = this.opts.validateSchema, addSchema = this.opts.addUsedSchema) { 4227 let id; 4228 const { schemaId } = this.opts; 4229 if (typeof schema == "object") { 4230 id = schema[schemaId]; 4231 } else { 4232 if (this.opts.jtd) 4233 throw new Error("schema must be object"); 4234 else if (typeof schema != "boolean") 4235 throw new Error("schema must be object or boolean"); 4236 } 4237 let sch = this._cache.get(schema); 4238 if (sch !== void 0) 4239 return sch; 4240 baseId = (0, resolve_1.normalizeId)(id || baseId); 4241 const localRefs = resolve_1.getSchemaRefs.call(this, schema, baseId); 4242 sch = new compile_1.SchemaEnv({ schema, schemaId, meta, baseId, localRefs }); 4243 this._cache.set(sch.schema, sch); 4244 if (addSchema && !baseId.startsWith("#")) { 4245 if (baseId) 4246 this._checkUnique(baseId); 4247 this.refs[baseId] = sch; 4248 } 4249 if (validateSchema) 4250 this.validateSchema(schema, true); 4251 return sch; 4252 } 4253 _checkUnique(id) { 4254 if (this.schemas[id] || this.refs[id]) { 4255 throw new Error(`schema with key or id "$id}" already exists`); 4256 } 4257 } 4258 _compileSchemaEnv(sch) { 4259 if (sch.meta) 4260 this._compileMetaSchema(sch); 4261 else 4262 compile_1.compileSchema.call(this, sch); 4263 if (!sch.validate) 4264 throw new Error("ajv implementation error"); 4265 return sch.validate; 4266 } 4267 _compileMetaSchema(sch) { 4268 const currentOpts = this.opts; 4269 this.opts = this._metaOpts; 4270 try { 4271 compile_1.compileSchema.call(this, sch); 4272 } finally { 4273 this.opts = currentOpts; 4274 } 4275 } 4276 }; 4277 Ajv2.ValidationError = validation_error_1.default; 4278 Ajv2.MissingRefError = ref_error_1.default; 4279 exports.default = Ajv2; 4280 function checkOptions(checkOpts, options, msg, log = "error") { 4281 for (const key in checkOpts) { 4282 const opt = key; 4283 if (opt in options) 4284 this.logger[log](`$msg}: option $key}. $checkOpts[opt]}`); 4285 } 4286 } 4287 function getSchEnv(keyRef) { 4288 keyRef = (0, resolve_1.normalizeId)(keyRef); 4289 return this.schemas[keyRef] || this.refs[keyRef]; 4290 } 4291 function addInitialSchemas() { 4292 const optsSchemas = this.opts.schemas; 4293 if (!optsSchemas) 4294 return; 4295 if (Array.isArray(optsSchemas)) 4296 this.addSchema(optsSchemas); 4297 else 4298 for (const key in optsSchemas) 4299 this.addSchema(optsSchemas[key], key); 4300 } 4301 function addInitialFormats() { 4302 for (const name in this.opts.formats) { 4303 const format = this.opts.formats[name]; 4304 if (format) 4305 this.addFormat(name, format); 4306 } 4307 } 4308 function addInitialKeywords(defs) { 4309 if (Array.isArray(defs)) { 4310 this.addVocabulary(defs); 4311 return; 4312 } 4313 this.logger.warn("keywords option as map is deprecated, pass array"); 4314 for (const keyword in defs) { 4315 const def = defs[keyword]; 4316 if (!def.keyword) 4317 def.keyword = keyword; 4318 this.addKeyword(def); 4319 } 4320 } 4321 function getMetaSchemaOptions() { 4322 const metaOpts = { ...this.opts }; 4323 for (const opt of META_IGNORE_OPTIONS) 4324 delete metaOpts[opt]; 4325 return metaOpts; 4326 } 4327 var noLogs = { log() { 4328 }, warn() { 4329 }, error() { 4330 } }; 4331 function getLogger(logger) { 4332 if (logger === false) 4333 return noLogs; 4334 if (logger === void 0) 4335 return console; 4336 if (logger.log && logger.warn && logger.error) 4337 return logger; 4338 throw new Error("logger must implement log, warn and error methods"); 4339 } 4340 var KEYWORD_NAME = /^[a-z_$][a-z0-9_$:-]*$/i; 4341 function checkKeyword(keyword, def) { 4342 const { RULES } = this; 4343 (0, util_1.eachItem)(keyword, (kwd) => { 4344 if (RULES.keywords[kwd]) 4345 throw new Error(`Keyword $kwd} is already defined`); 4346 if (!KEYWORD_NAME.test(kwd)) 4347 throw new Error(`Keyword $kwd} has invalid name`); 4348 }); 4349 if (!def) 4350 return; 4351 if (def.$data && !("code" in def || "validate" in def)) { 4352 throw new Error('$data keyword must have "code" or "validate" function'); 4353 } 4354 } 4355 function addRule(keyword, definition, dataType) { 4356 var _a; 4357 const post = definition === null || definition === void 0 ? void 0 : definition.post; 4358 if (dataType && post) 4359 throw new Error('keyword with "post" flag cannot have "type"'); 4360 const { RULES } = this; 4361 let ruleGroup = post ? RULES.post : RULES.rules.find(({ type: t }) => t === dataType); 4362 if (!ruleGroup) { 4363 ruleGroup = { type: dataType, rules: [] }; 4364 RULES.rules.push(ruleGroup); 4365 } 4366 RULES.keywords[keyword] = true; 4367 if (!definition) 4368 return; 4369 const rule = { 4370 keyword, 4371 definition: { 4372 ...definition, 4373 type: (0, dataType_1.getJSONTypes)(definition.type), 4374 schemaType: (0, dataType_1.getJSONTypes)(definition.schemaType) 4375 } 4376 }; 4377 if (definition.before) 4378 addBeforeRule.call(this, ruleGroup, rule, definition.before); 4379 else 4380 ruleGroup.rules.push(rule); 4381 RULES.all[keyword] = rule; 4382 (_a = definition.implements) === null || _a === void 0 ? void 0 : _a.forEach((kwd) => this.addKeyword(kwd)); 4383 } 4384 function addBeforeRule(ruleGroup, rule, before) { 4385 const i = ruleGroup.rules.findIndex((_rule) => _rule.keyword === before); 4386 if (i >= 0) { 4387 ruleGroup.rules.splice(i, 0, rule); 4388 } else { 4389 ruleGroup.rules.push(rule); 4390 this.logger.warn(`rule $before} is not defined`); 4391 } 4392 } 4393 function keywordMetaschema(def) { 4394 let { metaSchema } = def; 4395 if (metaSchema === void 0) 4396 return; 4397 if (def.$data && this.opts.$data) 4398 metaSchema = schemaOrData(metaSchema); 4399 def.validateSchema = this.compile(metaSchema, true); 4400 } 4401 var $dataRef = { 4402 $ref: "https://raw.githubusercontent.com/ajv-validator/ajv/master/lib/refs/data.json#" 4403 }; 4404 function schemaOrData(schema) { 4405 return { anyOf: [schema, $dataRef] }; 4406 } 4407 } 4408 }); 4409 4410 // node_modules/ajv/dist/vocabularies/core/ref.js 4411 var require_ref = __commonJS({ 4412 "node_modules/ajv/dist/vocabularies/core/ref.js"(exports) { 4413 "use strict"; 4414 Object.defineProperty(exports, "__esModule", { value: true }); 4415 exports.callRef = exports.getValidate = void 0; 4416 var ref_error_1 = require_ref_error(); 4417 var code_1 = require_code2(); 4418 var codegen_1 = require_codegen(); 4419 var names_1 = require_names(); 4420 var compile_1 = require_compile(); 4421 var util_1 = require_util(); 4422 var def = { 4423 keyword: "$ref", 4424 schemaType: "string", 4425 code(cxt) { 4426 const { gen, schema: $ref, it } = cxt; 4427 const { baseId, schemaEnv: env, validateName, opts, self } = it; 4428 const { root } = env; 4429 if (($ref === "#" || $ref === "#/") && baseId === root.baseId) 4430 return callRootRef(); 4431 const schOrEnv = compile_1.resolveRef.call(self, root, baseId, $ref); 4432 if (schOrEnv === void 0) 4433 throw new ref_error_1.default(it.opts.uriResolver, baseId, $ref); 4434 if (schOrEnv instanceof compile_1.SchemaEnv) 4435 return callValidate(schOrEnv); 4436 return inlineRefSchema(schOrEnv); 4437 function callRootRef() { 4438 if (env === root) 4439 return callRef(cxt, validateName, env, env.$async); 4440 const rootName = gen.scopeValue("root", { ref: root }); 4441 return callRef(cxt, (0, codegen_1._)`$rootName}.validate`, root, root.$async); 4442 } 4443 function callValidate(sch) { 4444 const v = getValidate(cxt, sch); 4445 callRef(cxt, v, sch, sch.$async); 4446 } 4447 function inlineRefSchema(sch) { 4448 const schName = gen.scopeValue("schema", opts.code.source === true ? { ref: sch, code: (0, codegen_1.stringify)(sch) } : { ref: sch }); 4449 const valid = gen.name("valid"); 4450 const schCxt = cxt.subschema({ 4451 schema: sch, 4452 dataTypes: [], 4453 schemaPath: codegen_1.nil, 4454 topSchemaRef: schName, 4455 errSchemaPath: $ref 4456 }, valid); 4457 cxt.mergeEvaluated(schCxt); 4458 cxt.ok(valid); 4459 } 4460 } 4461 }; 4462 function getValidate(cxt, sch) { 4463 const { gen } = cxt; 4464 return sch.validate ? gen.scopeValue("validate", { ref: sch.validate }) : (0, codegen_1._)`$gen.scopeValue("wrapper", { ref: sch })}.validate`; 4465 } 4466 exports.getValidate = getValidate; 4467 function callRef(cxt, v, sch, $async) { 4468 const { gen, it } = cxt; 4469 const { allErrors, schemaEnv: env, opts } = it; 4470 const passCxt = opts.passContext ? names_1.default.this : codegen_1.nil; 4471 if ($async) 4472 callAsyncRef(); 4473 else 4474 callSyncRef(); 4475 function callAsyncRef() { 4476 if (!env.$async) 4477 throw new Error("async schema referenced by sync schema"); 4478 const valid = gen.let("valid"); 4479 gen.try(() => { 4480 gen.code((0, codegen_1._)`await ${(0, code_1.callValidateCode)(cxt, v, passCxt)}`); 4481 addEvaluatedFrom(v); 4482 if (!allErrors) 4483 gen.assign(valid, true); 4484 }, (e) => { 4485 gen.if((0, codegen_1._)`!($e} instanceof $it.ValidationError})`, () => gen.throw(e)); 4486 addErrorsFrom(e); 4487 if (!allErrors) 4488 gen.assign(valid, false); 4489 }); 4490 cxt.ok(valid); 4491 } 4492 function callSyncRef() { 4493 cxt.result((0, code_1.callValidateCode)(cxt, v, passCxt), () => addEvaluatedFrom(v), () => addErrorsFrom(v)); 4494 } 4495 function addErrorsFrom(source) { 4496 const errs = (0, codegen_1._)`$source}.errors`; 4497 gen.assign(names_1.default.vErrors, (0, codegen_1._)`$names_1.default.vErrors} === null ? $errs} : $names_1.default.vErrors}.concat($errs})`); 4498 gen.assign(names_1.default.errors, (0, codegen_1._)`$names_1.default.vErrors}.length`); 4499 } 4500 function addEvaluatedFrom(source) { 4501 var _a; 4502 if (!it.opts.unevaluated) 4503 return; 4504 const schEvaluated = (_a = sch === null || sch === void 0 ? void 0 : sch.validate) === null || _a === void 0 ? void 0 : _a.evaluated; 4505 if (it.props !== true) { 4506 if (schEvaluated && !schEvaluated.dynamicProps) { 4507 if (schEvaluated.props !== void 0) { 4508 it.props = util_1.mergeEvaluated.props(gen, schEvaluated.props, it.props); 4509 } 4510 } else { 4511 const props = gen.var("props", (0, codegen_1._)`$source}.evaluated.props`); 4512 it.props = util_1.mergeEvaluated.props(gen, props, it.props, codegen_1.Name); 4513 } 4514 } 4515 if (it.items !== true) { 4516 if (schEvaluated && !schEvaluated.dynamicItems) { 4517 if (schEvaluated.items !== void 0) { 4518 it.items = util_1.mergeEvaluated.items(gen, schEvaluated.items, it.items); 4519 } 4520 } else { 4521 const items = gen.var("items", (0, codegen_1._)`$source}.evaluated.items`); 4522 it.items = util_1.mergeEvaluated.items(gen, items, it.items, codegen_1.Name); 4523 } 4524 } 4525 } 4526 } 4527 exports.callRef = callRef; 4528 exports.default = def; 4529 } 4530 }); 4531 4532 // node_modules/ajv-draft-04/dist/vocabulary/core.js 4533 var require_core2 = __commonJS({ 4534 "node_modules/ajv-draft-04/dist/vocabulary/core.js"(exports) { 4535 "use strict"; 4536 Object.defineProperty(exports, "__esModule", { value: true }); 4537 var ref_1 = require_ref(); 4538 var core = [ 4539 "$schema", 4540 "id", 4541 "$defs", 4542 { keyword: "$comment" }, 4543 "definitions", 4544 ref_1.default 4545 ]; 4546 exports.default = core; 4547 } 4548 }); 4549 4550 // node_modules/ajv-draft-04/dist/vocabulary/validation/limitNumber.js 4551 var require_limitNumber = __commonJS({ 4552 "node_modules/ajv-draft-04/dist/vocabulary/validation/limitNumber.js"(exports) { 4553 "use strict"; 4554 Object.defineProperty(exports, "__esModule", { value: true }); 4555 var core_1 = require_core(); 4556 var codegen_1 = require_codegen(); 4557 var ops = codegen_1.operators; 4558 var KWDs = { 4559 maximum: { 4560 exclusive: "exclusiveMaximum", 4561 ops: [ 4562 { okStr: "<=", ok: ops.LTE, fail: ops.GT }, 4563 { okStr: "<", ok: ops.LT, fail: ops.GTE } 4564 ] 4565 }, 4566 minimum: { 4567 exclusive: "exclusiveMinimum", 4568 ops: [ 4569 { okStr: ">=", ok: ops.GTE, fail: ops.LT }, 4570 { okStr: ">", ok: ops.GT, fail: ops.LTE } 4571 ] 4572 } 4573 }; 4574 var error = { 4575 message: (cxt) => core_1.str`must be $kwdOp(cxt).okStr} $cxt.schemaCode}`, 4576 params: (cxt) => core_1._`{comparison: $kwdOp(cxt).okStr}, limit: $cxt.schemaCode}}` 4577 }; 4578 var def = { 4579 keyword: Object.keys(KWDs), 4580 type: "number", 4581 schemaType: "number", 4582 $data: true, 4583 error, 4584 code(cxt) { 4585 const { data, schemaCode } = cxt; 4586 cxt.fail$data(core_1._`$data} $kwdOp(cxt).fail} $schemaCode} || isNaN($data})`); 4587 } 4588 }; 4589 function kwdOp(cxt) { 4590 var _a; 4591 const keyword = cxt.keyword; 4592 const opsIdx = ((_a = cxt.parentSchema) === null || _a === void 0 ? void 0 : _a[KWDs[keyword].exclusive]) ? 1 : 0; 4593 return KWDs[keyword].ops[opsIdx]; 4594 } 4595 exports.default = def; 4596 } 4597 }); 4598 4599 // node_modules/ajv-draft-04/dist/vocabulary/validation/limitNumberExclusive.js 4600 var require_limitNumberExclusive = __commonJS({ 4601 "node_modules/ajv-draft-04/dist/vocabulary/validation/limitNumberExclusive.js"(exports) { 4602 "use strict"; 4603 Object.defineProperty(exports, "__esModule", { value: true }); 4604 var KWDs = { 4605 exclusiveMaximum: "maximum", 4606 exclusiveMinimum: "minimum" 4607 }; 4608 var def = { 4609 keyword: Object.keys(KWDs), 4610 type: "number", 4611 schemaType: "boolean", 4612 code({ keyword, parentSchema }) { 4613 const limitKwd = KWDs[keyword]; 4614 if (parentSchema[limitKwd] === void 0) { 4615 throw new Error(`$keyword} can only be used with $limitKwd}`); 4616 } 4617 } 4618 }; 4619 exports.default = def; 4620 } 4621 }); 4622 4623 // node_modules/ajv/dist/vocabularies/validation/multipleOf.js 4624 var require_multipleOf = __commonJS({ 4625 "node_modules/ajv/dist/vocabularies/validation/multipleOf.js"(exports) { 4626 "use strict"; 4627 Object.defineProperty(exports, "__esModule", { value: true }); 4628 var codegen_1 = require_codegen(); 4629 var error = { 4630 message: ({ schemaCode }) => (0, codegen_1.str)`must be multiple of $schemaCode}`, 4631 params: ({ schemaCode }) => (0, codegen_1._)`{multipleOf: $schemaCode}}` 4632 }; 4633 var def = { 4634 keyword: "multipleOf", 4635 type: "number", 4636 schemaType: "number", 4637 $data: true, 4638 error, 4639 code(cxt) { 4640 const { gen, data, schemaCode, it } = cxt; 4641 const prec = it.opts.multipleOfPrecision; 4642 const res = gen.let("res"); 4643 const invalid = prec ? (0, codegen_1._)`Math.abs(Math.round($res}) - $res}) > 1e-$prec}` : (0, codegen_1._)`$res} !== parseInt($res})`; 4644 cxt.fail$data((0, codegen_1._)`($schemaCode} === 0 || ($res} = $data}/$schemaCode}, $invalid}))`); 4645 } 4646 }; 4647 exports.default = def; 4648 } 4649 }); 4650 4651 // node_modules/ajv/dist/runtime/ucs2length.js 4652 var require_ucs2length = __commonJS({ 4653 "node_modules/ajv/dist/runtime/ucs2length.js"(exports) { 4654 "use strict"; 4655 Object.defineProperty(exports, "__esModule", { value: true }); 4656 function ucs2length(str) { 4657 const len = str.length; 4658 let length = 0; 4659 let pos = 0; 4660 let value; 4661 while (pos < len) { 4662 length++; 4663 value = str.charCodeAt(pos++); 4664 if (value >= 55296 && value <= 56319 && pos < len) { 4665 value = str.charCodeAt(pos); 4666 if ((value & 64512) === 56320) 4667 pos++; 4668 } 4669 } 4670 return length; 4671 } 4672 exports.default = ucs2length; 4673 ucs2length.code = 'require("ajv/dist/runtime/ucs2length").default'; 4674 } 4675 }); 4676 4677 // node_modules/ajv/dist/vocabularies/validation/limitLength.js 4678 var require_limitLength = __commonJS({ 4679 "node_modules/ajv/dist/vocabularies/validation/limitLength.js"(exports) { 4680 "use strict"; 4681 Object.defineProperty(exports, "__esModule", { value: true }); 4682 var codegen_1 = require_codegen(); 4683 var util_1 = require_util(); 4684 var ucs2length_1 = require_ucs2length(); 4685 var error = { 4686 message({ keyword, schemaCode }) { 4687 const comp = keyword === "maxLength" ? "more" : "fewer"; 4688 return (0, codegen_1.str)`must NOT have $comp} than $schemaCode} characters`; 4689 }, 4690 params: ({ schemaCode }) => (0, codegen_1._)`{limit: $schemaCode}}` 4691 }; 4692 var def = { 4693 keyword: ["maxLength", "minLength"], 4694 type: "string", 4695 schemaType: "number", 4696 $data: true, 4697 error, 4698 code(cxt) { 4699 const { keyword, data, schemaCode, it } = cxt; 4700 const op = keyword === "maxLength" ? codegen_1.operators.GT : codegen_1.operators.LT; 4701 const len = it.opts.unicode === false ? (0, codegen_1._)`$data}.length` : (0, codegen_1._)`${(0, util_1.useFunc)(cxt.gen, ucs2length_1.default)}($data})`; 4702 cxt.fail$data((0, codegen_1._)`$len} $op} $schemaCode}`); 4703 } 4704 }; 4705 exports.default = def; 4706 } 4707 }); 4708 4709 // node_modules/ajv/dist/vocabularies/validation/pattern.js 4710 var require_pattern = __commonJS({ 4711 "node_modules/ajv/dist/vocabularies/validation/pattern.js"(exports) { 4712 "use strict"; 4713 Object.defineProperty(exports, "__esModule", { value: true }); 4714 var code_1 = require_code2(); 4715 var codegen_1 = require_codegen(); 4716 var error = { 4717 message: ({ schemaCode }) => (0, codegen_1.str)`must match pattern "$schemaCode}"`, 4718 params: ({ schemaCode }) => (0, codegen_1._)`{pattern: $schemaCode}}` 4719 }; 4720 var def = { 4721 keyword: "pattern", 4722 type: "string", 4723 schemaType: "string", 4724 $data: true, 4725 error, 4726 code(cxt) { 4727 const { data, $data, schema, schemaCode, it } = cxt; 4728 const u = it.opts.unicodeRegExp ? "u" : ""; 4729 const regExp = $data ? (0, codegen_1._)`(new RegExp($schemaCode}, $u}))` : (0, code_1.usePattern)(cxt, schema); 4730 cxt.fail$data((0, codegen_1._)`!$regExp}.test($data})`); 4731 } 4732 }; 4733 exports.default = def; 4734 } 4735 }); 4736 4737 // node_modules/ajv/dist/vocabularies/validation/limitProperties.js 4738 var require_limitProperties = __commonJS({ 4739 "node_modules/ajv/dist/vocabularies/validation/limitProperties.js"(exports) { 4740 "use strict"; 4741 Object.defineProperty(exports, "__esModule", { value: true }); 4742 var codegen_1 = require_codegen(); 4743 var error = { 4744 message({ keyword, schemaCode }) { 4745 const comp = keyword === "maxProperties" ? "more" : "fewer"; 4746 return (0, codegen_1.str)`must NOT have $comp} than $schemaCode} properties`; 4747 }, 4748 params: ({ schemaCode }) => (0, codegen_1._)`{limit: $schemaCode}}` 4749 }; 4750 var def = { 4751 keyword: ["maxProperties", "minProperties"], 4752 type: "object", 4753 schemaType: "number", 4754 $data: true, 4755 error, 4756 code(cxt) { 4757 const { keyword, data, schemaCode } = cxt; 4758 const op = keyword === "maxProperties" ? codegen_1.operators.GT : codegen_1.operators.LT; 4759 cxt.fail$data((0, codegen_1._)`Object.keys($data}).length $op} $schemaCode}`); 4760 } 4761 }; 4762 exports.default = def; 4763 } 4764 }); 4765 4766 // node_modules/ajv/dist/vocabularies/validation/required.js 4767 var require_required = __commonJS({ 4768 "node_modules/ajv/dist/vocabularies/validation/required.js"(exports) { 4769 "use strict"; 4770 Object.defineProperty(exports, "__esModule", { value: true }); 4771 var code_1 = require_code2(); 4772 var codegen_1 = require_codegen(); 4773 var util_1 = require_util(); 4774 var error = { 4775 message: ({ params: { missingProperty } }) => (0, codegen_1.str)`must have required property '$missingProperty}'`, 4776 params: ({ params: { missingProperty } }) => (0, codegen_1._)`{missingProperty: $missingProperty}}` 4777 }; 4778 var def = { 4779 keyword: "required", 4780 type: "object", 4781 schemaType: "array", 4782 $data: true, 4783 error, 4784 code(cxt) { 4785 const { gen, schema, schemaCode, data, $data, it } = cxt; 4786 const { opts } = it; 4787 if (!$data && schema.length === 0) 4788 return; 4789 const useLoop = schema.length >= opts.loopRequired; 4790 if (it.allErrors) 4791 allErrorsMode(); 4792 else 4793 exitOnErrorMode(); 4794 if (opts.strictRequired) { 4795 const props = cxt.parentSchema.properties; 4796 const { definedProperties } = cxt.it; 4797 for (const requiredKey of schema) { 4798 if ((props === null || props === void 0 ? void 0 : props[requiredKey]) === void 0 && !definedProperties.has(requiredKey)) { 4799 const schemaPath = it.schemaEnv.baseId + it.errSchemaPath; 4800 const msg = `required property "$requiredKey}" is not defined at "$schemaPath}" (strictRequired)`; 4801 (0, util_1.checkStrictMode)(it, msg, it.opts.strictRequired); 4802 } 4803 } 4804 } 4805 function allErrorsMode() { 4806 if (useLoop || $data) { 4807 cxt.block$data(codegen_1.nil, loopAllRequired); 4808 } else { 4809 for (const prop of schema) { 4810 (0, code_1.checkReportMissingProp)(cxt, prop); 4811 } 4812 } 4813 } 4814 function exitOnErrorMode() { 4815 const missing = gen.let("missing"); 4816 if (useLoop || $data) { 4817 const valid = gen.let("valid", true); 4818 cxt.block$data(valid, () => loopUntilMissing(missing, valid)); 4819 cxt.ok(valid); 4820 } else { 4821 gen.if((0, code_1.checkMissingProp)(cxt, schema, missing)); 4822 (0, code_1.reportMissingProp)(cxt, missing); 4823 gen.else(); 4824 } 4825 } 4826 function loopAllRequired() { 4827 gen.forOf("prop", schemaCode, (prop) => { 4828 cxt.setParams({ missingProperty: prop }); 4829 gen.if((0, code_1.noPropertyInData)(gen, data, prop, opts.ownProperties), () => cxt.error()); 4830 }); 4831 } 4832 function loopUntilMissing(missing, valid) { 4833 cxt.setParams({ missingProperty: missing }); 4834 gen.forOf(missing, schemaCode, () => { 4835 gen.assign(valid, (0, code_1.propertyInData)(gen, data, missing, opts.ownProperties)); 4836 gen.if((0, codegen_1.not)(valid), () => { 4837 cxt.error(); 4838 gen.break(); 4839 }); 4840 }, codegen_1.nil); 4841 } 4842 } 4843 }; 4844 exports.default = def; 4845 } 4846 }); 4847 4848 // node_modules/ajv/dist/vocabularies/validation/limitItems.js 4849 var require_limitItems = __commonJS({ 4850 "node_modules/ajv/dist/vocabularies/validation/limitItems.js"(exports) { 4851 "use strict"; 4852 Object.defineProperty(exports, "__esModule", { value: true }); 4853 var codegen_1 = require_codegen(); 4854 var error = { 4855 message({ keyword, schemaCode }) { 4856 const comp = keyword === "maxItems" ? "more" : "fewer"; 4857 return (0, codegen_1.str)`must NOT have $comp} than $schemaCode} items`; 4858 }, 4859 params: ({ schemaCode }) => (0, codegen_1._)`{limit: $schemaCode}}` 4860 }; 4861 var def = { 4862 keyword: ["maxItems", "minItems"], 4863 type: "array", 4864 schemaType: "number", 4865 $data: true, 4866 error, 4867 code(cxt) { 4868 const { keyword, data, schemaCode } = cxt; 4869 const op = keyword === "maxItems" ? codegen_1.operators.GT : codegen_1.operators.LT; 4870 cxt.fail$data((0, codegen_1._)`$data}.length $op} $schemaCode}`); 4871 } 4872 }; 4873 exports.default = def; 4874 } 4875 }); 4876 4877 // node_modules/ajv/dist/runtime/equal.js 4878 var require_equal = __commonJS({ 4879 "node_modules/ajv/dist/runtime/equal.js"(exports) { 4880 "use strict"; 4881 Object.defineProperty(exports, "__esModule", { value: true }); 4882 var equal = require_fast_deep_equal(); 4883 equal.code = 'require("ajv/dist/runtime/equal").default'; 4884 exports.default = equal; 4885 } 4886 }); 4887 4888 // node_modules/ajv/dist/vocabularies/validation/uniqueItems.js 4889 var require_uniqueItems = __commonJS({ 4890 "node_modules/ajv/dist/vocabularies/validation/uniqueItems.js"(exports) { 4891 "use strict"; 4892 Object.defineProperty(exports, "__esModule", { value: true }); 4893 var dataType_1 = require_dataType(); 4894 var codegen_1 = require_codegen(); 4895 var util_1 = require_util(); 4896 var equal_1 = require_equal(); 4897 var error = { 4898 message: ({ params: { i, j } }) => (0, codegen_1.str)`must NOT have duplicate items (items ## $j} and $i} are identical)`, 4899 params: ({ params: { i, j } }) => (0, codegen_1._)`{i: $i}, j: $j}}` 4900 }; 4901 var def = { 4902 keyword: "uniqueItems", 4903 type: "array", 4904 schemaType: "boolean", 4905 $data: true, 4906 error, 4907 code(cxt) { 4908 const { gen, data, $data, schema, parentSchema, schemaCode, it } = cxt; 4909 if (!$data && !schema) 4910 return; 4911 const valid = gen.let("valid"); 4912 const itemTypes = parentSchema.items ? (0, dataType_1.getSchemaTypes)(parentSchema.items) : []; 4913 cxt.block$data(valid, validateUniqueItems, (0, codegen_1._)`$schemaCode} === false`); 4914 cxt.ok(valid); 4915 function validateUniqueItems() { 4916 const i = gen.let("i", (0, codegen_1._)`$data}.length`); 4917 const j = gen.let("j"); 4918 cxt.setParams({ i, j }); 4919 gen.assign(valid, true); 4920 gen.if((0, codegen_1._)`$i} > 1`, () => (canOptimize() ? loopN : loopN2)(i, j)); 4921 } 4922 function canOptimize() { 4923 return itemTypes.length > 0 && !itemTypes.some((t) => t === "object" || t === "array"); 4924 } 4925 function loopN(i, j) { 4926 const item = gen.name("item"); 4927 const wrongType = (0, dataType_1.checkDataTypes)(itemTypes, item, it.opts.strictNumbers, dataType_1.DataType.Wrong); 4928 const indices = gen.const("indices", (0, codegen_1._)`{}`); 4929 gen.for((0, codegen_1._)`;$i}--;`, () => { 4930 gen.let(item, (0, codegen_1._)`$data}[$i}]`); 4931 gen.if(wrongType, (0, codegen_1._)`continue`); 4932 if (itemTypes.length > 1) 4933 gen.if((0, codegen_1._)`typeof $item} == "string"`, (0, codegen_1._)`$item} += "_"`); 4934 gen.if((0, codegen_1._)`typeof $indices}[$item}] == "number"`, () => { 4935 gen.assign(j, (0, codegen_1._)`$indices}[$item}]`); 4936 cxt.error(); 4937 gen.assign(valid, false).break(); 4938 }).code((0, codegen_1._)`$indices}[$item}] = $i}`); 4939 }); 4940 } 4941 function loopN2(i, j) { 4942 const eql = (0, util_1.useFunc)(gen, equal_1.default); 4943 const outer = gen.name("outer"); 4944 gen.label(outer).for((0, codegen_1._)`;$i}--;`, () => gen.for((0, codegen_1._)`$j} = $i}; $j}--;`, () => gen.if((0, codegen_1._)`$eql}($data}[$i}], $data}[$j}])`, () => { 4945 cxt.error(); 4946 gen.assign(valid, false).break(outer); 4947 }))); 4948 } 4949 } 4950 }; 4951 exports.default = def; 4952 } 4953 }); 4954 4955 // node_modules/ajv/dist/vocabularies/validation/const.js 4956 var require_const = __commonJS({ 4957 "node_modules/ajv/dist/vocabularies/validation/const.js"(exports) { 4958 "use strict"; 4959 Object.defineProperty(exports, "__esModule", { value: true }); 4960 var codegen_1 = require_codegen(); 4961 var util_1 = require_util(); 4962 var equal_1 = require_equal(); 4963 var error = { 4964 message: "must be equal to constant", 4965 params: ({ schemaCode }) => (0, codegen_1._)`{allowedValue: $schemaCode}}` 4966 }; 4967 var def = { 4968 keyword: "const", 4969 $data: true, 4970 error, 4971 code(cxt) { 4972 const { gen, data, $data, schemaCode, schema } = cxt; 4973 if ($data || schema && typeof schema == "object") { 4974 cxt.fail$data((0, codegen_1._)`!${(0, util_1.useFunc)(gen, equal_1.default)}($data}, $schemaCode})`); 4975 } else { 4976 cxt.fail((0, codegen_1._)`$schema} !== $data}`); 4977 } 4978 } 4979 }; 4980 exports.default = def; 4981 } 4982 }); 4983 4984 // node_modules/ajv/dist/vocabularies/validation/enum.js 4985 var require_enum = __commonJS({ 4986 "node_modules/ajv/dist/vocabularies/validation/enum.js"(exports) { 4987 "use strict"; 4988 Object.defineProperty(exports, "__esModule", { value: true }); 4989 var codegen_1 = require_codegen(); 4990 var util_1 = require_util(); 4991 var equal_1 = require_equal(); 4992 var error = { 4993 message: "must be equal to one of the allowed values", 4994 params: ({ schemaCode }) => (0, codegen_1._)`{allowedValues: $schemaCode}}` 4995 }; 4996 var def = { 4997 keyword: "enum", 4998 schemaType: "array", 4999 $data: true, 5000 error, 5001 code(cxt) { 5002 const { gen, data, $data, schema, schemaCode, it } = cxt; 5003 if (!$data && schema.length === 0) 5004 throw new Error("enum must have non-empty array"); 5005 const useLoop = schema.length >= it.opts.loopEnum; 5006 let eql; 5007 const getEql = () => eql !== null && eql !== void 0 ? eql : eql = (0, util_1.useFunc)(gen, equal_1.default); 5008 let valid; 5009 if (useLoop || $data) { 5010 valid = gen.let("valid"); 5011 cxt.block$data(valid, loopEnum); 5012 } else { 5013 if (!Array.isArray(schema)) 5014 throw new Error("ajv implementation error"); 5015 const vSchema = gen.const("vSchema", schemaCode); 5016 valid = (0, codegen_1.or)(...schema.map((_x, i) => equalCode(vSchema, i))); 5017 } 5018 cxt.pass(valid); 5019 function loopEnum() { 5020 gen.assign(valid, false); 5021 gen.forOf("v", schemaCode, (v) => gen.if((0, codegen_1._)`$getEql()}($data}, $v})`, () => gen.assign(valid, true).break())); 5022 } 5023 function equalCode(vSchema, i) { 5024 const sch = schema[i]; 5025 return typeof sch === "object" && sch !== null ? (0, codegen_1._)`$getEql()}($data}, $vSchema}[$i}])` : (0, codegen_1._)`$data} === $sch}`; 5026 } 5027 } 5028 }; 5029 exports.default = def; 5030 } 5031 }); 5032 5033 // node_modules/ajv-draft-04/dist/vocabulary/validation/index.js 5034 var require_validation = __commonJS({ 5035 "node_modules/ajv-draft-04/dist/vocabulary/validation/index.js"(exports) { 5036 "use strict"; 5037 Object.defineProperty(exports, "__esModule", { value: true }); 5038 var limitNumber_1 = require_limitNumber(); 5039 var limitNumberExclusive_1 = require_limitNumberExclusive(); 5040 var multipleOf_1 = require_multipleOf(); 5041 var limitLength_1 = require_limitLength(); 5042 var pattern_1 = require_pattern(); 5043 var limitProperties_1 = require_limitProperties(); 5044 var required_1 = require_required(); 5045 var limitItems_1 = require_limitItems(); 5046 var uniqueItems_1 = require_uniqueItems(); 5047 var const_1 = require_const(); 5048 var enum_1 = require_enum(); 5049 var validation = [ 5050 // number 5051 limitNumber_1.default, 5052 limitNumberExclusive_1.default, 5053 multipleOf_1.default, 5054 // string 5055 limitLength_1.default, 5056 pattern_1.default, 5057 // object 5058 limitProperties_1.default, 5059 required_1.default, 5060 // array 5061 limitItems_1.default, 5062 uniqueItems_1.default, 5063 // any 5064 { keyword: "type", schemaType: ["string", "array"] }, 5065 { keyword: "nullable", schemaType: "boolean" }, 5066 const_1.default, 5067 enum_1.default 5068 ]; 5069 exports.default = validation; 5070 } 5071 }); 5072 5073 // node_modules/ajv/dist/vocabularies/applicator/additionalItems.js 5074 var require_additionalItems = __commonJS({ 5075 "node_modules/ajv/dist/vocabularies/applicator/additionalItems.js"(exports) { 5076 "use strict"; 5077 Object.defineProperty(exports, "__esModule", { value: true }); 5078 exports.validateAdditionalItems = void 0; 5079 var codegen_1 = require_codegen(); 5080 var util_1 = require_util(); 5081 var error = { 5082 message: ({ params: { len } }) => (0, codegen_1.str)`must NOT have more than $len} items`, 5083 params: ({ params: { len } }) => (0, codegen_1._)`{limit: $len}}` 5084 }; 5085 var def = { 5086 keyword: "additionalItems", 5087 type: "array", 5088 schemaType: ["boolean", "object"], 5089 before: "uniqueItems", 5090 error, 5091 code(cxt) { 5092 const { parentSchema, it } = cxt; 5093 const { items } = parentSchema; 5094 if (!Array.isArray(items)) { 5095 (0, util_1.checkStrictMode)(it, '"additionalItems" is ignored when "items" is not an array of schemas'); 5096 return; 5097 } 5098 validateAdditionalItems(cxt, items); 5099 } 5100 }; 5101 function validateAdditionalItems(cxt, items) { 5102 const { gen, schema, data, keyword, it } = cxt; 5103 it.items = true; 5104 const len = gen.const("len", (0, codegen_1._)`$data}.length`); 5105 if (schema === false) { 5106 cxt.setParams({ len: items.length }); 5107 cxt.pass((0, codegen_1._)`$len} <= $items.length}`); 5108 } else if (typeof schema == "object" && !(0, util_1.alwaysValidSchema)(it, schema)) { 5109 const valid = gen.var("valid", (0, codegen_1._)`$len} <= $items.length}`); 5110 gen.if((0, codegen_1.not)(valid), () => validateItems(valid)); 5111 cxt.ok(valid); 5112 } 5113 function validateItems(valid) { 5114 gen.forRange("i", items.length, len, (i) => { 5115 cxt.subschema({ keyword, dataProp: i, dataPropType: util_1.Type.Num }, valid); 5116 if (!it.allErrors) 5117 gen.if((0, codegen_1.not)(valid), () => gen.break()); 5118 }); 5119 } 5120 } 5121 exports.validateAdditionalItems = validateAdditionalItems; 5122 exports.default = def; 5123 } 5124 }); 5125 5126 // node_modules/ajv/dist/vocabularies/applicator/items.js 5127 var require_items = __commonJS({ 5128 "node_modules/ajv/dist/vocabularies/applicator/items.js"(exports) { 5129 "use strict"; 5130 Object.defineProperty(exports, "__esModule", { value: true }); 5131 exports.validateTuple = void 0; 5132 var codegen_1 = require_codegen(); 5133 var util_1 = require_util(); 5134 var code_1 = require_code2(); 5135 var def = { 5136 keyword: "items", 5137 type: "array", 5138 schemaType: ["object", "array", "boolean"], 5139 before: "uniqueItems", 5140 code(cxt) { 5141 const { schema, it } = cxt; 5142 if (Array.isArray(schema)) 5143 return validateTuple(cxt, "additionalItems", schema); 5144 it.items = true; 5145 if ((0, util_1.alwaysValidSchema)(it, schema)) 5146 return; 5147 cxt.ok((0, code_1.validateArray)(cxt)); 5148 } 5149 }; 5150 function validateTuple(cxt, extraItems, schArr = cxt.schema) { 5151 const { gen, parentSchema, data, keyword, it } = cxt; 5152 checkStrictTuple(parentSchema); 5153 if (it.opts.unevaluated && schArr.length && it.items !== true) { 5154 it.items = util_1.mergeEvaluated.items(gen, schArr.length, it.items); 5155 } 5156 const valid = gen.name("valid"); 5157 const len = gen.const("len", (0, codegen_1._)`$data}.length`); 5158 schArr.forEach((sch, i) => { 5159 if ((0, util_1.alwaysValidSchema)(it, sch)) 5160 return; 5161 gen.if((0, codegen_1._)`$len} > $i}`, () => cxt.subschema({ 5162 keyword, 5163 schemaProp: i, 5164 dataProp: i 5165 }, valid)); 5166 cxt.ok(valid); 5167 }); 5168 function checkStrictTuple(sch) { 5169 const { opts, errSchemaPath } = it; 5170 const l = schArr.length; 5171 const fullTuple = l === sch.minItems && (l === sch.maxItems || sch[extraItems] === false); 5172 if (opts.strictTuples && !fullTuple) { 5173 const msg = `"$keyword}" is $l}-tuple, but minItems or maxItems/$extraItems} are not specified or different at path "$errSchemaPath}"`; 5174 (0, util_1.checkStrictMode)(it, msg, opts.strictTuples); 5175 } 5176 } 5177 } 5178 exports.validateTuple = validateTuple; 5179 exports.default = def; 5180 } 5181 }); 5182 5183 // node_modules/ajv/dist/vocabularies/applicator/prefixItems.js 5184 var require_prefixItems = __commonJS({ 5185 "node_modules/ajv/dist/vocabularies/applicator/prefixItems.js"(exports) { 5186 "use strict"; 5187 Object.defineProperty(exports, "__esModule", { value: true }); 5188 var items_1 = require_items(); 5189 var def = { 5190 keyword: "prefixItems", 5191 type: "array", 5192 schemaType: ["array"], 5193 before: "uniqueItems", 5194 code: (cxt) => (0, items_1.validateTuple)(cxt, "items") 5195 }; 5196 exports.default = def; 5197 } 5198 }); 5199 5200 // node_modules/ajv/dist/vocabularies/applicator/items2020.js 5201 var require_items2020 = __commonJS({ 5202 "node_modules/ajv/dist/vocabularies/applicator/items2020.js"(exports) { 5203 "use strict"; 5204 Object.defineProperty(exports, "__esModule", { value: true }); 5205 var codegen_1 = require_codegen(); 5206 var util_1 = require_util(); 5207 var code_1 = require_code2(); 5208 var additionalItems_1 = require_additionalItems(); 5209 var error = { 5210 message: ({ params: { len } }) => (0, codegen_1.str)`must NOT have more than $len} items`, 5211 params: ({ params: { len } }) => (0, codegen_1._)`{limit: $len}}` 5212 }; 5213 var def = { 5214 keyword: "items", 5215 type: "array", 5216 schemaType: ["object", "boolean"], 5217 before: "uniqueItems", 5218 error, 5219 code(cxt) { 5220 const { schema, parentSchema, it } = cxt; 5221 const { prefixItems } = parentSchema; 5222 it.items = true; 5223 if ((0, util_1.alwaysValidSchema)(it, schema)) 5224 return; 5225 if (prefixItems) 5226 (0, additionalItems_1.validateAdditionalItems)(cxt, prefixItems); 5227 else 5228 cxt.ok((0, code_1.validateArray)(cxt)); 5229 } 5230 }; 5231 exports.default = def; 5232 } 5233 }); 5234 5235 // node_modules/ajv/dist/vocabularies/applicator/contains.js 5236 var require_contains = __commonJS({ 5237 "node_modules/ajv/dist/vocabularies/applicator/contains.js"(exports) { 5238 "use strict"; 5239 Object.defineProperty(exports, "__esModule", { value: true }); 5240 var codegen_1 = require_codegen(); 5241 var util_1 = require_util(); 5242 var error = { 5243 message: ({ params: { min, max } }) => max === void 0 ? (0, codegen_1.str)`must contain at least $min} valid item(s)` : (0, codegen_1.str)`must contain at least $min} and no more than $max} valid item(s)`, 5244 params: ({ params: { min, max } }) => max === void 0 ? (0, codegen_1._)`{minContains: $min}}` : (0, codegen_1._)`{minContains: $min}, maxContains: $max}}` 5245 }; 5246 var def = { 5247 keyword: "contains", 5248 type: "array", 5249 schemaType: ["object", "boolean"], 5250 before: "uniqueItems", 5251 trackErrors: true, 5252 error, 5253 code(cxt) { 5254 const { gen, schema, parentSchema, data, it } = cxt; 5255 let min; 5256 let max; 5257 const { minContains, maxContains } = parentSchema; 5258 if (it.opts.next) { 5259 min = minContains === void 0 ? 1 : minContains; 5260 max = maxContains; 5261 } else { 5262 min = 1; 5263 } 5264 const len = gen.const("len", (0, codegen_1._)`$data}.length`); 5265 cxt.setParams({ min, max }); 5266 if (max === void 0 && min === 0) { 5267 (0, util_1.checkStrictMode)(it, `"minContains" == 0 without "maxContains": "contains" keyword ignored`); 5268 return; 5269 } 5270 if (max !== void 0 && min > max) { 5271 (0, util_1.checkStrictMode)(it, `"minContains" > "maxContains" is always invalid`); 5272 cxt.fail(); 5273 return; 5274 } 5275 if ((0, util_1.alwaysValidSchema)(it, schema)) { 5276 let cond = (0, codegen_1._)`$len} >= $min}`; 5277 if (max !== void 0) 5278 cond = (0, codegen_1._)`$cond} && $len} <= $max}`; 5279 cxt.pass(cond); 5280 return; 5281 } 5282 it.items = true; 5283 const valid = gen.name("valid"); 5284 if (max === void 0 && min === 1) { 5285 validateItems(valid, () => gen.if(valid, () => gen.break())); 5286 } else if (min === 0) { 5287 gen.let(valid, true); 5288 if (max !== void 0) 5289 gen.if((0, codegen_1._)`$data}.length > 0`, validateItemsWithCount); 5290 } else { 5291 gen.let(valid, false); 5292 validateItemsWithCount(); 5293 } 5294 cxt.result(valid, () => cxt.reset()); 5295 function validateItemsWithCount() { 5296 const schValid = gen.name("_valid"); 5297 const count = gen.let("count", 0); 5298 validateItems(schValid, () => gen.if(schValid, () => checkLimits(count))); 5299 } 5300 function validateItems(_valid, block) { 5301 gen.forRange("i", 0, len, (i) => { 5302 cxt.subschema({ 5303 keyword: "contains", 5304 dataProp: i, 5305 dataPropType: util_1.Type.Num, 5306 compositeRule: true 5307 }, _valid); 5308 block(); 5309 }); 5310 } 5311 function checkLimits(count) { 5312 gen.code((0, codegen_1._)`$count}++`); 5313 if (max === void 0) { 5314 gen.if((0, codegen_1._)`$count} >= $min}`, () => gen.assign(valid, true).break()); 5315 } else { 5316 gen.if((0, codegen_1._)`$count} > $max}`, () => gen.assign(valid, false).break()); 5317 if (min === 1) 5318 gen.assign(valid, true); 5319 else 5320 gen.if((0, codegen_1._)`$count} >= $min}`, () => gen.assign(valid, true)); 5321 } 5322 } 5323 } 5324 }; 5325 exports.default = def; 5326 } 5327 }); 5328 5329 // node_modules/ajv/dist/vocabularies/applicator/dependencies.js 5330 var require_dependencies = __commonJS({ 5331 "node_modules/ajv/dist/vocabularies/applicator/dependencies.js"(exports) { 5332 "use strict"; 5333 Object.defineProperty(exports, "__esModule", { value: true }); 5334 exports.validateSchemaDeps = exports.validatePropertyDeps = exports.error = void 0; 5335 var codegen_1 = require_codegen(); 5336 var util_1 = require_util(); 5337 var code_1 = require_code2(); 5338 exports.error = { 5339 message: ({ params: { property, depsCount, deps } }) => { 5340 const property_ies = depsCount === 1 ? "property" : "properties"; 5341 return (0, codegen_1.str)`must have $property_ies} $deps} when property $property} is present`; 5342 }, 5343 params: ({ params: { property, depsCount, deps, missingProperty } }) => (0, codegen_1._)`{property: $property}, 5344 missingProperty: $missingProperty}, 5345 depsCount: $depsCount}, 5346 deps: $deps}}` 5347 // TODO change to reference 5348 }; 5349 var def = { 5350 keyword: "dependencies", 5351 type: "object", 5352 schemaType: "object", 5353 error: exports.error, 5354 code(cxt) { 5355 const [propDeps, schDeps] = splitDependencies(cxt); 5356 validatePropertyDeps(cxt, propDeps); 5357 validateSchemaDeps(cxt, schDeps); 5358 } 5359 }; 5360 function splitDependencies({ schema }) { 5361 const propertyDeps = {}; 5362 const schemaDeps = {}; 5363 for (const key in schema) { 5364 if (key === "__proto__") 5365 continue; 5366 const deps = Array.isArray(schema[key]) ? propertyDeps : schemaDeps; 5367 deps[key] = schema[key]; 5368 } 5369 return [propertyDeps, schemaDeps]; 5370 } 5371 function validatePropertyDeps(cxt, propertyDeps = cxt.schema) { 5372 const { gen, data, it } = cxt; 5373 if (Object.keys(propertyDeps).length === 0) 5374 return; 5375 const missing = gen.let("missing"); 5376 for (const prop in propertyDeps) { 5377 const deps = propertyDeps[prop]; 5378 if (deps.length === 0) 5379 continue; 5380 const hasProperty = (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties); 5381 cxt.setParams({ 5382 property: prop, 5383 depsCount: deps.length, 5384 deps: deps.join(", ") 5385 }); 5386 if (it.allErrors) { 5387 gen.if(hasProperty, () => { 5388 for (const depProp of deps) { 5389 (0, code_1.checkReportMissingProp)(cxt, depProp); 5390 } 5391 }); 5392 } else { 5393 gen.if((0, codegen_1._)`$hasProperty} && (${(0, code_1.checkMissingProp)(cxt, deps, missing)})`); 5394 (0, code_1.reportMissingProp)(cxt, missing); 5395 gen.else(); 5396 } 5397 } 5398 } 5399 exports.validatePropertyDeps = validatePropertyDeps; 5400 function validateSchemaDeps(cxt, schemaDeps = cxt.schema) { 5401 const { gen, data, keyword, it } = cxt; 5402 const valid = gen.name("valid"); 5403 for (const prop in schemaDeps) { 5404 if ((0, util_1.alwaysValidSchema)(it, schemaDeps[prop])) 5405 continue; 5406 gen.if( 5407 (0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties), 5408 () => { 5409 const schCxt = cxt.subschema({ keyword, schemaProp: prop }, valid); 5410 cxt.mergeValidEvaluated(schCxt, valid); 5411 }, 5412 () => gen.var(valid, true) 5413 // TODO var 5414 ); 5415 cxt.ok(valid); 5416 } 5417 } 5418 exports.validateSchemaDeps = validateSchemaDeps; 5419 exports.default = def; 5420 } 5421 }); 5422 5423 // node_modules/ajv/dist/vocabularies/applicator/propertyNames.js 5424 var require_propertyNames = __commonJS({ 5425 "node_modules/ajv/dist/vocabularies/applicator/propertyNames.js"(exports) { 5426 "use strict"; 5427 Object.defineProperty(exports, "__esModule", { value: true }); 5428 var codegen_1 = require_codegen(); 5429 var util_1 = require_util(); 5430 var error = { 5431 message: "property name must be valid", 5432 params: ({ params }) => (0, codegen_1._)`{propertyName: $params.propertyName}}` 5433 }; 5434 var def = { 5435 keyword: "propertyNames", 5436 type: "object", 5437 schemaType: ["object", "boolean"], 5438 error, 5439 code(cxt) { 5440 const { gen, schema, data, it } = cxt; 5441 if ((0, util_1.alwaysValidSchema)(it, schema)) 5442 return; 5443 const valid = gen.name("valid"); 5444 gen.forIn("key", data, (key) => { 5445 cxt.setParams({ propertyName: key }); 5446 cxt.subschema({ 5447 keyword: "propertyNames", 5448 data: key, 5449 dataTypes: ["string"], 5450 propertyName: key, 5451 compositeRule: true 5452 }, valid); 5453 gen.if((0, codegen_1.not)(valid), () => { 5454 cxt.error(true); 5455 if (!it.allErrors) 5456 gen.break(); 5457 }); 5458 }); 5459 cxt.ok(valid); 5460 } 5461 }; 5462 exports.default = def; 5463 } 5464 }); 5465 5466 // node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js 5467 var require_additionalProperties = __commonJS({ 5468 "node_modules/ajv/dist/vocabularies/applicator/additionalProperties.js"(exports) { 5469 "use strict"; 5470 Object.defineProperty(exports, "__esModule", { value: true }); 5471 var code_1 = require_code2(); 5472 var codegen_1 = require_codegen(); 5473 var names_1 = require_names(); 5474 var util_1 = require_util(); 5475 var error = { 5476 message: "must NOT have additional properties", 5477 params: ({ params }) => (0, codegen_1._)`{additionalProperty: $params.additionalProperty}}` 5478 }; 5479 var def = { 5480 keyword: "additionalProperties", 5481 type: ["object"], 5482 schemaType: ["boolean", "object"], 5483 allowUndefined: true, 5484 trackErrors: true, 5485 error, 5486 code(cxt) { 5487 const { gen, schema, parentSchema, data, errsCount, it } = cxt; 5488 if (!errsCount) 5489 throw new Error("ajv implementation error"); 5490 const { allErrors, opts } = it; 5491 it.props = true; 5492 if (opts.removeAdditional !== "all" && (0, util_1.alwaysValidSchema)(it, schema)) 5493 return; 5494 const props = (0, code_1.allSchemaProperties)(parentSchema.properties); 5495 const patProps = (0, code_1.allSchemaProperties)(parentSchema.patternProperties); 5496 checkAdditionalProperties(); 5497 cxt.ok((0, codegen_1._)`$errsCount} === $names_1.default.errors}`); 5498 function checkAdditionalProperties() { 5499 gen.forIn("key", data, (key) => { 5500 if (!props.length && !patProps.length) 5501 additionalPropertyCode(key); 5502 else 5503 gen.if(isAdditional(key), () => additionalPropertyCode(key)); 5504 }); 5505 } 5506 function isAdditional(key) { 5507 let definedProp; 5508 if (props.length > 8) { 5509 const propsSchema = (0, util_1.schemaRefOrVal)(it, parentSchema.properties, "properties"); 5510 definedProp = (0, code_1.isOwnProperty)(gen, propsSchema, key); 5511 } else if (props.length) { 5512 definedProp = (0, codegen_1.or)(...props.map((p) => (0, codegen_1._)`$key} === $p}`)); 5513 } else { 5514 definedProp = codegen_1.nil; 5515 } 5516 if (patProps.length) { 5517 definedProp = (0, codegen_1.or)(definedProp, ...patProps.map((p) => (0, codegen_1._)`${(0, code_1.usePattern)(cxt, p)}.test($key})`)); 5518 } 5519 return (0, codegen_1.not)(definedProp); 5520 } 5521 function deleteAdditional(key) { 5522 gen.code((0, codegen_1._)`delete $data}[$key}]`); 5523 } 5524 function additionalPropertyCode(key) { 5525 if (opts.removeAdditional === "all" || opts.removeAdditional && schema === false) { 5526 deleteAdditional(key); 5527 return; 5528 } 5529 if (schema === false) { 5530 cxt.setParams({ additionalProperty: key }); 5531 cxt.error(); 5532 if (!allErrors) 5533 gen.break(); 5534 return; 5535 } 5536 if (typeof schema == "object" && !(0, util_1.alwaysValidSchema)(it, schema)) { 5537 const valid = gen.name("valid"); 5538 if (opts.removeAdditional === "failing") { 5539 applyAdditionalSchema(key, valid, false); 5540 gen.if((0, codegen_1.not)(valid), () => { 5541 cxt.reset(); 5542 deleteAdditional(key); 5543 }); 5544 } else { 5545 applyAdditionalSchema(key, valid); 5546 if (!allErrors) 5547 gen.if((0, codegen_1.not)(valid), () => gen.break()); 5548 } 5549 } 5550 } 5551 function applyAdditionalSchema(key, valid, errors) { 5552 const subschema = { 5553 keyword: "additionalProperties", 5554 dataProp: key, 5555 dataPropType: util_1.Type.Str 5556 }; 5557 if (errors === false) { 5558 Object.assign(subschema, { 5559 compositeRule: true, 5560 createErrors: false, 5561 allErrors: false 5562 }); 5563 } 5564 cxt.subschema(subschema, valid); 5565 } 5566 } 5567 }; 5568 exports.default = def; 5569 } 5570 }); 5571 5572 // node_modules/ajv/dist/vocabularies/applicator/properties.js 5573 var require_properties = __commonJS({ 5574 "node_modules/ajv/dist/vocabularies/applicator/properties.js"(exports) { 5575 "use strict"; 5576 Object.defineProperty(exports, "__esModule", { value: true }); 5577 var validate_1 = require_validate(); 5578 var code_1 = require_code2(); 5579 var util_1 = require_util(); 5580 var additionalProperties_1 = require_additionalProperties(); 5581 var def = { 5582 keyword: "properties", 5583 type: "object", 5584 schemaType: "object", 5585 code(cxt) { 5586 const { gen, schema, parentSchema, data, it } = cxt; 5587 if (it.opts.removeAdditional === "all" && parentSchema.additionalProperties === void 0) { 5588 additionalProperties_1.default.code(new validate_1.KeywordCxt(it, additionalProperties_1.default, "additionalProperties")); 5589 } 5590 const allProps = (0, code_1.allSchemaProperties)(schema); 5591 for (const prop of allProps) { 5592 it.definedProperties.add(prop); 5593 } 5594 if (it.opts.unevaluated && allProps.length && it.props !== true) { 5595 it.props = util_1.mergeEvaluated.props(gen, (0, util_1.toHash)(allProps), it.props); 5596 } 5597 const properties = allProps.filter((p) => !(0, util_1.alwaysValidSchema)(it, schema[p])); 5598 if (properties.length === 0) 5599 return; 5600 const valid = gen.name("valid"); 5601 for (const prop of properties) { 5602 if (hasDefault(prop)) { 5603 applyPropertySchema(prop); 5604 } else { 5605 gen.if((0, code_1.propertyInData)(gen, data, prop, it.opts.ownProperties)); 5606 applyPropertySchema(prop); 5607 if (!it.allErrors) 5608 gen.else().var(valid, true); 5609 gen.endIf(); 5610 } 5611 cxt.it.definedProperties.add(prop); 5612 cxt.ok(valid); 5613 } 5614 function hasDefault(prop) { 5615 return it.opts.useDefaults && !it.compositeRule && schema[prop].default !== void 0; 5616 } 5617 function applyPropertySchema(prop) { 5618 cxt.subschema({ 5619 keyword: "properties", 5620 schemaProp: prop, 5621 dataProp: prop 5622 }, valid); 5623 } 5624 } 5625 }; 5626 exports.default = def; 5627 } 5628 }); 5629 5630 // node_modules/ajv/dist/vocabularies/applicator/patternProperties.js 5631 var require_patternProperties = __commonJS({ 5632 "node_modules/ajv/dist/vocabularies/applicator/patternProperties.js"(exports) { 5633 "use strict"; 5634 Object.defineProperty(exports, "__esModule", { value: true }); 5635 var code_1 = require_code2(); 5636 var codegen_1 = require_codegen(); 5637 var util_1 = require_util(); 5638 var util_2 = require_util(); 5639 var def = { 5640 keyword: "patternProperties", 5641 type: "object", 5642 schemaType: "object", 5643 code(cxt) { 5644 const { gen, schema, data, parentSchema, it } = cxt; 5645 const { opts } = it; 5646 const patterns = (0, code_1.allSchemaProperties)(schema); 5647 const alwaysValidPatterns = patterns.filter((p) => (0, util_1.alwaysValidSchema)(it, schema[p])); 5648 if (patterns.length === 0 || alwaysValidPatterns.length === patterns.length && (!it.opts.unevaluated || it.props === true)) { 5649 return; 5650 } 5651 const checkProperties = opts.strictSchema && !opts.allowMatchingProperties && parentSchema.properties; 5652 const valid = gen.name("valid"); 5653 if (it.props !== true && !(it.props instanceof codegen_1.Name)) { 5654 it.props = (0, util_2.evaluatedPropsToName)(gen, it.props); 5655 } 5656 const { props } = it; 5657 validatePatternProperties(); 5658 function validatePatternProperties() { 5659 for (const pat of patterns) { 5660 if (checkProperties) 5661 checkMatchingProperties(pat); 5662 if (it.allErrors) { 5663 validateProperties(pat); 5664 } else { 5665 gen.var(valid, true); 5666 validateProperties(pat); 5667 gen.if(valid); 5668 } 5669 } 5670 } 5671 function checkMatchingProperties(pat) { 5672 for (const prop in checkProperties) { 5673 if (new RegExp(pat).test(prop)) { 5674 (0, util_1.checkStrictMode)(it, `property $prop} matches pattern $pat} (use allowMatchingProperties)`); 5675 } 5676 } 5677 } 5678 function validateProperties(pat) { 5679 gen.forIn("key", data, (key) => { 5680 gen.if((0, codegen_1._)`${(0, code_1.usePattern)(cxt, pat)}.test($key})`, () => { 5681 const alwaysValid = alwaysValidPatterns.includes(pat); 5682 if (!alwaysValid) { 5683 cxt.subschema({ 5684 keyword: "patternProperties", 5685 schemaProp: pat, 5686 dataProp: key, 5687 dataPropType: util_2.Type.Str 5688 }, valid); 5689 } 5690 if (it.opts.unevaluated && props !== true) { 5691 gen.assign((0, codegen_1._)`$props}[$key}]`, true); 5692 } else if (!alwaysValid && !it.allErrors) { 5693 gen.if((0, codegen_1.not)(valid), () => gen.break()); 5694 } 5695 }); 5696 }); 5697 } 5698 } 5699 }; 5700 exports.default = def; 5701 } 5702 }); 5703 5704 // node_modules/ajv/dist/vocabularies/applicator/not.js 5705 var require_not = __commonJS({ 5706 "node_modules/ajv/dist/vocabularies/applicator/not.js"(exports) { 5707 "use strict"; 5708 Object.defineProperty(exports, "__esModule", { value: true }); 5709 var util_1 = require_util(); 5710 var def = { 5711 keyword: "not", 5712 schemaType: ["object", "boolean"], 5713 trackErrors: true, 5714 code(cxt) { 5715 const { gen, schema, it } = cxt; 5716 if ((0, util_1.alwaysValidSchema)(it, schema)) { 5717 cxt.fail(); 5718 return; 5719 } 5720 const valid = gen.name("valid"); 5721 cxt.subschema({ 5722 keyword: "not", 5723 compositeRule: true, 5724 createErrors: false, 5725 allErrors: false 5726 }, valid); 5727 cxt.failResult(valid, () => cxt.reset(), () => cxt.error()); 5728 }, 5729 error: { message: "must NOT be valid" } 5730 }; 5731 exports.default = def; 5732 } 5733 }); 5734 5735 // node_modules/ajv/dist/vocabularies/applicator/anyOf.js 5736 var require_anyOf = __commonJS({ 5737 "node_modules/ajv/dist/vocabularies/applicator/anyOf.js"(exports) { 5738 "use strict"; 5739 Object.defineProperty(exports, "__esModule", { value: true }); 5740 var code_1 = require_code2(); 5741 var def = { 5742 keyword: "anyOf", 5743 schemaType: "array", 5744 trackErrors: true, 5745 code: code_1.validateUnion, 5746 error: { message: "must match a schema in anyOf" } 5747 }; 5748 exports.default = def; 5749 } 5750 }); 5751 5752 // node_modules/ajv/dist/vocabularies/applicator/oneOf.js 5753 var require_oneOf = __commonJS({ 5754 "node_modules/ajv/dist/vocabularies/applicator/oneOf.js"(exports) { 5755 "use strict"; 5756 Object.defineProperty(exports, "__esModule", { value: true }); 5757 var codegen_1 = require_codegen(); 5758 var util_1 = require_util(); 5759 var error = { 5760 message: "must match exactly one schema in oneOf", 5761 params: ({ params }) => (0, codegen_1._)`{passingSchemas: $params.passing}}` 5762 }; 5763 var def = { 5764 keyword: "oneOf", 5765 schemaType: "array", 5766 trackErrors: true, 5767 error, 5768 code(cxt) { 5769 const { gen, schema, parentSchema, it } = cxt; 5770 if (!Array.isArray(schema)) 5771 throw new Error("ajv implementation error"); 5772 if (it.opts.discriminator && parentSchema.discriminator) 5773 return; 5774 const schArr = schema; 5775 const valid = gen.let("valid", false); 5776 const passing = gen.let("passing", null); 5777 const schValid = gen.name("_valid"); 5778 cxt.setParams({ passing }); 5779 gen.block(validateOneOf); 5780 cxt.result(valid, () => cxt.reset(), () => cxt.error(true)); 5781 function validateOneOf() { 5782 schArr.forEach((sch, i) => { 5783 let schCxt; 5784 if ((0, util_1.alwaysValidSchema)(it, sch)) { 5785 gen.var(schValid, true); 5786 } else { 5787 schCxt = cxt.subschema({ 5788 keyword: "oneOf", 5789 schemaProp: i, 5790 compositeRule: true 5791 }, schValid); 5792 } 5793 if (i > 0) { 5794 gen.if((0, codegen_1._)`$schValid} && $valid}`).assign(valid, false).assign(passing, (0, codegen_1._)`[$passing}, $i}]`).else(); 5795 } 5796 gen.if(schValid, () => { 5797 gen.assign(valid, true); 5798 gen.assign(passing, i); 5799 if (schCxt) 5800 cxt.mergeEvaluated(schCxt, codegen_1.Name); 5801 }); 5802 }); 5803 } 5804 } 5805 }; 5806 exports.default = def; 5807 } 5808 }); 5809 5810 // node_modules/ajv/dist/vocabularies/applicator/allOf.js 5811 var require_allOf = __commonJS({ 5812 "node_modules/ajv/dist/vocabularies/applicator/allOf.js"(exports) { 5813 "use strict"; 5814 Object.defineProperty(exports, "__esModule", { value: true }); 5815 var util_1 = require_util(); 5816 var def = { 5817 keyword: "allOf", 5818 schemaType: "array", 5819 code(cxt) { 5820 const { gen, schema, it } = cxt; 5821 if (!Array.isArray(schema)) 5822 throw new Error("ajv implementation error"); 5823 const valid = gen.name("valid"); 5824 schema.forEach((sch, i) => { 5825 if ((0, util_1.alwaysValidSchema)(it, sch)) 5826 return; 5827 const schCxt = cxt.subschema({ keyword: "allOf", schemaProp: i }, valid); 5828 cxt.ok(valid); 5829 cxt.mergeEvaluated(schCxt); 5830 }); 5831 } 5832 }; 5833 exports.default = def; 5834 } 5835 }); 5836 5837 // node_modules/ajv/dist/vocabularies/applicator/if.js 5838 var require_if = __commonJS({ 5839 "node_modules/ajv/dist/vocabularies/applicator/if.js"(exports) { 5840 "use strict"; 5841 Object.defineProperty(exports, "__esModule", { value: true }); 5842 var codegen_1 = require_codegen(); 5843 var util_1 = require_util(); 5844 var error = { 5845 message: ({ params }) => (0, codegen_1.str)`must match "$params.ifClause}" schema`, 5846 params: ({ params }) => (0, codegen_1._)`{failingKeyword: $params.ifClause}}` 5847 }; 5848 var def = { 5849 keyword: "if", 5850 schemaType: ["object", "boolean"], 5851 trackErrors: true, 5852 error, 5853 code(cxt) { 5854 const { gen, parentSchema, it } = cxt; 5855 if (parentSchema.then === void 0 && parentSchema.else === void 0) { 5856 (0, util_1.checkStrictMode)(it, '"if" without "then" and "else" is ignored'); 5857 } 5858 const hasThen = hasSchema(it, "then"); 5859 const hasElse = hasSchema(it, "else"); 5860 if (!hasThen && !hasElse) 5861 return; 5862 const valid = gen.let("valid", true); 5863 const schValid = gen.name("_valid"); 5864 validateIf(); 5865 cxt.reset(); 5866 if (hasThen && hasElse) { 5867 const ifClause = gen.let("ifClause"); 5868 cxt.setParams({ ifClause }); 5869 gen.if(schValid, validateClause("then", ifClause), validateClause("else", ifClause)); 5870 } else if (hasThen) { 5871 gen.if(schValid, validateClause("then")); 5872 } else { 5873 gen.if((0, codegen_1.not)(schValid), validateClause("else")); 5874 } 5875 cxt.pass(valid, () => cxt.error(true)); 5876 function validateIf() { 5877 const schCxt = cxt.subschema({ 5878 keyword: "if", 5879 compositeRule: true, 5880 createErrors: false, 5881 allErrors: false 5882 }, schValid); 5883 cxt.mergeEvaluated(schCxt); 5884 } 5885 function validateClause(keyword, ifClause) { 5886 return () => { 5887 const schCxt = cxt.subschema({ keyword }, schValid); 5888 gen.assign(valid, schValid); 5889 cxt.mergeValidEvaluated(schCxt, valid); 5890 if (ifClause) 5891 gen.assign(ifClause, (0, codegen_1._)`$keyword}`); 5892 else 5893 cxt.setParams({ ifClause: keyword }); 5894 }; 5895 } 5896 } 5897 }; 5898 function hasSchema(it, keyword) { 5899 const schema = it.schema[keyword]; 5900 return schema !== void 0 && !(0, util_1.alwaysValidSchema)(it, schema); 5901 } 5902 exports.default = def; 5903 } 5904 }); 5905 5906 // node_modules/ajv/dist/vocabularies/applicator/thenElse.js 5907 var require_thenElse = __commonJS({ 5908 "node_modules/ajv/dist/vocabularies/applicator/thenElse.js"(exports) { 5909 "use strict"; 5910 Object.defineProperty(exports, "__esModule", { value: true }); 5911 var util_1 = require_util(); 5912 var def = { 5913 keyword: ["then", "else"], 5914 schemaType: ["object", "boolean"], 5915 code({ keyword, parentSchema, it }) { 5916 if (parentSchema.if === void 0) 5917 (0, util_1.checkStrictMode)(it, `"$keyword}" without "if" is ignored`); 5918 } 5919 }; 5920 exports.default = def; 5921 } 5922 }); 5923 5924 // node_modules/ajv/dist/vocabularies/applicator/index.js 5925 var require_applicator = __commonJS({ 5926 "node_modules/ajv/dist/vocabularies/applicator/index.js"(exports) { 5927 "use strict"; 5928 Object.defineProperty(exports, "__esModule", { value: true }); 5929 var additionalItems_1 = require_additionalItems(); 5930 var prefixItems_1 = require_prefixItems(); 5931 var items_1 = require_items(); 5932 var items2020_1 = require_items2020(); 5933 var contains_1 = require_contains(); 5934 var dependencies_1 = require_dependencies(); 5935 var propertyNames_1 = require_propertyNames(); 5936 var additionalProperties_1 = require_additionalProperties(); 5937 var properties_1 = require_properties(); 5938 var patternProperties_1 = require_patternProperties(); 5939 var not_1 = require_not(); 5940 var anyOf_1 = require_anyOf(); 5941 var oneOf_1 = require_oneOf(); 5942 var allOf_1 = require_allOf(); 5943 var if_1 = require_if(); 5944 var thenElse_1 = require_thenElse(); 5945 function getApplicator(draft2020 = false) { 5946 const applicator = [ 5947 // any 5948 not_1.default, 5949 anyOf_1.default, 5950 oneOf_1.default, 5951 allOf_1.default, 5952 if_1.default, 5953 thenElse_1.default, 5954 // object 5955 propertyNames_1.default, 5956 additionalProperties_1.default, 5957 dependencies_1.default, 5958 properties_1.default, 5959 patternProperties_1.default 5960 ]; 5961 if (draft2020) 5962 applicator.push(prefixItems_1.default, items2020_1.default); 5963 else 5964 applicator.push(additionalItems_1.default, items_1.default); 5965 applicator.push(contains_1.default); 5966 return applicator; 5967 } 5968 exports.default = getApplicator; 5969 } 5970 }); 5971 5972 // node_modules/ajv/dist/vocabularies/format/format.js 5973 var require_format = __commonJS({ 5974 "node_modules/ajv/dist/vocabularies/format/format.js"(exports) { 5975 "use strict"; 5976 Object.defineProperty(exports, "__esModule", { value: true }); 5977 var codegen_1 = require_codegen(); 5978 var error = { 5979 message: ({ schemaCode }) => (0, codegen_1.str)`must match format "$schemaCode}"`, 5980 params: ({ schemaCode }) => (0, codegen_1._)`{format: $schemaCode}}` 5981 }; 5982 var def = { 5983 keyword: "format", 5984 type: ["number", "string"], 5985 schemaType: "string", 5986 $data: true, 5987 error, 5988 code(cxt, ruleType) { 5989 const { gen, data, $data, schema, schemaCode, it } = cxt; 5990 const { opts, errSchemaPath, schemaEnv, self } = it; 5991 if (!opts.validateFormats) 5992 return; 5993 if ($data) 5994 validate$DataFormat(); 5995 else 5996 validateFormat(); 5997 function validate$DataFormat() { 5998 const fmts = gen.scopeValue("formats", { 5999 ref: self.formats, 6000 code: opts.code.formats 6001 }); 6002 const fDef = gen.const("fDef", (0, codegen_1._)`$fmts}[$schemaCode}]`); 6003 const fType = gen.let("fType"); 6004 const format = gen.let("format"); 6005 gen.if((0, codegen_1._)`typeof $fDef} == "object" && !($fDef} instanceof RegExp)`, () => gen.assign(fType, (0, codegen_1._)`$fDef}.type || "string"`).assign(format, (0, codegen_1._)`$fDef}.validate`), () => gen.assign(fType, (0, codegen_1._)`"string"`).assign(format, fDef)); 6006 cxt.fail$data((0, codegen_1.or)(unknownFmt(), invalidFmt())); 6007 function unknownFmt() { 6008 if (opts.strictSchema === false) 6009 return codegen_1.nil; 6010 return (0, codegen_1._)`$schemaCode} && !$format}`; 6011 } 6012 function invalidFmt() { 6013 const callFormat = schemaEnv.$async ? (0, codegen_1._)`($fDef}.async ? await $format}($data}) : $format}($data}))` : (0, codegen_1._)`$format}($data})`; 6014 const validData = (0, codegen_1._)`(typeof $format} == "function" ? $callFormat} : $format}.test($data}))`; 6015 return (0, codegen_1._)`$format} && $format} !== true && $fType} === $ruleType} && !$validData}`; 6016 } 6017 } 6018 function validateFormat() { 6019 const formatDef = self.formats[schema]; 6020 if (!formatDef) { 6021 unknownFormat(); 6022 return; 6023 } 6024 if (formatDef === true) 6025 return; 6026 const [fmtType, format, fmtRef] = getFormat(formatDef); 6027 if (fmtType === ruleType) 6028 cxt.pass(validCondition()); 6029 function unknownFormat() { 6030 if (opts.strictSchema === false) { 6031 self.logger.warn(unknownMsg()); 6032 return; 6033 } 6034 throw new Error(unknownMsg()); 6035 function unknownMsg() { 6036 return `unknown format "$schema}" ignored in schema at path "$errSchemaPath}"`; 6037 } 6038 } 6039 function getFormat(fmtDef) { 6040 const code = fmtDef instanceof RegExp ? (0, codegen_1.regexpCode)(fmtDef) : opts.code.formats ? (0, codegen_1._)`$opts.code.formats}${(0, codegen_1.getProperty)(schema)}` : void 0; 6041 const fmt = gen.scopeValue("formats", { key: schema, ref: fmtDef, code }); 6042 if (typeof fmtDef == "object" && !(fmtDef instanceof RegExp)) { 6043 return [fmtDef.type || "string", fmtDef.validate, (0, codegen_1._)`$fmt}.validate`]; 6044 } 6045 return ["string", fmtDef, fmt]; 6046 } 6047 function validCondition() { 6048 if (typeof formatDef == "object" && !(formatDef instanceof RegExp) && formatDef.async) { 6049 if (!schemaEnv.$async) 6050 throw new Error("async format in sync schema"); 6051 return (0, codegen_1._)`await $fmtRef}($data})`; 6052 } 6053 return typeof format == "function" ? (0, codegen_1._)`$fmtRef}($data})` : (0, codegen_1._)`$fmtRef}.test($data})`; 6054 } 6055 } 6056 } 6057 }; 6058 exports.default = def; 6059 } 6060 }); 6061 6062 // node_modules/ajv/dist/vocabularies/format/index.js 6063 var require_format2 = __commonJS({ 6064 "node_modules/ajv/dist/vocabularies/format/index.js"(exports) { 6065 "use strict"; 6066 Object.defineProperty(exports, "__esModule", { value: true }); 6067 var format_1 = require_format(); 6068 var format = [format_1.default]; 6069 exports.default = format; 6070 } 6071 }); 6072 6073 // node_modules/ajv-draft-04/dist/vocabulary/draft4.js 6074 var require_draft4 = __commonJS({ 6075 "node_modules/ajv-draft-04/dist/vocabulary/draft4.js"(exports) { 6076 "use strict"; 6077 Object.defineProperty(exports, "__esModule", { value: true }); 6078 var core_1 = require_core2(); 6079 var validation_1 = require_validation(); 6080 var applicator_1 = require_applicator(); 6081 var format_1 = require_format2(); 6082 var metadataVocabulary = ["title", "description", "default"]; 6083 var draft4Vocabularies = [ 6084 core_1.default, 6085 validation_1.default, 6086 applicator_1.default(), 6087 format_1.default, 6088 metadataVocabulary 6089 ]; 6090 exports.default = draft4Vocabularies; 6091 } 6092 }); 6093 6094 // node_modules/ajv/dist/vocabularies/discriminator/types.js 6095 var require_types = __commonJS({ 6096 "node_modules/ajv/dist/vocabularies/discriminator/types.js"(exports) { 6097 "use strict"; 6098 Object.defineProperty(exports, "__esModule", { value: true }); 6099 exports.DiscrError = void 0; 6100 var DiscrError; 6101 (function(DiscrError2) { 6102 DiscrError2["Tag"] = "tag"; 6103 DiscrError2["Mapping"] = "mapping"; 6104 })(DiscrError || (exports.DiscrError = DiscrError = {})); 6105 } 6106 }); 6107 6108 // node_modules/ajv/dist/vocabularies/discriminator/index.js 6109 var require_discriminator = __commonJS({ 6110 "node_modules/ajv/dist/vocabularies/discriminator/index.js"(exports) { 6111 "use strict"; 6112 Object.defineProperty(exports, "__esModule", { value: true }); 6113 var codegen_1 = require_codegen(); 6114 var types_1 = require_types(); 6115 var compile_1 = require_compile(); 6116 var ref_error_1 = require_ref_error(); 6117 var util_1 = require_util(); 6118 var error = { 6119 message: ({ params: { discrError, tagName } }) => discrError === types_1.DiscrError.Tag ? `tag "$tagName}" must be string` : `value of tag "$tagName}" must be in oneOf`, 6120 params: ({ params: { discrError, tag, tagName } }) => (0, codegen_1._)`{error: $discrError}, tag: $tagName}, tagValue: $tag}}` 6121 }; 6122 var def = { 6123 keyword: "discriminator", 6124 type: "object", 6125 schemaType: "object", 6126 error, 6127 code(cxt) { 6128 const { gen, data, schema, parentSchema, it } = cxt; 6129 const { oneOf } = parentSchema; 6130 if (!it.opts.discriminator) { 6131 throw new Error("discriminator: requires discriminator option"); 6132 } 6133 const tagName = schema.propertyName; 6134 if (typeof tagName != "string") 6135 throw new Error("discriminator: requires propertyName"); 6136 if (schema.mapping) 6137 throw new Error("discriminator: mapping is not supported"); 6138 if (!oneOf) 6139 throw new Error("discriminator: requires oneOf keyword"); 6140 const valid = gen.let("valid", false); 6141 const tag = gen.const("tag", (0, codegen_1._)`$data}${(0, codegen_1.getProperty)(tagName)}`); 6142 gen.if((0, codegen_1._)`typeof $tag} == "string"`, () => validateMapping(), () => cxt.error(false, { discrError: types_1.DiscrError.Tag, tag, tagName })); 6143 cxt.ok(valid); 6144 function validateMapping() { 6145 const mapping = getMapping(); 6146 gen.if(false); 6147 for (const tagValue in mapping) { 6148 gen.elseIf((0, codegen_1._)`$tag} === $tagValue}`); 6149 gen.assign(valid, applyTagSchema(mapping[tagValue])); 6150 } 6151 gen.else(); 6152 cxt.error(false, { discrError: types_1.DiscrError.Mapping, tag, tagName }); 6153 gen.endIf(); 6154 } 6155 function applyTagSchema(schemaProp) { 6156 const _valid = gen.name("valid"); 6157 const schCxt = cxt.subschema({ keyword: "oneOf", schemaProp }, _valid); 6158 cxt.mergeEvaluated(schCxt, codegen_1.Name); 6159 return _valid; 6160 } 6161 function getMapping() { 6162 var _a; 6163 const oneOfMapping = {}; 6164 const topRequired = hasRequired(parentSchema); 6165 let tagRequired = true; 6166 for (let i = 0; i < oneOf.length; i++) { 6167 let sch = oneOf[i]; 6168 if ((sch === null || sch === void 0 ? void 0 : sch.$ref) && !(0, util_1.schemaHasRulesButRef)(sch, it.self.RULES)) { 6169 const ref = sch.$ref; 6170 sch = compile_1.resolveRef.call(it.self, it.schemaEnv.root, it.baseId, ref); 6171 if (sch instanceof compile_1.SchemaEnv) 6172 sch = sch.schema; 6173 if (sch === void 0) 6174 throw new ref_error_1.default(it.opts.uriResolver, it.baseId, ref); 6175 } 6176 const propSch = (_a = sch === null || sch === void 0 ? void 0 : sch.properties) === null || _a === void 0 ? void 0 : _a[tagName]; 6177 if (typeof propSch != "object") { 6178 throw new Error(`discriminator: oneOf subschemas (or referenced schemas) must have "properties/$tagName}"`); 6179 } 6180 tagRequired = tagRequired && (topRequired || hasRequired(sch)); 6181 addMappings(propSch, i); 6182 } 6183 if (!tagRequired) 6184 throw new Error(`discriminator: "$tagName}" must be required`); 6185 return oneOfMapping; 6186 function hasRequired({ required }) { 6187 return Array.isArray(required) && required.includes(tagName); 6188 } 6189 function addMappings(sch, i) { 6190 if (sch.const) { 6191 addMapping(sch.const, i); 6192 } else if (sch.enum) { 6193 for (const tagValue of sch.enum) { 6194 addMapping(tagValue, i); 6195 } 6196 } else { 6197 throw new Error(`discriminator: "properties/$tagName}" must have "const" or "enum"`); 6198 } 6199 } 6200 function addMapping(tagValue, i) { 6201 if (typeof tagValue != "string" || tagValue in oneOfMapping) { 6202 throw new Error(`discriminator: "$tagName}" values must be unique strings`); 6203 } 6204 oneOfMapping[tagValue] = i; 6205 } 6206 } 6207 } 6208 }; 6209 exports.default = def; 6210 } 6211 }); 6212 6213 // node_modules/ajv-draft-04/dist/refs/json-schema-draft-04.json 6214 var require_json_schema_draft_04 = __commonJS({ 6215 "node_modules/ajv-draft-04/dist/refs/json-schema-draft-04.json"(exports, module) { 6216 module.exports = { 6217 id: "http://json-schema.org/draft-04/schema#", 6218 $schema: "http://json-schema.org/draft-04/schema#", 6219 description: "Core schema meta-schema", 6220 definitions: { 6221 schemaArray: { 6222 type: "array", 6223 minItems: 1, 6224 items: { $ref: "#" } 6225 }, 6226 positiveInteger: { 6227 type: "integer", 6228 minimum: 0 6229 }, 6230 positiveIntegerDefault0: { 6231 allOf: [{ $ref: "#/definitions/positiveInteger" }, { default: 0 }] 6232 }, 6233 simpleTypes: { 6234 enum: ["array", "boolean", "integer", "null", "number", "object", "string"] 6235 }, 6236 stringArray: { 6237 type: "array", 6238 items: { type: "string" }, 6239 minItems: 1, 6240 uniqueItems: true 6241 } 6242 }, 6243 type: "object", 6244 properties: { 6245 id: { 6246 type: "string", 6247 format: "uri" 6248 }, 6249 $schema: { 6250 type: "string", 6251 format: "uri" 6252 }, 6253 title: { 6254 type: "string" 6255 }, 6256 description: { 6257 type: "string" 6258 }, 6259 default: {}, 6260 multipleOf: { 6261 type: "number", 6262 minimum: 0, 6263 exclusiveMinimum: true 6264 }, 6265 maximum: { 6266 type: "number" 6267 }, 6268 exclusiveMaximum: { 6269 type: "boolean", 6270 default: false 6271 }, 6272 minimum: { 6273 type: "number" 6274 }, 6275 exclusiveMinimum: { 6276 type: "boolean", 6277 default: false 6278 }, 6279 maxLength: { $ref: "#/definitions/positiveInteger" }, 6280 minLength: { $ref: "#/definitions/positiveIntegerDefault0" }, 6281 pattern: { 6282 type: "string", 6283 format: "regex" 6284 }, 6285 additionalItems: { 6286 anyOf: [{ type: "boolean" }, { $ref: "#" }], 6287 default: {} 6288 }, 6289 items: { 6290 anyOf: [{ $ref: "#" }, { $ref: "#/definitions/schemaArray" }], 6291 default: {} 6292 }, 6293 maxItems: { $ref: "#/definitions/positiveInteger" }, 6294 minItems: { $ref: "#/definitions/positiveIntegerDefault0" }, 6295 uniqueItems: { 6296 type: "boolean", 6297 default: false 6298 }, 6299 maxProperties: { $ref: "#/definitions/positiveInteger" }, 6300 minProperties: { $ref: "#/definitions/positiveIntegerDefault0" }, 6301 required: { $ref: "#/definitions/stringArray" }, 6302 additionalProperties: { 6303 anyOf: [{ type: "boolean" }, { $ref: "#" }], 6304 default: {} 6305 }, 6306 definitions: { 6307 type: "object", 6308 additionalProperties: { $ref: "#" }, 6309 default: {} 6310 }, 6311 properties: { 6312 type: "object", 6313 additionalProperties: { $ref: "#" }, 6314 default: {} 6315 }, 6316 patternProperties: { 6317 type: "object", 6318 additionalProperties: { $ref: "#" }, 6319 default: {} 6320 }, 6321 dependencies: { 6322 type: "object", 6323 additionalProperties: { 6324 anyOf: [{ $ref: "#" }, { $ref: "#/definitions/stringArray" }] 6325 } 6326 }, 6327 enum: { 6328 type: "array", 6329 minItems: 1, 6330 uniqueItems: true 6331 }, 6332 type: { 6333 anyOf: [ 6334 { $ref: "#/definitions/simpleTypes" }, 6335 { 6336 type: "array", 6337 items: { $ref: "#/definitions/simpleTypes" }, 6338 minItems: 1, 6339 uniqueItems: true 6340 } 6341 ] 6342 }, 6343 allOf: { $ref: "#/definitions/schemaArray" }, 6344 anyOf: { $ref: "#/definitions/schemaArray" }, 6345 oneOf: { $ref: "#/definitions/schemaArray" }, 6346 not: { $ref: "#" } 6347 }, 6348 dependencies: { 6349 exclusiveMaximum: ["maximum"], 6350 exclusiveMinimum: ["minimum"] 6351 }, 6352 default: {} 6353 }; 6354 } 6355 }); 6356 6357 // node_modules/ajv-draft-04/dist/index.js 6358 var require_dist = __commonJS({ 6359 "node_modules/ajv-draft-04/dist/index.js"(exports, module) { 6360 "use strict"; 6361 Object.defineProperty(exports, "__esModule", { value: true }); 6362 exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = void 0; 6363 var core_1 = require_core(); 6364 var draft4_1 = require_draft4(); 6365 var discriminator_1 = require_discriminator(); 6366 var draft4MetaSchema = require_json_schema_draft_04(); 6367 var META_SUPPORT_DATA = ["/properties"]; 6368 var META_SCHEMA_ID = "http://json-schema.org/draft-04/schema"; 6369 var Ajv2 = class extends core_1.default { 6370 constructor(opts = {}) { 6371 super({ 6372 ...opts, 6373 schemaId: "id" 6374 }); 6375 } 6376 _addVocabularies() { 6377 super._addVocabularies(); 6378 draft4_1.default.forEach((v) => this.addVocabulary(v)); 6379 if (this.opts.discriminator) 6380 this.addKeyword(discriminator_1.default); 6381 } 6382 _addDefaultMetaSchema() { 6383 super._addDefaultMetaSchema(); 6384 if (!this.opts.meta) 6385 return; 6386 const metaSchema = this.opts.$data ? this.$dataMetaSchema(draft4MetaSchema, META_SUPPORT_DATA) : draft4MetaSchema; 6387 this.addMetaSchema(metaSchema, META_SCHEMA_ID, false); 6388 this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID; 6389 } 6390 defaultMeta() { 6391 return this.opts.defaultMeta = super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : void 0); 6392 } 6393 }; 6394 module.exports = exports = Ajv2; 6395 Object.defineProperty(exports, "__esModule", { value: true }); 6396 exports.default = Ajv2; 6397 var core_2 = require_core(); 6398 Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function() { 6399 return core_2.KeywordCxt; 6400 } }); 6401 var core_3 = require_core(); 6402 Object.defineProperty(exports, "_", { enumerable: true, get: function() { 6403 return core_3._; 6404 } }); 6405 Object.defineProperty(exports, "str", { enumerable: true, get: function() { 6406 return core_3.str; 6407 } }); 6408 Object.defineProperty(exports, "stringify", { enumerable: true, get: function() { 6409 return core_3.stringify; 6410 } }); 6411 Object.defineProperty(exports, "nil", { enumerable: true, get: function() { 6412 return core_3.nil; 6413 } }); 6414 Object.defineProperty(exports, "Name", { enumerable: true, get: function() { 6415 return core_3.Name; 6416 } }); 6417 Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function() { 6418 return core_3.CodeGen; 6419 } }); 6420 } 6421 }); 6422 6423 // packages/abilities/node_modules/ajv-formats/dist/formats.js 6424 var require_formats = __commonJS({ 6425 "packages/abilities/node_modules/ajv-formats/dist/formats.js"(exports) { 6426 "use strict"; 6427 Object.defineProperty(exports, "__esModule", { value: true }); 6428 exports.formatNames = exports.fastFormats = exports.fullFormats = void 0; 6429 function fmtDef(validate, compare) { 6430 return { validate, compare }; 6431 } 6432 exports.fullFormats = { 6433 // date: http://tools.ietf.org/html/rfc3339#section-5.6 6434 date: fmtDef(date, compareDate), 6435 // date-time: http://tools.ietf.org/html/rfc3339#section-5.6 6436 time: fmtDef(getTime(true), compareTime), 6437 "date-time": fmtDef(getDateTime(true), compareDateTime), 6438 "iso-time": fmtDef(getTime(), compareIsoTime), 6439 "iso-date-time": fmtDef(getDateTime(), compareIsoDateTime), 6440 // duration: https://tools.ietf.org/html/rfc3339#appendix-A 6441 duration: /^P(?!$)((\d+Y)?(\d+M)?(\d+D)?(T(?=\d)(\d+H)?(\d+M)?(\d+S)?)?|(\d+W)?)$/, 6442 uri, 6443 "uri-reference": /^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i, 6444 // uri-template: https://tools.ietf.org/html/rfc6570 6445 "uri-template": /^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i, 6446 // For the source: https://gist.github.com/dperini/729294 6447 // For test cases: https://mathiasbynens.be/demo/url-regex 6448 url: /^(?:https?|ftp):\/\/(?:\S+(?::\S*)?@)?(?:(?!(?:10|127)(?:\.\d{1,3}){3})(?!(?:169\.254|192\.168)(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)(?:\.(?:[a-z0-9\u{00a1}-\u{ffff}]+-)*[a-z0-9\u{00a1}-\u{ffff}]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu, 6449 email: /^[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/i, 6450 hostname: /^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i, 6451 // optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html 6452 ipv4: /^(?:(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)$/, 6453 ipv6: /^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i, 6454 regex, 6455 // uuid: http://tools.ietf.org/html/rfc4122 6456 uuid: /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i, 6457 // JSON-pointer: https://tools.ietf.org/html/rfc6901 6458 // uri fragment: https://tools.ietf.org/html/rfc3986#appendix-A 6459 "json-pointer": /^(?:\/(?:[^~/]|~0|~1)*)*$/, 6460 "json-pointer-uri-fragment": /^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i, 6461 // relative JSON-pointer: http://tools.ietf.org/html/draft-luff-relative-json-pointer-00 6462 "relative-json-pointer": /^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/, 6463 // the following formats are used by the openapi specification: https://spec.openapis.org/oas/v3.0.0#data-types 6464 // byte: https://github.com/miguelmota/is-base64 6465 byte, 6466 // signed 32 bit integer 6467 int32: { type: "number", validate: validateInt32 }, 6468 // signed 64 bit integer 6469 int64: { type: "number", validate: validateInt64 }, 6470 // C-type float 6471 float: { type: "number", validate: validateNumber }, 6472 // C-type double 6473 double: { type: "number", validate: validateNumber }, 6474 // hint to the UI to hide input strings 6475 password: true, 6476 // unchecked string payload 6477 binary: true 6478 }; 6479 exports.fastFormats = { 6480 ...exports.fullFormats, 6481 date: fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d$/, compareDate), 6482 time: fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, compareTime), 6483 "date-time": fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\dt(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i, compareDateTime), 6484 "iso-time": fmtDef(/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, compareIsoTime), 6485 "iso-date-time": fmtDef(/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i, compareIsoDateTime), 6486 // uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js 6487 uri: /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/)?[^\s]*$/i, 6488 "uri-reference": /^(?:(?:[a-z][a-z0-9+\-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i, 6489 // email (sources from jsen validator): 6490 // http://stackoverflow.com/questions/201323/using-a-regular-expression-to-validate-an-email-address#answer-8829363 6491 // http://www.w3.org/TR/html5/forms.html#valid-e-mail-address (search for 'wilful violation') 6492 email: /^[a-z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?)*$/i 6493 }; 6494 exports.formatNames = Object.keys(exports.fullFormats); 6495 function isLeapYear(year) { 6496 return year % 4 === 0 && (year % 100 !== 0 || year % 400 === 0); 6497 } 6498 var DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/; 6499 var DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; 6500 function date(str) { 6501 const matches = DATE.exec(str); 6502 if (!matches) 6503 return false; 6504 const year = +matches[1]; 6505 const month = +matches[2]; 6506 const day = +matches[3]; 6507 return month >= 1 && month <= 12 && day >= 1 && day <= (month === 2 && isLeapYear(year) ? 29 : DAYS[month]); 6508 } 6509 function compareDate(d1, d2) { 6510 if (!(d1 && d2)) 6511 return void 0; 6512 if (d1 > d2) 6513 return 1; 6514 if (d1 < d2) 6515 return -1; 6516 return 0; 6517 } 6518 var TIME = /^(\d\d):(\d\d):(\d\d(?:\.\d+)?)(z|([+-])(\d\d)(?::?(\d\d))?)?$/i; 6519 function getTime(strictTimeZone) { 6520 return function time(str) { 6521 const matches = TIME.exec(str); 6522 if (!matches) 6523 return false; 6524 const hr = +matches[1]; 6525 const min = +matches[2]; 6526 const sec = +matches[3]; 6527 const tz = matches[4]; 6528 const tzSign = matches[5] === "-" ? -1 : 1; 6529 const tzH = +(matches[6] || 0); 6530 const tzM = +(matches[7] || 0); 6531 if (tzH > 23 || tzM > 59 || strictTimeZone && !tz) 6532 return false; 6533 if (hr <= 23 && min <= 59 && sec < 60) 6534 return true; 6535 const utcMin = min - tzM * tzSign; 6536 const utcHr = hr - tzH * tzSign - (utcMin < 0 ? 1 : 0); 6537 return (utcHr === 23 || utcHr === -1) && (utcMin === 59 || utcMin === -1) && sec < 61; 6538 }; 6539 } 6540 function compareTime(s1, s2) { 6541 if (!(s1 && s2)) 6542 return void 0; 6543 const t1 = (/* @__PURE__ */ new Date("2020-01-01T" + s1)).valueOf(); 6544 const t2 = (/* @__PURE__ */ new Date("2020-01-01T" + s2)).valueOf(); 6545 if (!(t1 && t2)) 6546 return void 0; 6547 return t1 - t2; 6548 } 6549 function compareIsoTime(t1, t2) { 6550 if (!(t1 && t2)) 6551 return void 0; 6552 const a1 = TIME.exec(t1); 6553 const a2 = TIME.exec(t2); 6554 if (!(a1 && a2)) 6555 return void 0; 6556 t1 = a1[1] + a1[2] + a1[3]; 6557 t2 = a2[1] + a2[2] + a2[3]; 6558 if (t1 > t2) 6559 return 1; 6560 if (t1 < t2) 6561 return -1; 6562 return 0; 6563 } 6564 var DATE_TIME_SEPARATOR = /t|\s/i; 6565 function getDateTime(strictTimeZone) { 6566 const time = getTime(strictTimeZone); 6567 return function date_time(str) { 6568 const dateTime = str.split(DATE_TIME_SEPARATOR); 6569 return dateTime.length === 2 && date(dateTime[0]) && time(dateTime[1]); 6570 }; 6571 } 6572 function compareDateTime(dt1, dt2) { 6573 if (!(dt1 && dt2)) 6574 return void 0; 6575 const d1 = new Date(dt1).valueOf(); 6576 const d2 = new Date(dt2).valueOf(); 6577 if (!(d1 && d2)) 6578 return void 0; 6579 return d1 - d2; 6580 } 6581 function compareIsoDateTime(dt1, dt2) { 6582 if (!(dt1 && dt2)) 6583 return void 0; 6584 const [d1, t1] = dt1.split(DATE_TIME_SEPARATOR); 6585 const [d2, t2] = dt2.split(DATE_TIME_SEPARATOR); 6586 const res = compareDate(d1, d2); 6587 if (res === void 0) 6588 return void 0; 6589 return res || compareTime(t1, t2); 6590 } 6591 var NOT_URI_FRAGMENT = /\/|:/; 6592 var URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i; 6593 function uri(str) { 6594 return NOT_URI_FRAGMENT.test(str) && URI.test(str); 6595 } 6596 var BYTE = /^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/gm; 6597 function byte(str) { 6598 BYTE.lastIndex = 0; 6599 return BYTE.test(str); 6600 } 6601 var MIN_INT32 = -(2 ** 31); 6602 var MAX_INT32 = 2 ** 31 - 1; 6603 function validateInt32(value) { 6604 return Number.isInteger(value) && value <= MAX_INT32 && value >= MIN_INT32; 6605 } 6606 function validateInt64(value) { 6607 return Number.isInteger(value); 6608 } 6609 function validateNumber() { 6610 return true; 6611 } 6612 var Z_ANCHOR = /[^\\]\\Z/; 6613 function regex(str) { 6614 if (Z_ANCHOR.test(str)) 6615 return false; 6616 try { 6617 new RegExp(str); 6618 return true; 6619 } catch (e) { 6620 return false; 6621 } 6622 } 6623 } 6624 }); 6625 6626 // node_modules/ajv/dist/vocabularies/core/id.js 6627 var require_id = __commonJS({ 6628 "node_modules/ajv/dist/vocabularies/core/id.js"(exports) { 6629 "use strict"; 6630 Object.defineProperty(exports, "__esModule", { value: true }); 6631 var def = { 6632 keyword: "id", 6633 code() { 6634 throw new Error('NOT SUPPORTED: keyword "id", use "$id" for schema ID'); 6635 } 6636 }; 6637 exports.default = def; 6638 } 6639 }); 6640 6641 // node_modules/ajv/dist/vocabularies/core/index.js 6642 var require_core3 = __commonJS({ 6643 "node_modules/ajv/dist/vocabularies/core/index.js"(exports) { 6644 "use strict"; 6645 Object.defineProperty(exports, "__esModule", { value: true }); 6646 var id_1 = require_id(); 6647 var ref_1 = require_ref(); 6648 var core = [ 6649 "$schema", 6650 "$id", 6651 "$defs", 6652 "$vocabulary", 6653 { keyword: "$comment" }, 6654 "definitions", 6655 id_1.default, 6656 ref_1.default 6657 ]; 6658 exports.default = core; 6659 } 6660 }); 6661 6662 // node_modules/ajv/dist/vocabularies/validation/limitNumber.js 6663 var require_limitNumber2 = __commonJS({ 6664 "node_modules/ajv/dist/vocabularies/validation/limitNumber.js"(exports) { 6665 "use strict"; 6666 Object.defineProperty(exports, "__esModule", { value: true }); 6667 var codegen_1 = require_codegen(); 6668 var ops = codegen_1.operators; 6669 var KWDs = { 6670 maximum: { okStr: "<=", ok: ops.LTE, fail: ops.GT }, 6671 minimum: { okStr: ">=", ok: ops.GTE, fail: ops.LT }, 6672 exclusiveMaximum: { okStr: "<", ok: ops.LT, fail: ops.GTE }, 6673 exclusiveMinimum: { okStr: ">", ok: ops.GT, fail: ops.LTE } 6674 }; 6675 var error = { 6676 message: ({ keyword, schemaCode }) => (0, codegen_1.str)`must be $KWDs[keyword].okStr} $schemaCode}`, 6677 params: ({ keyword, schemaCode }) => (0, codegen_1._)`{comparison: $KWDs[keyword].okStr}, limit: $schemaCode}}` 6678 }; 6679 var def = { 6680 keyword: Object.keys(KWDs), 6681 type: "number", 6682 schemaType: "number", 6683 $data: true, 6684 error, 6685 code(cxt) { 6686 const { keyword, data, schemaCode } = cxt; 6687 cxt.fail$data((0, codegen_1._)`$data} $KWDs[keyword].fail} $schemaCode} || isNaN($data})`); 6688 } 6689 }; 6690 exports.default = def; 6691 } 6692 }); 6693 6694 // node_modules/ajv/dist/vocabularies/validation/index.js 6695 var require_validation2 = __commonJS({ 6696 "node_modules/ajv/dist/vocabularies/validation/index.js"(exports) { 6697 "use strict"; 6698 Object.defineProperty(exports, "__esModule", { value: true }); 6699 var limitNumber_1 = require_limitNumber2(); 6700 var multipleOf_1 = require_multipleOf(); 6701 var limitLength_1 = require_limitLength(); 6702 var pattern_1 = require_pattern(); 6703 var limitProperties_1 = require_limitProperties(); 6704 var required_1 = require_required(); 6705 var limitItems_1 = require_limitItems(); 6706 var uniqueItems_1 = require_uniqueItems(); 6707 var const_1 = require_const(); 6708 var enum_1 = require_enum(); 6709 var validation = [ 6710 // number 6711 limitNumber_1.default, 6712 multipleOf_1.default, 6713 // string 6714 limitLength_1.default, 6715 pattern_1.default, 6716 // object 6717 limitProperties_1.default, 6718 required_1.default, 6719 // array 6720 limitItems_1.default, 6721 uniqueItems_1.default, 6722 // any 6723 { keyword: "type", schemaType: ["string", "array"] }, 6724 { keyword: "nullable", schemaType: "boolean" }, 6725 const_1.default, 6726 enum_1.default 6727 ]; 6728 exports.default = validation; 6729 } 6730 }); 6731 6732 // node_modules/ajv/dist/vocabularies/metadata.js 6733 var require_metadata = __commonJS({ 6734 "node_modules/ajv/dist/vocabularies/metadata.js"(exports) { 6735 "use strict"; 6736 Object.defineProperty(exports, "__esModule", { value: true }); 6737 exports.contentVocabulary = exports.metadataVocabulary = void 0; 6738 exports.metadataVocabulary = [ 6739 "title", 6740 "description", 6741 "default", 6742 "deprecated", 6743 "readOnly", 6744 "writeOnly", 6745 "examples" 6746 ]; 6747 exports.contentVocabulary = [ 6748 "contentMediaType", 6749 "contentEncoding", 6750 "contentSchema" 6751 ]; 6752 } 6753 }); 6754 6755 // node_modules/ajv/dist/vocabularies/draft7.js 6756 var require_draft7 = __commonJS({ 6757 "node_modules/ajv/dist/vocabularies/draft7.js"(exports) { 6758 "use strict"; 6759 Object.defineProperty(exports, "__esModule", { value: true }); 6760 var core_1 = require_core3(); 6761 var validation_1 = require_validation2(); 6762 var applicator_1 = require_applicator(); 6763 var format_1 = require_format2(); 6764 var metadata_1 = require_metadata(); 6765 var draft7Vocabularies = [ 6766 core_1.default, 6767 validation_1.default, 6768 (0, applicator_1.default)(), 6769 format_1.default, 6770 metadata_1.metadataVocabulary, 6771 metadata_1.contentVocabulary 6772 ]; 6773 exports.default = draft7Vocabularies; 6774 } 6775 }); 6776 6777 // node_modules/ajv/dist/refs/json-schema-draft-07.json 6778 var require_json_schema_draft_07 = __commonJS({ 6779 "node_modules/ajv/dist/refs/json-schema-draft-07.json"(exports, module) { 6780 module.exports = { 6781 $schema: "http://json-schema.org/draft-07/schema#", 6782 $id: "http://json-schema.org/draft-07/schema#", 6783 title: "Core schema meta-schema", 6784 definitions: { 6785 schemaArray: { 6786 type: "array", 6787 minItems: 1, 6788 items: { $ref: "#" } 6789 }, 6790 nonNegativeInteger: { 6791 type: "integer", 6792 minimum: 0 6793 }, 6794 nonNegativeIntegerDefault0: { 6795 allOf: [{ $ref: "#/definitions/nonNegativeInteger" }, { default: 0 }] 6796 }, 6797 simpleTypes: { 6798 enum: ["array", "boolean", "integer", "null", "number", "object", "string"] 6799 }, 6800 stringArray: { 6801 type: "array", 6802 items: { type: "string" }, 6803 uniqueItems: true, 6804 default: [] 6805 } 6806 }, 6807 type: ["object", "boolean"], 6808 properties: { 6809 $id: { 6810 type: "string", 6811 format: "uri-reference" 6812 }, 6813 $schema: { 6814 type: "string", 6815 format: "uri" 6816 }, 6817 $ref: { 6818 type: "string", 6819 format: "uri-reference" 6820 }, 6821 $comment: { 6822 type: "string" 6823 }, 6824 title: { 6825 type: "string" 6826 }, 6827 description: { 6828 type: "string" 6829 }, 6830 default: true, 6831 readOnly: { 6832 type: "boolean", 6833 default: false 6834 }, 6835 examples: { 6836 type: "array", 6837 items: true 6838 }, 6839 multipleOf: { 6840 type: "number", 6841 exclusiveMinimum: 0 6842 }, 6843 maximum: { 6844 type: "number" 6845 }, 6846 exclusiveMaximum: { 6847 type: "number" 6848 }, 6849 minimum: { 6850 type: "number" 6851 }, 6852 exclusiveMinimum: { 6853 type: "number" 6854 }, 6855 maxLength: { $ref: "#/definitions/nonNegativeInteger" }, 6856 minLength: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, 6857 pattern: { 6858 type: "string", 6859 format: "regex" 6860 }, 6861 additionalItems: { $ref: "#" }, 6862 items: { 6863 anyOf: [{ $ref: "#" }, { $ref: "#/definitions/schemaArray" }], 6864 default: true 6865 }, 6866 maxItems: { $ref: "#/definitions/nonNegativeInteger" }, 6867 minItems: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, 6868 uniqueItems: { 6869 type: "boolean", 6870 default: false 6871 }, 6872 contains: { $ref: "#" }, 6873 maxProperties: { $ref: "#/definitions/nonNegativeInteger" }, 6874 minProperties: { $ref: "#/definitions/nonNegativeIntegerDefault0" }, 6875 required: { $ref: "#/definitions/stringArray" }, 6876 additionalProperties: { $ref: "#" }, 6877 definitions: { 6878 type: "object", 6879 additionalProperties: { $ref: "#" }, 6880 default: {} 6881 }, 6882 properties: { 6883 type: "object", 6884 additionalProperties: { $ref: "#" }, 6885 default: {} 6886 }, 6887 patternProperties: { 6888 type: "object", 6889 additionalProperties: { $ref: "#" }, 6890 propertyNames: { format: "regex" }, 6891 default: {} 6892 }, 6893 dependencies: { 6894 type: "object", 6895 additionalProperties: { 6896 anyOf: [{ $ref: "#" }, { $ref: "#/definitions/stringArray" }] 6897 } 6898 }, 6899 propertyNames: { $ref: "#" }, 6900 const: true, 6901 enum: { 6902 type: "array", 6903 items: true, 6904 minItems: 1, 6905 uniqueItems: true 6906 }, 6907 type: { 6908 anyOf: [ 6909 { $ref: "#/definitions/simpleTypes" }, 6910 { 6911 type: "array", 6912 items: { $ref: "#/definitions/simpleTypes" }, 6913 minItems: 1, 6914 uniqueItems: true 6915 } 6916 ] 6917 }, 6918 format: { type: "string" }, 6919 contentMediaType: { type: "string" }, 6920 contentEncoding: { type: "string" }, 6921 if: { $ref: "#" }, 6922 then: { $ref: "#" }, 6923 else: { $ref: "#" }, 6924 allOf: { $ref: "#/definitions/schemaArray" }, 6925 anyOf: { $ref: "#/definitions/schemaArray" }, 6926 oneOf: { $ref: "#/definitions/schemaArray" }, 6927 not: { $ref: "#" } 6928 }, 6929 default: true 6930 }; 6931 } 6932 }); 6933 6934 // node_modules/ajv/dist/ajv.js 6935 var require_ajv = __commonJS({ 6936 "node_modules/ajv/dist/ajv.js"(exports, module) { 6937 "use strict"; 6938 Object.defineProperty(exports, "__esModule", { value: true }); 6939 exports.MissingRefError = exports.ValidationError = exports.CodeGen = exports.Name = exports.nil = exports.stringify = exports.str = exports._ = exports.KeywordCxt = exports.Ajv = void 0; 6940 var core_1 = require_core(); 6941 var draft7_1 = require_draft7(); 6942 var discriminator_1 = require_discriminator(); 6943 var draft7MetaSchema = require_json_schema_draft_07(); 6944 var META_SUPPORT_DATA = ["/properties"]; 6945 var META_SCHEMA_ID = "http://json-schema.org/draft-07/schema"; 6946 var Ajv2 = class extends core_1.default { 6947 _addVocabularies() { 6948 super._addVocabularies(); 6949 draft7_1.default.forEach((v) => this.addVocabulary(v)); 6950 if (this.opts.discriminator) 6951 this.addKeyword(discriminator_1.default); 6952 } 6953 _addDefaultMetaSchema() { 6954 super._addDefaultMetaSchema(); 6955 if (!this.opts.meta) 6956 return; 6957 const metaSchema = this.opts.$data ? this.$dataMetaSchema(draft7MetaSchema, META_SUPPORT_DATA) : draft7MetaSchema; 6958 this.addMetaSchema(metaSchema, META_SCHEMA_ID, false); 6959 this.refs["http://json-schema.org/schema"] = META_SCHEMA_ID; 6960 } 6961 defaultMeta() { 6962 return this.opts.defaultMeta = super.defaultMeta() || (this.getSchema(META_SCHEMA_ID) ? META_SCHEMA_ID : void 0); 6963 } 6964 }; 6965 exports.Ajv = Ajv2; 6966 module.exports = exports = Ajv2; 6967 module.exports.Ajv = Ajv2; 6968 Object.defineProperty(exports, "__esModule", { value: true }); 6969 exports.default = Ajv2; 6970 var validate_1 = require_validate(); 6971 Object.defineProperty(exports, "KeywordCxt", { enumerable: true, get: function() { 6972 return validate_1.KeywordCxt; 6973 } }); 6974 var codegen_1 = require_codegen(); 6975 Object.defineProperty(exports, "_", { enumerable: true, get: function() { 6976 return codegen_1._; 6977 } }); 6978 Object.defineProperty(exports, "str", { enumerable: true, get: function() { 6979 return codegen_1.str; 6980 } }); 6981 Object.defineProperty(exports, "stringify", { enumerable: true, get: function() { 6982 return codegen_1.stringify; 6983 } }); 6984 Object.defineProperty(exports, "nil", { enumerable: true, get: function() { 6985 return codegen_1.nil; 6986 } }); 6987 Object.defineProperty(exports, "Name", { enumerable: true, get: function() { 6988 return codegen_1.Name; 6989 } }); 6990 Object.defineProperty(exports, "CodeGen", { enumerable: true, get: function() { 6991 return codegen_1.CodeGen; 6992 } }); 6993 var validation_error_1 = require_validation_error(); 6994 Object.defineProperty(exports, "ValidationError", { enumerable: true, get: function() { 6995 return validation_error_1.default; 6996 } }); 6997 var ref_error_1 = require_ref_error(); 6998 Object.defineProperty(exports, "MissingRefError", { enumerable: true, get: function() { 6999 return ref_error_1.default; 7000 } }); 7001 } 7002 }); 7003 7004 // packages/abilities/node_modules/ajv-formats/dist/limit.js 7005 var require_limit = __commonJS({ 7006 "packages/abilities/node_modules/ajv-formats/dist/limit.js"(exports) { 7007 "use strict"; 7008 Object.defineProperty(exports, "__esModule", { value: true }); 7009 exports.formatLimitDefinition = void 0; 7010 var ajv_1 = require_ajv(); 7011 var codegen_1 = require_codegen(); 7012 var ops = codegen_1.operators; 7013 var KWDs = { 7014 formatMaximum: { okStr: "<=", ok: ops.LTE, fail: ops.GT }, 7015 formatMinimum: { okStr: ">=", ok: ops.GTE, fail: ops.LT }, 7016 formatExclusiveMaximum: { okStr: "<", ok: ops.LT, fail: ops.GTE }, 7017 formatExclusiveMinimum: { okStr: ">", ok: ops.GT, fail: ops.LTE } 7018 }; 7019 var error = { 7020 message: ({ keyword, schemaCode }) => (0, codegen_1.str)`should be $KWDs[keyword].okStr} $schemaCode}`, 7021 params: ({ keyword, schemaCode }) => (0, codegen_1._)`{comparison: $KWDs[keyword].okStr}, limit: $schemaCode}}` 7022 }; 7023 exports.formatLimitDefinition = { 7024 keyword: Object.keys(KWDs), 7025 type: "string", 7026 schemaType: "string", 7027 $data: true, 7028 error, 7029 code(cxt) { 7030 const { gen, data, schemaCode, keyword, it } = cxt; 7031 const { opts, self } = it; 7032 if (!opts.validateFormats) 7033 return; 7034 const fCxt = new ajv_1.KeywordCxt(it, self.RULES.all.format.definition, "format"); 7035 if (fCxt.$data) 7036 validate$DataFormat(); 7037 else 7038 validateFormat(); 7039 function validate$DataFormat() { 7040 const fmts = gen.scopeValue("formats", { 7041 ref: self.formats, 7042 code: opts.code.formats 7043 }); 7044 const fmt = gen.const("fmt", (0, codegen_1._)`$fmts}[$fCxt.schemaCode}]`); 7045 cxt.fail$data((0, codegen_1.or)((0, codegen_1._)`typeof $fmt} != "object"`, (0, codegen_1._)`$fmt} instanceof RegExp`, (0, codegen_1._)`typeof $fmt}.compare != "function"`, compareCode(fmt))); 7046 } 7047 function validateFormat() { 7048 const format = fCxt.schema; 7049 const fmtDef = self.formats[format]; 7050 if (!fmtDef || fmtDef === true) 7051 return; 7052 if (typeof fmtDef != "object" || fmtDef instanceof RegExp || typeof fmtDef.compare != "function") { 7053 throw new Error(`"$keyword}": format "$format}" does not define "compare" function`); 7054 } 7055 const fmt = gen.scopeValue("formats", { 7056 key: format, 7057 ref: fmtDef, 7058 code: opts.code.formats ? (0, codegen_1._)`$opts.code.formats}${(0, codegen_1.getProperty)(format)}` : void 0 7059 }); 7060 cxt.fail$data(compareCode(fmt)); 7061 } 7062 function compareCode(fmt) { 7063 return (0, codegen_1._)`$fmt}.compare($data}, $schemaCode}) $KWDs[keyword].fail} 0`; 7064 } 7065 }, 7066 dependencies: ["format"] 7067 }; 7068 var formatLimitPlugin = (ajv2) => { 7069 ajv2.addKeyword(exports.formatLimitDefinition); 7070 return ajv2; 7071 }; 7072 exports.default = formatLimitPlugin; 7073 } 7074 }); 7075 7076 // packages/abilities/node_modules/ajv-formats/dist/index.js 7077 var require_dist2 = __commonJS({ 7078 "packages/abilities/node_modules/ajv-formats/dist/index.js"(exports, module) { 7079 "use strict"; 7080 Object.defineProperty(exports, "__esModule", { value: true }); 7081 var formats_1 = require_formats(); 7082 var limit_1 = require_limit(); 7083 var codegen_1 = require_codegen(); 7084 var fullName = new codegen_1.Name("fullFormats"); 7085 var fastName = new codegen_1.Name("fastFormats"); 7086 var formatsPlugin = (ajv2, opts = { keywords: true }) => { 7087 if (Array.isArray(opts)) { 7088 addFormats2(ajv2, opts, formats_1.fullFormats, fullName); 7089 return ajv2; 7090 } 7091 const [formats, exportName] = opts.mode === "fast" ? [formats_1.fastFormats, fastName] : [formats_1.fullFormats, fullName]; 7092 const list = opts.formats || formats_1.formatNames; 7093 addFormats2(ajv2, list, formats, exportName); 7094 if (opts.keywords) 7095 (0, limit_1.default)(ajv2); 7096 return ajv2; 7097 }; 7098 formatsPlugin.get = (name, mode = "full") => { 7099 const formats = mode === "fast" ? formats_1.fastFormats : formats_1.fullFormats; 7100 const f = formats[name]; 7101 if (!f) 7102 throw new Error(`Unknown format "$name}"`); 7103 return f; 7104 }; 7105 function addFormats2(ajv2, list, fs, exportName) { 7106 var _a; 7107 var _b; 7108 (_a = (_b = ajv2.opts.code).formats) !== null && _a !== void 0 ? _a : _b.formats = (0, codegen_1._)`require("ajv-formats/dist/formats").$exportName}`; 7109 for (const f of list) 7110 ajv2.addFormat(f, fs[f]); 7111 } 7112 module.exports = exports = formatsPlugin; 7113 Object.defineProperty(exports, "__esModule", { value: true }); 7114 exports.default = formatsPlugin; 7115 } 7116 }); 7117 7118 // packages/abilities/build-module/api.js 7119 var import_data4 = __toESM(require_data()); 7120 var import_i18n2 = __toESM(require_i18n()); 7121 7122 // packages/abilities/build-module/store/index.js 7123 var import_data3 = __toESM(require_data()); 7124 7125 // packages/abilities/build-module/store/reducer.js 7126 var import_data = __toESM(require_data()); 7127 7128 // packages/abilities/build-module/store/constants.js 7129 var STORE_NAME = "core/abilities"; 7130 var ABILITY_NAME_PATTERN = /^[a-z0-9-]+\/[a-z0-9-]+$/; 7131 var CATEGORY_SLUG_PATTERN = /^[a-z0-9]+(?:-[a-z0-9]+)*$/; 7132 var REGISTER_ABILITY = "REGISTER_ABILITY"; 7133 var UNREGISTER_ABILITY = "UNREGISTER_ABILITY"; 7134 var REGISTER_ABILITY_CATEGORY = "REGISTER_ABILITY_CATEGORY"; 7135 var UNREGISTER_ABILITY_CATEGORY = "UNREGISTER_ABILITY_CATEGORY"; 7136 7137 // packages/abilities/build-module/store/reducer.js 7138 var ABILITY_KEYS = [ 7139 "name", 7140 "label", 7141 "description", 7142 "category", 7143 "input_schema", 7144 "output_schema", 7145 "meta", 7146 "callback", 7147 "permissionCallback" 7148 ]; 7149 var CATEGORY_KEYS = ["slug", "label", "description", "meta"]; 7150 function sanitizeAbility(ability) { 7151 return Object.keys(ability).filter( 7152 (key) => ABILITY_KEYS.includes(key) && ability[key] !== void 0 7153 ).reduce( 7154 (obj, key) => ({ ...obj, [key]: ability[key] }), 7155 {} 7156 ); 7157 } 7158 function sanitizeCategory(category) { 7159 return Object.keys(category).filter( 7160 (key) => CATEGORY_KEYS.includes(key) && category[key] !== void 0 7161 ).reduce( 7162 (obj, key) => ({ ...obj, [key]: category[key] }), 7163 {} 7164 ); 7165 } 7166 var DEFAULT_STATE = {}; 7167 function abilitiesByName(state = DEFAULT_STATE, action) { 7168 switch (action.type) { 7169 case REGISTER_ABILITY: { 7170 if (!action.ability) { 7171 return state; 7172 } 7173 return { 7174 ...state, 7175 [action.ability.name]: sanitizeAbility(action.ability) 7176 }; 7177 } 7178 case UNREGISTER_ABILITY: { 7179 if (!state[action.name]) { 7180 return state; 7181 } 7182 const { [action.name]: _, ...newState } = state; 7183 return newState; 7184 } 7185 default: 7186 return state; 7187 } 7188 } 7189 var DEFAULT_CATEGORIES_STATE = {}; 7190 function categoriesBySlug(state = DEFAULT_CATEGORIES_STATE, action) { 7191 switch (action.type) { 7192 case REGISTER_ABILITY_CATEGORY: { 7193 if (!action.category) { 7194 return state; 7195 } 7196 return { 7197 ...state, 7198 [action.category.slug]: sanitizeCategory(action.category) 7199 }; 7200 } 7201 case UNREGISTER_ABILITY_CATEGORY: { 7202 if (!state[action.slug]) { 7203 return state; 7204 } 7205 const { [action.slug]: _, ...newState } = state; 7206 return newState; 7207 } 7208 default: 7209 return state; 7210 } 7211 } 7212 var reducer_default = (0, import_data.combineReducers)({ 7213 abilitiesByName, 7214 categoriesBySlug 7215 }); 7216 7217 // packages/abilities/build-module/store/actions.js 7218 var actions_exports = {}; 7219 __export(actions_exports, { 7220 registerAbility: () => registerAbility, 7221 registerAbilityCategory: () => registerAbilityCategory, 7222 unregisterAbility: () => unregisterAbility, 7223 unregisterAbilityCategory: () => unregisterAbilityCategory 7224 }); 7225 var import_i18n = __toESM(require_i18n()); 7226 function filterAnnotations(sourceAnnotations, allowedKeys) { 7227 const annotations = {}; 7228 if (sourceAnnotations) { 7229 for (const key of allowedKeys) { 7230 if (sourceAnnotations[key] !== void 0) { 7231 annotations[key] = sourceAnnotations[key]; 7232 } 7233 } 7234 } 7235 return annotations; 7236 } 7237 function registerAbility(ability) { 7238 return ({ select: select2, dispatch: dispatch2 }) => { 7239 if (!ability.name) { 7240 throw new Error("Ability name is required"); 7241 } 7242 if (!ABILITY_NAME_PATTERN.test(ability.name)) { 7243 throw new Error( 7244 'Ability name must be a string containing a namespace prefix, i.e. "my-plugin/my-ability". It can only contain lowercase alphanumeric characters, dashes and the forward slash.' 7245 ); 7246 } 7247 if (!ability.label) { 7248 throw new Error( 7249 (0, import_i18n.sprintf)('Ability "%s" must have a label', ability.name) 7250 ); 7251 } 7252 if (!ability.description) { 7253 throw new Error( 7254 (0, import_i18n.sprintf)('Ability "%s" must have a description', ability.name) 7255 ); 7256 } 7257 if (!ability.category) { 7258 throw new Error( 7259 (0, import_i18n.sprintf)('Ability "%s" must have a category', ability.name) 7260 ); 7261 } 7262 if (!CATEGORY_SLUG_PATTERN.test(ability.category)) { 7263 throw new Error( 7264 (0, import_i18n.sprintf)( 7265 'Ability "%1$s" has an invalid category. Category must be lowercase alphanumeric with dashes only. Got: "%2$s"', 7266 ability.name, 7267 ability.category 7268 ) 7269 ); 7270 } 7271 const categories = select2.getAbilityCategories(); 7272 const existingCategory = categories.find( 7273 (cat) => cat.slug === ability.category 7274 ); 7275 if (!existingCategory) { 7276 throw new Error( 7277 (0, import_i18n.sprintf)( 7278 'Ability "%1$s" references non-existent category "%2$s". Please register the category first.', 7279 ability.name, 7280 ability.category 7281 ) 7282 ); 7283 } 7284 if (ability.callback && typeof ability.callback !== "function") { 7285 throw new Error( 7286 (0, import_i18n.sprintf)( 7287 'Ability "%s" has an invalid callback. Callback must be a function', 7288 ability.name 7289 ) 7290 ); 7291 } 7292 const existingAbility = select2.getAbility(ability.name); 7293 if (existingAbility) { 7294 throw new Error( 7295 (0, import_i18n.sprintf)('Ability "%s" is already registered', ability.name) 7296 ); 7297 } 7298 const annotations = filterAnnotations(ability.meta?.annotations, [ 7299 "readonly", 7300 "destructive", 7301 "idempotent", 7302 "serverRegistered", 7303 "clientRegistered" 7304 ]); 7305 if (!annotations.serverRegistered) { 7306 annotations.clientRegistered = true; 7307 } 7308 const meta = { annotations }; 7309 dispatch2({ 7310 type: REGISTER_ABILITY, 7311 ability: { 7312 ...ability, 7313 meta 7314 } 7315 }); 7316 }; 7317 } 7318 function unregisterAbility(name) { 7319 return { 7320 type: UNREGISTER_ABILITY, 7321 name 7322 }; 7323 } 7324 function registerAbilityCategory(slug, args) { 7325 return ({ select: select2, dispatch: dispatch2 }) => { 7326 if (!slug) { 7327 throw new Error("Category slug is required"); 7328 } 7329 if (!CATEGORY_SLUG_PATTERN.test(slug)) { 7330 throw new Error( 7331 "Category slug must contain only lowercase alphanumeric characters and dashes." 7332 ); 7333 } 7334 const existingCategory = select2.getAbilityCategory(slug); 7335 if (existingCategory) { 7336 throw new Error( 7337 (0, import_i18n.sprintf)('Category "%s" is already registered.', slug) 7338 ); 7339 } 7340 if (!args.label || typeof args.label !== "string") { 7341 throw new Error( 7342 "The category properties must contain a `label` string." 7343 ); 7344 } 7345 if (!args.description || typeof args.description !== "string") { 7346 throw new Error( 7347 "The category properties must contain a `description` string." 7348 ); 7349 } 7350 if (args.meta !== void 0 && (typeof args.meta !== "object" || Array.isArray(args.meta))) { 7351 throw new Error( 7352 "The category properties should provide a valid `meta` object." 7353 ); 7354 } 7355 const annotations = filterAnnotations(args.meta?.annotations, [ 7356 "serverRegistered", 7357 "clientRegistered" 7358 ]); 7359 if (!annotations.serverRegistered) { 7360 annotations.clientRegistered = true; 7361 } 7362 const meta = { annotations }; 7363 const category = { 7364 slug, 7365 label: args.label, 7366 description: args.description, 7367 meta 7368 }; 7369 dispatch2({ 7370 type: REGISTER_ABILITY_CATEGORY, 7371 category 7372 }); 7373 }; 7374 } 7375 function unregisterAbilityCategory(slug) { 7376 return { 7377 type: UNREGISTER_ABILITY_CATEGORY, 7378 slug 7379 }; 7380 } 7381 7382 // packages/abilities/build-module/store/selectors.js 7383 var selectors_exports = {}; 7384 __export(selectors_exports, { 7385 getAbilities: () => getAbilities, 7386 getAbility: () => getAbility, 7387 getAbilityCategories: () => getAbilityCategories, 7388 getAbilityCategory: () => getAbilityCategory 7389 }); 7390 var import_data2 = __toESM(require_data()); 7391 var getAbilities = (0, import_data2.createSelector)( 7392 (state, { category } = {}) => { 7393 const abilities = Object.values(state.abilitiesByName); 7394 if (category) { 7395 return abilities.filter( 7396 (ability) => ability.category === category 7397 ); 7398 } 7399 return abilities; 7400 }, 7401 (state, { category } = {}) => [ 7402 state.abilitiesByName, 7403 category 7404 ] 7405 ); 7406 function getAbility(state, name) { 7407 return state.abilitiesByName[name]; 7408 } 7409 var getAbilityCategories = (0, import_data2.createSelector)( 7410 (state) => { 7411 return Object.values(state.categoriesBySlug); 7412 }, 7413 (state) => [state.categoriesBySlug] 7414 ); 7415 function getAbilityCategory(state, slug) { 7416 return state.categoriesBySlug[slug]; 7417 } 7418 7419 // packages/abilities/build-module/store/index.js 7420 var store = (0, import_data3.createReduxStore)(STORE_NAME, { 7421 reducer: reducer_default, 7422 actions: actions_exports, 7423 selectors: selectors_exports 7424 }); 7425 (0, import_data3.register)(store); 7426 7427 // packages/abilities/build-module/validation.js 7428 var import_ajv_draft_04 = __toESM(require_dist()); 7429 var import_ajv_formats = __toESM(require_dist2()); 7430 var ajv = new import_ajv_draft_04.default({ 7431 coerceTypes: false, 7432 // No type coercion - AI should send proper JSON 7433 useDefaults: true, 7434 removeAdditional: false, 7435 // Keep additional properties 7436 allErrors: true, 7437 verbose: true, 7438 allowUnionTypes: true 7439 // Allow anyOf without explicit type 7440 }); 7441 (0, import_ajv_formats.default)(ajv, ["date-time", "email", "hostname", "ipv4", "ipv6", "uuid"]); 7442 function formatAjvError(ajvError, param) { 7443 const instancePath = ajvError.instancePath ? ajvError.instancePath.replace(/\//g, "][").replace(/^\]\[/, "[") + "]" : ""; 7444 const fullParam = param + instancePath; 7445 switch (ajvError.keyword) { 7446 case "type": 7447 return `$fullParam} is not of type $ajvError.params.type}.`; 7448 case "required": 7449 return `$ajvError.params.missingProperty} is a required property of $fullParam}.`; 7450 case "additionalProperties": 7451 return `$ajvError.params.additionalProperty} is not a valid property of Object.`; 7452 case "enum": 7453 const enumValues = ajvError.params.allowedValues.map( 7454 (v) => typeof v === "string" ? v : JSON.stringify(v) 7455 ).join(", "); 7456 return ajvError.params.allowedValues.length === 1 ? `$fullParam} is not $enumValues}.` : `$fullParam} is not one of $enumValues}.`; 7457 case "pattern": 7458 return `$fullParam} does not match pattern $ajvError.params.pattern}.`; 7459 case "format": 7460 const format = ajvError.params.format; 7461 const formatMessages = { 7462 email: "Invalid email address.", 7463 "date-time": "Invalid date.", 7464 uuid: `$fullParam} is not a valid UUID.`, 7465 ipv4: `$fullParam} is not a valid IP address.`, 7466 ipv6: `$fullParam} is not a valid IP address.`, 7467 hostname: `$fullParam} is not a valid hostname.` 7468 }; 7469 return formatMessages[format] || `Invalid $format}.`; 7470 case "minimum": 7471 case "exclusiveMinimum": 7472 return ajvError.keyword === "exclusiveMinimum" ? `$fullParam} must be greater than $ajvError.params.limit}` : `$fullParam} must be greater than or equal to $ajvError.params.limit}`; 7473 case "maximum": 7474 case "exclusiveMaximum": 7475 return ajvError.keyword === "exclusiveMaximum" ? `$fullParam} must be less than $ajvError.params.limit}` : `$fullParam} must be less than or equal to $ajvError.params.limit}`; 7476 case "multipleOf": 7477 return `$fullParam} must be a multiple of $ajvError.params.multipleOf}.`; 7478 case "anyOf": 7479 case "oneOf": 7480 return `$fullParam} is invalid (failed $ajvError.keyword} validation).`; 7481 case "minLength": 7482 return `$fullParam} must be at least $ajvError.params.limit} character$ajvError.params.limit === 1 ? "" : "s"} long.`; 7483 case "maxLength": 7484 return `$fullParam} must be at most $ajvError.params.limit} character$ajvError.params.limit === 1 ? "" : "s"} long.`; 7485 case "minItems": 7486 return `$fullParam} must contain at least $ajvError.params.limit} item$ajvError.params.limit === 1 ? "" : "s"}.`; 7487 case "maxItems": 7488 return `$fullParam} must contain at most $ajvError.params.limit} item$ajvError.params.limit === 1 ? "" : "s"}.`; 7489 case "uniqueItems": 7490 return `$fullParam} has duplicate items.`; 7491 case "minProperties": 7492 return `$fullParam} must contain at least $ajvError.params.limit} propert$ajvError.params.limit === 1 ? "y" : "ies"}.`; 7493 case "maxProperties": 7494 return `$fullParam} must contain at most $ajvError.params.limit} propert$ajvError.params.limit === 1 ? "y" : "ies"}.`; 7495 default: 7496 return ajvError.message || `$fullParam} is invalid (failed $ajvError.keyword} validation).`; 7497 } 7498 } 7499 function validateValueFromSchema(value, args, param = "") { 7500 if (!args || typeof args !== "object") { 7501 console.warn(`Schema must be an object. Received $typeof args}.`); 7502 return true; 7503 } 7504 if (!args.type && !args.anyOf && !args.oneOf) { 7505 console.warn( 7506 `The "type" schema keyword for $param || "value"} is required.` 7507 ); 7508 return true; 7509 } 7510 try { 7511 const { default: defaultValue, ...schemaWithoutDefault } = args; 7512 const validate = ajv.compile(schemaWithoutDefault); 7513 const valid = validate(value === void 0 ? defaultValue : value); 7514 if (valid) { 7515 return true; 7516 } 7517 if (validate.errors && validate.errors.length > 0) { 7518 const anyOfError = validate.errors.find( 7519 (e) => e.keyword === "anyOf" || e.keyword === "oneOf" 7520 ); 7521 if (anyOfError) { 7522 return formatAjvError(anyOfError, param); 7523 } 7524 return formatAjvError(validate.errors[0], param); 7525 } 7526 return `$param} is invalid.`; 7527 } catch (error) { 7528 console.error("Schema compilation error:", error); 7529 return "Invalid schema provided for validation."; 7530 } 7531 } 7532 7533 // packages/abilities/build-module/api.js 7534 function getAbilities2(args = {}) { 7535 return (0, import_data4.select)(store).getAbilities(args); 7536 } 7537 function getAbility2(name) { 7538 return (0, import_data4.select)(store).getAbility(name); 7539 } 7540 function getAbilityCategories2() { 7541 return (0, import_data4.select)(store).getAbilityCategories(); 7542 } 7543 function getAbilityCategory2(slug) { 7544 return (0, import_data4.select)(store).getAbilityCategory(slug); 7545 } 7546 function registerAbility2(ability) { 7547 (0, import_data4.dispatch)(store).registerAbility(ability); 7548 } 7549 function unregisterAbility2(name) { 7550 (0, import_data4.dispatch)(store).unregisterAbility(name); 7551 } 7552 function registerAbilityCategory2(slug, args) { 7553 (0, import_data4.dispatch)(store).registerAbilityCategory(slug, args); 7554 } 7555 function unregisterAbilityCategory2(slug) { 7556 (0, import_data4.dispatch)(store).unregisterAbilityCategory(slug); 7557 } 7558 async function executeAbility(name, input) { 7559 const ability = getAbility2(name); 7560 if (!ability) { 7561 throw new Error((0, import_i18n2.sprintf)("Ability not found: %s", name)); 7562 } 7563 if (!ability.callback) { 7564 throw new Error( 7565 (0, import_i18n2.sprintf)( 7566 'Ability "%s" is missing callback. Please ensure the ability is properly registered.', 7567 ability.name 7568 ) 7569 ); 7570 } 7571 if (ability.permissionCallback) { 7572 const hasPermission = await ability.permissionCallback(input); 7573 if (!hasPermission) { 7574 const error = new Error( 7575 (0, import_i18n2.sprintf)("Permission denied for ability: %s", ability.name) 7576 ); 7577 error.code = "ability_permission_denied"; 7578 throw error; 7579 } 7580 } 7581 if (ability.input_schema) { 7582 const inputValidation = validateValueFromSchema( 7583 input, 7584 ability.input_schema, 7585 "input" 7586 ); 7587 if (inputValidation !== true) { 7588 const error = new Error( 7589 (0, import_i18n2.sprintf)( 7590 'Ability "%1$s" has invalid input. Reason: %2$s', 7591 ability.name, 7592 inputValidation 7593 ) 7594 ); 7595 error.code = "ability_invalid_input"; 7596 throw error; 7597 } 7598 } 7599 let result; 7600 try { 7601 result = await ability.callback(input); 7602 } catch (error) { 7603 console.error(`Error executing ability $ability.name}:`, error); 7604 throw error; 7605 } 7606 if (ability.output_schema) { 7607 const outputValidation = validateValueFromSchema( 7608 result, 7609 ability.output_schema, 7610 "output" 7611 ); 7612 if (outputValidation !== true) { 7613 const error = new Error( 7614 (0, import_i18n2.sprintf)( 7615 'Ability "%1$s" has invalid output. Reason: %2$s', 7616 ability.name, 7617 outputValidation 7618 ) 7619 ); 7620 error.code = "ability_invalid_output"; 7621 throw error; 7622 } 7623 } 7624 return result; 7625 } 7626 export { 7627 executeAbility, 7628 getAbilities2 as getAbilities, 7629 getAbility2 as getAbility, 7630 getAbilityCategories2 as getAbilityCategories, 7631 getAbilityCategory2 as getAbilityCategory, 7632 registerAbility2 as registerAbility, 7633 registerAbilityCategory2 as registerAbilityCategory, 7634 store, 7635 unregisterAbility2 as unregisterAbility, 7636 unregisterAbilityCategory2 as unregisterAbilityCategory, 7637 validateValueFromSchema 7638 };
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
| Generated : Sun Mar 8 08:20:03 2026 | Cross-referenced by PHPXref |