@dicebear/core 10.0.0-rc.4 → 10.0.0-rc.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,14 +2,14 @@ import { StyleValidationError } from '../Error/StyleValidationError.js';
2
2
  function ucs2length(str) { let n = 0; for (const _ of str)
3
3
  n++; return n; }
4
4
  "use strict";
5
- const schema11 = { "$id": "https://cdn.hopjs.net/npm/@dicebear/schema@0.14.1/dist/definition.min.json", "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "camelCaseName": { "description": "A camelCase identifier used for named things defined in the definition (colors, components, variants). Must start with a lowercase letter and may contain letters and digits.", "type": "string", "pattern": "^[a-z][a-zA-Z0-9]*$", "maxLength": 64 }, "colorName": { "description": "A reference to a color palette defined in the top-level `colors` section.", "allOf": [{ "$ref": "#/definitions/camelCaseName" }] }, "componentName": { "description": "A reference to a component defined in the top-level `components` section.", "allOf": [{ "$ref": "#/definitions/camelCaseName" }] }, "translateValue": { "description": "A translation value expressed as a percentage of the component's width (for `x`) or height (for `y`). A single value fixes the translation; two values define a range the PRNG picks from.", "type": "array", "items": { "type": "number", "minimum": -1000, "maximum": 1000 }, "minItems": 1, "maxItems": 2 }, "hexColor": { "description": "A hex color with leading `#`, in 3, 4, 6, or 8 digit form.", "type": "string", "pattern": "^#([a-fA-F0-9]{3}|[a-fA-F0-9]{4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$", "maxLength": 9 }, "colorValue": { "description": "A color value for `fill`, `stroke`, `stop-color`, and other color attributes. Either a plain string (any CSS color format — named color, hex, `rgb()`, `oklch()`, `color-mix()`, local paint server reference `url(#id)`, etc.) or an object referencing a named color palette defined in the top-level `colors` section. CSS color syntax is not validated; invalid colors are the browser's problem.", "anyOf": [{ "$ref": "#/definitions/attributeString" }, { "description": "A reference to a named color palette. At render time, the PRNG selects a color value from the referenced palette.", "type": "object", "properties": { "type": { "const": "color" }, "name": { "description": "The name of the color palette to reference.", "$ref": "#/definitions/colorName" } }, "required": ["type", "name"], "additionalProperties": false }] }, "safeUrl": { "description": "A URL restricted to HTTP and HTTPS protocols.", "type": "string", "pattern": "^https?://", "maxLength": 2048 }, "filteredString": { "description": "Base definition for the filtered-string family (`attributeString`, `cssString`). Blocks a shared set of known-dangerous patterns: external `url(...)` references (local `url(#id)` is allowed), `expression()`, `behavior:`, `-moz-binding`, `javascript:` / `vbscript:` URI schemes, and backslash escape sequences. This is not a general CSS sanitizer — it is a defense-in-depth injection filter, so substring matches of blocked tokens will reject otherwise-harmless strings (e.g. a plain text containing the literal word `javascript:`). The `maxLength` here acts as an absolute ceiling for all derivatives; callers narrow it further.", "type": "string", "maxLength": 16384, "not": { "type": "string", "anyOf": [{ "type": "string", "pattern": "[uU][rR][lL]\\s*\\(\\s*[^#)\\s]" }, { "type": "string", "pattern": "[eE][xX][pP][rR][eE][sS][sS][iI][oO][nN]\\s*\\(" }, { "type": "string", "pattern": "[bB][eE][hH][aA][vV][iI][oO][rR]\\s*:" }, { "type": "string", "pattern": "-[mM][oO][zZ]-[bB][iI][nN][dD][iI][nN][gG]" }, { "type": "string", "pattern": "[jJ][aA][vV][aA][sS][cC][rR][iI][pP][tT]\\s*:" }, { "type": "string", "pattern": "[vV][bB][sS][cC][rR][iI][pP][tT]\\s*:" }, { "type": "string", "pattern": "\\\\" }] } }, "attributeString": { "description": "The default value type for generic SVG attribute values — transform lists, numeric values, keywords, and so on. No syntactic validation; only the common `filteredString` injection filter applies.", "type": "string", "allOf": [{ "$ref": "#/definitions/filteredString" }], "maxLength": 1024 }, "pathDataString": { "description": "Used for the `d` attribute of `<path>`. Same filter as `attributeString`, but with a much larger length budget to accommodate complex path geometry.", "type": "string", "allOf": [{ "$ref": "#/definitions/filteredString" }], "maxLength": 16384 }, "cssString": { "description": "Used for inline `style` attribute content and `<style>` element bodies. `@`-rules (`@import`, `@font-face`, `@keyframes`, etc.) are rejected in addition to the common `filteredString` injection filter. This is not a general CSS sanitizer.", "type": "string", "allOf": [{ "$ref": "#/definitions/filteredString" }], "maxLength": 4096, "not": { "type": "string", "pattern": "@" } }, "element": { "description": "An SVG node. One of four mutually exclusive forms, discriminated by `type` (and `name` for the `<style>` special case): a text element, a component reference, a `<style>` element, or any other SVG element.", "anyOf": [{ "$ref": "#/definitions/textElement" }, { "$ref": "#/definitions/componentReference" }, { "$ref": "#/definitions/styleElement" }, { "$ref": "#/definitions/genericElement" }] }, "textElement": { "description": "A raw text node. Its `value` becomes the text content rendered into the parent element.", "type": "object", "properties": { "type": { "const": "text" }, "value": { "description": "Either a plain string, or a `variable` reference resolved at render time to the seed's initials.", "anyOf": [{ "type": "string", "maxLength": 4096 }, { "type": "object", "properties": { "type": { "const": "variable" }, "name": { "enum": ["initial", "initials"] } }, "required": ["type", "name"], "additionalProperties": false }] } }, "required": ["type", "value"], "additionalProperties": false }, "componentReference": { "description": "A reference to a named component defined in the top-level `components` section. At render time, the PRNG selects one of the component's variants.", "type": "object", "properties": { "type": { "const": "component" }, "name": { "$ref": "#/definitions/componentName" } }, "required": ["type", "name"], "additionalProperties": false }, "styleElement": { "description": "An SVG `<style>` element. Its CSS content must be provided as `text` children; each child's value is validated as a CSS string with a stricter content policy than generic SVG attribute values.", "type": "object", "properties": { "type": { "const": "element" }, "name": { "const": "style" }, "attributes": { "$ref": "#/definitions/attributes" }, "children": { "type": "array", "items": { "type": "object", "properties": { "type": { "const": "text" }, "value": { "$ref": "#/definitions/cssString" } }, "required": ["type", "value"], "additionalProperties": false }, "maxItems": 64 } }, "required": ["type", "name"], "additionalProperties": false }, "genericElement": { "description": "Any SVG element other than `<style>`, which has its own stricter content policy.", "type": "object", "properties": { "type": { "const": "element" }, "name": { "description": "The SVG tag name. Only a safe subset of SVG elements is permitted; dangerous elements such as `script`, `foreignObject`, or `a` are excluded.", "enum": ["circle", "clipPath", "defs", "desc", "ellipse", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "filter", "g", "image", "line", "linearGradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialGradient", "rect", "stop", "svg", "switch", "symbol", "text", "textPath", "title", "tspan", "use", "view"] }, "attributes": { "$ref": "#/definitions/attributes" }, "children": { "type": "array", "items": { "$ref": "#/definitions/element" }, "maxItems": 1024 } }, "required": ["type", "name"], "additionalProperties": false }, "attributes": { "description": "A map of allowed SVG presentation attributes. Only a safe subset is permitted; event handlers (e.g. `onclick`) and namespace attributes (e.g. `xlink:href`) are not allowed.", "type": "object", "properties": { "alignment-baseline": { "$ref": "#/definitions/attributeString" }, "amplitude": { "$ref": "#/definitions/attributeString" }, "azimuth": { "$ref": "#/definitions/attributeString" }, "baseFrequency": { "$ref": "#/definitions/attributeString" }, "baseline-shift": { "$ref": "#/definitions/attributeString" }, "bias": { "$ref": "#/definitions/attributeString" }, "class": { "$ref": "#/definitions/attributeString" }, "clipPathUnits": { "$ref": "#/definitions/attributeString" }, "clip-path": { "$ref": "#/definitions/attributeString" }, "clip-rule": { "$ref": "#/definitions/attributeString" }, "color": { "$ref": "#/definitions/colorValue" }, "color-interpolation": { "$ref": "#/definitions/attributeString" }, "color-interpolation-filters": { "$ref": "#/definitions/attributeString" }, "crossorigin": { "$ref": "#/definitions/attributeString" }, "cx": { "$ref": "#/definitions/attributeString" }, "cy": { "$ref": "#/definitions/attributeString" }, "d": { "$ref": "#/definitions/pathDataString" }, "decoding": { "$ref": "#/definitions/attributeString" }, "diffuseConstant": { "$ref": "#/definitions/attributeString" }, "direction": { "$ref": "#/definitions/attributeString" }, "display": { "$ref": "#/definitions/attributeString" }, "divisor": { "$ref": "#/definitions/attributeString" }, "dominant-baseline": { "$ref": "#/definitions/attributeString" }, "dx": { "$ref": "#/definitions/attributeString" }, "dy": { "$ref": "#/definitions/attributeString" }, "edgeMode": { "$ref": "#/definitions/attributeString" }, "elevation": { "$ref": "#/definitions/attributeString" }, "exponent": { "$ref": "#/definitions/attributeString" }, "fill": { "$ref": "#/definitions/colorValue" }, "fill-opacity": { "$ref": "#/definitions/attributeString" }, "fill-rule": { "$ref": "#/definitions/attributeString" }, "filter": { "$ref": "#/definitions/attributeString" }, "filterUnits": { "$ref": "#/definitions/attributeString" }, "flood-color": { "$ref": "#/definitions/colorValue" }, "flood-opacity": { "$ref": "#/definitions/attributeString" }, "font-family": { "anyOf": [{ "$ref": "#/definitions/attributeString" }, { "type": "object", "properties": { "type": { "const": "variable" }, "name": { "const": "fontFamily" } }, "required": ["type", "name"], "additionalProperties": false }] }, "font-size": { "$ref": "#/definitions/attributeString" }, "font-size-adjust": { "$ref": "#/definitions/attributeString" }, "font-style": { "$ref": "#/definitions/attributeString" }, "font-variant": { "$ref": "#/definitions/attributeString" }, "font-weight": { "anyOf": [{ "$ref": "#/definitions/attributeString" }, { "type": "object", "properties": { "type": { "const": "variable" }, "name": { "const": "fontWeight" } }, "required": ["type", "name"], "additionalProperties": false }] }, "fx": { "$ref": "#/definitions/attributeString" }, "fy": { "$ref": "#/definitions/attributeString" }, "gradientTransform": { "$ref": "#/definitions/attributeString" }, "gradientUnits": { "$ref": "#/definitions/attributeString" }, "height": { "$ref": "#/definitions/attributeString" }, "href": { "anyOf": [{ "type": "string", "pattern": "^#[a-zA-Z_][a-zA-Z0-9_.-]*$", "maxLength": 128 }, { "type": "string", "pattern": "^data:image/(png|gif|jpeg|webp|avif);base64,[a-zA-Z0-9+/=]+$", "maxLength": 262144 }] }, "id": { "$ref": "#/definitions/attributeString" }, "image-rendering": { "$ref": "#/definitions/attributeString" }, "in": { "$ref": "#/definitions/attributeString" }, "in2": { "$ref": "#/definitions/attributeString" }, "intercept": { "$ref": "#/definitions/attributeString" }, "k1": { "$ref": "#/definitions/attributeString" }, "k2": { "$ref": "#/definitions/attributeString" }, "k3": { "$ref": "#/definitions/attributeString" }, "k4": { "$ref": "#/definitions/attributeString" }, "kernelMatrix": { "$ref": "#/definitions/attributeString" }, "kernelUnitLength": { "$ref": "#/definitions/attributeString" }, "lang": { "$ref": "#/definitions/attributeString" }, "lengthAdjust": { "$ref": "#/definitions/attributeString" }, "letter-spacing": { "$ref": "#/definitions/attributeString" }, "lighting-color": { "$ref": "#/definitions/colorValue" }, "marker-end": { "$ref": "#/definitions/attributeString" }, "marker-mid": { "$ref": "#/definitions/attributeString" }, "marker-start": { "$ref": "#/definitions/attributeString" }, "markerHeight": { "$ref": "#/definitions/attributeString" }, "markerUnits": { "$ref": "#/definitions/attributeString" }, "markerWidth": { "$ref": "#/definitions/attributeString" }, "mask": { "$ref": "#/definitions/attributeString" }, "maskContentUnits": { "$ref": "#/definitions/attributeString" }, "maskUnits": { "$ref": "#/definitions/attributeString" }, "media": { "$ref": "#/definitions/attributeString" }, "method": { "$ref": "#/definitions/attributeString" }, "mode": { "$ref": "#/definitions/attributeString" }, "numOctaves": { "$ref": "#/definitions/attributeString" }, "offset": { "$ref": "#/definitions/attributeString" }, "opacity": { "$ref": "#/definitions/attributeString" }, "operator": { "$ref": "#/definitions/attributeString" }, "order": { "$ref": "#/definitions/attributeString" }, "orient": { "$ref": "#/definitions/attributeString" }, "overflow": { "$ref": "#/definitions/attributeString" }, "paint-order": { "$ref": "#/definitions/attributeString" }, "path": { "$ref": "#/definitions/attributeString" }, "pathLength": { "$ref": "#/definitions/attributeString" }, "patternContentUnits": { "$ref": "#/definitions/attributeString" }, "patternTransform": { "$ref": "#/definitions/attributeString" }, "patternUnits": { "$ref": "#/definitions/attributeString" }, "points": { "$ref": "#/definitions/attributeString" }, "preserveAlpha": { "$ref": "#/definitions/attributeString" }, "preserveAspectRatio": { "$ref": "#/definitions/attributeString" }, "primitiveUnits": { "$ref": "#/definitions/attributeString" }, "r": { "$ref": "#/definitions/attributeString" }, "radius": { "$ref": "#/definitions/attributeString" }, "refX": { "$ref": "#/definitions/attributeString" }, "refY": { "$ref": "#/definitions/attributeString" }, "result": { "$ref": "#/definitions/attributeString" }, "rx": { "$ref": "#/definitions/attributeString" }, "ry": { "$ref": "#/definitions/attributeString" }, "scale": { "$ref": "#/definitions/attributeString" }, "seed": { "$ref": "#/definitions/attributeString" }, "shape-rendering": { "$ref": "#/definitions/attributeString" }, "slope": { "$ref": "#/definitions/attributeString" }, "specularConstant": { "$ref": "#/definitions/attributeString" }, "specularExponent": { "$ref": "#/definitions/attributeString" }, "spreadMethod": { "$ref": "#/definitions/attributeString" }, "startOffset": { "$ref": "#/definitions/attributeString" }, "stdDeviation": { "$ref": "#/definitions/attributeString" }, "stitchTiles": { "$ref": "#/definitions/attributeString" }, "stop-color": { "$ref": "#/definitions/colorValue" }, "stop-opacity": { "$ref": "#/definitions/attributeString" }, "stroke": { "$ref": "#/definitions/colorValue" }, "stroke-dasharray": { "$ref": "#/definitions/attributeString" }, "stroke-dashoffset": { "$ref": "#/definitions/attributeString" }, "stroke-linecap": { "$ref": "#/definitions/attributeString" }, "stroke-linejoin": { "$ref": "#/definitions/attributeString" }, "stroke-miterlimit": { "$ref": "#/definitions/attributeString" }, "stroke-opacity": { "$ref": "#/definitions/attributeString" }, "stroke-width": { "$ref": "#/definitions/attributeString" }, "style": { "$ref": "#/definitions/cssString" }, "surfaceScale": { "$ref": "#/definitions/attributeString" }, "systemLanguage": { "$ref": "#/definitions/attributeString" }, "tabindex": { "$ref": "#/definitions/attributeString" }, "tableValues": { "$ref": "#/definitions/attributeString" }, "targetX": { "$ref": "#/definitions/attributeString" }, "targetY": { "$ref": "#/definitions/attributeString" }, "text-anchor": { "$ref": "#/definitions/attributeString" }, "text-decoration": { "$ref": "#/definitions/attributeString" }, "text-rendering": { "$ref": "#/definitions/attributeString" }, "textLength": { "$ref": "#/definitions/attributeString" }, "transform": { "$ref": "#/definitions/attributeString" }, "transform-origin": { "$ref": "#/definitions/attributeString" }, "type": { "$ref": "#/definitions/attributeString" }, "values": { "$ref": "#/definitions/attributeString" }, "viewBox": { "$ref": "#/definitions/attributeString" }, "visibility": { "$ref": "#/definitions/attributeString" }, "width": { "$ref": "#/definitions/attributeString" }, "word-spacing": { "$ref": "#/definitions/attributeString" }, "writing-mode": { "$ref": "#/definitions/attributeString" }, "x": { "$ref": "#/definitions/attributeString" }, "x1": { "$ref": "#/definitions/attributeString" }, "x2": { "$ref": "#/definitions/attributeString" }, "xChannelSelector": { "$ref": "#/definitions/attributeString" }, "y": { "$ref": "#/definitions/attributeString" }, "y1": { "$ref": "#/definitions/attributeString" }, "y2": { "$ref": "#/definitions/attributeString" }, "yChannelSelector": { "$ref": "#/definitions/attributeString" }, "z": { "$ref": "#/definitions/attributeString" } }, "additionalProperties": false }, "componentProbability": { "description": "The probability, expressed as a percentage, that this component is rendered at all.", "type": "number", "minimum": 0, "maximum": 100 }, "componentRotate": { "description": "A rotation in degrees. A single value fixes the angle; two values define a range the PRNG picks from.", "type": "array", "items": { "type": "number", "minimum": -360, "maximum": 360 }, "minItems": 1, "maxItems": 2 }, "componentScale": { "description": "A scale factor around the component's own center. A single value fixes the scale; two values define a range the PRNG picks from. A value of `1` corresponds to the original size.", "type": "array", "items": { "type": "number", "minimum": 0, "maximum": 10 }, "minItems": 1, "maxItems": 2 }, "componentTranslate": { "description": "A positional translation applied to the component after placement. Values are interpreted as a percentage of the component's size.", "type": "object", "properties": { "x": { "$ref": "#/definitions/translateValue" }, "y": { "$ref": "#/definitions/translateValue" } }, "additionalProperties": false }, "componentBase": { "description": "A base component definition with its own dimensions and variants. The PRNG selects one variant per render based on the seed.", "type": "object", "properties": { "width": { "description": "The natural width of the component canvas in pixels.", "type": "number", "minimum": 1 }, "height": { "description": "The natural height of the component canvas in pixels.", "type": "number", "minimum": 1 }, "probability": { "$ref": "#/definitions/componentProbability" }, "rotate": { "$ref": "#/definitions/componentRotate" }, "scale": { "$ref": "#/definitions/componentScale" }, "translate": { "$ref": "#/definitions/componentTranslate" }, "variants": { "description": "The available visual variants of this component. The PRNG selects one variant per render. Keys must be `camelCaseName` identifiers.", "type": "object", "propertyNames": { "$ref": "#/definitions/camelCaseName" }, "additionalProperties": { "type": "object", "properties": { "elements": { "description": "The SVG elements that make up this variant.", "type": "array", "items": { "$ref": "#/definitions/element" }, "maxItems": 1024 }, "weight": { "description": "A weight that influences how likely the PRNG is to select this variant. Higher values make the variant more likely. When omitted, defaults to 1 (equal weighting). A value of 0 means the variant is not selected unless all available variants have a weight of 0.", "type": "number", "minimum": 0, "maximum": 1000000 } }, "required": ["elements"], "additionalProperties": false }, "maxProperties": 512 } }, "required": ["width", "height", "variants"], "additionalProperties": false }, "componentAlias": { "description": "An alias that inherits its dimensions, variants, and transforms from another component referenced by `extends`. Aliases have no per-instance overrides — they are pure references.", "type": "object", "properties": { "extends": { "description": "The name of an existing, non-alias component in this `components` map.", "$ref": "#/definitions/componentName" } }, "required": ["extends"], "additionalProperties": false } }, "type": "object", "properties": { "$id": { "type": "string", "maxLength": 256 }, "$schema": { "type": "string", "maxLength": 256 }, "$comment": { "type": "string", "maxLength": 4096 }, "meta": { "description": "Metadata about the avatar style, such as license information, creator details, and source references.", "type": "object", "properties": { "license": { "description": "License information for the avatar style.", "type": "object", "properties": { "name": { "description": "The name of the license, e.g. `CC BY 4.0`.", "type": "string", "maxLength": 128 }, "url": { "description": "A link to the full license text.", "$ref": "#/definitions/safeUrl" }, "text": { "description": "The full license text.", "type": "string", "maxLength": 32768 } }, "additionalProperties": false }, "creator": { "description": "Information about the creator of the avatar style.", "type": "object", "properties": { "name": { "description": "The name of the creator.", "type": "string", "maxLength": 128 }, "url": { "description": "A link to the creator's website or profile.", "$ref": "#/definitions/safeUrl" } }, "additionalProperties": false }, "source": { "description": "Information about the original source of the artwork.", "type": "object", "properties": { "name": { "description": "The name of the original source.", "type": "string", "maxLength": 128 }, "url": { "description": "A link to the original source.", "$ref": "#/definitions/safeUrl" } }, "additionalProperties": false } }, "additionalProperties": false }, "attributes": { "description": "Global SVG presentation attributes applied to the root `<svg>` element.", "$ref": "#/definitions/attributes" }, "canvas": { "description": "The main content of the avatar, defining the SVG structure, canvas dimensions, and element tree.", "type": "object", "properties": { "elements": { "description": "The list of SVG elements that make up the avatar.", "type": "array", "items": { "$ref": "#/definitions/element" }, "maxItems": 1024 }, "width": { "description": "The natural width of the avatar canvas in pixels.", "type": "number", "minimum": 1 }, "height": { "description": "The natural height of the avatar canvas in pixels.", "type": "number", "minimum": 1 } }, "required": ["elements", "width", "height"], "additionalProperties": false }, "components": { "description": "Named, reusable SVG components. Each component defines a set of variants that the PRNG can select from at render time, or aliases another component to render an additional, independently-randomized instance of it. Keys must be `camelCaseName` identifiers.", "type": "object", "propertyNames": { "$ref": "#/definitions/camelCaseName" }, "additionalProperties": { "anyOf": [{ "$ref": "#/definitions/componentBase" }, { "$ref": "#/definitions/componentAlias" }] }, "maxProperties": 512 }, "colors": { "description": "Named color palettes used by the avatar. The PRNG selects colors from these groups at render time. Color groups can define constraints such as contrast or exclusion rules. Keys must be `camelCaseName` identifiers.", "type": "object", "propertyNames": { "$ref": "#/definitions/camelCaseName" }, "additionalProperties": { "type": "object", "properties": { "values": { "description": "The list of hex color values the PRNG can choose from.", "type": "array", "items": { "$ref": "#/definitions/hexColor" }, "minItems": 1, "maxItems": 128 }, "notEqualTo": { "description": "A list of other color names. The selected color value must differ from the color values selected in those colors. The schema does not prevent cycles (e.g. `a` notEqualTo `b` and `b` notEqualTo `a`); renderers resolve palettes in definition order and must reject unsatisfiable configurations at load time.", "type": "array", "items": { "$ref": "#/definitions/colorName" }, "maxItems": 64 }, "contrastTo": { "description": "The name of another color. When specified, the PRNG is not used for selection — instead, the color value with the highest contrast against the selected color value of the referenced color is chosen. The schema does not prevent cycles (e.g. `a` contrastTo `b` and `b` contrastTo `a`); renderers resolve palettes in definition order and must reject unsatisfiable configurations at load time.", "$ref": "#/definitions/colorName" } }, "required": ["values"], "additionalProperties": false }, "maxProperties": 512 } }, "required": ["canvas"], "additionalProperties": false };
5
+ const schema11 = { "$id": "https://cdn.hopjs.net/npm/@dicebear/schema@1.0.0/dist/definition.min.json", "$schema": "http://json-schema.org/draft-07/schema#", "definitions": { "camelCaseName": { "description": "A camelCase identifier used for named things defined in the definition (colors, components, variants). Must start with a lowercase letter and may contain letters and digits.", "type": "string", "pattern": "^[a-z][a-zA-Z0-9]*$", "maxLength": 64 }, "colorName": { "description": "A reference to a color palette defined in the top-level `colors` section.", "allOf": [{ "$ref": "#/definitions/camelCaseName" }] }, "componentName": { "description": "A reference to a component defined in the top-level `components` section.", "allOf": [{ "$ref": "#/definitions/camelCaseName" }] }, "translateValue": { "description": "A translation value expressed as a percentage of the component's width (for `x`) or height (for `y`). Defines a range the PRNG picks from. Set `min === max` for a fixed value. A positive `step` quantizes the range to multiples of `step` starting at `min`; omit for a continuous range. When `(max - min)` is not a multiple of `step`, `max` itself is unreachable — the last bucket is clamped to `≤ max`.", "type": "object", "properties": { "min": { "type": "number", "minimum": -1000, "maximum": 1000 }, "max": { "type": "number", "minimum": -1000, "maximum": 1000 }, "step": { "type": "number", "exclusiveMinimum": 0, "maximum": 2000 } }, "required": ["min", "max"], "additionalProperties": false }, "hexColor": { "description": "A hex color with leading `#`, in 3, 4, 6, or 8 digit form.", "type": "string", "pattern": "^#([a-fA-F0-9]{3}|[a-fA-F0-9]{4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$", "maxLength": 9 }, "colorValue": { "description": "A color value for `fill`, `stroke`, `stop-color`, and other color attributes. Either a plain string (any CSS color format — named color, hex, `rgb()`, `oklch()`, `color-mix()`, local paint server reference `url(#id)`, etc.) or an object referencing a named color palette defined in the top-level `colors` section. CSS color syntax is not validated; invalid colors are the browser's problem.", "anyOf": [{ "$ref": "#/definitions/attributeString" }, { "description": "A reference to a named color palette. At render time, the PRNG selects a color value from the referenced palette.", "type": "object", "properties": { "type": { "const": "color" }, "name": { "description": "The name of the color palette to reference.", "$ref": "#/definitions/colorName" } }, "required": ["type", "name"], "additionalProperties": false }] }, "safeUrl": { "description": "A URL restricted to HTTP and HTTPS protocols.", "type": "string", "pattern": "^https?://", "maxLength": 2048 }, "filteredString": { "description": "Base definition for the filtered-string family (`attributeString`, `cssString`). Blocks a shared set of known-dangerous patterns: external `url(...)` references (local `url(#id)` is allowed), `expression()`, `behavior:`, `-moz-binding`, `javascript:` / `vbscript:` URI schemes, and backslash escape sequences. This is not a general CSS sanitizer — it is a defense-in-depth injection filter, so substring matches of blocked tokens will reject otherwise-harmless strings (e.g. a plain text containing the literal word `javascript:`). The `maxLength` here acts as an absolute ceiling for all derivatives; callers narrow it further.", "type": "string", "maxLength": 16384, "not": { "type": "string", "anyOf": [{ "type": "string", "pattern": "[uU][rR][lL]\\s*\\(\\s*[^#)\\s]" }, { "type": "string", "pattern": "[eE][xX][pP][rR][eE][sS][sS][iI][oO][nN]\\s*\\(" }, { "type": "string", "pattern": "[bB][eE][hH][aA][vV][iI][oO][rR]\\s*:" }, { "type": "string", "pattern": "-[mM][oO][zZ]-[bB][iI][nN][dD][iI][nN][gG]" }, { "type": "string", "pattern": "[jJ][aA][vV][aA][sS][cC][rR][iI][pP][tT]\\s*:" }, { "type": "string", "pattern": "[vV][bB][sS][cC][rR][iI][pP][tT]\\s*:" }, { "type": "string", "pattern": "\\\\" }] } }, "attributeString": { "description": "The default value type for generic SVG attribute values — transform lists, numeric values, keywords, and so on. No syntactic validation; only the common `filteredString` injection filter applies.", "type": "string", "allOf": [{ "$ref": "#/definitions/filteredString" }], "maxLength": 1024 }, "pathDataString": { "description": "Used for the `d` attribute of `<path>`. Same filter as `attributeString`, but with a much larger length budget to accommodate complex path geometry.", "type": "string", "allOf": [{ "$ref": "#/definitions/filteredString" }], "maxLength": 16384 }, "cssString": { "description": "Used for inline `style` attribute content and `<style>` element bodies. Known-dangerous `@`-rules — `@import`, `@font-face`, `@document`, `@charset` — are rejected in addition to the common `filteredString` injection filter. Other `@`-rules (`@media`, `@keyframes`, `@supports`, `@layer`, etc.) are permitted, but the `filteredString` injection filter still applies to their contents — so external `url(...)` references inside e.g. an `@media` rule are still blocked. This is not a general CSS sanitizer.", "type": "string", "allOf": [{ "$ref": "#/definitions/filteredString" }], "maxLength": 4096, "not": { "type": "string", "anyOf": [{ "type": "string", "pattern": "@[iI][mM][pP][oO][rR][tT]" }, { "type": "string", "pattern": "@[fF][oO][nN][tT]-[fF][aA][cC][eE]" }, { "type": "string", "pattern": "@[dD][oO][cC][uU][mM][eE][nN][tT]" }, { "type": "string", "pattern": "@[cC][hH][aA][rR][sS][eE][tT]" }] } }, "element": { "description": "An SVG node. One of four mutually exclusive forms, discriminated by `type` (and `name` for the `<style>` special case): a text element, a component reference, a `<style>` element, or any other SVG element.", "anyOf": [{ "$ref": "#/definitions/textElement" }, { "$ref": "#/definitions/componentReference" }, { "$ref": "#/definitions/styleElement" }, { "$ref": "#/definitions/genericElement" }] }, "textElement": { "description": "A raw text node. Its `value` becomes the text content rendered into the parent element.", "type": "object", "properties": { "type": { "const": "text" }, "value": { "description": "Either a plain string, or a `variable` reference resolved at render time to the seed's initials.", "anyOf": [{ "type": "string", "maxLength": 4096 }, { "type": "object", "properties": { "type": { "const": "variable" }, "name": { "enum": ["initial", "initials"] } }, "required": ["type", "name"], "additionalProperties": false }] } }, "required": ["type", "value"], "additionalProperties": false }, "componentReference": { "description": "A reference to a named component defined in the top-level `components` section. At render time, the PRNG selects one of the component's variants. Optional `attributes` are applied to the generated `<use>` tag — most commonly a `transform` placing the instance, but any allowlisted attribute is accepted.", "type": "object", "properties": { "type": { "const": "component" }, "name": { "$ref": "#/definitions/componentName" }, "attributes": { "$ref": "#/definitions/attributes" } }, "required": ["type", "name"], "additionalProperties": false }, "styleElement": { "description": "An SVG `<style>` element. Its CSS content must be provided as `text` children; each child's value is validated as a CSS string with a stricter content policy than generic SVG attribute values.", "type": "object", "properties": { "type": { "const": "element" }, "name": { "const": "style" }, "attributes": { "$ref": "#/definitions/attributes" }, "children": { "type": "array", "items": { "type": "object", "properties": { "type": { "const": "text" }, "value": { "$ref": "#/definitions/cssString" } }, "required": ["type", "value"], "additionalProperties": false }, "maxItems": 64 } }, "required": ["type", "name"], "additionalProperties": false }, "genericElement": { "description": "Any SVG element other than `<style>`, which has its own stricter content policy.", "type": "object", "properties": { "type": { "const": "element" }, "name": { "description": "The SVG tag name. Only a safe subset of SVG elements is permitted; dangerous elements such as `script`, `foreignObject`, or `a` are excluded.", "enum": ["circle", "clipPath", "defs", "desc", "ellipse", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "filter", "g", "image", "line", "linearGradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialGradient", "rect", "stop", "svg", "switch", "symbol", "text", "textPath", "title", "tspan", "use", "view"] }, "attributes": { "$ref": "#/definitions/attributes" }, "children": { "type": "array", "items": { "$ref": "#/definitions/element" }, "maxItems": 1024 } }, "required": ["type", "name"], "additionalProperties": false }, "attributes": { "description": "A map of allowed SVG presentation attributes. Only a safe subset is permitted; event handlers (e.g. `onclick`) and namespace attributes (e.g. `xlink:href`) are not allowed.", "type": "object", "properties": { "alignment-baseline": { "$ref": "#/definitions/attributeString" }, "amplitude": { "$ref": "#/definitions/attributeString" }, "azimuth": { "$ref": "#/definitions/attributeString" }, "baseFrequency": { "$ref": "#/definitions/attributeString" }, "baseline-shift": { "$ref": "#/definitions/attributeString" }, "bias": { "$ref": "#/definitions/attributeString" }, "class": { "$ref": "#/definitions/attributeString" }, "clipPathUnits": { "$ref": "#/definitions/attributeString" }, "clip-path": { "$ref": "#/definitions/attributeString" }, "clip-rule": { "$ref": "#/definitions/attributeString" }, "color": { "$ref": "#/definitions/colorValue" }, "color-interpolation": { "$ref": "#/definitions/attributeString" }, "color-interpolation-filters": { "$ref": "#/definitions/attributeString" }, "crossorigin": { "$ref": "#/definitions/attributeString" }, "cx": { "$ref": "#/definitions/attributeString" }, "cy": { "$ref": "#/definitions/attributeString" }, "d": { "$ref": "#/definitions/pathDataString" }, "decoding": { "$ref": "#/definitions/attributeString" }, "diffuseConstant": { "$ref": "#/definitions/attributeString" }, "direction": { "$ref": "#/definitions/attributeString" }, "display": { "$ref": "#/definitions/attributeString" }, "divisor": { "$ref": "#/definitions/attributeString" }, "dominant-baseline": { "$ref": "#/definitions/attributeString" }, "dx": { "$ref": "#/definitions/attributeString" }, "dy": { "$ref": "#/definitions/attributeString" }, "edgeMode": { "$ref": "#/definitions/attributeString" }, "elevation": { "$ref": "#/definitions/attributeString" }, "exponent": { "$ref": "#/definitions/attributeString" }, "fill": { "$ref": "#/definitions/colorValue" }, "fill-opacity": { "$ref": "#/definitions/attributeString" }, "fill-rule": { "$ref": "#/definitions/attributeString" }, "filter": { "$ref": "#/definitions/attributeString" }, "filterUnits": { "$ref": "#/definitions/attributeString" }, "flood-color": { "$ref": "#/definitions/colorValue" }, "flood-opacity": { "$ref": "#/definitions/attributeString" }, "font-family": { "anyOf": [{ "$ref": "#/definitions/attributeString" }, { "type": "object", "properties": { "type": { "const": "variable" }, "name": { "const": "fontFamily" } }, "required": ["type", "name"], "additionalProperties": false }] }, "font-size": { "$ref": "#/definitions/attributeString" }, "font-size-adjust": { "$ref": "#/definitions/attributeString" }, "font-style": { "$ref": "#/definitions/attributeString" }, "font-variant": { "$ref": "#/definitions/attributeString" }, "font-weight": { "anyOf": [{ "$ref": "#/definitions/attributeString" }, { "type": "object", "properties": { "type": { "const": "variable" }, "name": { "const": "fontWeight" } }, "required": ["type", "name"], "additionalProperties": false }] }, "fx": { "$ref": "#/definitions/attributeString" }, "fy": { "$ref": "#/definitions/attributeString" }, "gradientTransform": { "$ref": "#/definitions/attributeString" }, "gradientUnits": { "$ref": "#/definitions/attributeString" }, "height": { "$ref": "#/definitions/attributeString" }, "href": { "anyOf": [{ "type": "string", "pattern": "^#[a-zA-Z_][a-zA-Z0-9_.-]*$", "maxLength": 128 }, { "type": "string", "pattern": "^data:image/(png|gif|jpeg|webp|avif);base64,[a-zA-Z0-9+/=]+$", "maxLength": 262144 }] }, "id": { "$ref": "#/definitions/attributeString" }, "image-rendering": { "$ref": "#/definitions/attributeString" }, "in": { "$ref": "#/definitions/attributeString" }, "in2": { "$ref": "#/definitions/attributeString" }, "intercept": { "$ref": "#/definitions/attributeString" }, "k1": { "$ref": "#/definitions/attributeString" }, "k2": { "$ref": "#/definitions/attributeString" }, "k3": { "$ref": "#/definitions/attributeString" }, "k4": { "$ref": "#/definitions/attributeString" }, "kernelMatrix": { "$ref": "#/definitions/attributeString" }, "kernelUnitLength": { "$ref": "#/definitions/attributeString" }, "lang": { "$ref": "#/definitions/attributeString" }, "lengthAdjust": { "$ref": "#/definitions/attributeString" }, "letter-spacing": { "$ref": "#/definitions/attributeString" }, "lighting-color": { "$ref": "#/definitions/colorValue" }, "marker-end": { "$ref": "#/definitions/attributeString" }, "marker-mid": { "$ref": "#/definitions/attributeString" }, "marker-start": { "$ref": "#/definitions/attributeString" }, "markerHeight": { "$ref": "#/definitions/attributeString" }, "markerUnits": { "$ref": "#/definitions/attributeString" }, "markerWidth": { "$ref": "#/definitions/attributeString" }, "mask": { "$ref": "#/definitions/attributeString" }, "maskContentUnits": { "$ref": "#/definitions/attributeString" }, "maskUnits": { "$ref": "#/definitions/attributeString" }, "media": { "$ref": "#/definitions/attributeString" }, "method": { "$ref": "#/definitions/attributeString" }, "mode": { "$ref": "#/definitions/attributeString" }, "numOctaves": { "$ref": "#/definitions/attributeString" }, "offset": { "$ref": "#/definitions/attributeString" }, "opacity": { "$ref": "#/definitions/attributeString" }, "operator": { "$ref": "#/definitions/attributeString" }, "order": { "$ref": "#/definitions/attributeString" }, "orient": { "$ref": "#/definitions/attributeString" }, "overflow": { "$ref": "#/definitions/attributeString" }, "paint-order": { "$ref": "#/definitions/attributeString" }, "path": { "$ref": "#/definitions/attributeString" }, "pathLength": { "$ref": "#/definitions/attributeString" }, "patternContentUnits": { "$ref": "#/definitions/attributeString" }, "patternTransform": { "$ref": "#/definitions/attributeString" }, "patternUnits": { "$ref": "#/definitions/attributeString" }, "points": { "$ref": "#/definitions/attributeString" }, "preserveAlpha": { "$ref": "#/definitions/attributeString" }, "preserveAspectRatio": { "$ref": "#/definitions/attributeString" }, "primitiveUnits": { "$ref": "#/definitions/attributeString" }, "r": { "$ref": "#/definitions/attributeString" }, "radius": { "$ref": "#/definitions/attributeString" }, "refX": { "$ref": "#/definitions/attributeString" }, "refY": { "$ref": "#/definitions/attributeString" }, "result": { "$ref": "#/definitions/attributeString" }, "rx": { "$ref": "#/definitions/attributeString" }, "ry": { "$ref": "#/definitions/attributeString" }, "scale": { "$ref": "#/definitions/attributeString" }, "seed": { "$ref": "#/definitions/attributeString" }, "shape-rendering": { "$ref": "#/definitions/attributeString" }, "slope": { "$ref": "#/definitions/attributeString" }, "specularConstant": { "$ref": "#/definitions/attributeString" }, "specularExponent": { "$ref": "#/definitions/attributeString" }, "spreadMethod": { "$ref": "#/definitions/attributeString" }, "startOffset": { "$ref": "#/definitions/attributeString" }, "stdDeviation": { "$ref": "#/definitions/attributeString" }, "stitchTiles": { "$ref": "#/definitions/attributeString" }, "stop-color": { "$ref": "#/definitions/colorValue" }, "stop-opacity": { "$ref": "#/definitions/attributeString" }, "stroke": { "$ref": "#/definitions/colorValue" }, "stroke-dasharray": { "$ref": "#/definitions/attributeString" }, "stroke-dashoffset": { "$ref": "#/definitions/attributeString" }, "stroke-linecap": { "$ref": "#/definitions/attributeString" }, "stroke-linejoin": { "$ref": "#/definitions/attributeString" }, "stroke-miterlimit": { "$ref": "#/definitions/attributeString" }, "stroke-opacity": { "$ref": "#/definitions/attributeString" }, "stroke-width": { "$ref": "#/definitions/attributeString" }, "style": { "$ref": "#/definitions/cssString" }, "surfaceScale": { "$ref": "#/definitions/attributeString" }, "systemLanguage": { "$ref": "#/definitions/attributeString" }, "tabindex": { "$ref": "#/definitions/attributeString" }, "tableValues": { "$ref": "#/definitions/attributeString" }, "targetX": { "$ref": "#/definitions/attributeString" }, "targetY": { "$ref": "#/definitions/attributeString" }, "text-anchor": { "$ref": "#/definitions/attributeString" }, "text-decoration": { "$ref": "#/definitions/attributeString" }, "text-rendering": { "$ref": "#/definitions/attributeString" }, "textLength": { "$ref": "#/definitions/attributeString" }, "transform": { "$ref": "#/definitions/attributeString" }, "transform-origin": { "$ref": "#/definitions/attributeString" }, "type": { "$ref": "#/definitions/attributeString" }, "values": { "$ref": "#/definitions/attributeString" }, "viewBox": { "$ref": "#/definitions/attributeString" }, "visibility": { "$ref": "#/definitions/attributeString" }, "width": { "$ref": "#/definitions/attributeString" }, "word-spacing": { "$ref": "#/definitions/attributeString" }, "writing-mode": { "$ref": "#/definitions/attributeString" }, "x": { "$ref": "#/definitions/attributeString" }, "x1": { "$ref": "#/definitions/attributeString" }, "x2": { "$ref": "#/definitions/attributeString" }, "xChannelSelector": { "$ref": "#/definitions/attributeString" }, "y": { "$ref": "#/definitions/attributeString" }, "y1": { "$ref": "#/definitions/attributeString" }, "y2": { "$ref": "#/definitions/attributeString" }, "yChannelSelector": { "$ref": "#/definitions/attributeString" }, "z": { "$ref": "#/definitions/attributeString" } }, "additionalProperties": false }, "componentProbability": { "description": "The probability, expressed as a percentage, that this component is rendered at all.", "type": "number", "minimum": 0, "maximum": 100 }, "componentRotate": { "description": "A rotation in degrees. Defines a range the PRNG picks from. Set `min === max` for a fixed angle. A positive `step` quantizes the range to multiples of `step` starting at `min`; omit for a continuous range. When `(max - min)` is not a multiple of `step`, `max` itself is unreachable — the last bucket is clamped to `≤ max`.", "type": "object", "properties": { "min": { "type": "number", "minimum": -360, "maximum": 360 }, "max": { "type": "number", "minimum": -360, "maximum": 360 }, "step": { "type": "number", "exclusiveMinimum": 0, "maximum": 720 } }, "required": ["min", "max"], "additionalProperties": false }, "componentScale": { "description": "A scale factor around the component's own center (`1` corresponds to the original size). Defines a range the PRNG picks from. Set `min === max` for a fixed scale. A positive `step` quantizes the range to multiples of `step` starting at `min`; omit for a continuous range. When `(max - min)` is not a multiple of `step`, `max` itself is unreachable — the last bucket is clamped to `≤ max`.", "type": "object", "properties": { "min": { "type": "number", "minimum": 0, "maximum": 10 }, "max": { "type": "number", "minimum": 0, "maximum": 10 }, "step": { "type": "number", "exclusiveMinimum": 0, "maximum": 10 } }, "required": ["min", "max"], "additionalProperties": false }, "componentTranslate": { "description": "A positional translation applied to the component after placement. Values are interpreted as a percentage of the component's size.", "type": "object", "properties": { "x": { "$ref": "#/definitions/translateValue" }, "y": { "$ref": "#/definitions/translateValue" } }, "additionalProperties": false }, "componentBase": { "description": "A base component definition with its own dimensions and variants. The PRNG selects one variant per render based on the seed.", "type": "object", "properties": { "width": { "description": "The natural width of the component canvas in pixels.", "type": "number", "minimum": 1 }, "height": { "description": "The natural height of the component canvas in pixels.", "type": "number", "minimum": 1 }, "probability": { "$ref": "#/definitions/componentProbability" }, "rotate": { "$ref": "#/definitions/componentRotate" }, "scale": { "$ref": "#/definitions/componentScale" }, "translate": { "$ref": "#/definitions/componentTranslate" }, "variants": { "description": "The available visual variants of this component. The PRNG selects one variant per render. Keys must be `camelCaseName` identifiers.", "type": "object", "propertyNames": { "$ref": "#/definitions/camelCaseName" }, "additionalProperties": { "type": "object", "properties": { "elements": { "description": "The SVG elements that make up this variant.", "type": "array", "items": { "$ref": "#/definitions/element" }, "maxItems": 1024 }, "weight": { "description": "A weight that influences how likely the PRNG is to select this variant. Higher values make the variant more likely. When omitted, defaults to 1 (equal weighting). A value of 0 means the variant is not selected unless all available variants have a weight of 0.", "type": "number", "minimum": 0, "maximum": 1000000 } }, "required": ["elements"], "additionalProperties": false }, "maxProperties": 512 } }, "required": ["width", "height", "variants"], "additionalProperties": false }, "componentAlias": { "description": "An alias that inherits its dimensions, variants, and transforms from another component referenced by `extends`. Aliases have no per-instance overrides — they are pure references.", "type": "object", "properties": { "extends": { "description": "The name of an existing, non-alias component in this `components` map.", "$ref": "#/definitions/componentName" } }, "required": ["extends"], "additionalProperties": false } }, "type": "object", "properties": { "$id": { "type": "string", "maxLength": 256 }, "$schema": { "type": "string", "maxLength": 256 }, "$comment": { "type": "string", "maxLength": 4096 }, "meta": { "description": "Metadata about the avatar style, such as license information, creator details, and source references.", "type": "object", "properties": { "license": { "description": "License information for the avatar style.", "type": "object", "properties": { "name": { "description": "The name of the license, e.g. `CC BY 4.0`.", "type": "string", "maxLength": 128 }, "url": { "description": "A link to the full license text.", "$ref": "#/definitions/safeUrl" }, "text": { "description": "The full license text.", "type": "string", "maxLength": 32768 } }, "additionalProperties": false }, "creator": { "description": "Information about the creator of the avatar style.", "type": "object", "properties": { "name": { "description": "The name of the creator.", "type": "string", "maxLength": 128 }, "url": { "description": "A link to the creator's website or profile.", "$ref": "#/definitions/safeUrl" } }, "additionalProperties": false }, "source": { "description": "Information about the original source of the artwork.", "type": "object", "properties": { "name": { "description": "The name of the original source.", "type": "string", "maxLength": 128 }, "url": { "description": "A link to the original source.", "$ref": "#/definitions/safeUrl" } }, "additionalProperties": false } }, "additionalProperties": false }, "attributes": { "description": "Global SVG presentation attributes applied to the root `<svg>` element.", "$ref": "#/definitions/attributes" }, "canvas": { "description": "The main content of the avatar, defining the SVG structure, canvas dimensions, and element tree.", "type": "object", "properties": { "elements": { "description": "The list of SVG elements that make up the avatar.", "type": "array", "items": { "$ref": "#/definitions/element" }, "maxItems": 1024 }, "width": { "description": "The natural width of the avatar canvas in pixels.", "type": "number", "minimum": 1 }, "height": { "description": "The natural height of the avatar canvas in pixels.", "type": "number", "minimum": 1 } }, "required": ["elements", "width", "height"], "additionalProperties": false }, "components": { "description": "Named, reusable SVG components. Each component defines a set of variants that the PRNG can select from at render time, or aliases another component to render an additional, independently-randomized instance of it. Keys must be `camelCaseName` identifiers.", "type": "object", "propertyNames": { "$ref": "#/definitions/camelCaseName" }, "additionalProperties": { "anyOf": [{ "$ref": "#/definitions/componentBase" }, { "$ref": "#/definitions/componentAlias" }] }, "maxProperties": 512 }, "colors": { "description": "Named color palettes used by the avatar. The PRNG selects colors from these groups at render time. Color groups can define constraints such as contrast or exclusion rules. Keys must be `camelCaseName` identifiers.", "type": "object", "propertyNames": { "$ref": "#/definitions/camelCaseName" }, "additionalProperties": { "type": "object", "properties": { "values": { "description": "The list of hex color values the PRNG can choose from.", "type": "array", "items": { "$ref": "#/definitions/hexColor" }, "minItems": 1, "maxItems": 128 }, "notEqualTo": { "description": "A list of other color names. The selected color value must differ from the color values selected in those colors. The schema does not prevent cycles (e.g. `a` notEqualTo `b` and `b` notEqualTo `a`); renderers resolve palettes in definition order and must reject unsatisfiable configurations at load time.", "type": "array", "items": { "$ref": "#/definitions/colorName" }, "maxItems": 64 }, "contrastTo": { "description": "The name of another color. When specified, the PRNG is not used for selection — instead, the color value with the highest contrast against the selected color value of the referenced color is chosen. The schema does not prevent cycles (e.g. `a` contrastTo `b` and `b` contrastTo `a`); renderers resolve palettes in definition order and must reject unsatisfiable configurations at load time.", "$ref": "#/definitions/colorName" } }, "required": ["values"], "additionalProperties": false }, "maxProperties": 512 } }, "required": ["canvas"], "additionalProperties": false };
6
6
  const schema12 = { "description": "A URL restricted to HTTP and HTTPS protocols.", "type": "string", "pattern": "^https?://", "maxLength": 2048 };
7
7
  const schema20 = { "description": "A camelCase identifier used for named things defined in the definition (colors, components, variants). Must start with a lowercase letter and may contain letters and digits.", "type": "string", "pattern": "^[a-z][a-zA-Z0-9]*$", "maxLength": 64 };
8
8
  const schema43 = { "description": "A hex color with leading `#`, in 3, 4, 6, or 8 digit form.", "type": "string", "pattern": "^#([a-fA-F0-9]{3}|[a-fA-F0-9]{4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$", "maxLength": 9 };
9
9
  const func2 = ucs2length;
10
10
  const pattern0 = new RegExp("^https?://", "u");
11
11
  const pattern10 = new RegExp("^[a-z][a-zA-Z0-9]*$", "u");
12
- const pattern32 = new RegExp("^#([a-fA-F0-9]{3}|[a-fA-F0-9]{4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$", "u");
12
+ const pattern35 = new RegExp("^#([a-fA-F0-9]{3}|[a-fA-F0-9]{4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$", "u");
13
13
  const schema15 = { "description": "A map of allowed SVG presentation attributes. Only a safe subset is permitted; event handlers (e.g. `onclick`) and namespace attributes (e.g. `xlink:href`) are not allowed.", "type": "object", "properties": { "alignment-baseline": { "$ref": "#/definitions/attributeString" }, "amplitude": { "$ref": "#/definitions/attributeString" }, "azimuth": { "$ref": "#/definitions/attributeString" }, "baseFrequency": { "$ref": "#/definitions/attributeString" }, "baseline-shift": { "$ref": "#/definitions/attributeString" }, "bias": { "$ref": "#/definitions/attributeString" }, "class": { "$ref": "#/definitions/attributeString" }, "clipPathUnits": { "$ref": "#/definitions/attributeString" }, "clip-path": { "$ref": "#/definitions/attributeString" }, "clip-rule": { "$ref": "#/definitions/attributeString" }, "color": { "$ref": "#/definitions/colorValue" }, "color-interpolation": { "$ref": "#/definitions/attributeString" }, "color-interpolation-filters": { "$ref": "#/definitions/attributeString" }, "crossorigin": { "$ref": "#/definitions/attributeString" }, "cx": { "$ref": "#/definitions/attributeString" }, "cy": { "$ref": "#/definitions/attributeString" }, "d": { "$ref": "#/definitions/pathDataString" }, "decoding": { "$ref": "#/definitions/attributeString" }, "diffuseConstant": { "$ref": "#/definitions/attributeString" }, "direction": { "$ref": "#/definitions/attributeString" }, "display": { "$ref": "#/definitions/attributeString" }, "divisor": { "$ref": "#/definitions/attributeString" }, "dominant-baseline": { "$ref": "#/definitions/attributeString" }, "dx": { "$ref": "#/definitions/attributeString" }, "dy": { "$ref": "#/definitions/attributeString" }, "edgeMode": { "$ref": "#/definitions/attributeString" }, "elevation": { "$ref": "#/definitions/attributeString" }, "exponent": { "$ref": "#/definitions/attributeString" }, "fill": { "$ref": "#/definitions/colorValue" }, "fill-opacity": { "$ref": "#/definitions/attributeString" }, "fill-rule": { "$ref": "#/definitions/attributeString" }, "filter": { "$ref": "#/definitions/attributeString" }, "filterUnits": { "$ref": "#/definitions/attributeString" }, "flood-color": { "$ref": "#/definitions/colorValue" }, "flood-opacity": { "$ref": "#/definitions/attributeString" }, "font-family": { "anyOf": [{ "$ref": "#/definitions/attributeString" }, { "type": "object", "properties": { "type": { "const": "variable" }, "name": { "const": "fontFamily" } }, "required": ["type", "name"], "additionalProperties": false }] }, "font-size": { "$ref": "#/definitions/attributeString" }, "font-size-adjust": { "$ref": "#/definitions/attributeString" }, "font-style": { "$ref": "#/definitions/attributeString" }, "font-variant": { "$ref": "#/definitions/attributeString" }, "font-weight": { "anyOf": [{ "$ref": "#/definitions/attributeString" }, { "type": "object", "properties": { "type": { "const": "variable" }, "name": { "const": "fontWeight" } }, "required": ["type", "name"], "additionalProperties": false }] }, "fx": { "$ref": "#/definitions/attributeString" }, "fy": { "$ref": "#/definitions/attributeString" }, "gradientTransform": { "$ref": "#/definitions/attributeString" }, "gradientUnits": { "$ref": "#/definitions/attributeString" }, "height": { "$ref": "#/definitions/attributeString" }, "href": { "anyOf": [{ "type": "string", "pattern": "^#[a-zA-Z_][a-zA-Z0-9_.-]*$", "maxLength": 128 }, { "type": "string", "pattern": "^data:image/(png|gif|jpeg|webp|avif);base64,[a-zA-Z0-9+/=]+$", "maxLength": 262144 }] }, "id": { "$ref": "#/definitions/attributeString" }, "image-rendering": { "$ref": "#/definitions/attributeString" }, "in": { "$ref": "#/definitions/attributeString" }, "in2": { "$ref": "#/definitions/attributeString" }, "intercept": { "$ref": "#/definitions/attributeString" }, "k1": { "$ref": "#/definitions/attributeString" }, "k2": { "$ref": "#/definitions/attributeString" }, "k3": { "$ref": "#/definitions/attributeString" }, "k4": { "$ref": "#/definitions/attributeString" }, "kernelMatrix": { "$ref": "#/definitions/attributeString" }, "kernelUnitLength": { "$ref": "#/definitions/attributeString" }, "lang": { "$ref": "#/definitions/attributeString" }, "lengthAdjust": { "$ref": "#/definitions/attributeString" }, "letter-spacing": { "$ref": "#/definitions/attributeString" }, "lighting-color": { "$ref": "#/definitions/colorValue" }, "marker-end": { "$ref": "#/definitions/attributeString" }, "marker-mid": { "$ref": "#/definitions/attributeString" }, "marker-start": { "$ref": "#/definitions/attributeString" }, "markerHeight": { "$ref": "#/definitions/attributeString" }, "markerUnits": { "$ref": "#/definitions/attributeString" }, "markerWidth": { "$ref": "#/definitions/attributeString" }, "mask": { "$ref": "#/definitions/attributeString" }, "maskContentUnits": { "$ref": "#/definitions/attributeString" }, "maskUnits": { "$ref": "#/definitions/attributeString" }, "media": { "$ref": "#/definitions/attributeString" }, "method": { "$ref": "#/definitions/attributeString" }, "mode": { "$ref": "#/definitions/attributeString" }, "numOctaves": { "$ref": "#/definitions/attributeString" }, "offset": { "$ref": "#/definitions/attributeString" }, "opacity": { "$ref": "#/definitions/attributeString" }, "operator": { "$ref": "#/definitions/attributeString" }, "order": { "$ref": "#/definitions/attributeString" }, "orient": { "$ref": "#/definitions/attributeString" }, "overflow": { "$ref": "#/definitions/attributeString" }, "paint-order": { "$ref": "#/definitions/attributeString" }, "path": { "$ref": "#/definitions/attributeString" }, "pathLength": { "$ref": "#/definitions/attributeString" }, "patternContentUnits": { "$ref": "#/definitions/attributeString" }, "patternTransform": { "$ref": "#/definitions/attributeString" }, "patternUnits": { "$ref": "#/definitions/attributeString" }, "points": { "$ref": "#/definitions/attributeString" }, "preserveAlpha": { "$ref": "#/definitions/attributeString" }, "preserveAspectRatio": { "$ref": "#/definitions/attributeString" }, "primitiveUnits": { "$ref": "#/definitions/attributeString" }, "r": { "$ref": "#/definitions/attributeString" }, "radius": { "$ref": "#/definitions/attributeString" }, "refX": { "$ref": "#/definitions/attributeString" }, "refY": { "$ref": "#/definitions/attributeString" }, "result": { "$ref": "#/definitions/attributeString" }, "rx": { "$ref": "#/definitions/attributeString" }, "ry": { "$ref": "#/definitions/attributeString" }, "scale": { "$ref": "#/definitions/attributeString" }, "seed": { "$ref": "#/definitions/attributeString" }, "shape-rendering": { "$ref": "#/definitions/attributeString" }, "slope": { "$ref": "#/definitions/attributeString" }, "specularConstant": { "$ref": "#/definitions/attributeString" }, "specularExponent": { "$ref": "#/definitions/attributeString" }, "spreadMethod": { "$ref": "#/definitions/attributeString" }, "startOffset": { "$ref": "#/definitions/attributeString" }, "stdDeviation": { "$ref": "#/definitions/attributeString" }, "stitchTiles": { "$ref": "#/definitions/attributeString" }, "stop-color": { "$ref": "#/definitions/colorValue" }, "stop-opacity": { "$ref": "#/definitions/attributeString" }, "stroke": { "$ref": "#/definitions/colorValue" }, "stroke-dasharray": { "$ref": "#/definitions/attributeString" }, "stroke-dashoffset": { "$ref": "#/definitions/attributeString" }, "stroke-linecap": { "$ref": "#/definitions/attributeString" }, "stroke-linejoin": { "$ref": "#/definitions/attributeString" }, "stroke-miterlimit": { "$ref": "#/definitions/attributeString" }, "stroke-opacity": { "$ref": "#/definitions/attributeString" }, "stroke-width": { "$ref": "#/definitions/attributeString" }, "style": { "$ref": "#/definitions/cssString" }, "surfaceScale": { "$ref": "#/definitions/attributeString" }, "systemLanguage": { "$ref": "#/definitions/attributeString" }, "tabindex": { "$ref": "#/definitions/attributeString" }, "tableValues": { "$ref": "#/definitions/attributeString" }, "targetX": { "$ref": "#/definitions/attributeString" }, "targetY": { "$ref": "#/definitions/attributeString" }, "text-anchor": { "$ref": "#/definitions/attributeString" }, "text-decoration": { "$ref": "#/definitions/attributeString" }, "text-rendering": { "$ref": "#/definitions/attributeString" }, "textLength": { "$ref": "#/definitions/attributeString" }, "transform": { "$ref": "#/definitions/attributeString" }, "transform-origin": { "$ref": "#/definitions/attributeString" }, "type": { "$ref": "#/definitions/attributeString" }, "values": { "$ref": "#/definitions/attributeString" }, "viewBox": { "$ref": "#/definitions/attributeString" }, "visibility": { "$ref": "#/definitions/attributeString" }, "width": { "$ref": "#/definitions/attributeString" }, "word-spacing": { "$ref": "#/definitions/attributeString" }, "writing-mode": { "$ref": "#/definitions/attributeString" }, "x": { "$ref": "#/definitions/attributeString" }, "x1": { "$ref": "#/definitions/attributeString" }, "x2": { "$ref": "#/definitions/attributeString" }, "xChannelSelector": { "$ref": "#/definitions/attributeString" }, "y": { "$ref": "#/definitions/attributeString" }, "y1": { "$ref": "#/definitions/attributeString" }, "y2": { "$ref": "#/definitions/attributeString" }, "yChannelSelector": { "$ref": "#/definitions/attributeString" }, "z": { "$ref": "#/definitions/attributeString" } }, "additionalProperties": false };
14
14
  const func12 = Object.prototype.hasOwnProperty;
15
15
  const schema16 = { "description": "The default value type for generic SVG attribute values — transform lists, numeric values, keywords, and so on. No syntactic validation; only the common `filteredString` injection filter applies.", "type": "string", "allOf": [{ "$ref": "#/definitions/filteredString" }], "maxLength": 1024 };
@@ -669,31 +669,149 @@ else {
669
669
  return false;
670
670
  }
671
671
  } validate33.errors = vErrors; return errors === 0; }
672
- const schema23 = { "description": "Used for inline `style` attribute content and `<style>` element bodies. `@`-rules (`@import`, `@font-face`, `@keyframes`, etc.) are rejected in addition to the common `filteredString` injection filter. This is not a general CSS sanitizer.", "type": "string", "allOf": [{ "$ref": "#/definitions/filteredString" }], "maxLength": 4096, "not": { "type": "string", "pattern": "@" } };
673
- const pattern20 = new RegExp("@", "u");
674
- function validate135(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; const _errs1 = errors; const _errs2 = errors; if (errors === _errs2) {
672
+ const schema23 = { "description": "Used for inline `style` attribute content and `<style>` element bodies. Known-dangerous `@`-rules `@import`, `@font-face`, `@document`, `@charset` are rejected in addition to the common `filteredString` injection filter. Other `@`-rules (`@media`, `@keyframes`, `@supports`, `@layer`, etc.) are permitted, but the `filteredString` injection filter still applies to their contents — so external `url(...)` references inside e.g. an `@media` rule are still blocked. This is not a general CSS sanitizer.", "type": "string", "allOf": [{ "$ref": "#/definitions/filteredString" }], "maxLength": 4096, "not": { "type": "string", "anyOf": [{ "type": "string", "pattern": "@[iI][mM][pP][oO][rR][tT]" }, { "type": "string", "pattern": "@[fF][oO][nN][tT]-[fF][aA][cC][eE]" }, { "type": "string", "pattern": "@[dD][oO][cC][uU][mM][eE][nN][tT]" }, { "type": "string", "pattern": "@[cC][hH][aA][rR][sS][eE][tT]" }] } };
673
+ const pattern20 = new RegExp("@[iI][mM][pP][oO][rR][tT]", "u");
674
+ const pattern21 = new RegExp("@[fF][oO][nN][tT]-[fF][aA][cC][eE]", "u");
675
+ const pattern22 = new RegExp("@[dD][oO][cC][uU][mM][eE][nN][tT]", "u");
676
+ const pattern23 = new RegExp("@[cC][hH][aA][rR][sS][eE][tT]", "u");
677
+ function validate135(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; const _errs1 = errors; const _errs2 = errors; if (typeof data !== "string") {
678
+ const err0 = {};
679
+ if (vErrors === null) {
680
+ vErrors = [err0];
681
+ }
682
+ else {
683
+ vErrors.push(err0);
684
+ }
685
+ errors++;
686
+ } const _errs4 = errors; let valid1 = false; const _errs5 = errors; if (errors === _errs5) {
675
687
  if (typeof data === "string") {
676
688
  if (!pattern20.test(data)) {
677
- const err0 = {};
689
+ const err1 = {};
678
690
  if (vErrors === null) {
679
- vErrors = [err0];
691
+ vErrors = [err1];
680
692
  }
681
693
  else {
682
- vErrors.push(err0);
694
+ vErrors.push(err1);
683
695
  }
684
696
  errors++;
685
697
  }
686
698
  }
687
699
  else {
688
- const err1 = {};
700
+ const err2 = {};
689
701
  if (vErrors === null) {
690
- vErrors = [err1];
702
+ vErrors = [err2];
691
703
  }
692
704
  else {
693
- vErrors.push(err1);
705
+ vErrors.push(err2);
694
706
  }
695
707
  errors++;
696
708
  }
709
+ } var _valid0 = _errs5 === errors; valid1 = valid1 || _valid0; if (!valid1) {
710
+ const _errs7 = errors;
711
+ if (errors === _errs7) {
712
+ if (typeof data === "string") {
713
+ if (!pattern21.test(data)) {
714
+ const err3 = {};
715
+ if (vErrors === null) {
716
+ vErrors = [err3];
717
+ }
718
+ else {
719
+ vErrors.push(err3);
720
+ }
721
+ errors++;
722
+ }
723
+ }
724
+ else {
725
+ const err4 = {};
726
+ if (vErrors === null) {
727
+ vErrors = [err4];
728
+ }
729
+ else {
730
+ vErrors.push(err4);
731
+ }
732
+ errors++;
733
+ }
734
+ }
735
+ var _valid0 = _errs7 === errors;
736
+ valid1 = valid1 || _valid0;
737
+ if (!valid1) {
738
+ const _errs9 = errors;
739
+ if (errors === _errs9) {
740
+ if (typeof data === "string") {
741
+ if (!pattern22.test(data)) {
742
+ const err5 = {};
743
+ if (vErrors === null) {
744
+ vErrors = [err5];
745
+ }
746
+ else {
747
+ vErrors.push(err5);
748
+ }
749
+ errors++;
750
+ }
751
+ }
752
+ else {
753
+ const err6 = {};
754
+ if (vErrors === null) {
755
+ vErrors = [err6];
756
+ }
757
+ else {
758
+ vErrors.push(err6);
759
+ }
760
+ errors++;
761
+ }
762
+ }
763
+ var _valid0 = _errs9 === errors;
764
+ valid1 = valid1 || _valid0;
765
+ if (!valid1) {
766
+ const _errs11 = errors;
767
+ if (errors === _errs11) {
768
+ if (typeof data === "string") {
769
+ if (!pattern23.test(data)) {
770
+ const err7 = {};
771
+ if (vErrors === null) {
772
+ vErrors = [err7];
773
+ }
774
+ else {
775
+ vErrors.push(err7);
776
+ }
777
+ errors++;
778
+ }
779
+ }
780
+ else {
781
+ const err8 = {};
782
+ if (vErrors === null) {
783
+ vErrors = [err8];
784
+ }
785
+ else {
786
+ vErrors.push(err8);
787
+ }
788
+ errors++;
789
+ }
790
+ }
791
+ var _valid0 = _errs11 === errors;
792
+ valid1 = valid1 || _valid0;
793
+ }
794
+ }
795
+ } if (!valid1) {
796
+ const err9 = {};
797
+ if (vErrors === null) {
798
+ vErrors = [err9];
799
+ }
800
+ else {
801
+ vErrors.push(err9);
802
+ }
803
+ errors++;
804
+ }
805
+ else {
806
+ errors = _errs4;
807
+ if (vErrors !== null) {
808
+ if (_errs4) {
809
+ vErrors.length = _errs4;
810
+ }
811
+ else {
812
+ vErrors = null;
813
+ }
814
+ }
697
815
  } var valid0 = _errs2 === errors; if (valid0) {
698
816
  validate135.errors = [{ instancePath, schemaPath: "#/not", keyword: "not", params: {}, message: "must NOT be valid" }];
699
817
  return false;
@@ -708,260 +826,260 @@ else {
708
826
  vErrors = null;
709
827
  }
710
828
  }
711
- const _errs5 = errors;
712
- const _errs7 = errors;
713
- const _errs8 = errors;
829
+ const _errs14 = errors;
830
+ const _errs16 = errors;
831
+ const _errs17 = errors;
714
832
  if (typeof data !== "string") {
715
- const err2 = {};
833
+ const err10 = {};
716
834
  if (vErrors === null) {
717
- vErrors = [err2];
835
+ vErrors = [err10];
718
836
  }
719
837
  else {
720
- vErrors.push(err2);
838
+ vErrors.push(err10);
721
839
  }
722
840
  errors++;
723
841
  }
724
- const _errs10 = errors;
725
- let valid4 = false;
726
- const _errs11 = errors;
727
- if (errors === _errs11) {
842
+ const _errs19 = errors;
843
+ let valid5 = false;
844
+ const _errs20 = errors;
845
+ if (errors === _errs20) {
728
846
  if (typeof data === "string") {
729
847
  if (!pattern3.test(data)) {
730
- const err3 = {};
848
+ const err11 = {};
731
849
  if (vErrors === null) {
732
- vErrors = [err3];
850
+ vErrors = [err11];
733
851
  }
734
852
  else {
735
- vErrors.push(err3);
853
+ vErrors.push(err11);
736
854
  }
737
855
  errors++;
738
856
  }
739
857
  }
740
858
  else {
741
- const err4 = {};
859
+ const err12 = {};
742
860
  if (vErrors === null) {
743
- vErrors = [err4];
861
+ vErrors = [err12];
744
862
  }
745
863
  else {
746
- vErrors.push(err4);
864
+ vErrors.push(err12);
747
865
  }
748
866
  errors++;
749
867
  }
750
868
  }
751
- var _valid0 = _errs11 === errors;
752
- valid4 = valid4 || _valid0;
753
- if (!valid4) {
754
- const _errs13 = errors;
755
- if (errors === _errs13) {
869
+ var _valid1 = _errs20 === errors;
870
+ valid5 = valid5 || _valid1;
871
+ if (!valid5) {
872
+ const _errs22 = errors;
873
+ if (errors === _errs22) {
756
874
  if (typeof data === "string") {
757
875
  if (!pattern4.test(data)) {
758
- const err5 = {};
876
+ const err13 = {};
759
877
  if (vErrors === null) {
760
- vErrors = [err5];
878
+ vErrors = [err13];
761
879
  }
762
880
  else {
763
- vErrors.push(err5);
881
+ vErrors.push(err13);
764
882
  }
765
883
  errors++;
766
884
  }
767
885
  }
768
886
  else {
769
- const err6 = {};
887
+ const err14 = {};
770
888
  if (vErrors === null) {
771
- vErrors = [err6];
889
+ vErrors = [err14];
772
890
  }
773
891
  else {
774
- vErrors.push(err6);
892
+ vErrors.push(err14);
775
893
  }
776
894
  errors++;
777
895
  }
778
896
  }
779
- var _valid0 = _errs13 === errors;
780
- valid4 = valid4 || _valid0;
781
- if (!valid4) {
782
- const _errs15 = errors;
783
- if (errors === _errs15) {
897
+ var _valid1 = _errs22 === errors;
898
+ valid5 = valid5 || _valid1;
899
+ if (!valid5) {
900
+ const _errs24 = errors;
901
+ if (errors === _errs24) {
784
902
  if (typeof data === "string") {
785
903
  if (!pattern5.test(data)) {
786
- const err7 = {};
904
+ const err15 = {};
787
905
  if (vErrors === null) {
788
- vErrors = [err7];
906
+ vErrors = [err15];
789
907
  }
790
908
  else {
791
- vErrors.push(err7);
909
+ vErrors.push(err15);
792
910
  }
793
911
  errors++;
794
912
  }
795
913
  }
796
914
  else {
797
- const err8 = {};
915
+ const err16 = {};
798
916
  if (vErrors === null) {
799
- vErrors = [err8];
917
+ vErrors = [err16];
800
918
  }
801
919
  else {
802
- vErrors.push(err8);
920
+ vErrors.push(err16);
803
921
  }
804
922
  errors++;
805
923
  }
806
924
  }
807
- var _valid0 = _errs15 === errors;
808
- valid4 = valid4 || _valid0;
809
- if (!valid4) {
810
- const _errs17 = errors;
811
- if (errors === _errs17) {
925
+ var _valid1 = _errs24 === errors;
926
+ valid5 = valid5 || _valid1;
927
+ if (!valid5) {
928
+ const _errs26 = errors;
929
+ if (errors === _errs26) {
812
930
  if (typeof data === "string") {
813
931
  if (!pattern6.test(data)) {
814
- const err9 = {};
932
+ const err17 = {};
815
933
  if (vErrors === null) {
816
- vErrors = [err9];
934
+ vErrors = [err17];
817
935
  }
818
936
  else {
819
- vErrors.push(err9);
937
+ vErrors.push(err17);
820
938
  }
821
939
  errors++;
822
940
  }
823
941
  }
824
942
  else {
825
- const err10 = {};
943
+ const err18 = {};
826
944
  if (vErrors === null) {
827
- vErrors = [err10];
945
+ vErrors = [err18];
828
946
  }
829
947
  else {
830
- vErrors.push(err10);
948
+ vErrors.push(err18);
831
949
  }
832
950
  errors++;
833
951
  }
834
952
  }
835
- var _valid0 = _errs17 === errors;
836
- valid4 = valid4 || _valid0;
837
- if (!valid4) {
838
- const _errs19 = errors;
839
- if (errors === _errs19) {
953
+ var _valid1 = _errs26 === errors;
954
+ valid5 = valid5 || _valid1;
955
+ if (!valid5) {
956
+ const _errs28 = errors;
957
+ if (errors === _errs28) {
840
958
  if (typeof data === "string") {
841
959
  if (!pattern7.test(data)) {
842
- const err11 = {};
960
+ const err19 = {};
843
961
  if (vErrors === null) {
844
- vErrors = [err11];
962
+ vErrors = [err19];
845
963
  }
846
964
  else {
847
- vErrors.push(err11);
965
+ vErrors.push(err19);
848
966
  }
849
967
  errors++;
850
968
  }
851
969
  }
852
970
  else {
853
- const err12 = {};
971
+ const err20 = {};
854
972
  if (vErrors === null) {
855
- vErrors = [err12];
973
+ vErrors = [err20];
856
974
  }
857
975
  else {
858
- vErrors.push(err12);
976
+ vErrors.push(err20);
859
977
  }
860
978
  errors++;
861
979
  }
862
980
  }
863
- var _valid0 = _errs19 === errors;
864
- valid4 = valid4 || _valid0;
865
- if (!valid4) {
866
- const _errs21 = errors;
867
- if (errors === _errs21) {
981
+ var _valid1 = _errs28 === errors;
982
+ valid5 = valid5 || _valid1;
983
+ if (!valid5) {
984
+ const _errs30 = errors;
985
+ if (errors === _errs30) {
868
986
  if (typeof data === "string") {
869
987
  if (!pattern8.test(data)) {
870
- const err13 = {};
988
+ const err21 = {};
871
989
  if (vErrors === null) {
872
- vErrors = [err13];
990
+ vErrors = [err21];
873
991
  }
874
992
  else {
875
- vErrors.push(err13);
993
+ vErrors.push(err21);
876
994
  }
877
995
  errors++;
878
996
  }
879
997
  }
880
998
  else {
881
- const err14 = {};
999
+ const err22 = {};
882
1000
  if (vErrors === null) {
883
- vErrors = [err14];
1001
+ vErrors = [err22];
884
1002
  }
885
1003
  else {
886
- vErrors.push(err14);
1004
+ vErrors.push(err22);
887
1005
  }
888
1006
  errors++;
889
1007
  }
890
1008
  }
891
- var _valid0 = _errs21 === errors;
892
- valid4 = valid4 || _valid0;
893
- if (!valid4) {
894
- const _errs23 = errors;
895
- if (errors === _errs23) {
1009
+ var _valid1 = _errs30 === errors;
1010
+ valid5 = valid5 || _valid1;
1011
+ if (!valid5) {
1012
+ const _errs32 = errors;
1013
+ if (errors === _errs32) {
896
1014
  if (typeof data === "string") {
897
1015
  if (!pattern9.test(data)) {
898
- const err15 = {};
1016
+ const err23 = {};
899
1017
  if (vErrors === null) {
900
- vErrors = [err15];
1018
+ vErrors = [err23];
901
1019
  }
902
1020
  else {
903
- vErrors.push(err15);
1021
+ vErrors.push(err23);
904
1022
  }
905
1023
  errors++;
906
1024
  }
907
1025
  }
908
1026
  else {
909
- const err16 = {};
1027
+ const err24 = {};
910
1028
  if (vErrors === null) {
911
- vErrors = [err16];
1029
+ vErrors = [err24];
912
1030
  }
913
1031
  else {
914
- vErrors.push(err16);
1032
+ vErrors.push(err24);
915
1033
  }
916
1034
  errors++;
917
1035
  }
918
1036
  }
919
- var _valid0 = _errs23 === errors;
920
- valid4 = valid4 || _valid0;
1037
+ var _valid1 = _errs32 === errors;
1038
+ valid5 = valid5 || _valid1;
921
1039
  }
922
1040
  }
923
1041
  }
924
1042
  }
925
1043
  }
926
1044
  }
927
- if (!valid4) {
928
- const err17 = {};
1045
+ if (!valid5) {
1046
+ const err25 = {};
929
1047
  if (vErrors === null) {
930
- vErrors = [err17];
1048
+ vErrors = [err25];
931
1049
  }
932
1050
  else {
933
- vErrors.push(err17);
1051
+ vErrors.push(err25);
934
1052
  }
935
1053
  errors++;
936
1054
  }
937
1055
  else {
938
- errors = _errs10;
1056
+ errors = _errs19;
939
1057
  if (vErrors !== null) {
940
- if (_errs10) {
941
- vErrors.length = _errs10;
1058
+ if (_errs19) {
1059
+ vErrors.length = _errs19;
942
1060
  }
943
1061
  else {
944
1062
  vErrors = null;
945
1063
  }
946
1064
  }
947
1065
  }
948
- var valid3 = _errs8 === errors;
949
- if (valid3) {
1066
+ var valid4 = _errs17 === errors;
1067
+ if (valid4) {
950
1068
  validate135.errors = [{ instancePath, schemaPath: "#/definitions/filteredString/not", keyword: "not", params: {}, message: "must NOT be valid" }];
951
1069
  return false;
952
1070
  }
953
1071
  else {
954
- errors = _errs7;
1072
+ errors = _errs16;
955
1073
  if (vErrors !== null) {
956
- if (_errs7) {
957
- vErrors.length = _errs7;
1074
+ if (_errs16) {
1075
+ vErrors.length = _errs16;
958
1076
  }
959
1077
  else {
960
1078
  vErrors = null;
961
1079
  }
962
1080
  }
963
1081
  }
964
- if (errors === _errs5) {
1082
+ if (errors === _errs14) {
965
1083
  if (typeof data === "string") {
966
1084
  if (func2(data) > 16384) {
967
1085
  validate135.errors = [{ instancePath, schemaPath: "#/definitions/filteredString/maxLength", keyword: "maxLength", params: { limit: 16384 }, message: "must NOT have more than 16384 characters" }];
@@ -3244,7 +3362,7 @@ function validate11(data, { instancePath = "", parentData, parentDataProperty, r
3244
3362
  } validate11.errors = vErrors; return errors === 0; }
3245
3363
  const schema25 = { "description": "An SVG node. One of four mutually exclusive forms, discriminated by `type` (and `name` for the `<style>` special case): a text element, a component reference, a `<style>` element, or any other SVG element.", "anyOf": [{ "$ref": "#/definitions/textElement" }, { "$ref": "#/definitions/componentReference" }, { "$ref": "#/definitions/styleElement" }, { "$ref": "#/definitions/genericElement" }] };
3246
3364
  const schema26 = { "description": "A raw text node. Its `value` becomes the text content rendered into the parent element.", "type": "object", "properties": { "type": { "const": "text" }, "value": { "description": "Either a plain string, or a `variable` reference resolved at render time to the seed's initials.", "anyOf": [{ "type": "string", "maxLength": 4096 }, { "type": "object", "properties": { "type": { "const": "variable" }, "name": { "enum": ["initial", "initials"] } }, "required": ["type", "name"], "additionalProperties": false }] } }, "required": ["type", "value"], "additionalProperties": false };
3247
- const schema27 = { "description": "A reference to a named component defined in the top-level `components` section. At render time, the PRNG selects one of the component's variants.", "type": "object", "properties": { "type": { "const": "component" }, "name": { "$ref": "#/definitions/componentName" } }, "required": ["type", "name"], "additionalProperties": false };
3365
+ const schema27 = { "description": "A reference to a named component defined in the top-level `components` section. At render time, the PRNG selects one of the component's variants. Optional `attributes` are applied to the generated `<use>` tag — most commonly a `transform` placing the instance, but any allowlisted attribute is accepted.", "type": "object", "properties": { "type": { "const": "component" }, "name": { "$ref": "#/definitions/componentName" }, "attributes": { "$ref": "#/definitions/attributes" } }, "required": ["type", "name"], "additionalProperties": false };
3248
3366
  const schema28 = { "description": "A reference to a component defined in the top-level `components` section.", "allOf": [{ "$ref": "#/definitions/camelCaseName" }] };
3249
3367
  function validate168(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; const _errs1 = errors; if (errors === _errs1) {
3250
3368
  if (typeof data === "string") {
@@ -3274,7 +3392,7 @@ function validate167(data, { instancePath = "", parentData, parentDataProperty,
3274
3392
  else {
3275
3393
  const _errs1 = errors;
3276
3394
  for (const key0 in data) {
3277
- if (!((key0 === "type") || (key0 === "name"))) {
3395
+ if (!(((key0 === "type") || (key0 === "name")) || (key0 === "attributes"))) {
3278
3396
  validate167.errors = [{ instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
3279
3397
  return false;
3280
3398
  break;
@@ -3304,6 +3422,19 @@ function validate167(data, { instancePath = "", parentData, parentDataProperty,
3304
3422
  else {
3305
3423
  var valid0 = true;
3306
3424
  }
3425
+ if (valid0) {
3426
+ if (data.attributes !== undefined) {
3427
+ const _errs4 = errors;
3428
+ if (!(validate11(data.attributes, { instancePath: instancePath + "/attributes", parentData: data, parentDataProperty: "attributes", rootData }))) {
3429
+ vErrors = vErrors === null ? validate11.errors : vErrors.concat(validate11.errors);
3430
+ errors = vErrors.length;
3431
+ }
3432
+ var valid0 = _errs4 === errors;
3433
+ }
3434
+ else {
3435
+ var valid0 = true;
3436
+ }
3437
+ }
3307
3438
  }
3308
3439
  }
3309
3440
  }
@@ -3314,18 +3445,18 @@ function validate167(data, { instancePath = "", parentData, parentDataProperty,
3314
3445
  }
3315
3446
  } validate167.errors = vErrors; return errors === 0; }
3316
3447
  const schema30 = { "description": "An SVG `<style>` element. Its CSS content must be provided as `text` children; each child's value is validated as a CSS string with a stricter content policy than generic SVG attribute values.", "type": "object", "properties": { "type": { "const": "element" }, "name": { "const": "style" }, "attributes": { "$ref": "#/definitions/attributes" }, "children": { "type": "array", "items": { "type": "object", "properties": { "type": { "const": "text" }, "value": { "$ref": "#/definitions/cssString" } }, "required": ["type", "value"], "additionalProperties": false }, "maxItems": 64 } }, "required": ["type", "name"], "additionalProperties": false };
3317
- function validate171(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {
3448
+ function validate172(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {
3318
3449
  if (data && typeof data == "object" && !Array.isArray(data)) {
3319
3450
  let missing0;
3320
3451
  if (((data.type === undefined) && (missing0 = "type")) || ((data.name === undefined) && (missing0 = "name"))) {
3321
- validate171.errors = [{ instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: missing0 }, message: "must have required property '" + missing0 + "'" }];
3452
+ validate172.errors = [{ instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: missing0 }, message: "must have required property '" + missing0 + "'" }];
3322
3453
  return false;
3323
3454
  }
3324
3455
  else {
3325
3456
  const _errs1 = errors;
3326
3457
  for (const key0 in data) {
3327
3458
  if (!((((key0 === "type") || (key0 === "name")) || (key0 === "attributes")) || (key0 === "children"))) {
3328
- validate171.errors = [{ instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
3459
+ validate172.errors = [{ instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
3329
3460
  return false;
3330
3461
  break;
3331
3462
  }
@@ -3334,7 +3465,7 @@ function validate171(data, { instancePath = "", parentData, parentDataProperty,
3334
3465
  if (data.type !== undefined) {
3335
3466
  const _errs2 = errors;
3336
3467
  if ("element" !== data.type) {
3337
- validate171.errors = [{ instancePath: instancePath + "/type", schemaPath: "#/properties/type/const", keyword: "const", params: { allowedValue: "element" }, message: "must be equal to constant" }];
3468
+ validate172.errors = [{ instancePath: instancePath + "/type", schemaPath: "#/properties/type/const", keyword: "const", params: { allowedValue: "element" }, message: "must be equal to constant" }];
3338
3469
  return false;
3339
3470
  }
3340
3471
  var valid0 = _errs2 === errors;
@@ -3346,7 +3477,7 @@ function validate171(data, { instancePath = "", parentData, parentDataProperty,
3346
3477
  if (data.name !== undefined) {
3347
3478
  const _errs3 = errors;
3348
3479
  if ("style" !== data.name) {
3349
- validate171.errors = [{ instancePath: instancePath + "/name", schemaPath: "#/properties/name/const", keyword: "const", params: { allowedValue: "style" }, message: "must be equal to constant" }];
3480
+ validate172.errors = [{ instancePath: instancePath + "/name", schemaPath: "#/properties/name/const", keyword: "const", params: { allowedValue: "style" }, message: "must be equal to constant" }];
3350
3481
  return false;
3351
3482
  }
3352
3483
  var valid0 = _errs3 === errors;
@@ -3373,7 +3504,7 @@ function validate171(data, { instancePath = "", parentData, parentDataProperty,
3373
3504
  if (errors === _errs5) {
3374
3505
  if (Array.isArray(data3)) {
3375
3506
  if (data3.length > 64) {
3376
- validate171.errors = [{ instancePath: instancePath + "/children", schemaPath: "#/properties/children/maxItems", keyword: "maxItems", params: { limit: 64 }, message: "must NOT have more than 64 items" }];
3507
+ validate172.errors = [{ instancePath: instancePath + "/children", schemaPath: "#/properties/children/maxItems", keyword: "maxItems", params: { limit: 64 }, message: "must NOT have more than 64 items" }];
3377
3508
  return false;
3378
3509
  }
3379
3510
  else {
@@ -3386,14 +3517,14 @@ function validate171(data, { instancePath = "", parentData, parentDataProperty,
3386
3517
  if (data4 && typeof data4 == "object" && !Array.isArray(data4)) {
3387
3518
  let missing1;
3388
3519
  if (((data4.type === undefined) && (missing1 = "type")) || ((data4.value === undefined) && (missing1 = "value"))) {
3389
- validate171.errors = [{ instancePath: instancePath + "/children/" + i0, schemaPath: "#/properties/children/items/required", keyword: "required", params: { missingProperty: missing1 }, message: "must have required property '" + missing1 + "'" }];
3520
+ validate172.errors = [{ instancePath: instancePath + "/children/" + i0, schemaPath: "#/properties/children/items/required", keyword: "required", params: { missingProperty: missing1 }, message: "must have required property '" + missing1 + "'" }];
3390
3521
  return false;
3391
3522
  }
3392
3523
  else {
3393
3524
  const _errs9 = errors;
3394
3525
  for (const key1 in data4) {
3395
3526
  if (!((key1 === "type") || (key1 === "value"))) {
3396
- validate171.errors = [{ instancePath: instancePath + "/children/" + i0, schemaPath: "#/properties/children/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key1 }, message: "must NOT have additional properties" }];
3527
+ validate172.errors = [{ instancePath: instancePath + "/children/" + i0, schemaPath: "#/properties/children/items/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key1 }, message: "must NOT have additional properties" }];
3397
3528
  return false;
3398
3529
  break;
3399
3530
  }
@@ -3402,7 +3533,7 @@ function validate171(data, { instancePath = "", parentData, parentDataProperty,
3402
3533
  if (data4.type !== undefined) {
3403
3534
  const _errs10 = errors;
3404
3535
  if ("text" !== data4.type) {
3405
- validate171.errors = [{ instancePath: instancePath + "/children/" + i0 + "/type", schemaPath: "#/properties/children/items/properties/type/const", keyword: "const", params: { allowedValue: "text" }, message: "must be equal to constant" }];
3536
+ validate172.errors = [{ instancePath: instancePath + "/children/" + i0 + "/type", schemaPath: "#/properties/children/items/properties/type/const", keyword: "const", params: { allowedValue: "text" }, message: "must be equal to constant" }];
3406
3537
  return false;
3407
3538
  }
3408
3539
  var valid2 = _errs10 === errors;
@@ -3427,7 +3558,7 @@ function validate171(data, { instancePath = "", parentData, parentDataProperty,
3427
3558
  }
3428
3559
  }
3429
3560
  else {
3430
- validate171.errors = [{ instancePath: instancePath + "/children/" + i0, schemaPath: "#/properties/children/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
3561
+ validate172.errors = [{ instancePath: instancePath + "/children/" + i0, schemaPath: "#/properties/children/items/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
3431
3562
  return false;
3432
3563
  }
3433
3564
  }
@@ -3439,7 +3570,7 @@ function validate171(data, { instancePath = "", parentData, parentDataProperty,
3439
3570
  }
3440
3571
  }
3441
3572
  else {
3442
- validate171.errors = [{ instancePath: instancePath + "/children", schemaPath: "#/properties/children/type", keyword: "type", params: { type: "array" }, message: "must be array" }];
3573
+ validate172.errors = [{ instancePath: instancePath + "/children", schemaPath: "#/properties/children/type", keyword: "type", params: { type: "array" }, message: "must be array" }];
3443
3574
  return false;
3444
3575
  }
3445
3576
  }
@@ -3455,24 +3586,24 @@ function validate171(data, { instancePath = "", parentData, parentDataProperty,
3455
3586
  }
3456
3587
  }
3457
3588
  else {
3458
- validate171.errors = [{ instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
3589
+ validate172.errors = [{ instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
3459
3590
  return false;
3460
3591
  }
3461
- } validate171.errors = vErrors; return errors === 0; }
3592
+ } validate172.errors = vErrors; return errors === 0; }
3462
3593
  const schema31 = { "description": "Any SVG element other than `<style>`, which has its own stricter content policy.", "type": "object", "properties": { "type": { "const": "element" }, "name": { "description": "The SVG tag name. Only a safe subset of SVG elements is permitted; dangerous elements such as `script`, `foreignObject`, or `a` are excluded.", "enum": ["circle", "clipPath", "defs", "desc", "ellipse", "feBlend", "feColorMatrix", "feComponentTransfer", "feComposite", "feConvolveMatrix", "feDiffuseLighting", "feDisplacementMap", "feDistantLight", "feDropShadow", "feFlood", "feFuncA", "feFuncB", "feFuncG", "feFuncR", "feGaussianBlur", "feImage", "feMerge", "feMergeNode", "feMorphology", "feOffset", "fePointLight", "feSpecularLighting", "feSpotLight", "feTile", "feTurbulence", "filter", "g", "image", "line", "linearGradient", "marker", "mask", "metadata", "mpath", "path", "pattern", "polygon", "polyline", "radialGradient", "rect", "stop", "svg", "switch", "symbol", "text", "textPath", "title", "tspan", "use", "view"] }, "attributes": { "$ref": "#/definitions/attributes" }, "children": { "type": "array", "items": { "$ref": "#/definitions/element" }, "maxItems": 1024 } }, "required": ["type", "name"], "additionalProperties": false };
3463
3594
  const wrapper0 = { validate: validate166 };
3464
- function validate175(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {
3595
+ function validate176(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {
3465
3596
  if (data && typeof data == "object" && !Array.isArray(data)) {
3466
3597
  let missing0;
3467
3598
  if (((data.type === undefined) && (missing0 = "type")) || ((data.name === undefined) && (missing0 = "name"))) {
3468
- validate175.errors = [{ instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: missing0 }, message: "must have required property '" + missing0 + "'" }];
3599
+ validate176.errors = [{ instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: missing0 }, message: "must have required property '" + missing0 + "'" }];
3469
3600
  return false;
3470
3601
  }
3471
3602
  else {
3472
3603
  const _errs1 = errors;
3473
3604
  for (const key0 in data) {
3474
3605
  if (!((((key0 === "type") || (key0 === "name")) || (key0 === "attributes")) || (key0 === "children"))) {
3475
- validate175.errors = [{ instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
3606
+ validate176.errors = [{ instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
3476
3607
  return false;
3477
3608
  break;
3478
3609
  }
@@ -3481,7 +3612,7 @@ function validate175(data, { instancePath = "", parentData, parentDataProperty,
3481
3612
  if (data.type !== undefined) {
3482
3613
  const _errs2 = errors;
3483
3614
  if ("element" !== data.type) {
3484
- validate175.errors = [{ instancePath: instancePath + "/type", schemaPath: "#/properties/type/const", keyword: "const", params: { allowedValue: "element" }, message: "must be equal to constant" }];
3615
+ validate176.errors = [{ instancePath: instancePath + "/type", schemaPath: "#/properties/type/const", keyword: "const", params: { allowedValue: "element" }, message: "must be equal to constant" }];
3485
3616
  return false;
3486
3617
  }
3487
3618
  var valid0 = _errs2 === errors;
@@ -3494,7 +3625,7 @@ function validate175(data, { instancePath = "", parentData, parentDataProperty,
3494
3625
  let data1 = data.name;
3495
3626
  const _errs3 = errors;
3496
3627
  if (!(((((((((((((((((((((((((((((((((((((((((((((((((((((((data1 === "circle") || (data1 === "clipPath")) || (data1 === "defs")) || (data1 === "desc")) || (data1 === "ellipse")) || (data1 === "feBlend")) || (data1 === "feColorMatrix")) || (data1 === "feComponentTransfer")) || (data1 === "feComposite")) || (data1 === "feConvolveMatrix")) || (data1 === "feDiffuseLighting")) || (data1 === "feDisplacementMap")) || (data1 === "feDistantLight")) || (data1 === "feDropShadow")) || (data1 === "feFlood")) || (data1 === "feFuncA")) || (data1 === "feFuncB")) || (data1 === "feFuncG")) || (data1 === "feFuncR")) || (data1 === "feGaussianBlur")) || (data1 === "feImage")) || (data1 === "feMerge")) || (data1 === "feMergeNode")) || (data1 === "feMorphology")) || (data1 === "feOffset")) || (data1 === "fePointLight")) || (data1 === "feSpecularLighting")) || (data1 === "feSpotLight")) || (data1 === "feTile")) || (data1 === "feTurbulence")) || (data1 === "filter")) || (data1 === "g")) || (data1 === "image")) || (data1 === "line")) || (data1 === "linearGradient")) || (data1 === "marker")) || (data1 === "mask")) || (data1 === "metadata")) || (data1 === "mpath")) || (data1 === "path")) || (data1 === "pattern")) || (data1 === "polygon")) || (data1 === "polyline")) || (data1 === "radialGradient")) || (data1 === "rect")) || (data1 === "stop")) || (data1 === "svg")) || (data1 === "switch")) || (data1 === "symbol")) || (data1 === "text")) || (data1 === "textPath")) || (data1 === "title")) || (data1 === "tspan")) || (data1 === "use")) || (data1 === "view"))) {
3497
- validate175.errors = [{ instancePath: instancePath + "/name", schemaPath: "#/properties/name/enum", keyword: "enum", params: { allowedValues: schema31.properties.name.enum }, message: "must be equal to one of the allowed values" }];
3628
+ validate176.errors = [{ instancePath: instancePath + "/name", schemaPath: "#/properties/name/enum", keyword: "enum", params: { allowedValues: schema31.properties.name.enum }, message: "must be equal to one of the allowed values" }];
3498
3629
  return false;
3499
3630
  }
3500
3631
  var valid0 = _errs3 === errors;
@@ -3521,7 +3652,7 @@ function validate175(data, { instancePath = "", parentData, parentDataProperty,
3521
3652
  if (errors === _errs5) {
3522
3653
  if (Array.isArray(data3)) {
3523
3654
  if (data3.length > 1024) {
3524
- validate175.errors = [{ instancePath: instancePath + "/children", schemaPath: "#/properties/children/maxItems", keyword: "maxItems", params: { limit: 1024 }, message: "must NOT have more than 1024 items" }];
3655
+ validate176.errors = [{ instancePath: instancePath + "/children", schemaPath: "#/properties/children/maxItems", keyword: "maxItems", params: { limit: 1024 }, message: "must NOT have more than 1024 items" }];
3525
3656
  return false;
3526
3657
  }
3527
3658
  else {
@@ -3541,7 +3672,7 @@ function validate175(data, { instancePath = "", parentData, parentDataProperty,
3541
3672
  }
3542
3673
  }
3543
3674
  else {
3544
- validate175.errors = [{ instancePath: instancePath + "/children", schemaPath: "#/properties/children/type", keyword: "type", params: { type: "array" }, message: "must be array" }];
3675
+ validate176.errors = [{ instancePath: instancePath + "/children", schemaPath: "#/properties/children/type", keyword: "type", params: { type: "array" }, message: "must be array" }];
3545
3676
  return false;
3546
3677
  }
3547
3678
  }
@@ -3557,10 +3688,10 @@ function validate175(data, { instancePath = "", parentData, parentDataProperty,
3557
3688
  }
3558
3689
  }
3559
3690
  else {
3560
- validate175.errors = [{ instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
3691
+ validate176.errors = [{ instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
3561
3692
  return false;
3562
3693
  }
3563
- } validate175.errors = vErrors; return errors === 0; }
3694
+ } validate176.errors = vErrors; return errors === 0; }
3564
3695
  function validate166(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; const _errs0 = errors; let valid0 = false; const _errs1 = errors; const _errs2 = errors; if (errors === _errs2) {
3565
3696
  if (data && typeof data == "object" && !Array.isArray(data)) {
3566
3697
  let missing0;
@@ -3775,16 +3906,16 @@ function validate166(data, { instancePath = "", parentData, parentDataProperty,
3775
3906
  valid0 = valid0 || _valid0;
3776
3907
  if (!valid0) {
3777
3908
  const _errs16 = errors;
3778
- if (!(validate171(data, { instancePath, parentData, parentDataProperty, rootData }))) {
3779
- vErrors = vErrors === null ? validate171.errors : vErrors.concat(validate171.errors);
3909
+ if (!(validate172(data, { instancePath, parentData, parentDataProperty, rootData }))) {
3910
+ vErrors = vErrors === null ? validate172.errors : vErrors.concat(validate172.errors);
3780
3911
  errors = vErrors.length;
3781
3912
  }
3782
3913
  var _valid0 = _errs16 === errors;
3783
3914
  valid0 = valid0 || _valid0;
3784
3915
  if (!valid0) {
3785
3916
  const _errs17 = errors;
3786
- if (!(validate175(data, { instancePath, parentData, parentDataProperty, rootData }))) {
3787
- vErrors = vErrors === null ? validate175.errors : vErrors.concat(validate175.errors);
3917
+ if (!(validate176(data, { instancePath, parentData, parentDataProperty, rootData }))) {
3918
+ vErrors = vErrors === null ? validate176.errors : vErrors.concat(validate176.errors);
3788
3919
  errors = vErrors.length;
3789
3920
  }
3790
3921
  var _valid0 = _errs17 === errors;
@@ -3816,16 +3947,16 @@ else {
3816
3947
  } validate166.errors = vErrors; return errors === 0; }
3817
3948
  const schema33 = { "description": "A base component definition with its own dimensions and variants. The PRNG selects one variant per render based on the seed.", "type": "object", "properties": { "width": { "description": "The natural width of the component canvas in pixels.", "type": "number", "minimum": 1 }, "height": { "description": "The natural height of the component canvas in pixels.", "type": "number", "minimum": 1 }, "probability": { "$ref": "#/definitions/componentProbability" }, "rotate": { "$ref": "#/definitions/componentRotate" }, "scale": { "$ref": "#/definitions/componentScale" }, "translate": { "$ref": "#/definitions/componentTranslate" }, "variants": { "description": "The available visual variants of this component. The PRNG selects one variant per render. Keys must be `camelCaseName` identifiers.", "type": "object", "propertyNames": { "$ref": "#/definitions/camelCaseName" }, "additionalProperties": { "type": "object", "properties": { "elements": { "description": "The SVG elements that make up this variant.", "type": "array", "items": { "$ref": "#/definitions/element" }, "maxItems": 1024 }, "weight": { "description": "A weight that influences how likely the PRNG is to select this variant. Higher values make the variant more likely. When omitted, defaults to 1 (equal weighting). A value of 0 means the variant is not selected unless all available variants have a weight of 0.", "type": "number", "minimum": 0, "maximum": 1000000 } }, "required": ["elements"], "additionalProperties": false }, "maxProperties": 512 } }, "required": ["width", "height", "variants"], "additionalProperties": false };
3818
3949
  const schema34 = { "description": "The probability, expressed as a percentage, that this component is rendered at all.", "type": "number", "minimum": 0, "maximum": 100 };
3819
- const schema35 = { "description": "A rotation in degrees. A single value fixes the angle; two values define a range the PRNG picks from.", "type": "array", "items": { "type": "number", "minimum": -360, "maximum": 360 }, "minItems": 1, "maxItems": 2 };
3820
- const schema36 = { "description": "A scale factor around the component's own center. A single value fixes the scale; two values define a range the PRNG picks from. A value of `1` corresponds to the original size.", "type": "array", "items": { "type": "number", "minimum": 0, "maximum": 10 }, "minItems": 1, "maxItems": 2 };
3950
+ const schema35 = { "description": "A rotation in degrees. Defines a range the PRNG picks from. Set `min === max` for a fixed angle. A positive `step` quantizes the range to multiples of `step` starting at `min`; omit for a continuous range. When `(max - min)` is not a multiple of `step`, `max` itself is unreachable — the last bucket is clamped to `≤ max`.", "type": "object", "properties": { "min": { "type": "number", "minimum": -360, "maximum": 360 }, "max": { "type": "number", "minimum": -360, "maximum": 360 }, "step": { "type": "number", "exclusiveMinimum": 0, "maximum": 720 } }, "required": ["min", "max"], "additionalProperties": false };
3951
+ const schema36 = { "description": "A scale factor around the component's own center (`1` corresponds to the original size). Defines a range the PRNG picks from. Set `min === max` for a fixed scale. A positive `step` quantizes the range to multiples of `step` starting at `min`; omit for a continuous range. When `(max - min)` is not a multiple of `step`, `max` itself is unreachable — the last bucket is clamped to `≤ max`.", "type": "object", "properties": { "min": { "type": "number", "minimum": 0, "maximum": 10 }, "max": { "type": "number", "minimum": 0, "maximum": 10 }, "step": { "type": "number", "exclusiveMinimum": 0, "maximum": 10 } }, "required": ["min", "max"], "additionalProperties": false };
3821
3952
  const schema37 = { "description": "A positional translation applied to the component after placement. Values are interpreted as a percentage of the component's size.", "type": "object", "properties": { "x": { "$ref": "#/definitions/translateValue" }, "y": { "$ref": "#/definitions/translateValue" } }, "additionalProperties": false };
3822
- const schema38 = { "description": "A translation value expressed as a percentage of the component's width (for `x`) or height (for `y`). A single value fixes the translation; two values define a range the PRNG picks from.", "type": "array", "items": { "type": "number", "minimum": -1000, "maximum": 1000 }, "minItems": 1, "maxItems": 2 };
3823
- function validate180(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {
3953
+ const schema38 = { "description": "A translation value expressed as a percentage of the component's width (for `x`) or height (for `y`). Defines a range the PRNG picks from. Set `min === max` for a fixed value. A positive `step` quantizes the range to multiples of `step` starting at `min`; omit for a continuous range. When `(max - min)` is not a multiple of `step`, `max` itself is unreachable — the last bucket is clamped to `≤ max`.", "type": "object", "properties": { "min": { "type": "number", "minimum": -1000, "maximum": 1000 }, "max": { "type": "number", "minimum": -1000, "maximum": 1000 }, "step": { "type": "number", "exclusiveMinimum": 0, "maximum": 2000 } }, "required": ["min", "max"], "additionalProperties": false };
3954
+ function validate181(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {
3824
3955
  if (data && typeof data == "object" && !Array.isArray(data)) {
3825
3956
  const _errs1 = errors;
3826
3957
  for (const key0 in data) {
3827
3958
  if (!((key0 === "x") || (key0 === "y"))) {
3828
- validate180.errors = [{ instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
3959
+ validate181.errors = [{ instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
3829
3960
  return false;
3830
3961
  break;
3831
3962
  }
@@ -3836,50 +3967,109 @@ function validate180(data, { instancePath = "", parentData, parentDataProperty,
3836
3967
  const _errs2 = errors;
3837
3968
  const _errs3 = errors;
3838
3969
  if (errors === _errs3) {
3839
- if (Array.isArray(data0)) {
3840
- if (data0.length > 2) {
3841
- validate180.errors = [{ instancePath: instancePath + "/x", schemaPath: "#/definitions/translateValue/maxItems", keyword: "maxItems", params: { limit: 2 }, message: "must NOT have more than 2 items" }];
3970
+ if (data0 && typeof data0 == "object" && !Array.isArray(data0)) {
3971
+ let missing0;
3972
+ if (((data0.min === undefined) && (missing0 = "min")) || ((data0.max === undefined) && (missing0 = "max"))) {
3973
+ validate181.errors = [{ instancePath: instancePath + "/x", schemaPath: "#/definitions/translateValue/required", keyword: "required", params: { missingProperty: missing0 }, message: "must have required property '" + missing0 + "'" }];
3842
3974
  return false;
3843
3975
  }
3844
3976
  else {
3845
- if (data0.length < 1) {
3846
- validate180.errors = [{ instancePath: instancePath + "/x", schemaPath: "#/definitions/translateValue/minItems", keyword: "minItems", params: { limit: 1 }, message: "must NOT have fewer than 1 items" }];
3847
- return false;
3977
+ const _errs5 = errors;
3978
+ for (const key1 in data0) {
3979
+ if (!(((key1 === "min") || (key1 === "max")) || (key1 === "step"))) {
3980
+ validate181.errors = [{ instancePath: instancePath + "/x", schemaPath: "#/definitions/translateValue/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key1 }, message: "must NOT have additional properties" }];
3981
+ return false;
3982
+ break;
3983
+ }
3848
3984
  }
3849
- else {
3850
- var valid2 = true;
3851
- const len0 = data0.length;
3852
- for (let i0 = 0; i0 < len0; i0++) {
3853
- let data1 = data0[i0];
3854
- const _errs5 = errors;
3855
- if (errors === _errs5) {
3985
+ if (_errs5 === errors) {
3986
+ if (data0.min !== undefined) {
3987
+ let data1 = data0.min;
3988
+ const _errs6 = errors;
3989
+ if (errors === _errs6) {
3856
3990
  if ((typeof data1 == "number") && (isFinite(data1))) {
3857
3991
  if (data1 > 1000 || isNaN(data1)) {
3858
- validate180.errors = [{ instancePath: instancePath + "/x/" + i0, schemaPath: "#/definitions/translateValue/items/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1000 }, message: "must be <= 1000" }];
3992
+ validate181.errors = [{ instancePath: instancePath + "/x/min", schemaPath: "#/definitions/translateValue/properties/min/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1000 }, message: "must be <= 1000" }];
3859
3993
  return false;
3860
3994
  }
3861
3995
  else {
3862
3996
  if (data1 < -1000 || isNaN(data1)) {
3863
- validate180.errors = [{ instancePath: instancePath + "/x/" + i0, schemaPath: "#/definitions/translateValue/items/minimum", keyword: "minimum", params: { comparison: ">=", limit: -1000 }, message: "must be >= -1000" }];
3997
+ validate181.errors = [{ instancePath: instancePath + "/x/min", schemaPath: "#/definitions/translateValue/properties/min/minimum", keyword: "minimum", params: { comparison: ">=", limit: -1000 }, message: "must be >= -1000" }];
3864
3998
  return false;
3865
3999
  }
3866
4000
  }
3867
4001
  }
3868
4002
  else {
3869
- validate180.errors = [{ instancePath: instancePath + "/x/" + i0, schemaPath: "#/definitions/translateValue/items/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4003
+ validate181.errors = [{ instancePath: instancePath + "/x/min", schemaPath: "#/definitions/translateValue/properties/min/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
3870
4004
  return false;
3871
4005
  }
3872
4006
  }
3873
- var valid2 = _errs5 === errors;
3874
- if (!valid2) {
3875
- break;
4007
+ var valid2 = _errs6 === errors;
4008
+ }
4009
+ else {
4010
+ var valid2 = true;
4011
+ }
4012
+ if (valid2) {
4013
+ if (data0.max !== undefined) {
4014
+ let data2 = data0.max;
4015
+ const _errs8 = errors;
4016
+ if (errors === _errs8) {
4017
+ if ((typeof data2 == "number") && (isFinite(data2))) {
4018
+ if (data2 > 1000 || isNaN(data2)) {
4019
+ validate181.errors = [{ instancePath: instancePath + "/x/max", schemaPath: "#/definitions/translateValue/properties/max/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1000 }, message: "must be <= 1000" }];
4020
+ return false;
4021
+ }
4022
+ else {
4023
+ if (data2 < -1000 || isNaN(data2)) {
4024
+ validate181.errors = [{ instancePath: instancePath + "/x/max", schemaPath: "#/definitions/translateValue/properties/max/minimum", keyword: "minimum", params: { comparison: ">=", limit: -1000 }, message: "must be >= -1000" }];
4025
+ return false;
4026
+ }
4027
+ }
4028
+ }
4029
+ else {
4030
+ validate181.errors = [{ instancePath: instancePath + "/x/max", schemaPath: "#/definitions/translateValue/properties/max/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4031
+ return false;
4032
+ }
4033
+ }
4034
+ var valid2 = _errs8 === errors;
4035
+ }
4036
+ else {
4037
+ var valid2 = true;
4038
+ }
4039
+ if (valid2) {
4040
+ if (data0.step !== undefined) {
4041
+ let data3 = data0.step;
4042
+ const _errs10 = errors;
4043
+ if (errors === _errs10) {
4044
+ if ((typeof data3 == "number") && (isFinite(data3))) {
4045
+ if (data3 > 2000 || isNaN(data3)) {
4046
+ validate181.errors = [{ instancePath: instancePath + "/x/step", schemaPath: "#/definitions/translateValue/properties/step/maximum", keyword: "maximum", params: { comparison: "<=", limit: 2000 }, message: "must be <= 2000" }];
4047
+ return false;
4048
+ }
4049
+ else {
4050
+ if (data3 <= 0 || isNaN(data3)) {
4051
+ validate181.errors = [{ instancePath: instancePath + "/x/step", schemaPath: "#/definitions/translateValue/properties/step/exclusiveMinimum", keyword: "exclusiveMinimum", params: { comparison: ">", limit: 0 }, message: "must be > 0" }];
4052
+ return false;
4053
+ }
4054
+ }
4055
+ }
4056
+ else {
4057
+ validate181.errors = [{ instancePath: instancePath + "/x/step", schemaPath: "#/definitions/translateValue/properties/step/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4058
+ return false;
4059
+ }
4060
+ }
4061
+ var valid2 = _errs10 === errors;
4062
+ }
4063
+ else {
4064
+ var valid2 = true;
4065
+ }
3876
4066
  }
3877
4067
  }
3878
4068
  }
3879
4069
  }
3880
4070
  }
3881
4071
  else {
3882
- validate180.errors = [{ instancePath: instancePath + "/x", schemaPath: "#/definitions/translateValue/type", keyword: "type", params: { type: "array" }, message: "must be array" }];
4072
+ validate181.errors = [{ instancePath: instancePath + "/x", schemaPath: "#/definitions/translateValue/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
3883
4073
  return false;
3884
4074
  }
3885
4075
  }
@@ -3890,58 +4080,117 @@ function validate180(data, { instancePath = "", parentData, parentDataProperty,
3890
4080
  }
3891
4081
  if (valid0) {
3892
4082
  if (data.y !== undefined) {
3893
- let data2 = data.y;
3894
- const _errs7 = errors;
3895
- const _errs8 = errors;
3896
- if (errors === _errs8) {
3897
- if (Array.isArray(data2)) {
3898
- if (data2.length > 2) {
3899
- validate180.errors = [{ instancePath: instancePath + "/y", schemaPath: "#/definitions/translateValue/maxItems", keyword: "maxItems", params: { limit: 2 }, message: "must NOT have more than 2 items" }];
4083
+ let data4 = data.y;
4084
+ const _errs12 = errors;
4085
+ const _errs13 = errors;
4086
+ if (errors === _errs13) {
4087
+ if (data4 && typeof data4 == "object" && !Array.isArray(data4)) {
4088
+ let missing1;
4089
+ if (((data4.min === undefined) && (missing1 = "min")) || ((data4.max === undefined) && (missing1 = "max"))) {
4090
+ validate181.errors = [{ instancePath: instancePath + "/y", schemaPath: "#/definitions/translateValue/required", keyword: "required", params: { missingProperty: missing1 }, message: "must have required property '" + missing1 + "'" }];
3900
4091
  return false;
3901
4092
  }
3902
4093
  else {
3903
- if (data2.length < 1) {
3904
- validate180.errors = [{ instancePath: instancePath + "/y", schemaPath: "#/definitions/translateValue/minItems", keyword: "minItems", params: { limit: 1 }, message: "must NOT have fewer than 1 items" }];
3905
- return false;
4094
+ const _errs15 = errors;
4095
+ for (const key2 in data4) {
4096
+ if (!(((key2 === "min") || (key2 === "max")) || (key2 === "step"))) {
4097
+ validate181.errors = [{ instancePath: instancePath + "/y", schemaPath: "#/definitions/translateValue/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key2 }, message: "must NOT have additional properties" }];
4098
+ return false;
4099
+ break;
4100
+ }
3906
4101
  }
3907
- else {
3908
- var valid4 = true;
3909
- const len1 = data2.length;
3910
- for (let i1 = 0; i1 < len1; i1++) {
3911
- let data3 = data2[i1];
3912
- const _errs10 = errors;
3913
- if (errors === _errs10) {
3914
- if ((typeof data3 == "number") && (isFinite(data3))) {
3915
- if (data3 > 1000 || isNaN(data3)) {
3916
- validate180.errors = [{ instancePath: instancePath + "/y/" + i1, schemaPath: "#/definitions/translateValue/items/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1000 }, message: "must be <= 1000" }];
4102
+ if (_errs15 === errors) {
4103
+ if (data4.min !== undefined) {
4104
+ let data5 = data4.min;
4105
+ const _errs16 = errors;
4106
+ if (errors === _errs16) {
4107
+ if ((typeof data5 == "number") && (isFinite(data5))) {
4108
+ if (data5 > 1000 || isNaN(data5)) {
4109
+ validate181.errors = [{ instancePath: instancePath + "/y/min", schemaPath: "#/definitions/translateValue/properties/min/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1000 }, message: "must be <= 1000" }];
3917
4110
  return false;
3918
4111
  }
3919
4112
  else {
3920
- if (data3 < -1000 || isNaN(data3)) {
3921
- validate180.errors = [{ instancePath: instancePath + "/y/" + i1, schemaPath: "#/definitions/translateValue/items/minimum", keyword: "minimum", params: { comparison: ">=", limit: -1000 }, message: "must be >= -1000" }];
4113
+ if (data5 < -1000 || isNaN(data5)) {
4114
+ validate181.errors = [{ instancePath: instancePath + "/y/min", schemaPath: "#/definitions/translateValue/properties/min/minimum", keyword: "minimum", params: { comparison: ">=", limit: -1000 }, message: "must be >= -1000" }];
3922
4115
  return false;
3923
4116
  }
3924
4117
  }
3925
4118
  }
3926
4119
  else {
3927
- validate180.errors = [{ instancePath: instancePath + "/y/" + i1, schemaPath: "#/definitions/translateValue/items/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4120
+ validate181.errors = [{ instancePath: instancePath + "/y/min", schemaPath: "#/definitions/translateValue/properties/min/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
3928
4121
  return false;
3929
4122
  }
3930
4123
  }
3931
- var valid4 = _errs10 === errors;
3932
- if (!valid4) {
3933
- break;
4124
+ var valid4 = _errs16 === errors;
4125
+ }
4126
+ else {
4127
+ var valid4 = true;
4128
+ }
4129
+ if (valid4) {
4130
+ if (data4.max !== undefined) {
4131
+ let data6 = data4.max;
4132
+ const _errs18 = errors;
4133
+ if (errors === _errs18) {
4134
+ if ((typeof data6 == "number") && (isFinite(data6))) {
4135
+ if (data6 > 1000 || isNaN(data6)) {
4136
+ validate181.errors = [{ instancePath: instancePath + "/y/max", schemaPath: "#/definitions/translateValue/properties/max/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1000 }, message: "must be <= 1000" }];
4137
+ return false;
4138
+ }
4139
+ else {
4140
+ if (data6 < -1000 || isNaN(data6)) {
4141
+ validate181.errors = [{ instancePath: instancePath + "/y/max", schemaPath: "#/definitions/translateValue/properties/max/minimum", keyword: "minimum", params: { comparison: ">=", limit: -1000 }, message: "must be >= -1000" }];
4142
+ return false;
4143
+ }
4144
+ }
4145
+ }
4146
+ else {
4147
+ validate181.errors = [{ instancePath: instancePath + "/y/max", schemaPath: "#/definitions/translateValue/properties/max/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4148
+ return false;
4149
+ }
4150
+ }
4151
+ var valid4 = _errs18 === errors;
4152
+ }
4153
+ else {
4154
+ var valid4 = true;
4155
+ }
4156
+ if (valid4) {
4157
+ if (data4.step !== undefined) {
4158
+ let data7 = data4.step;
4159
+ const _errs20 = errors;
4160
+ if (errors === _errs20) {
4161
+ if ((typeof data7 == "number") && (isFinite(data7))) {
4162
+ if (data7 > 2000 || isNaN(data7)) {
4163
+ validate181.errors = [{ instancePath: instancePath + "/y/step", schemaPath: "#/definitions/translateValue/properties/step/maximum", keyword: "maximum", params: { comparison: "<=", limit: 2000 }, message: "must be <= 2000" }];
4164
+ return false;
4165
+ }
4166
+ else {
4167
+ if (data7 <= 0 || isNaN(data7)) {
4168
+ validate181.errors = [{ instancePath: instancePath + "/y/step", schemaPath: "#/definitions/translateValue/properties/step/exclusiveMinimum", keyword: "exclusiveMinimum", params: { comparison: ">", limit: 0 }, message: "must be > 0" }];
4169
+ return false;
4170
+ }
4171
+ }
4172
+ }
4173
+ else {
4174
+ validate181.errors = [{ instancePath: instancePath + "/y/step", schemaPath: "#/definitions/translateValue/properties/step/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4175
+ return false;
4176
+ }
4177
+ }
4178
+ var valid4 = _errs20 === errors;
4179
+ }
4180
+ else {
4181
+ var valid4 = true;
4182
+ }
3934
4183
  }
3935
4184
  }
3936
4185
  }
3937
4186
  }
3938
4187
  }
3939
4188
  else {
3940
- validate180.errors = [{ instancePath: instancePath + "/y", schemaPath: "#/definitions/translateValue/type", keyword: "type", params: { type: "array" }, message: "must be array" }];
4189
+ validate181.errors = [{ instancePath: instancePath + "/y", schemaPath: "#/definitions/translateValue/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
3941
4190
  return false;
3942
4191
  }
3943
4192
  }
3944
- var valid0 = _errs7 === errors;
4193
+ var valid0 = _errs12 === errors;
3945
4194
  }
3946
4195
  else {
3947
4196
  var valid0 = true;
@@ -3950,22 +4199,22 @@ function validate180(data, { instancePath = "", parentData, parentDataProperty,
3950
4199
  }
3951
4200
  }
3952
4201
  else {
3953
- validate180.errors = [{ instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
4202
+ validate181.errors = [{ instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
3954
4203
  return false;
3955
4204
  }
3956
- } validate180.errors = vErrors; return errors === 0; }
3957
- function validate179(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {
4205
+ } validate181.errors = vErrors; return errors === 0; }
4206
+ function validate180(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {
3958
4207
  if (data && typeof data == "object" && !Array.isArray(data)) {
3959
4208
  let missing0;
3960
4209
  if ((((data.width === undefined) && (missing0 = "width")) || ((data.height === undefined) && (missing0 = "height"))) || ((data.variants === undefined) && (missing0 = "variants"))) {
3961
- validate179.errors = [{ instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: missing0 }, message: "must have required property '" + missing0 + "'" }];
4210
+ validate180.errors = [{ instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: missing0 }, message: "must have required property '" + missing0 + "'" }];
3962
4211
  return false;
3963
4212
  }
3964
4213
  else {
3965
4214
  const _errs1 = errors;
3966
4215
  for (const key0 in data) {
3967
4216
  if (!(((((((key0 === "width") || (key0 === "height")) || (key0 === "probability")) || (key0 === "rotate")) || (key0 === "scale")) || (key0 === "translate")) || (key0 === "variants"))) {
3968
- validate179.errors = [{ instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
4217
+ validate180.errors = [{ instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
3969
4218
  return false;
3970
4219
  break;
3971
4220
  }
@@ -3977,12 +4226,12 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
3977
4226
  if (errors === _errs2) {
3978
4227
  if ((typeof data0 == "number") && (isFinite(data0))) {
3979
4228
  if (data0 < 1 || isNaN(data0)) {
3980
- validate179.errors = [{ instancePath: instancePath + "/width", schemaPath: "#/properties/width/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }];
4229
+ validate180.errors = [{ instancePath: instancePath + "/width", schemaPath: "#/properties/width/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }];
3981
4230
  return false;
3982
4231
  }
3983
4232
  }
3984
4233
  else {
3985
- validate179.errors = [{ instancePath: instancePath + "/width", schemaPath: "#/properties/width/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4234
+ validate180.errors = [{ instancePath: instancePath + "/width", schemaPath: "#/properties/width/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
3986
4235
  return false;
3987
4236
  }
3988
4237
  }
@@ -3998,12 +4247,12 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
3998
4247
  if (errors === _errs4) {
3999
4248
  if ((typeof data1 == "number") && (isFinite(data1))) {
4000
4249
  if (data1 < 1 || isNaN(data1)) {
4001
- validate179.errors = [{ instancePath: instancePath + "/height", schemaPath: "#/properties/height/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }];
4250
+ validate180.errors = [{ instancePath: instancePath + "/height", schemaPath: "#/properties/height/minimum", keyword: "minimum", params: { comparison: ">=", limit: 1 }, message: "must be >= 1" }];
4002
4251
  return false;
4003
4252
  }
4004
4253
  }
4005
4254
  else {
4006
- validate179.errors = [{ instancePath: instancePath + "/height", schemaPath: "#/properties/height/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4255
+ validate180.errors = [{ instancePath: instancePath + "/height", schemaPath: "#/properties/height/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4007
4256
  return false;
4008
4257
  }
4009
4258
  }
@@ -4020,18 +4269,18 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
4020
4269
  if (errors === _errs7) {
4021
4270
  if ((typeof data2 == "number") && (isFinite(data2))) {
4022
4271
  if (data2 > 100 || isNaN(data2)) {
4023
- validate179.errors = [{ instancePath: instancePath + "/probability", schemaPath: "#/definitions/componentProbability/maximum", keyword: "maximum", params: { comparison: "<=", limit: 100 }, message: "must be <= 100" }];
4272
+ validate180.errors = [{ instancePath: instancePath + "/probability", schemaPath: "#/definitions/componentProbability/maximum", keyword: "maximum", params: { comparison: "<=", limit: 100 }, message: "must be <= 100" }];
4024
4273
  return false;
4025
4274
  }
4026
4275
  else {
4027
4276
  if (data2 < 0 || isNaN(data2)) {
4028
- validate179.errors = [{ instancePath: instancePath + "/probability", schemaPath: "#/definitions/componentProbability/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }];
4277
+ validate180.errors = [{ instancePath: instancePath + "/probability", schemaPath: "#/definitions/componentProbability/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }];
4029
4278
  return false;
4030
4279
  }
4031
4280
  }
4032
4281
  }
4033
4282
  else {
4034
- validate179.errors = [{ instancePath: instancePath + "/probability", schemaPath: "#/definitions/componentProbability/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4283
+ validate180.errors = [{ instancePath: instancePath + "/probability", schemaPath: "#/definitions/componentProbability/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4035
4284
  return false;
4036
4285
  }
4037
4286
  }
@@ -4046,50 +4295,109 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
4046
4295
  const _errs9 = errors;
4047
4296
  const _errs10 = errors;
4048
4297
  if (errors === _errs10) {
4049
- if (Array.isArray(data3)) {
4050
- if (data3.length > 2) {
4051
- validate179.errors = [{ instancePath: instancePath + "/rotate", schemaPath: "#/definitions/componentRotate/maxItems", keyword: "maxItems", params: { limit: 2 }, message: "must NOT have more than 2 items" }];
4298
+ if (data3 && typeof data3 == "object" && !Array.isArray(data3)) {
4299
+ let missing1;
4300
+ if (((data3.min === undefined) && (missing1 = "min")) || ((data3.max === undefined) && (missing1 = "max"))) {
4301
+ validate180.errors = [{ instancePath: instancePath + "/rotate", schemaPath: "#/definitions/componentRotate/required", keyword: "required", params: { missingProperty: missing1 }, message: "must have required property '" + missing1 + "'" }];
4052
4302
  return false;
4053
4303
  }
4054
4304
  else {
4055
- if (data3.length < 1) {
4056
- validate179.errors = [{ instancePath: instancePath + "/rotate", schemaPath: "#/definitions/componentRotate/minItems", keyword: "minItems", params: { limit: 1 }, message: "must NOT have fewer than 1 items" }];
4057
- return false;
4305
+ const _errs12 = errors;
4306
+ for (const key1 in data3) {
4307
+ if (!(((key1 === "min") || (key1 === "max")) || (key1 === "step"))) {
4308
+ validate180.errors = [{ instancePath: instancePath + "/rotate", schemaPath: "#/definitions/componentRotate/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key1 }, message: "must NOT have additional properties" }];
4309
+ return false;
4310
+ break;
4311
+ }
4058
4312
  }
4059
- else {
4060
- var valid3 = true;
4061
- const len0 = data3.length;
4062
- for (let i0 = 0; i0 < len0; i0++) {
4063
- let data4 = data3[i0];
4064
- const _errs12 = errors;
4065
- if (errors === _errs12) {
4313
+ if (_errs12 === errors) {
4314
+ if (data3.min !== undefined) {
4315
+ let data4 = data3.min;
4316
+ const _errs13 = errors;
4317
+ if (errors === _errs13) {
4066
4318
  if ((typeof data4 == "number") && (isFinite(data4))) {
4067
4319
  if (data4 > 360 || isNaN(data4)) {
4068
- validate179.errors = [{ instancePath: instancePath + "/rotate/" + i0, schemaPath: "#/definitions/componentRotate/items/maximum", keyword: "maximum", params: { comparison: "<=", limit: 360 }, message: "must be <= 360" }];
4320
+ validate180.errors = [{ instancePath: instancePath + "/rotate/min", schemaPath: "#/definitions/componentRotate/properties/min/maximum", keyword: "maximum", params: { comparison: "<=", limit: 360 }, message: "must be <= 360" }];
4069
4321
  return false;
4070
4322
  }
4071
4323
  else {
4072
4324
  if (data4 < -360 || isNaN(data4)) {
4073
- validate179.errors = [{ instancePath: instancePath + "/rotate/" + i0, schemaPath: "#/definitions/componentRotate/items/minimum", keyword: "minimum", params: { comparison: ">=", limit: -360 }, message: "must be >= -360" }];
4325
+ validate180.errors = [{ instancePath: instancePath + "/rotate/min", schemaPath: "#/definitions/componentRotate/properties/min/minimum", keyword: "minimum", params: { comparison: ">=", limit: -360 }, message: "must be >= -360" }];
4074
4326
  return false;
4075
4327
  }
4076
4328
  }
4077
4329
  }
4078
4330
  else {
4079
- validate179.errors = [{ instancePath: instancePath + "/rotate/" + i0, schemaPath: "#/definitions/componentRotate/items/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4331
+ validate180.errors = [{ instancePath: instancePath + "/rotate/min", schemaPath: "#/definitions/componentRotate/properties/min/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4080
4332
  return false;
4081
4333
  }
4082
4334
  }
4083
- var valid3 = _errs12 === errors;
4084
- if (!valid3) {
4085
- break;
4335
+ var valid3 = _errs13 === errors;
4336
+ }
4337
+ else {
4338
+ var valid3 = true;
4339
+ }
4340
+ if (valid3) {
4341
+ if (data3.max !== undefined) {
4342
+ let data5 = data3.max;
4343
+ const _errs15 = errors;
4344
+ if (errors === _errs15) {
4345
+ if ((typeof data5 == "number") && (isFinite(data5))) {
4346
+ if (data5 > 360 || isNaN(data5)) {
4347
+ validate180.errors = [{ instancePath: instancePath + "/rotate/max", schemaPath: "#/definitions/componentRotate/properties/max/maximum", keyword: "maximum", params: { comparison: "<=", limit: 360 }, message: "must be <= 360" }];
4348
+ return false;
4349
+ }
4350
+ else {
4351
+ if (data5 < -360 || isNaN(data5)) {
4352
+ validate180.errors = [{ instancePath: instancePath + "/rotate/max", schemaPath: "#/definitions/componentRotate/properties/max/minimum", keyword: "minimum", params: { comparison: ">=", limit: -360 }, message: "must be >= -360" }];
4353
+ return false;
4354
+ }
4355
+ }
4356
+ }
4357
+ else {
4358
+ validate180.errors = [{ instancePath: instancePath + "/rotate/max", schemaPath: "#/definitions/componentRotate/properties/max/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4359
+ return false;
4360
+ }
4361
+ }
4362
+ var valid3 = _errs15 === errors;
4363
+ }
4364
+ else {
4365
+ var valid3 = true;
4366
+ }
4367
+ if (valid3) {
4368
+ if (data3.step !== undefined) {
4369
+ let data6 = data3.step;
4370
+ const _errs17 = errors;
4371
+ if (errors === _errs17) {
4372
+ if ((typeof data6 == "number") && (isFinite(data6))) {
4373
+ if (data6 > 720 || isNaN(data6)) {
4374
+ validate180.errors = [{ instancePath: instancePath + "/rotate/step", schemaPath: "#/definitions/componentRotate/properties/step/maximum", keyword: "maximum", params: { comparison: "<=", limit: 720 }, message: "must be <= 720" }];
4375
+ return false;
4376
+ }
4377
+ else {
4378
+ if (data6 <= 0 || isNaN(data6)) {
4379
+ validate180.errors = [{ instancePath: instancePath + "/rotate/step", schemaPath: "#/definitions/componentRotate/properties/step/exclusiveMinimum", keyword: "exclusiveMinimum", params: { comparison: ">", limit: 0 }, message: "must be > 0" }];
4380
+ return false;
4381
+ }
4382
+ }
4383
+ }
4384
+ else {
4385
+ validate180.errors = [{ instancePath: instancePath + "/rotate/step", schemaPath: "#/definitions/componentRotate/properties/step/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4386
+ return false;
4387
+ }
4388
+ }
4389
+ var valid3 = _errs17 === errors;
4390
+ }
4391
+ else {
4392
+ var valid3 = true;
4393
+ }
4086
4394
  }
4087
4395
  }
4088
4396
  }
4089
4397
  }
4090
4398
  }
4091
4399
  else {
4092
- validate179.errors = [{ instancePath: instancePath + "/rotate", schemaPath: "#/definitions/componentRotate/type", keyword: "type", params: { type: "array" }, message: "must be array" }];
4400
+ validate180.errors = [{ instancePath: instancePath + "/rotate", schemaPath: "#/definitions/componentRotate/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
4093
4401
  return false;
4094
4402
  }
4095
4403
  }
@@ -4100,92 +4408,151 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
4100
4408
  }
4101
4409
  if (valid0) {
4102
4410
  if (data.scale !== undefined) {
4103
- let data5 = data.scale;
4104
- const _errs14 = errors;
4105
- const _errs15 = errors;
4106
- if (errors === _errs15) {
4107
- if (Array.isArray(data5)) {
4108
- if (data5.length > 2) {
4109
- validate179.errors = [{ instancePath: instancePath + "/scale", schemaPath: "#/definitions/componentScale/maxItems", keyword: "maxItems", params: { limit: 2 }, message: "must NOT have more than 2 items" }];
4411
+ let data7 = data.scale;
4412
+ const _errs19 = errors;
4413
+ const _errs20 = errors;
4414
+ if (errors === _errs20) {
4415
+ if (data7 && typeof data7 == "object" && !Array.isArray(data7)) {
4416
+ let missing2;
4417
+ if (((data7.min === undefined) && (missing2 = "min")) || ((data7.max === undefined) && (missing2 = "max"))) {
4418
+ validate180.errors = [{ instancePath: instancePath + "/scale", schemaPath: "#/definitions/componentScale/required", keyword: "required", params: { missingProperty: missing2 }, message: "must have required property '" + missing2 + "'" }];
4110
4419
  return false;
4111
4420
  }
4112
4421
  else {
4113
- if (data5.length < 1) {
4114
- validate179.errors = [{ instancePath: instancePath + "/scale", schemaPath: "#/definitions/componentScale/minItems", keyword: "minItems", params: { limit: 1 }, message: "must NOT have fewer than 1 items" }];
4115
- return false;
4422
+ const _errs22 = errors;
4423
+ for (const key2 in data7) {
4424
+ if (!(((key2 === "min") || (key2 === "max")) || (key2 === "step"))) {
4425
+ validate180.errors = [{ instancePath: instancePath + "/scale", schemaPath: "#/definitions/componentScale/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key2 }, message: "must NOT have additional properties" }];
4426
+ return false;
4427
+ break;
4428
+ }
4116
4429
  }
4117
- else {
4118
- var valid5 = true;
4119
- const len1 = data5.length;
4120
- for (let i1 = 0; i1 < len1; i1++) {
4121
- let data6 = data5[i1];
4122
- const _errs17 = errors;
4123
- if (errors === _errs17) {
4124
- if ((typeof data6 == "number") && (isFinite(data6))) {
4125
- if (data6 > 10 || isNaN(data6)) {
4126
- validate179.errors = [{ instancePath: instancePath + "/scale/" + i1, schemaPath: "#/definitions/componentScale/items/maximum", keyword: "maximum", params: { comparison: "<=", limit: 10 }, message: "must be <= 10" }];
4430
+ if (_errs22 === errors) {
4431
+ if (data7.min !== undefined) {
4432
+ let data8 = data7.min;
4433
+ const _errs23 = errors;
4434
+ if (errors === _errs23) {
4435
+ if ((typeof data8 == "number") && (isFinite(data8))) {
4436
+ if (data8 > 10 || isNaN(data8)) {
4437
+ validate180.errors = [{ instancePath: instancePath + "/scale/min", schemaPath: "#/definitions/componentScale/properties/min/maximum", keyword: "maximum", params: { comparison: "<=", limit: 10 }, message: "must be <= 10" }];
4127
4438
  return false;
4128
4439
  }
4129
4440
  else {
4130
- if (data6 < 0 || isNaN(data6)) {
4131
- validate179.errors = [{ instancePath: instancePath + "/scale/" + i1, schemaPath: "#/definitions/componentScale/items/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }];
4441
+ if (data8 < 0 || isNaN(data8)) {
4442
+ validate180.errors = [{ instancePath: instancePath + "/scale/min", schemaPath: "#/definitions/componentScale/properties/min/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }];
4132
4443
  return false;
4133
4444
  }
4134
4445
  }
4135
4446
  }
4136
4447
  else {
4137
- validate179.errors = [{ instancePath: instancePath + "/scale/" + i1, schemaPath: "#/definitions/componentScale/items/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4448
+ validate180.errors = [{ instancePath: instancePath + "/scale/min", schemaPath: "#/definitions/componentScale/properties/min/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4138
4449
  return false;
4139
4450
  }
4140
4451
  }
4141
- var valid5 = _errs17 === errors;
4142
- if (!valid5) {
4143
- break;
4452
+ var valid5 = _errs23 === errors;
4453
+ }
4454
+ else {
4455
+ var valid5 = true;
4456
+ }
4457
+ if (valid5) {
4458
+ if (data7.max !== undefined) {
4459
+ let data9 = data7.max;
4460
+ const _errs25 = errors;
4461
+ if (errors === _errs25) {
4462
+ if ((typeof data9 == "number") && (isFinite(data9))) {
4463
+ if (data9 > 10 || isNaN(data9)) {
4464
+ validate180.errors = [{ instancePath: instancePath + "/scale/max", schemaPath: "#/definitions/componentScale/properties/max/maximum", keyword: "maximum", params: { comparison: "<=", limit: 10 }, message: "must be <= 10" }];
4465
+ return false;
4466
+ }
4467
+ else {
4468
+ if (data9 < 0 || isNaN(data9)) {
4469
+ validate180.errors = [{ instancePath: instancePath + "/scale/max", schemaPath: "#/definitions/componentScale/properties/max/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }];
4470
+ return false;
4471
+ }
4472
+ }
4473
+ }
4474
+ else {
4475
+ validate180.errors = [{ instancePath: instancePath + "/scale/max", schemaPath: "#/definitions/componentScale/properties/max/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4476
+ return false;
4477
+ }
4478
+ }
4479
+ var valid5 = _errs25 === errors;
4480
+ }
4481
+ else {
4482
+ var valid5 = true;
4483
+ }
4484
+ if (valid5) {
4485
+ if (data7.step !== undefined) {
4486
+ let data10 = data7.step;
4487
+ const _errs27 = errors;
4488
+ if (errors === _errs27) {
4489
+ if ((typeof data10 == "number") && (isFinite(data10))) {
4490
+ if (data10 > 10 || isNaN(data10)) {
4491
+ validate180.errors = [{ instancePath: instancePath + "/scale/step", schemaPath: "#/definitions/componentScale/properties/step/maximum", keyword: "maximum", params: { comparison: "<=", limit: 10 }, message: "must be <= 10" }];
4492
+ return false;
4493
+ }
4494
+ else {
4495
+ if (data10 <= 0 || isNaN(data10)) {
4496
+ validate180.errors = [{ instancePath: instancePath + "/scale/step", schemaPath: "#/definitions/componentScale/properties/step/exclusiveMinimum", keyword: "exclusiveMinimum", params: { comparison: ">", limit: 0 }, message: "must be > 0" }];
4497
+ return false;
4498
+ }
4499
+ }
4500
+ }
4501
+ else {
4502
+ validate180.errors = [{ instancePath: instancePath + "/scale/step", schemaPath: "#/definitions/componentScale/properties/step/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4503
+ return false;
4504
+ }
4505
+ }
4506
+ var valid5 = _errs27 === errors;
4507
+ }
4508
+ else {
4509
+ var valid5 = true;
4510
+ }
4144
4511
  }
4145
4512
  }
4146
4513
  }
4147
4514
  }
4148
4515
  }
4149
4516
  else {
4150
- validate179.errors = [{ instancePath: instancePath + "/scale", schemaPath: "#/definitions/componentScale/type", keyword: "type", params: { type: "array" }, message: "must be array" }];
4517
+ validate180.errors = [{ instancePath: instancePath + "/scale", schemaPath: "#/definitions/componentScale/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
4151
4518
  return false;
4152
4519
  }
4153
4520
  }
4154
- var valid0 = _errs14 === errors;
4521
+ var valid0 = _errs19 === errors;
4155
4522
  }
4156
4523
  else {
4157
4524
  var valid0 = true;
4158
4525
  }
4159
4526
  if (valid0) {
4160
4527
  if (data.translate !== undefined) {
4161
- const _errs19 = errors;
4162
- if (!(validate180(data.translate, { instancePath: instancePath + "/translate", parentData: data, parentDataProperty: "translate", rootData }))) {
4163
- vErrors = vErrors === null ? validate180.errors : vErrors.concat(validate180.errors);
4528
+ const _errs29 = errors;
4529
+ if (!(validate181(data.translate, { instancePath: instancePath + "/translate", parentData: data, parentDataProperty: "translate", rootData }))) {
4530
+ vErrors = vErrors === null ? validate181.errors : vErrors.concat(validate181.errors);
4164
4531
  errors = vErrors.length;
4165
4532
  }
4166
- var valid0 = _errs19 === errors;
4533
+ var valid0 = _errs29 === errors;
4167
4534
  }
4168
4535
  else {
4169
4536
  var valid0 = true;
4170
4537
  }
4171
4538
  if (valid0) {
4172
4539
  if (data.variants !== undefined) {
4173
- let data8 = data.variants;
4174
- const _errs20 = errors;
4175
- if (errors === _errs20) {
4176
- if (data8 && typeof data8 == "object" && !Array.isArray(data8)) {
4177
- if (Object.keys(data8).length > 512) {
4178
- validate179.errors = [{ instancePath: instancePath + "/variants", schemaPath: "#/properties/variants/maxProperties", keyword: "maxProperties", params: { limit: 512 }, message: "must NOT have more than 512 properties" }];
4540
+ let data12 = data.variants;
4541
+ const _errs30 = errors;
4542
+ if (errors === _errs30) {
4543
+ if (data12 && typeof data12 == "object" && !Array.isArray(data12)) {
4544
+ if (Object.keys(data12).length > 512) {
4545
+ validate180.errors = [{ instancePath: instancePath + "/variants", schemaPath: "#/properties/variants/maxProperties", keyword: "maxProperties", params: { limit: 512 }, message: "must NOT have more than 512 properties" }];
4179
4546
  return false;
4180
4547
  }
4181
4548
  else {
4182
- for (const key1 in data8) {
4183
- const _errs22 = errors;
4184
- const _errs23 = errors;
4185
- if (errors === _errs23) {
4186
- if (typeof key1 === "string") {
4187
- if (func2(key1) > 64) {
4188
- const err0 = { instancePath: instancePath + "/variants", schemaPath: "#/definitions/camelCaseName/maxLength", keyword: "maxLength", params: { limit: 64 }, message: "must NOT have more than 64 characters", propertyName: key1 };
4549
+ for (const key3 in data12) {
4550
+ const _errs32 = errors;
4551
+ const _errs33 = errors;
4552
+ if (errors === _errs33) {
4553
+ if (typeof key3 === "string") {
4554
+ if (func2(key3) > 64) {
4555
+ const err0 = { instancePath: instancePath + "/variants", schemaPath: "#/definitions/camelCaseName/maxLength", keyword: "maxLength", params: { limit: 64 }, message: "must NOT have more than 64 characters", propertyName: key3 };
4189
4556
  if (vErrors === null) {
4190
4557
  vErrors = [err0];
4191
4558
  }
@@ -4195,8 +4562,8 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
4195
4562
  errors++;
4196
4563
  }
4197
4564
  else {
4198
- if (!pattern10.test(key1)) {
4199
- const err1 = { instancePath: instancePath + "/variants", schemaPath: "#/definitions/camelCaseName/pattern", keyword: "pattern", params: { pattern: "^[a-z][a-zA-Z0-9]*$" }, message: "must match pattern \"" + "^[a-z][a-zA-Z0-9]*$" + "\"", propertyName: key1 };
4565
+ if (!pattern10.test(key3)) {
4566
+ const err1 = { instancePath: instancePath + "/variants", schemaPath: "#/definitions/camelCaseName/pattern", keyword: "pattern", params: { pattern: "^[a-z][a-zA-Z0-9]*$" }, message: "must match pattern \"" + "^[a-z][a-zA-Z0-9]*$" + "\"", propertyName: key3 };
4200
4567
  if (vErrors === null) {
4201
4568
  vErrors = [err1];
4202
4569
  }
@@ -4208,7 +4575,7 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
4208
4575
  }
4209
4576
  }
4210
4577
  else {
4211
- const err2 = { instancePath: instancePath + "/variants", schemaPath: "#/definitions/camelCaseName/type", keyword: "type", params: { type: "string" }, message: "must be string", propertyName: key1 };
4578
+ const err2 = { instancePath: instancePath + "/variants", schemaPath: "#/definitions/camelCaseName/type", keyword: "type", params: { type: "string" }, message: "must be string", propertyName: key3 };
4212
4579
  if (vErrors === null) {
4213
4580
  vErrors = [err2];
4214
4581
  }
@@ -4218,9 +4585,9 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
4218
4585
  errors++;
4219
4586
  }
4220
4587
  }
4221
- var valid6 = _errs22 === errors;
4588
+ var valid6 = _errs32 === errors;
4222
4589
  if (!valid6) {
4223
- const err3 = { instancePath: instancePath + "/variants", schemaPath: "#/properties/variants/propertyNames", keyword: "propertyNames", params: { propertyName: key1 }, message: "property name must be valid" };
4590
+ const err3 = { instancePath: instancePath + "/variants", schemaPath: "#/properties/variants/propertyNames", keyword: "propertyNames", params: { propertyName: key3 }, message: "property name must be valid" };
4224
4591
  if (vErrors === null) {
4225
4592
  vErrors = [err3];
4226
4593
  }
@@ -4228,51 +4595,51 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
4228
4595
  vErrors.push(err3);
4229
4596
  }
4230
4597
  errors++;
4231
- validate179.errors = vErrors;
4598
+ validate180.errors = vErrors;
4232
4599
  return false;
4233
4600
  break;
4234
4601
  }
4235
4602
  }
4236
4603
  if (valid6) {
4237
- for (const key2 in data8) {
4238
- let data9 = data8[key2];
4239
- const _errs26 = errors;
4240
- if (errors === _errs26) {
4241
- if (data9 && typeof data9 == "object" && !Array.isArray(data9)) {
4242
- let missing1;
4243
- if ((data9.elements === undefined) && (missing1 = "elements")) {
4244
- validate179.errors = [{ instancePath: instancePath + "/variants/" + key2.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/variants/additionalProperties/required", keyword: "required", params: { missingProperty: missing1 }, message: "must have required property '" + missing1 + "'" }];
4604
+ for (const key4 in data12) {
4605
+ let data13 = data12[key4];
4606
+ const _errs36 = errors;
4607
+ if (errors === _errs36) {
4608
+ if (data13 && typeof data13 == "object" && !Array.isArray(data13)) {
4609
+ let missing3;
4610
+ if ((data13.elements === undefined) && (missing3 = "elements")) {
4611
+ validate180.errors = [{ instancePath: instancePath + "/variants/" + key4.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/variants/additionalProperties/required", keyword: "required", params: { missingProperty: missing3 }, message: "must have required property '" + missing3 + "'" }];
4245
4612
  return false;
4246
4613
  }
4247
4614
  else {
4248
- const _errs28 = errors;
4249
- for (const key3 in data9) {
4250
- if (!((key3 === "elements") || (key3 === "weight"))) {
4251
- validate179.errors = [{ instancePath: instancePath + "/variants/" + key2.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/variants/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key3 }, message: "must NOT have additional properties" }];
4615
+ const _errs38 = errors;
4616
+ for (const key5 in data13) {
4617
+ if (!((key5 === "elements") || (key5 === "weight"))) {
4618
+ validate180.errors = [{ instancePath: instancePath + "/variants/" + key4.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/variants/additionalProperties/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key5 }, message: "must NOT have additional properties" }];
4252
4619
  return false;
4253
4620
  break;
4254
4621
  }
4255
4622
  }
4256
- if (_errs28 === errors) {
4257
- if (data9.elements !== undefined) {
4258
- let data10 = data9.elements;
4259
- const _errs29 = errors;
4260
- if (errors === _errs29) {
4261
- if (Array.isArray(data10)) {
4262
- if (data10.length > 1024) {
4263
- validate179.errors = [{ instancePath: instancePath + "/variants/" + key2.replace(/~/g, "~0").replace(/\//g, "~1") + "/elements", schemaPath: "#/properties/variants/additionalProperties/properties/elements/maxItems", keyword: "maxItems", params: { limit: 1024 }, message: "must NOT have more than 1024 items" }];
4623
+ if (_errs38 === errors) {
4624
+ if (data13.elements !== undefined) {
4625
+ let data14 = data13.elements;
4626
+ const _errs39 = errors;
4627
+ if (errors === _errs39) {
4628
+ if (Array.isArray(data14)) {
4629
+ if (data14.length > 1024) {
4630
+ validate180.errors = [{ instancePath: instancePath + "/variants/" + key4.replace(/~/g, "~0").replace(/\//g, "~1") + "/elements", schemaPath: "#/properties/variants/additionalProperties/properties/elements/maxItems", keyword: "maxItems", params: { limit: 1024 }, message: "must NOT have more than 1024 items" }];
4264
4631
  return false;
4265
4632
  }
4266
4633
  else {
4267
4634
  var valid10 = true;
4268
- const len2 = data10.length;
4269
- for (let i2 = 0; i2 < len2; i2++) {
4270
- const _errs31 = errors;
4271
- if (!(validate166(data10[i2], { instancePath: instancePath + "/variants/" + key2.replace(/~/g, "~0").replace(/\//g, "~1") + "/elements/" + i2, parentData: data10, parentDataProperty: i2, rootData }))) {
4635
+ const len0 = data14.length;
4636
+ for (let i0 = 0; i0 < len0; i0++) {
4637
+ const _errs41 = errors;
4638
+ if (!(validate166(data14[i0], { instancePath: instancePath + "/variants/" + key4.replace(/~/g, "~0").replace(/\//g, "~1") + "/elements/" + i0, parentData: data14, parentDataProperty: i0, rootData }))) {
4272
4639
  vErrors = vErrors === null ? validate166.errors : vErrors.concat(validate166.errors);
4273
4640
  errors = vErrors.length;
4274
4641
  }
4275
- var valid10 = _errs31 === errors;
4642
+ var valid10 = _errs41 === errors;
4276
4643
  if (!valid10) {
4277
4644
  break;
4278
4645
  }
@@ -4280,38 +4647,38 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
4280
4647
  }
4281
4648
  }
4282
4649
  else {
4283
- validate179.errors = [{ instancePath: instancePath + "/variants/" + key2.replace(/~/g, "~0").replace(/\//g, "~1") + "/elements", schemaPath: "#/properties/variants/additionalProperties/properties/elements/type", keyword: "type", params: { type: "array" }, message: "must be array" }];
4650
+ validate180.errors = [{ instancePath: instancePath + "/variants/" + key4.replace(/~/g, "~0").replace(/\//g, "~1") + "/elements", schemaPath: "#/properties/variants/additionalProperties/properties/elements/type", keyword: "type", params: { type: "array" }, message: "must be array" }];
4284
4651
  return false;
4285
4652
  }
4286
4653
  }
4287
- var valid9 = _errs29 === errors;
4654
+ var valid9 = _errs39 === errors;
4288
4655
  }
4289
4656
  else {
4290
4657
  var valid9 = true;
4291
4658
  }
4292
4659
  if (valid9) {
4293
- if (data9.weight !== undefined) {
4294
- let data12 = data9.weight;
4295
- const _errs32 = errors;
4296
- if (errors === _errs32) {
4297
- if ((typeof data12 == "number") && (isFinite(data12))) {
4298
- if (data12 > 1000000 || isNaN(data12)) {
4299
- validate179.errors = [{ instancePath: instancePath + "/variants/" + key2.replace(/~/g, "~0").replace(/\//g, "~1") + "/weight", schemaPath: "#/properties/variants/additionalProperties/properties/weight/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1000000 }, message: "must be <= 1000000" }];
4660
+ if (data13.weight !== undefined) {
4661
+ let data16 = data13.weight;
4662
+ const _errs42 = errors;
4663
+ if (errors === _errs42) {
4664
+ if ((typeof data16 == "number") && (isFinite(data16))) {
4665
+ if (data16 > 1000000 || isNaN(data16)) {
4666
+ validate180.errors = [{ instancePath: instancePath + "/variants/" + key4.replace(/~/g, "~0").replace(/\//g, "~1") + "/weight", schemaPath: "#/properties/variants/additionalProperties/properties/weight/maximum", keyword: "maximum", params: { comparison: "<=", limit: 1000000 }, message: "must be <= 1000000" }];
4300
4667
  return false;
4301
4668
  }
4302
4669
  else {
4303
- if (data12 < 0 || isNaN(data12)) {
4304
- validate179.errors = [{ instancePath: instancePath + "/variants/" + key2.replace(/~/g, "~0").replace(/\//g, "~1") + "/weight", schemaPath: "#/properties/variants/additionalProperties/properties/weight/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }];
4670
+ if (data16 < 0 || isNaN(data16)) {
4671
+ validate180.errors = [{ instancePath: instancePath + "/variants/" + key4.replace(/~/g, "~0").replace(/\//g, "~1") + "/weight", schemaPath: "#/properties/variants/additionalProperties/properties/weight/minimum", keyword: "minimum", params: { comparison: ">=", limit: 0 }, message: "must be >= 0" }];
4305
4672
  return false;
4306
4673
  }
4307
4674
  }
4308
4675
  }
4309
4676
  else {
4310
- validate179.errors = [{ instancePath: instancePath + "/variants/" + key2.replace(/~/g, "~0").replace(/\//g, "~1") + "/weight", schemaPath: "#/properties/variants/additionalProperties/properties/weight/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4677
+ validate180.errors = [{ instancePath: instancePath + "/variants/" + key4.replace(/~/g, "~0").replace(/\//g, "~1") + "/weight", schemaPath: "#/properties/variants/additionalProperties/properties/weight/type", keyword: "type", params: { type: "number" }, message: "must be number" }];
4311
4678
  return false;
4312
4679
  }
4313
4680
  }
4314
- var valid9 = _errs32 === errors;
4681
+ var valid9 = _errs42 === errors;
4315
4682
  }
4316
4683
  else {
4317
4684
  var valid9 = true;
@@ -4321,11 +4688,11 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
4321
4688
  }
4322
4689
  }
4323
4690
  else {
4324
- validate179.errors = [{ instancePath: instancePath + "/variants/" + key2.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/variants/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
4691
+ validate180.errors = [{ instancePath: instancePath + "/variants/" + key4.replace(/~/g, "~0").replace(/\//g, "~1"), schemaPath: "#/properties/variants/additionalProperties/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
4325
4692
  return false;
4326
4693
  }
4327
4694
  }
4328
- var valid8 = _errs26 === errors;
4695
+ var valid8 = _errs36 === errors;
4329
4696
  if (!valid8) {
4330
4697
  break;
4331
4698
  }
@@ -4334,11 +4701,11 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
4334
4701
  }
4335
4702
  }
4336
4703
  else {
4337
- validate179.errors = [{ instancePath: instancePath + "/variants", schemaPath: "#/properties/variants/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
4704
+ validate180.errors = [{ instancePath: instancePath + "/variants", schemaPath: "#/properties/variants/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
4338
4705
  return false;
4339
4706
  }
4340
4707
  }
4341
- var valid0 = _errs20 === errors;
4708
+ var valid0 = _errs30 === errors;
4342
4709
  }
4343
4710
  else {
4344
4711
  var valid0 = true;
@@ -4353,23 +4720,23 @@ function validate179(data, { instancePath = "", parentData, parentDataProperty,
4353
4720
  }
4354
4721
  }
4355
4722
  else {
4356
- validate179.errors = [{ instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
4723
+ validate180.errors = [{ instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
4357
4724
  return false;
4358
4725
  }
4359
- } validate179.errors = vErrors; return errors === 0; }
4726
+ } validate180.errors = vErrors; return errors === 0; }
4360
4727
  const schema41 = { "description": "An alias that inherits its dimensions, variants, and transforms from another component referenced by `extends`. Aliases have no per-instance overrides — they are pure references.", "type": "object", "properties": { "extends": { "description": "The name of an existing, non-alias component in this `components` map.", "$ref": "#/definitions/componentName" } }, "required": ["extends"], "additionalProperties": false };
4361
- function validate184(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {
4728
+ function validate185(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { let vErrors = null; let errors = 0; if (errors === 0) {
4362
4729
  if (data && typeof data == "object" && !Array.isArray(data)) {
4363
4730
  let missing0;
4364
4731
  if ((data.extends === undefined) && (missing0 = "extends")) {
4365
- validate184.errors = [{ instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: missing0 }, message: "must have required property '" + missing0 + "'" }];
4732
+ validate185.errors = [{ instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: missing0 }, message: "must have required property '" + missing0 + "'" }];
4366
4733
  return false;
4367
4734
  }
4368
4735
  else {
4369
4736
  const _errs1 = errors;
4370
4737
  for (const key0 in data) {
4371
4738
  if (!(key0 === "extends")) {
4372
- validate184.errors = [{ instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
4739
+ validate185.errors = [{ instancePath, schemaPath: "#/additionalProperties", keyword: "additionalProperties", params: { additionalProperty: key0 }, message: "must NOT have additional properties" }];
4373
4740
  return false;
4374
4741
  break;
4375
4742
  }
@@ -4385,11 +4752,11 @@ function validate184(data, { instancePath = "", parentData, parentDataProperty,
4385
4752
  }
4386
4753
  }
4387
4754
  else {
4388
- validate184.errors = [{ instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
4755
+ validate185.errors = [{ instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" }];
4389
4756
  return false;
4390
4757
  }
4391
- } validate184.errors = vErrors; return errors === 0; }
4392
- function validate10(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { /*# sourceURL="https://cdn.hopjs.net/npm/@dicebear/schema@0.14.1/dist/definition.min.json" */ ; let vErrors = null; let errors = 0; if (errors === 0) {
4758
+ } validate185.errors = vErrors; return errors === 0; }
4759
+ function validate10(data, { instancePath = "", parentData, parentDataProperty, rootData = data } = {}) { /*# sourceURL="https://cdn.hopjs.net/npm/@dicebear/schema@1.0.0/dist/definition.min.json" */ ; let vErrors = null; let errors = 0; if (errors === 0) {
4393
4760
  if (data && typeof data == "object" && !Array.isArray(data)) {
4394
4761
  let missing0;
4395
4762
  if ((data.canvas === undefined) && (missing0 = "canvas")) {
@@ -4943,16 +5310,16 @@ function validate10(data, { instancePath = "", parentData, parentDataProperty, r
4943
5310
  const _errs55 = errors;
4944
5311
  let valid13 = false;
4945
5312
  const _errs56 = errors;
4946
- if (!(validate179(data21, { instancePath: instancePath + "/components/" + key7.replace(/~/g, "~0").replace(/\//g, "~1"), parentData: data20, parentDataProperty: key7, rootData }))) {
4947
- vErrors = vErrors === null ? validate179.errors : vErrors.concat(validate179.errors);
5313
+ if (!(validate180(data21, { instancePath: instancePath + "/components/" + key7.replace(/~/g, "~0").replace(/\//g, "~1"), parentData: data20, parentDataProperty: key7, rootData }))) {
5314
+ vErrors = vErrors === null ? validate180.errors : vErrors.concat(validate180.errors);
4948
5315
  errors = vErrors.length;
4949
5316
  }
4950
5317
  var _valid0 = _errs56 === errors;
4951
5318
  valid13 = valid13 || _valid0;
4952
5319
  if (!valid13) {
4953
5320
  const _errs57 = errors;
4954
- if (!(validate184(data21, { instancePath: instancePath + "/components/" + key7.replace(/~/g, "~0").replace(/\//g, "~1"), parentData: data20, parentDataProperty: key7, rootData }))) {
4955
- vErrors = vErrors === null ? validate184.errors : vErrors.concat(validate184.errors);
5321
+ if (!(validate185(data21, { instancePath: instancePath + "/components/" + key7.replace(/~/g, "~0").replace(/\//g, "~1"), parentData: data20, parentDataProperty: key7, rootData }))) {
5322
+ vErrors = vErrors === null ? validate185.errors : vErrors.concat(validate185.errors);
4956
5323
  errors = vErrors.length;
4957
5324
  }
4958
5325
  var _valid0 = _errs57 === errors;
@@ -5113,7 +5480,7 @@ function validate10(data, { instancePath = "", parentData, parentDataProperty, r
5113
5480
  return false;
5114
5481
  }
5115
5482
  else {
5116
- if (!pattern32.test(data25)) {
5483
+ if (!pattern35.test(data25)) {
5117
5484
  validate10.errors = [{ instancePath: instancePath + "/colors/" + key9.replace(/~/g, "~0").replace(/\//g, "~1") + "/values/" + i1, schemaPath: "#/definitions/hexColor/pattern", keyword: "pattern", params: { pattern: "^#([a-fA-F0-9]{3}|[a-fA-F0-9]{4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$" }, message: "must match pattern \"" + "^#([a-fA-F0-9]{3}|[a-fA-F0-9]{4}|[a-fA-F0-9]{6}|[a-fA-F0-9]{8})$" + "\"" }];
5118
5485
  return false;
5119
5486
  }