diff --git a/.github/ISSUE_TEMPLATE/01-material.yml b/.github/ISSUE_TEMPLATE/01-material.yml new file mode 100644 index 0000000..acebc3e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/01-material.yml @@ -0,0 +1,81 @@ +name: New Material +description: Suggest a new material. +title: "[Material]: " + +body: + - type: input + id: name + attributes: + label: Name + description: Name of the material. + placeholder: Water + validations: + required: true + + - type: input + id: color + attributes: + label: Color + description: Color value in sRGB Linear color space. Specifies the diffuse or metallic reflectance color, or in the case of a transparent material, transmission color. + placeholder: 1.0, 1.0, 1.0 + validations: + required: true + + - type: input + id: ior + attributes: + label: Index of Refraction + description: Index of refraction of the material. + placeholder: 1.33 + + - type: input + id: density + attributes: + label: Density + description: Density measured in kg/m3. If there's no variation, only one value should be specified. A range can be specified with two values. A third value can be added to specify the most common density. + placeholder: 958, 1000, 1000 + + - type: input + id: viscosity + attributes: + label: Viscosity + description: Dynamic viscosity measured in millipascal-seconds (mPa⋅s) at a temperature of 20°C. 1 mPa⋅s (millipascal-second) = 1 cP (centipoise). If there's no variation, only one value should be specified. A range can be specified with two values. A third value can be added to specify the most common viscosity. + placeholder: 1.002 + + - type: input + id: surface-tension + attributes: + label: Surface Tension + description: Surface tension measured in millinewton per meter (mN/m) at a temperature of 20°C. 1 mN/m = 1 dyn/cm. + placeholder: 72 + + - type: textarea + id: description + attributes: + label: Description + description: Any additional information that can be useful when rendering this material. + placeholder: While relatively small quantities of water appear to be colorless, pure water has a slight blue color that becomes deeper as the thickness of the observed sample increases beyond 50 cm. + + - type: input + id: reference1 + attributes: + label: Reference + description: Link to a reference where the information comes from. + placeholder: https://refractiveindex.info/?shelf=main&book=H2O&page=Daimon-21.5C + validations: + required: true + + - type: input + id: reference2 + attributes: + label: Additional Reference + description: Link to another reference, if available. + placeholder: https://en.wikipedia.org/w/index.php?title=Color_of_water&oldid=1273446338 + + - type: upload + id: spectrum + attributes: + label: Spectral Data + description: If spectral data is available, please upload a file with the data. + validations: + accept: ".txt,.csv,.json" \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/02-lightsource.yml b/.github/ISSUE_TEMPLATE/02-lightsource.yml new file mode 100644 index 0000000..b91f40f --- /dev/null +++ b/.github/ISSUE_TEMPLATE/02-lightsource.yml @@ -0,0 +1,94 @@ +name: New Light Source +description: Suggest a new light source. +title: "[Light Source]: " + +body: + - type: input + id: name + attributes: + label: Name + description: Name of the light source. + placeholder: Fluorescent Tube Light + validations: + required: true + + - type: input + id: temperature + attributes: + label: Color Temperature + description: The typical range of color temperature in Kelvin, if color lies near the Planckian curve (within 0.005 Duv). If too far off, temperature shouldn't be specified. A range can be specified with two values. A third value can be added to specify the most common temperature. + placeholder: 2700, 6500, 4500 + + - type: input + id: color + attributes: + label: Color + description: Color of the light source. + placeholder: 1.0, 0.415, 0.099 + + - type: input + id: intensity + attributes: + label: Intensity + description: Intensity of the light emitted from the light source. If there's no variation, only one value should be specified. A range can be specified with two values. A third value can be added to specify the most common intensity. + placeholder: 500, 5000, 3000 + validations: + required: true + + - type: dropdown + id: unit + attributes: + label: Unit + description: The unit of measurement of the intensity of the light. In the case of lux, it should be converted to lumen, unless it's a directional light such as the sun or the moon. + options: + - Lumen (lm) + - Lux (lx) + - Nits (cd/m2) + default: 0 + validations: + required: true + + - type: input + id: angle + attributes: + label: Angle + description: The maximum beam angle in degrees. + placeholder: 90 + + - type: input + id: size + attributes: + label: Source Size + description: The size of the light source in centimeters. [Radius] if point or spot. [Width, Height] if surface. [Radius, Length] if cylinder. + placeholder: 1.5, 60 + + - type: textarea + id: description + attributes: + label: Description + description: Any additional information that can be useful when rendering this light source. + placeholder: The changing color of the Sun over the course of the day is mainly a result of the scattering of sunlight and is not due to changes in black-body radiation. + + - type: input + id: reference1 + attributes: + label: Reference + description: Link to a reference where the information comes from. + placeholder: https://en.wikipedia.org/w/index.php?title=Color_temperature&oldid=1272808359#The_Sun + validations: + required: true + + - type: input + id: reference2 + attributes: + label: Additional Reference + description: Link to another reference, if available. + placeholder: https://stjarnhimlen.se/comp/radfaq.html#10 + + - type: upload + id: spectrum + attributes: + label: Spectral Data + description: If spectral data is available, please upload a file with the data. + validations: + accept: ".txt,.csv,.json" \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/03-camera.yml b/.github/ISSUE_TEMPLATE/03-camera.yml new file mode 100644 index 0000000..03fe4f5 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/03-camera.yml @@ -0,0 +1,53 @@ +name: New Camera +description: Suggest a new camera. +title: "[Camera]: " + +body: + - type: input + id: make + attributes: + label: Make + description: Brand name. + placeholder: Arri + validations: + required: true + + - type: input + id: model + attributes: + label: Model + description: Model name. + placeholder: Alexa 35 + validations: + required: true + + - type: textarea + id: description + attributes: + label: Description + description: Any additional information that can be useful when rendering with this camera. + placeholder: Description. + + - type: input + id: reference1 + attributes: + label: Reference + description: Link to a reference where the information comes from. + placeholder: https://www.arri.com/resource/blob/296424/88454a5a3dee9fe1d3fd68e75aa3411e/alexa-35-recording-format-poster-data.pdf + validations: + required: true + + - type: input + id: reference2 + attributes: + label: Additional Reference + description: Link to another reference, if available. + placeholder: https://www.arri.com/resource/blob/390890/ad7422b94b9d7acbda1327d6df8c83a3/2025-02-arri-formatsandresolutionsoverview-v6-0-data.pdf + + - type: upload + id: spectrum + attributes: + label: Spectral Data + description: If spectral data is available, please upload a file with the data. + validations: + accept: ".txt,.csv,.json" \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/04-lens.yml b/.github/ISSUE_TEMPLATE/04-lens.yml new file mode 100644 index 0000000..5495eca --- /dev/null +++ b/.github/ISSUE_TEMPLATE/04-lens.yml @@ -0,0 +1,86 @@ +name: New Lens +description: Suggest a new lens. +title: "[Lens]: " + +body: + - type: input + id: make + attributes: + label: Make + description: Brand name. + placeholder: Cooke + validations: + required: true + + - type: input + id: model + attributes: + label: Model + description: Model name. + placeholder: Varotal/i FF 30-95mm + validations: + required: true + + - type: input + id: focal-length + attributes: + label: Focal Length + description: Min and max focal length in millimeters. If it's a prime lens, only set one value. + placeholder: 30, 95 + validations: + required: true + + - type: input + id: aperture + attributes: + label: Aperture + description: Max and min aperture size. + placeholder: 2.9, 22 + validations: + required: true + + - type: input + id: blades + attributes: + label: Blades + description: Number of diaphragm blades. + placeholder: 9 + validations: + required: true + + - type: input + id: close-focus + attributes: + label: Close Focus + description: Shortest distance from the sensor to the subject that the lens can achieve focus. Specified in centimeters. + placeholder: 80 + + - type: input + id: squeeze-factor + attributes: + label: Squeeze Factor + description: The squeeze factor of an anamorphic lens. + placeholder: 1.8 + + - type: textarea + id: description + attributes: + label: Description + description: Any additional information that can be useful when rendering with this lens. + placeholder: Description. + + - type: input + id: reference1 + attributes: + label: Reference + description: Link to a reference where the information comes from. + placeholder: https://cookeoptics.com/lens/varotal-i-ff/ + validations: + required: true + + - type: input + id: reference2 + attributes: + label: Additional Reference + description: Link to another reference, if available. + placeholder: https://cookeoptics.com/lens/varotal-i-ff/ \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/05-correction.yml b/.github/ISSUE_TEMPLATE/05-correction.yml new file mode 100644 index 0000000..de15135 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/05-correction.yml @@ -0,0 +1,26 @@ +name: Correction +description: Suggest a correction to an existing asset. +title: "[Correction]: " + +body: + - type: dropdown + id: version + attributes: + label: Version + description: What type of asset does this relate to? + options: + - Material + - Light Source + - Camera + - Lens + default: 0 + validations: + required: true + - type: textarea + id: description + attributes: + label: Description + description: Describe what needs to be corrected. It can be feedback about terminology, or accuracy, for example. + placeholder: Description. + validations: + required: true \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/06-feature.yml b/.github/ISSUE_TEMPLATE/06-feature.yml new file mode 100644 index 0000000..09914a8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/06-feature.yml @@ -0,0 +1,13 @@ +name: Feature +description: Suggest a feature or improvement. +title: "[Feature]: " + +body: + - type: textarea + id: description + attributes: + label: Description + description: Describe what kind of functionality you're missing in the API. Please be aware that this only applies to the database, and not the physicallybased.info website. + placeholder: Description. + validations: + required: true \ No newline at end of file diff --git a/.github/workflows/check-broken-links.yml b/.github/workflows/check-broken-links.yml index faa222b..deaf038 100644 --- a/.github/workflows/check-broken-links.yml +++ b/.github/workflows/check-broken-links.yml @@ -11,7 +11,7 @@ jobs: if: github.repository_owner == 'AntonPalmqvist' runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v6 - name: Link Checker id: lychee diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..7417ed6 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +min-release-age=7 \ No newline at end of file diff --git a/biome.json b/biome.json index a403400..64da121 100644 --- a/biome.json +++ b/biome.json @@ -1,5 +1,5 @@ { - "$schema": "https://biomejs.dev/schemas/2.4.6/schema.json", + "$schema": "https://biomejs.dev/schemas/2.4.10/schema.json", "vcs": { "enabled": true, "clientKind": "git", diff --git a/deploy/v2/cameras.json b/deploy/v2/cameras.json index d67ce59..ddbf2ec 100644 --- a/deploy/v2/cameras.json +++ b/deploy/v2/cameras.json @@ -1,10 +1,11 @@ { "$schema": "../../schemas/components/schemas/Camera.json", "header": { - "schemaVersion": 2.0, - "updated": 202603011023, + "schemaVersion": 2.1, + "updated": 202603281641, "license": "CC0 1.0 Universal", - "origin": "https://api.physicallybased.info/v2/cameras" + "origin": "https://api.physicallybased.info/v2/cameras", + "deprecated": false }, "data": [ { @@ -18,7 +19,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [5.71] }, { "format": "13 mm Ultra Wide", @@ -27,7 +29,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [1.5] }, { "format": "77 mm Telephoto", @@ -36,7 +39,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [8.9] } ], "category": ["Mobile"], @@ -77,7 +81,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [6.78] }, { "format": "13 mm Ultra Wide", @@ -86,7 +91,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [2.1] }, { "format": "77 mm Telephoto", @@ -95,7 +101,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [8.9] } ], "category": ["Mobile"], @@ -136,7 +143,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [6.78] }, { "format": "13 mm Ultra Wide", @@ -145,7 +153,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [2.1] }, { "format": "77 mm Telephoto", @@ -154,7 +163,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [8.9] } ], "category": ["Mobile"], @@ -195,7 +205,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [6.78] }, { "format": "13 mm Ultra Wide", @@ -204,7 +215,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [2.1] }, { "format": "120 mm Telephoto", @@ -213,7 +225,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [15.64] } ], "category": ["Mobile"], @@ -254,7 +267,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [6.78] }, { "format": "13 mm Ultra Wide", @@ -263,7 +277,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [2.1] }, { "format": "120 mm Telephoto", @@ -272,7 +287,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [15.64] } ], "category": ["Mobile"], @@ -313,7 +329,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [6.78] }, { "format": "13 mm Ultra Wide", @@ -322,7 +339,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [2.1] }, { "format": "120 mm Telephoto", @@ -331,7 +349,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [15.64] } ], "category": ["Mobile"], @@ -372,7 +391,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [6.78] }, { "format": "13 mm Ultra Wide", @@ -381,7 +401,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [2.1] }, { "format": "100 mm Telephoto", @@ -390,7 +411,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [16.18] } ], "category": ["Mobile"], @@ -431,7 +453,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [6.78] }, { "format": "13 mm Ultra Wide", @@ -440,7 +463,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [2.1] }, { "format": "100 mm Telephoto", @@ -449,7 +473,8 @@ { "format": "4K", "size": [3840, 2160] }, { "format": "1080p", "size": [1920, 1080] }, { "format": "720p", "size": [1280, 720] } - ] + ], + "focalLength": [16.18] } ], "category": ["Mobile"], diff --git a/deploy/v2/lenses.json b/deploy/v2/lenses.json index 6ea00ad..baddc8b 100644 --- a/deploy/v2/lenses.json +++ b/deploy/v2/lenses.json @@ -1,16 +1,76 @@ { "$schema": "../../schemas/components/schemas/Lens.json", "header": { - "schemaVersion": 2.0, - "updated": 202602281104, + "schemaVersion": 2.1, + "updated": 202603291608, "license": "CC0 1.0 Universal", - "origin": "https://api.physicallybased.info/v2/lenses" + "origin": "https://api.physicallybased.info/v2/lenses", + "deprecated": false }, "data": [ + { + "make": "Arri", + "model": "Prime DNA 60 mm", + "focalLength": [60], + "aperture": [2, 22], + "blades": 6, + "closeFocus": 60, + "references": [ + { + "title": "Technical Data of Prime DNA", + "publisher": "ARRI GmbH.", + "url": "https://www.arrirental.com/en/lenses/65-mm-lenses/prime-dna/technical-data", + "accessed": "2026-03-28" + } + ], + "tags": ["prime"] + }, + { + "make": "Canon", + "model": "EF 50mm f/1.8 STM", + "focalLength": [50], + "aperture": [1.8, 22], + "blades": 7, + "closeFocus": 35, + "references": [ + { + "title": "EF 50mm f/1.8 STM", + "publisher": "Canon U.S.A., Inc.", + "url": "https://www.usa.canon.com/shop/p/ef-50mm-f-1-8-stm", + "accessed": "2026-03-28" + }, + { + "title": "Canon EF 50mm lens", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Canon_EF_50mm_lens&oldid=1340007443#EF50mm_f/1.8_STM", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2026-03-28" + } + ], + "tags": ["prime"] + }, + { + "make": "Cooke", + "model": "Anamorphic/i FF 50mm", + "focalLength": [18], + "aperture": [2.3, 22], + "blades": 9, + "closeFocus": 60, + "squeezeFactor": 1.8, + "references": [ + { + "title": "Anamorphic/i FF Lens", + "publisher": "Cooke Optics Limited", + "url": "https://cookeoptics.com/lens/anamorphic-i-ff/", + "accessed": "2026-03-28" + } + ], + "tags": ["prime"] + }, { "make": "Cooke", "model": "S8/i FF 18mm", - "focalLength": [18, 18], + "focalLength": [18], "aperture": [1.4, 22], "blades": 9, "closeFocus": 60, @@ -78,7 +138,7 @@ { "make": "Sony", "model": "FE 20mm f/1.8 G", - "focalLength": [20, 20], + "focalLength": [20], "aperture": [1.8, 22], "blades": 9, "closeFocus": 18, diff --git a/deploy/v2/lightsources.json b/deploy/v2/lightsources.json index dd883b7..f9d4414 100644 --- a/deploy/v2/lightsources.json +++ b/deploy/v2/lightsources.json @@ -1,10 +1,11 @@ { "$schema": "../../schemas/components/schemas/Lightsource.json", "header": { - "schemaVersion": 2.0, - "updated": 202602281104, + "schemaVersion": 2.1, + "updated": 202603291608, "license": "CC0 1.0 Universal", - "origin": "https://api.physicallybased.info/v2/lightsources" + "origin": "https://api.physicallybased.info/v2/lightsources", + "deprecated": false }, "data": [ { @@ -408,6 +409,394 @@ } ] }, + { + "name": "Black-body", + "variants": [ + { + "format": "798 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.0, 0.0] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.059, 0.006] + } + ], + "temperature": [798], + "intensity": [1000], + "description": "At 798 K, the Draper point is the approximate temperature above which almost all solid materials visibly glow as a result of black-body radiation." + }, + { + "format": "1000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.009, 0.0] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.127, 0.007] + } + ], + "temperature": [1000], + "intensity": [1000] + }, + { + "format": "1900 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.233, 0.0] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.409, 0.067] + } + ], + "temperature": [1900], + "intensity": [1000], + "description": "1900 K is the lowest color temperature that the sRGB colorspace can accurately represent." + }, + { + "format": "2000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.257, 0.008] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.436, 0.08] + } + ], + "temperature": [2000], + "intensity": [1000] + }, + { + "format": "3000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.477, 0.154] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.651, 0.264] + } + ], + "temperature": [3000], + "intensity": [1000] + }, + { + "format": "4000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.653, 0.377] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.79, 0.493] + } + ], + "temperature": [4000], + "intensity": [1000] + }, + { + "format": "5000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.792, 0.628] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.882, 0.717] + } + ], + "temperature": [5000], + "intensity": [1000] + }, + { + "format": "6000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.898, 0.8758] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.944, 0.917] + } + ], + "temperature": [6000], + "intensity": [1000] + }, + { + "format": "6504 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 1.0, 1.0] + }, + { + "colorSpace": "acescg", + "color": [1.0, 1.0, 1.0] + } + ], + "temperature": [6504], + "intensity": [1000], + "description": "Whitepoint of the sRGB color space." + }, + { + "format": "7000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.907, 0.89, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.918, 0.905, 1.0] + } + ], + "temperature": [7000], + "intensity": [1000] + }, + { + "format": "8000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.766, 0.802, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.811, 0.824, 1.0] + } + ], + "temperature": [8000], + "intensity": [1000] + }, + { + "format": "9000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.673, 0.74, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.738, 0.765, 1.0] + } + ], + "temperature": [9000], + "intensity": [1000] + }, + { + "format": "10000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.609, 0.695, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.686, 0.724, 1.0] + } + ], + "temperature": [10000], + "intensity": [1000] + }, + { + "format": "11000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.563, 0.662, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.647, 0.691, 1.0] + } + ], + "temperature": [11000], + "intensity": [1000] + }, + { + "format": "12000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.527, 0.634, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.617, 0.665, 1.0] + } + ], + "temperature": [12000], + "intensity": [1000] + }, + { + "format": "13000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.5, 0.614, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.593, 0.644, 1.0] + } + ], + "temperature": [13000], + "intensity": [1000] + }, + { + "format": "14000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.478, 0.596, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.575, 0.628, 1.0] + } + ], + "temperature": [14000], + "intensity": [1000] + }, + { + "format": "15000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.46, 0.582, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.559, 0.614, 1.0] + } + ], + "temperature": [15000], + "intensity": [1000] + }, + { + "format": "16000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.446, 0.57, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.546, 0.602, 1.0] + } + ], + "temperature": [16000], + "intensity": [1000] + }, + { + "format": "17000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.433, 0.56, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.535, 0.592, 1.0] + } + ], + "temperature": [17000], + "intensity": [1000] + }, + { + "format": "18000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.422, 0.551, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.526, 0.583, 1.0] + } + ], + "temperature": [18000], + "intensity": [1000] + }, + { + "format": "19000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.414, 0.543, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.518, 0.576, 1.0] + } + ], + "temperature": [19000], + "intensity": [1000] + }, + { + "format": "20000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.405, 0.537, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.51, 0.569, 1.0] + } + ], + "temperature": [20000], + "intensity": [1000] + } + ], + "unit": ["lm"], + "type": ["point"], + "category": ["Artificial"], + "description": "A black-body is a theoretical light emitter with an opaque, non-reflective body. It has a characteristic, continuous frequency spectrum that depends only on the body's temperature, called the Planck spectrum or Planck's law. The most common real world example that gets close to a black-body radiator is an incandescent tungsten light bulb.", + "references": [ + { + "title": "Black-body radiation", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Black-body_radiation&oldid=1325743332", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2026-01-05" + }, + { + "title": "Draper point", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Draper_point&oldid=1325819896", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2026-01-05" + }, + { + "title": "Color temperature", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Color_temperature&oldid=1331420384", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2026-01-06" + }, + { + "title": "Correlated color temperature", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Correlated_color_temperature&oldid=1320619729", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2026-01-06" + } + ], + "tags": ["blackbody"] + }, { "name": "Candle Flame", "variants": [ @@ -511,7 +900,19 @@ "name": "Digital Display", "variants": [ { - "format": "Digital Display", + "format": "Digital Display (SDR)", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.943, 0.992] + } + ], + "temperature": [5000, 7500, 6500], + "intensity": [100, 300, 200], + "sourceSize": [61, 38] + }, + { + "format": "Digital Display (HDR)", "color": [ { "colorSpace": "srgb-linear", @@ -686,54 +1087,150 @@ ] }, { - "name": "Kerosene Lamp", + "name": "Glow Stick", "variants": [ { - "format": "Kerosene Lamp", + "format": "Green", "color": [ { "colorSpace": "srgb-linear", - "color": [1.0, 0.22, 0.0] + "color": [0, 1, 0] + }, + { + "colorSpace": "acescg", + "color": [0.315, 1.0, 0.049] } ], - "temperature": [1850], - "intensity": [8, 100, 50], - "sourceSize": [1] + "intensity": [10], + "sourceSize": [1, 12] } ], "unit": ["lm"], - "type": ["point"], - "category": ["Natural"], + "type": ["cylinder"], + "category": ["Artificial"], "references": [ { - "title": "Color temperature", + "title": "Glow Stick", "author": "Wikipedia contributors", - "url": "https://en.wikipedia.org/w/index.php?title=Color_temperature&oldid=1272808359", + "url": "https://en.wikipedia.org/w/index.php?title=Glow_stick&oldid=1340548389", "publisher": "Wikipedia, The Free Encyclopedia", - "accessed": "2025-02-27" + "accessed": "2026-03-22" }, { - "title": "Kerosene lamp", + "title": "Chemiluminescence", "author": "Wikipedia contributors", - "url": "https://en.wikipedia.org/w/index.php?title=Kerosene_lamp&oldid=1274278708#Performance", + "url": "https://en.wikipedia.org/w/index.php?title=Chemiluminescence&oldid=1338098680", "publisher": "Wikipedia, The Free Encyclopedia", - "accessed": "2025-02-27" + "accessed": "2026-03-22" } - ] + ], + "tags": ["chem light"] }, { - "name": "Kino Flo MIMIK 120", + "name": "Household Light Bulb", "variants": [ { - "format": "Kino Flo MIMIK 120", + "format": "2700 K", "color": [ { "colorSpace": "srgb-linear", - "color": [1.0, 0.859, 0.778] + "color": [1.0, 0.415, 0.099] } ], - "temperature": [2700, 6500, 5600], - "intensity": [10000], + "temperature": [2200, 6000, 2700], + "intensity": [400, 1600, 800], + "sourceSize": [3] + }, + { + "format": "5000 K", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.792, 0.628] + } + ], + "temperature": [2200, 6000, 5000], + "intensity": [400, 1600, 800], + "sourceSize": [3] + } + ], + "unit": ["lm"], + "type": ["point"], + "category": ["Artificial"], + "description": "Today's household lightbulbs has a LED light source whereas older light bulbs were using a glowing tungsten filament. LED:s are much much more energy efficient and makes the use of wattage, as a measure of intensity, not very useful. This is why lumen is preferred.", + "references": [ + { + "title": "Incandescent light bulb", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Incandescent_light_bulb&oldid=1277426941", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-02-27" + }, + { + "title": "LED lamp", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=LED_lamp&oldid=1269221959", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-02-27" + }, + { + "title": "LED light bulbs", + "url": "https://www.ikea.com/us/en/cat/led-bulbs-20514/", + "publisher": "Inter IKEA Systems B.V.", + "accessed": "2025-07-10" + } + ], + "tags": ["incandescent", "tungsten", "LED"] + }, + { + "name": "Kerosene Lamp", + "variants": [ + { + "format": "Kerosene Lamp", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.22, 0.0] + } + ], + "temperature": [1850], + "intensity": [8, 100, 50], + "sourceSize": [1] + } + ], + "unit": ["lm"], + "type": ["point"], + "category": ["Natural"], + "references": [ + { + "title": "Color temperature", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Color_temperature&oldid=1272808359", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-02-27" + }, + { + "title": "Kerosene lamp", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Kerosene_lamp&oldid=1274278708#Performance", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-02-27" + } + ] + }, + { + "name": "Kino Flo MIMIK 120", + "variants": [ + { + "format": "Kino Flo MIMIK 120", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.859, 0.778] + } + ], + "temperature": [2700, 6500, 5600], + "intensity": [10000], "sourceSize": [120, 60] } ], @@ -756,60 +1253,82 @@ ] }, { - "name": "Household Light Bulb", + "name": "Light-emitting Diode (LED)", "variants": [ { - "format": "2700 K", + "format": "Blue", "color": [ { "colorSpace": "srgb-linear", - "color": [1.0, 0.415, 0.099] + "color": [0.0, 0.008, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.019, 0.019, 1.0] } ], - "temperature": [2200, 6000, 2700], - "intensity": [400, 1600, 800], - "sourceSize": [3] + "intensity": [1], + "sourceSize": [0.25] }, { - "format": "5000 K", + "format": "Green", "color": [ { "colorSpace": "srgb-linear", - "color": [1.0, 0.792, 0.628] + "color": [0.0, 1.0, 0.0] + }, + { + "colorSpace": "acescg", + "color": [0.0, 1.0, 0.109] } ], - "temperature": [2200, 6000, 5000], - "intensity": [400, 1600, 800], - "sourceSize": [3] + "intensity": [1], + "sourceSize": [0.25] + }, + { + "format": "White", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.602, 0.651, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.669, 0.683, 1.0] + } + ], + "intensity": [1], + "sourceSize": [0.25], + "temperature": [10596] + }, + { + "format": "Yellow", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.195, 0.0] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.366, 0.008] + } + ], + "intensity": [1], + "sourceSize": [0.25] } ], "unit": ["lm"], "type": ["point"], "category": ["Artificial"], - "description": "Today's household lightbulbs has a LED light source whereas older light bulbs were using a glowing tungsten filament. LED:s are much much more energy efficient and makes the use of wattage, as a measure of intensity, not very useful. This is why lumen is preferred.", "references": [ { - "title": "Incandescent light bulb", - "author": "Wikipedia contributors", - "url": "https://en.wikipedia.org/w/index.php?title=Incandescent_light_bulb&oldid=1277426941", - "publisher": "Wikipedia, The Free Encyclopedia", - "accessed": "2025-02-27" - }, - { - "title": "LED lamp", + "title": "Light-emitting Diode", "author": "Wikipedia contributors", - "url": "https://en.wikipedia.org/w/index.php?title=LED_lamp&oldid=1269221959", + "url": "https://en.wikipedia.org/w/index.php?title=Light-emitting_diode&oldid=1344314429", "publisher": "Wikipedia, The Free Encyclopedia", - "accessed": "2025-02-27" - }, - { - "title": "LED light bulbs", - "url": "https://www.ikea.com/us/en/cat/led-bulbs-20514/", - "publisher": "Inter IKEA Systems B.V.", - "accessed": "2025-07-10" + "accessed": "2026-03-22" } - ], - "tags": ["incandescent", "tungsten", "LED"] + ] }, { "name": "Moon", @@ -1076,62 +1595,966 @@ "tags": ["airglow"] }, { - "name": "Street Light", + "name": "Standard Illuminant", "variants": [ { - "format": "Sodium-vapor Lamp", + "format": "A", "color": [ { "colorSpace": "srgb-linear", - "color": [1, 0.761, 0] + "color": [1.0, 0.448, 0.126] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.625, 0.233] } ], - "intensity": [2000, 140000], - "sourceSize": [5], - "angle": 60, - "description": "The type of yellow light typically used in street lighting is usually a sodium-vapor light. To simulate a sodium-vapor light faithfully you would need a spectral renderer where you can specify the very narrow wavelength range of 589.0 - 589.6 nm in order to get its bespoke monochromatic look." - } - ], - "unit": ["lm"], - "type": ["spot"], - "category": ["Artificial"], - "references": [ + "temperature": [2855], + "intensity": [1000], + "description": "Represents typical, domestic, tungsten-filament lighting." + }, { - "title": "Sodium-vapor lamp", - "author": "Wikipedia contributors", - "url": "https://en.wikipedia.org/w/index.php?title=Sodium-vapor_lamp&oldid=1275815249", - "publisher": "Wikipedia, The Free Encyclopedia", - "accessed": "2025-02-27" + "format": "B", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.761, 0.603] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.862, 0.698] + } + ], + "temperature": [4874], + "intensity": [1000], + "description": "Obsolete, direct sunlight at noon." }, { - "title": "HPS (High Pressure Sodium) Light Bulbs", - "url": "https://www.1000bulbs.com/fil/categories/high-pressure-sodium-lamps", - "publisher": "1000Bulbs.com", - "accessed": "2025-02-27" - } - ], - "tags": ["sodium", "vapor"] - }, - { - "name": "Sun", - "variants": [ + "format": "C", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.955, 0.886, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.947, 0.905, 1.0] + } + ], + "temperature": [6774], + "intensity": [1000], + "description": "Obsolete, average/north sky daylight NTSC 1953], PAL-M." + }, { - "format": "Sun", + "format": "D50", "color": [ { "colorSpace": "srgb-linear", - "color": [1.0, 0.877, 0.822] + "color": [1.0, 0.83, 0.614] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.907, 0.698] } ], - "temperature": [5778], - "intensity": [400, 100000, 100000], - "angle": 0.5332, - "description": "The changing color of the Sun over the course of the day is mainly a result of the scattering of sunlight and is not due to changes in black-body radiation. The solar illuminance constant is equal to 128 000 lux, but atmospheric extinction brings the number of lux down to around 100 000 lux." + "temperature": [5001], + "intensity": [1000], + "description": "Horizon light, ICC profile PCS." + }, + { + "format": "D55", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.894, 0.745] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.945, 0.806] + } + ], + "temperature": [5502], + "intensity": [1000], + "description": "Mid-morning/mid-afternoon daylight." + }, + { + "format": "D60", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.95, 0.875] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.975, 0.906] + } + ], + "temperature": [6003], + "intensity": [1000], + "description": "Daylight." + }, + { + "format": "D65", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 1.0, 1.0] + }, + { + "colorSpace": "acescg", + "color": [1.0, 1.0, 1.0] + } + ], + "temperature": [6504], + "intensity": [1000], + "description": "Noon daylight, sRGB whitepoint." + }, + { + "format": "D75", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.811, 0.879, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.859, 0.892, 1.0] + } + ], + "temperature": [7505], + "intensity": [1000], + "description": "North sky daylight." + }, + { + "format": "D93", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.631, 0.753, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.715, 0.775, 1.0] + } + ], + "temperature": [9295], + "intensity": [1000], + "description": "High-efficiency blue phosphor monitors, BT.2035, NTSC-J." + }, + { + "format": "E", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.787, 0.754] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.875, 0.832] + } + ], + "temperature": [5455], + "intensity": [1000], + "description": "Illuminant E is an equal-energy radiator. It has a constant SPD inside the visible spectrum. It is useful as a theoretical reference, an illuminant that gives equal weight to all wavelengths." + }, + { + "format": "FL1", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.937, 1.0, 0.927] + }, + { + "colorSpace": "acescg", + "color": [0.963, 1.0, 0.941] + } + ], + "intensity": [1000], + "description": "Daylight fluorescent." + }, + { + "format": "FL2", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.703, 0.421] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.825, 0.531] + } + ], + "temperature": [4223], + "intensity": [1000], + "description": "Cool white fluorescent." + }, + { + "format": "FL3", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.565, 0.242] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.724, 0.359] + } + ], + "temperature": [3446], + "intensity": [1000], + "description": "White fluorescent." + }, + { + "format": "FL4", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.461, 0.148] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.637, 0.257] + } + ], + "temperature": [2938], + "intensity": [1000], + "description": "Warm white fluorescent. Used for calibrating the CIE color rendering index (the CRI formula was chosen such that FL4 would have a CRI of 51)." + }, + { + "format": "FL5", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.884, 1.0, 0.86] + }, + { + "colorSpace": "acescg", + "color": [0.932, 1.0, 0.884] + } + ], + "intensity": [1000], + "description": "White fluorescent." + }, + { + "format": "FL6", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.727, 0.37] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.844, 0.481] + } + ], + "intensity": [1000], + "description": "Light white fluorescent." + }, + { + "format": "FL7", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.999, 0.997] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.999, 0.997] + } + ], + "temperature": [6492], + "intensity": [1000], + "description": "D65, daylight simulator, a \"broadband\" (full-spectrum) fluorescent lamp with multiple phosphors, and higher CRI." + }, + { + "format": "FL8", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.829, 0.613] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.907, 0.697] + } + ], + "temperature": [4997], + "intensity": [1000], + "description": "D50 simulator. Sylvania F40 Design 50, a \"broadband\" (full-spectrum) fluorescent lamp with multiple phosphors, and higher CRI." + }, + { + "format": "FL9", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.676, 0.414] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.807, 0.527] + } + ], + "temperature": [4149], + "intensity": [1000], + "description": "Cool white deluxe fluorescent, a \"broadband\" (full-spectrum) fluorescent lamp with multiple phosphors, and higher CRI." + }, + { + "format": "FL10", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.831, 0.613] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.909, 0.697] + } + ], + "temperature": [4998], + "intensity": [1000], + "description": "Philips TL85, Ultralume 50, a narrow triband illuminant consisting of three \"narrowband\" emissions (caused by ternary compositions of rare-earth phosphors) in the R, G, B regions of the visible spectrum, which leads to poor CRI." + }, + { + "format": "FL11", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.654, 0.377] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.79, 0.493] + } + ], + "temperature": [4000], + "intensity": [1000], + "description": "Philips TL84, Ultralume 40, a narrow triband illuminant consisting of three \"narrowband\" emissions (caused by ternary compositions of rare-earth phosphors) in the R, G, B regions of the visible spectrum, which leads to poor CRI." + }, + { + "format": "FL12", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.477, 0.153] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.651, 0.264] + } + ], + "temperature": [3000], + "intensity": [1000], + "description": "Philips TL83, Ultralume 30, a narrow triband illuminant consisting of three \"narrowband\" emissions (caused by ternary compositions of rare-earth phosphors) in the R, G, B regions of the visible spectrum, which leads to poor CRI." + }, + { + "format": "FL3.1", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.46, 0.147] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.636, 0.256] + } + ], + "temperature": [2931], + "intensity": [1000], + "description": "Standard halophosphate." + }, + { + "format": "FL3.2", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.636, 0.382] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.777, 0.498] + } + ], + "temperature": [3965], + "intensity": [1000], + "description": "Standard halophosphate." + }, + { + "format": "FL3.3", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.914, 1.0, 0.87] + }, + { + "colorSpace": "acescg", + "color": [0.949, 1.0, 0.892] + } + ], + "intensity": [1000], + "description": "Standard halophosphate." + }, + { + "format": "FL3.4", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.455, 0.14] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.631, 0.249] + } + ], + "temperature": [2904], + "intensity": [1000], + "description": "DeLuxe type." + }, + { + "format": "FL3.5", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.645, 0.419] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.783, 0.535] + } + ], + "temperature": [4086], + "intensity": [1000], + "description": "DeLuxe type." + }, + { + "format": "FL3.6", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.81, 0.588] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.895, 0.678] + } + ], + "temperature": [4894], + "intensity": [1000], + "description": "DeLuxe type." + }, + { + "format": "FL3.7", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.473, 0.15] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.647, 0.26] + } + ], + "temperature": [2979], + "intensity": [1000], + "description": "Three-band." + }, + { + "format": "FL3.8", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.674, 0.36] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.806, 0.474] + } + ], + "temperature": [4005], + "intensity": [1000], + "description": "Three-band." + }, + { + "format": "FL3.9", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.794, 0.581] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.884, 0.674] + } + ], + "temperature": [4851], + "intensity": [1000], + "description": "Three-band." + }, + { + "format": "FL3.10", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.815, 0.618] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.898, 0.705] + } + ], + "temperature": [5000], + "intensity": [1000], + "description": "Three-band." + }, + { + "format": "FL3.11", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.959, 0.835] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.982, 0.872] + } + ], + "temperature": [5853], + "intensity": [1000], + "description": "Three-band." + }, + { + "format": "FL3.12", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.473, 0.153] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.647, 0.263] + } + ], + "temperature": [2984], + "intensity": [1000], + "description": "Multi-band." + }, + { + "format": "FL3.13", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.618, 0.373] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.763, 0.491] + } + ], + "temperature": [3897], + "intensity": [1000], + "description": "Multi-band." + }, + { + "format": "FL3.14", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.855, 0.618] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.924, 0.698] + } + ], + "temperature": [5045], + "intensity": [1000], + "description": "Multi-band." + }, + { + "format": "FL3.15", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.999, 1.0] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.999, 1.0] + } + ], + "temperature": [6506], + "intensity": [1000], + "description": "D65 simulator." + }, + { + "format": "HP1", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.249, 0.0] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.427, 0.068] + } + ], + "temperature": [1959], + "intensity": [1000], + "description": "Standard high pressure sodium lamp." + }, + { + "format": "HP2", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.375, 0.063] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.558, 0.157] + } + ], + "temperature": [2506], + "intensity": [1000], + "description": "Color-enhanced high-pressure sodium lamp." + }, + { + "format": "HP3", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.516, 0.164] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.685, 0.276] + } + ], + "temperature": [3144], + "intensity": [1000], + "description": "High pressure metal halide lamp." + }, + { + "format": "HP4", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.663, 0.369] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.797, 0.484] + } + ], + "temperature": [4001], + "intensity": [1000], + "description": "High pressure metal halide lamp." + }, + { + "format": "HP5", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.647, 0.399] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.784, 0.515] + } + ], + "temperature": [4039], + "intensity": [1000], + "description": "High pressure metal halide lamp." + }, + { + "format": "LED-B1", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.42, 0.11] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.6, 0.214] + } + ], + "temperature": [2733], + "intensity": [1000], + "description": "Phosphor-converted blue." + }, + { + "format": "LED-B2", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.472, 0.161] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.647, 0.272] + } + ], + "temperature": [2997], + "intensity": [1000], + "description": "Phosphor-converted blue." + }, + { + "format": "LED-B3", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.664, 0.407] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.798, 0.522] + } + ], + "temperature": [4103], + "intensity": [1000], + "description": "Phosphor-converted blue." + }, + { + "format": "LED-B4", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.81, 0.654] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.894, 0.738] + } + ], + "temperature": [5108], + "intensity": [1000], + "description": "Phosphor-converted blue." + }, + { + "format": "LED-B5", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.983, 0.95, 1.0] + }, + { + "colorSpace": "acescg", + "color": [0.979, 0.958, 1.0] + } + ], + "temperature": [6598], + "intensity": [1000], + "description": "Phosphor-converted blue." + }, + { + "format": "LED-BH1", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.446, 0.128] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.623, 0.234] + } + ], + "temperature": [2851], + "intensity": [1000], + "description": "Mixing of phosphor-converted blue LED and red LED (blue-hybrid)." + }, + { + "format": "LED-RGB1", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.46, 0.091] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.637, 0.193] + } + ], + "temperature": [2840], + "intensity": [1000], + "description": "Mixing of red, green, and blue LEDs." + }, + { + "format": "LED-V1", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.414, 0.117] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.594, 0.221] + } + ], + "temperature": [2723], + "intensity": [1000], + "description": "Phosphor-converted violet." + }, + { + "format": "LED-V2", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.672, 0.387] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.805, 0.501] + } + ], + "temperature": [4070], + "intensity": [1000], + "description": "Phosphor-converted violet." + }, + { + "format": "ID50", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.866, 0.631] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.931, 0.709] + } + ], + "temperature": [5097], + "intensity": [1000], + "description": "ID50 and ID65 are equivalent to their outdoor counterparts, D50 and D65, filtered through window glass, thereby removing the ultraviolet contents." + }, + { + "format": "ID65", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.955, 1.0, 0.984] + }, + { + "colorSpace": "acescg", + "color": [0.976, 1.0, 0.989] + } + ], + "temperature": [6602], + "intensity": [1000], + "description": "ID50 and ID65 are equivalent to their outdoor counterparts, D50 and D65, filtered through window glass, thereby removing the ultraviolet contents." + } + ], + "unit": ["lm"], + "type": ["point"], + "category": ["Artificial"], + "description": "A standard illuminant is a theoretical source of visible light with a spectral power distribution that is published. Standard illuminants provide a basis for comparing images or colors recorded under different lighting.", + "references": [ + { + "title": "Standard Illuminant", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Standard_illuminant&oldid=1317606355", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-12-12" + }, + { + "title": "Chromaticity Coordinates of Illuminants", + "author": "Colour Developers", + "url": "https://github.com/colour-science/colour/blob/develop/colour/colorimetry/datasets/illuminants/chromaticity_coordinates.py", + "accessed": "2026-03-22" + } + ] + }, + { + "name": "Street Light", + "variants": [ + { + "format": "Sodium-vapor Lamp", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1, 0.761, 0] + } + ], + "intensity": [2000, 140000], + "sourceSize": [5], + "angle": 60, + "description": "The type of yellow light typically used in street lighting is usually a sodium-vapor light. To simulate a sodium-vapor light faithfully you would need a spectral renderer where you can specify the very narrow wavelength range of 589.0 - 589.6 nm in order to get its bespoke monochromatic look." + } + ], + "unit": ["lm"], + "type": ["spot"], + "category": ["Artificial"], + "references": [ + { + "title": "Sodium-vapor lamp", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Sodium-vapor_lamp&oldid=1275815249", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-02-27" + }, + { + "title": "HPS (High Pressure Sodium) Light Bulbs", + "url": "https://www.1000bulbs.com/fil/categories/high-pressure-sodium-lamps", + "publisher": "1000Bulbs.com", + "accessed": "2025-02-27" + } + ], + "tags": ["sodium", "vapor"] + }, + { + "name": "Sun", + "variants": [ + { + "format": "Space", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.877, 0.822] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.932, 0.876] + } + ], + "temperature": [5778], + "intensity": [128000], + "angle": 0.5332 + }, + { + "format": "Midday", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.877, 0.822] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.932, 0.876] + } + ], + "temperature": [5778], + "intensity": [400, 100000, 100000], + "angle": 0.5332 + }, + { + "format": "Sunset", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [1.0, 0.394, 0.083] + }, + { + "colorSpace": "acescg", + "color": [1.0, 0.576, 0.181] + } + ], + "temperature": [2600], + "intensity": [3000], + "angle": 0.5332 } ], "unit": ["lx"], "type": ["directional"], "category": ["Natural"], + "description": "The changing color of the Sun over the course of the day is mainly a result of the scattering of sunlight and is not due to changes in black-body radiation. The intensity depends on factors such as sun angle, distance (time of year), and atmosphere. The solar illuminance constant is 128 000 lux in space, but atmospheric extinction on earth brings it down to around 100 000 lux. The sky contributes with an additional 20 000 lux, so 120 000 lux in total illuminance is still possible on earth.", "references": [ { "title": "Illuminance Meter Measurement", diff --git a/deploy/v2/materials.json b/deploy/v2/materials.json index 2f057c4..b54aa7f 100644 --- a/deploy/v2/materials.json +++ b/deploy/v2/materials.json @@ -1,10 +1,11 @@ { "$schema": "../../schemas/components/schemas/Material.json", "header": { - "schemaVersion": 2.0, - "updated": 202603081226, + "schemaVersion": 2.1, + "updated": 202604261435, "license": "CC0 1.0 Universal", - "origin": "https://api.physicallybased.info/v2/materials" + "origin": "https://api.physicallybased.info/v2/materials", + "deprecated": false }, "data": [ { @@ -384,6 +385,70 @@ } ] }, + { + "name": "Beer (Pale Lager)", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.889, 0.775, 0.558] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.3325, + "transmission": 1, + "transmissionDepth": 1, + "transmissionDispersion": 55.78, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.1149, 0.2491, 0.5779] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [0.003, 0.005, 0.006] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.917, 0.956, 0.982] + } + ] + }, + "density": [958, 1000, 1000], + "viscosity": [1.002], + "surfaceTension": 72, + "category": ["Liquid"], + "references": [ + { + "title": "Acquiring Scattering Properties Of Participating Media By Dilution", + "author": "Narasimhan, S. G., Gupta, M., Donner, C., Ramamoorthi, R., Nayar, S. K., & Jensen, H. W.", + "publisher": "Association for Computing Machinery", + "url": "https://dl.acm.org/doi/10.1145/1141911.1141986", + "volume": "25", + "issue": "3", + "pages": "1003--1012", + "year": "2006", + "doi": "https://doi.org/10.1145/1141911.1141986" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/beer-pale-lager.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/beer-pale-lager.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/beer-pale-lager.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/beer-pale-lager.avif" + } + ] + }, { "name": "Beryllium", "color": [ @@ -524,7 +589,154 @@ ] }, { - "name": "Blood", + "name": "Blood (Deoxygenated)", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.415, 0.0, 0.0] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.35, + "transmission": 1, + "transmissionDepth": 0.08, + "transmissionDispersion": 54, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [40.7, 259.9, 91.2] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [901.2, 864.5, 1220.8] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.9869, 0.9886, 0.9896] + } + ] + }, + "density": [1060], + "viscosity": [2.35, 4, 2.78], + "surfaceTension": 56, + "category": ["Human"], + "description": "The color of blood depends on its oxygen level. When hemoglobin has a full oxygen load, it has a bright red color, and when it's deoxygenated it's a darker red. For example, arterial and capillary blood is bright, and venous blood is dark. Upon exposure to air, deoxygenated blood quickly oxygenates and turns a brighter shade of red.", + "tags": ["liquid"], + "references": [ + { + "title": "Blood", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Blood&oldid=1264714220", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-01-11" + }, + { + "title": "Blood Red", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Blood_red&oldid=1217643853", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-01-25" + }, + { + "title": "Hemorheology", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Hemorheology&oldid=1229971521", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-01-25" + }, + { + "title": "Surface tension", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Surface_tension&oldid=1304099149#Values", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-08-30" + }, + { + "title": "Refractive index database", + "author": "Polyanskiy, M. N.", + "url": "https://refractiveindex.info/?shelf=other&book=blood&page=Liu", + "accessed": "2025-07-22" + }, + { + "title": "A Literature Review And Novel Theoretical Approach On The Optical Properties Of Whole Blood", + "author": "Bosschaart, N., Edelman, G. J., Aalders, M. C. G., van Leeuwen, T. G., & Faber, D. J.", + "url": "https://link.springer.com/article/10.1007/s10103-013-1446-7", + "publisher": "Lasers in Medical Science", + "volume": "29", + "issue": "2", + "pages": "453--479", + "year": "2014", + "doi": "https://doi.org/10.1007/s10103-013-1446-7" + }, + { + "title": "Density of Blood", + "author": "Shmukler, M., Elert, G. (Ed.)", + "url": "https://hypertextbook.com/facts/2004/MichaelShmukler.shtml", + "publisher": "The Physics Factbook", + "accessed": "2025-01-26" + }, + { + "title": "A Simple Quantitative Bedside Test to Determine Methemoglobin", + "author": "Shihana, F., Dissanayake, D. M., Buckley, N. A. & Dawson, A. H.", + "url": "https://www.annemergmed.com/article/S0196-0644(09)01281-5/fulltext", + "publisher": "Annals of emergency medicine", + "volume": "55", + "issue": "2", + "pages": "184--189", + "year": "2009", + "doi": "https://doi.org/10.1016/j.annemergmed.2009.07.022" + }, + { + "title": "Liquids - Dynamic Viscosities", + "url": "https://www.engineeringtoolbox.com/absolute-viscosity-liquids-d_1259.html", + "publisher": "The Engineering ToolBox", + "accessed": "2025-01-26" + }, + { + "title": "Blood Rheology: Key Parameters, Impact on Blood Flow, Role in Sickle Cell Disease and Effects of Exercise", + "author": "Nader, E., Skinner, S., Romana, M., Fort, R., Lemonne, N., Guillot, N., ... & Connes, P.", + "url": "https://www.frontiersin.org/articles/10.3389/fphys.2019.01329/full", + "publisher": "Frontiers in physiology", + "volume": "10", + "pages": "1329", + "year": "2019", + "doi": "https://doi.org/10.3389/fphys.2019.01329" + }, + { + "title": "Hybrido Viscosity Table", + "author": "RealFlow 10 Documentation", + "publisher": "Next Limit Technologies", + "url": "https://nextlimitsupport.atlassian.net/wiki/spaces/rf2016docs/pages/5497120/Hybrido+Viscosity+Table", + "accessed": "2025-01-26" + }, + { + "title": "Viscosity of Whole Blood", + "url": "https://wiki.anton-paar.com/en/whole-blood/", + "publisher": "Anton Paar GmbH", + "accessed": "2025-01-26" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/blood-deoxygenated.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/blood-deoxygenated.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/blood-deoxygenated.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/blood-deoxygenated.avif" + } + ] + }, + { + "name": "Blood (Oxygenated)", "color": [ { "colorSpace": "srgb-linear", @@ -537,11 +749,31 @@ "transmission": 1, "transmissionDepth": 0.08, "transmissionDispersion": 54, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [8.8, 238.6, 189.7] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [880.9, 714.9, 817.4] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.986, 0.9874, 0.989] + } + ] + }, "density": [1060], "viscosity": [2.35, 4, 2.78], "surfaceTension": 56, "category": ["Human"], - "description": "The color of blood depends on its oxygen level. When there is plenty of oxygen, the color is a brighter red. The reason is because of a protein called hemoglobin, which carries the oxygen in your blood. When hemoglobin has a full oxygen load, it has a bright red color, and when it's deoxygenated it's a darker red. For example, arterial and capillary blood is bright, and venous blood is dark.", + "description": "The color of blood depends on its oxygen level. When hemoglobin has a full oxygen load, it has a bright red color, and when it's deoxygenated it's a darker red. For example, arterial and capillary blood is bright, and venous blood is dark. Upon exposure to air, deoxygenated blood quickly oxygenates and turns a brighter shade of red.", "tags": ["liquid"], "references": [ { @@ -578,6 +810,17 @@ "url": "https://refractiveindex.info/?shelf=other&book=blood&page=Liu", "accessed": "2025-07-22" }, + { + "title": "A Literature Review And Novel Theoretical Approach On The Optical Properties Of Whole Blood", + "author": "Bosschaart, N., Edelman, G. J., Aalders, M. C. G., van Leeuwen, T. G., & Faber, D. J.", + "url": "https://link.springer.com/article/10.1007/s10103-013-1446-7", + "publisher": "Lasers in Medical Science", + "volume": "29", + "issue": "2", + "pages": "453--479", + "year": "2014", + "doi": "https://doi.org/10.1007/s10103-013-1446-7" + }, { "title": "Density of Blood", "author": "Shmukler, M., Elert, G. (Ed.)", @@ -629,13 +872,13 @@ "images": [ { "format": "jpeg", - "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/blood.jpeg", - "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/blood.jpeg" + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/blood-oxygenated.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/blood-oxygenated.jpeg" }, { "format": "avif", - "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/blood.avif", - "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/blood.avif" + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/blood-oxygenated.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/blood-oxygenated.avif" } ] }, @@ -853,7 +1096,8 @@ "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/brick.avif", "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/brick.avif" } - ] + ], + "tags": ["acoustics", "audio"] }, { "name": "Car Paint", @@ -1419,10 +1663,29 @@ "transmission": 1, "transmissionDepth": 0.1, "transmissionDispersion": 55.78, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [47.9838, 65.7512, 88.4925] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [77.826, 81.305, 85.388] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.907, 0.896, 0.88] + } + ] + }, "density": [1020], "viscosity": [1.7], "category": ["Liquid"], - "tags": ["sss"], "references": [ { "title": "Photo Reference", @@ -1431,6 +1694,17 @@ "publisher": "Physically Based Database", "accessed": "2025-01-26" }, + { + "title": "Acquiring Scattering Properties Of Participating Media By Dilution", + "author": "Narasimhan, S. G., Gupta, M., Donner, C., Ramamoorthi, R., Nayar, S. K., & Jensen, H. W.", + "publisher": "Association for Computing Machinery", + "url": "https://dl.acm.org/doi/10.1145/1141911.1141986", + "volume": "25", + "issue": "3", + "pages": "1003--1012", + "year": "2006", + "doi": "https://doi.org/10.1145/1141911.1141986" + }, { "title": "Espresso Coffee: The Science of Quality", "author": "Viani, R., & Illy, A.", @@ -1453,6 +1727,70 @@ } ] }, + { + "name": "Cola", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.358, 0.186, 0.085] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.3325, + "transmission": 1, + "transmissionDepth": 1.0, + "transmissionDispersion": 55.78, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [1.0014, 1.6503, 2.468] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [0.025, 0.03, 0.0] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.965, 0.972, 1.0] + } + ] + }, + "density": [958, 1000, 1000], + "viscosity": [1.002], + "surfaceTension": 72, + "category": ["Liquid"], + "references": [ + { + "title": "Acquiring Scattering Properties Of Participating Media By Dilution", + "author": "Narasimhan, S. G., Gupta, M., Donner, C., Ramamoorthi, R., Nayar, S. K., & Jensen, H. W.", + "publisher": "Association for Computing Machinery", + "url": "https://dl.acm.org/doi/10.1145/1141911.1141986", + "volume": "25", + "issue": "3", + "pages": "1003--1012", + "year": "2006", + "doi": "https://doi.org/10.1145/1141911.1141986" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/cola.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/cola.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/cola.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/cola.avif" + } + ] + }, { "name": "Concrete", "color": [ @@ -1512,7 +1850,8 @@ "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/concrete.avif", "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/concrete.avif" } - ] + ], + "tags": ["acoustics", "audio"] }, { "name": "Cooking Oil", @@ -1694,6 +2033,110 @@ } ] }, + { + "name": "Cream", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.976, 0.9, 0.725] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.348, + "subsurfaceRadius": [1.503, 0.466, 0.254], + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.002, 0.028, 0.163] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [73.8, 54.7, 31.5] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.0, 0.0, 0.0] + } + ] + }, + "density": [1010, 1020, 1012], + "viscosity": [20], + "surfaceTension": 40, + "category": ["Liquid"], + "tags": ["sss"], + "references": [ + { + "title": "A Practical Model for Subsurface Light Transport", + "author": "Jensen, H. W., Marschner, S. R., Levoy, M. & Hanrahan, P.", + "url": "https://dl.acm.org/doi/10.1145/383259.383319", + "publisher": "Proceedings of the 28th Annual Conference on Computer Graphics and Interactive Techniques", + "pages": "515", + "year": "2001", + "doi": "https://doi.org/10.1145/383259.383319" + }, + { + "title": "On Reflectometric Measurement of a Refractive Index of Milk", + "author": "Jääskeläinen, A.J., Peiponen, K.-E. & Räty, J. A.", + "url": "https://www.sciencedirect.com/science/article/pii/S0022030201744499", + "publisher": "Journal of Dairy Science", + "volume": "84", + "issue": "1", + "pages": "42", + "year": "2001", + "doi": "https://doi.org/10.3168/jds.S0022-0302(01)74449-9" + }, + { + "title": "Dairy Science and Technology eBook", + "author": "Goff, D. H., Hill, A. & Ferrer, M. A.", + "url": "https://books.lib.uoguelph.ca/dairyscienceandtechnologyebook/chapter/physical-properties-of-milk/", + "publisher": "University of Guelph", + "accessed": "2025-02-02" + }, + { + "title": "Density of Milk", + "author": "Jones, A. N., Elert, G. (Ed.)", + "url": "https://hypertextbook.com/facts/2002/AliciaNoelleJones.shtml", + "publisher": "The Physics Factbook", + "accessed": "2025-02-02" + }, + { + "title": "Hybrido Viscosity Table", + "author": "RealFlow 10 Documentation", + "publisher": "Next Limit Technologies", + "url": "https://nextlimitsupport.atlassian.net/wiki/spaces/rf2016docs/pages/5497120/Hybrido+Viscosity+Table", + "accessed": "2025-01-26" + }, + { + "title": "A Note on the Surface Tension of Homogenized Cream", + "author": "Webb, B. H.", + "url": "https://www.journalofdairyscience.org/article/S0022-0302(59)90760-X/pdf", + "publisher": "Journal of Dairy Science", + "volume": "16", + "issue": "4", + "pages": "369--373", + "year": "1933", + "doi": "https://doi.org/10.3168/jds.S0022-0302(33)93351-2" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/cream.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/cream.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/cream.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/cream.avif" + } + ] + }, { "name": "Diamond", "color": [ @@ -2112,41 +2555,160 @@ "accessed": "2025-12-30" }, { - "title": "Germanium", - "author": "Wikipedia contributors", - "url": "https://en.wikipedia.org/w/index.php?title=Germanium&oldid=1294309596", - "publisher": "Wikipedia, The Free Encyclopedia", - "accessed": "2025-06-29" + "title": "Germanium", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Germanium&oldid=1294309596", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-06-29" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/germanium.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/germanium.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/germanium.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/germanium.avif" + } + ] + }, + { + "name": "Glass (Borosilicate)", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.988, 0.992, 0.985] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.52, + "transmission": 1, + "transmissionDepth": 50, + "transmissionDispersion": 64, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.00237, 0.0018, 0.00301] + }, + { + "colorSpace": "acescg", + "color": [0.00221, 0.00186, 0.00286] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [0.0, 0.0, 0.0] + }, + { + "colorSpace": "acescg", + "color": [0.0, 0.0, 0.0] + } + ] + }, + "density": [2230], + "acousticAbsorption": [0.04, 0.04, 0.03, 0.03, 0.02, 0.02], + "description": "Borosilicate glass has numerous advantages over regular soda-lime glass, including having a higher clarity (transparency). Borosilicate is generally slightly more expensive than soda-lime glass.", + "category": ["Crystal"], + "references": [ + { + "title": "Refractive index database", + "author": "Polyanskiy, M. N.", + "url": "https://refractiveindex.info/?shelf=3d&book=glass&page=BK7", + "accessed": "2026-03-30" + }, + { + "title": "Crown glass (optics)", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Crown_glass_(optics)&oldid=1300145385", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2026-03-30" + }, + { + "title": "Borosilicate glass", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Borosilicate_glass&oldid=1340784510", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2026-03-30" + }, + { + "title": "Density", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Density&oldid=1271894167", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2025-01-26" + }, + { + "title": "Absorption coefficients of common building materials and finishes", + "author": "JCW Acoustic Supplies", + "url": "https://www.acoustic-supplies.com/absorption-coefficient-chart/", + "accessed": "2025-01-26" + }, + { + "title": "Absorption Coefficients", + "author": "Acoustic Materials & Technologies Ltd.", + "url": "https://www.acoustic.ua/st/web_absorption_data_eng.pdf", + "accessed": "2025-01-26" } ], "images": [ { "format": "jpeg", - "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/germanium.jpeg", - "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/germanium.jpeg" + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/glass-borosilicate.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/glass-borosilicate.jpeg" }, { "format": "avif", - "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/germanium.avif", - "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/germanium.avif" + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/glass-borosilicate.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/glass-borosilicate.avif" } - ] + ], + "tags": ["acoustics", "audio", "crown", "bk7"] }, { - "name": "Glass", + "name": "Glass (Soda-lime)", "color": [ { "colorSpace": "srgb-linear", - "color": [1, 1, 1] + "color": [0.984, 0.995, 0.995] } ], "metalness": 0, "roughness": 0, "ior": 1.52, "transmission": 1, + "transmissionDepth": 1, "transmissionDispersion": 64, - "density": [2500], + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.13941, 0.04527, 0.05334] + }, + { + "colorSpace": "acescg", + "color": [0.10337, 0.05197, 0.05422] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [0.0, 0.0, 0.0] + }, + { + "colorSpace": "acescg", + "color": [0.0, 0.0, 0.0] + } + ] + }, + "density": [2520], "acousticAbsorption": [0.04, 0.04, 0.03, 0.03, 0.02, 0.02], + "description": "Soda-lime glass is the most prevelant type of glass made, and accounts for about 90% of manufactured glass. It's used for windowpanes and glass containers (bottles and jars) for beverages, food, and some commodity items.", "category": ["Crystal"], "references": [ { @@ -2185,15 +2747,16 @@ "images": [ { "format": "jpeg", - "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/glass.jpeg", - "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/glass.jpeg" + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/glass-soda-lime.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/glass-soda-lime.jpeg" }, { "format": "avif", - "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/glass.avif", - "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/glass.avif" + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/glass-soda-lime.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/glass-soda-lime.avif" } - ] + ], + "tags": ["acoustics", "audio"] }, { "name": "Gold", @@ -2484,7 +3047,7 @@ "subsurfaceRadius": [0.2, 0.2, 0.2], "density": [1380, 1450, 1400], "viscosity": [2000, 15000, 15000], - "category": ["Liquid"], + "category": ["Organic"], "description": "Variations in its water content alter its refractive index. Typically, the refractive index for honey ranges from 1.504 at 13% water content to 1.474 at 25%. Fresh honey is liquid and clear but with time it crystallizes and becomes thicker and less clear. The crystallization depends on temperature and the ratio of glucose and fructose.", "references": [ { @@ -2554,22 +3117,47 @@ "color": [ { "colorSpace": "srgb-linear", - "color": [1, 1, 1] + "color": [0.973, 0.995, 1.0] } ], "metalness": 0, - "roughness": 0.5, + "roughness": 0, "ior": 1.3098, "transmission": 1, + "transmissionDepth": 100, "transmissionDispersion": 64.87, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.002075, 0.000416, 0.0] + }, + { + "colorSpace": "acescg", + "color": [0.001411, 0.000526, 0.00005] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [0.0, 0.0, 0.0] + }, + { + "colorSpace": "acescg", + "color": [0.0, 0.0, 0.0] + } + ] + }, "density": [917], + "acousticAbsorption": [0.008, 0.008, 0.013, 0.015, 0.02, 0.025], "category": ["Crystal"], + "tags": ["acoustics", "audio"], "references": [ { "title": "Refractive index database", "author": "Polyanskiy, M. N.", - "url": "https://refractiveindex.info/?shelf=3d&book=crystals&page=ice", - "accessed": "2025-01-26" + "url": "https://refractiveindex.info/?shelf=main&book=H2O&page=Warren-2008", + "accessed": "2026-04-21" }, { "title": "Refractive index database", @@ -2584,6 +3172,12 @@ "publisher": "Wikipedia, The Free Encyclopedia", "accessed": "2025-01-26" }, + { + "title": "Absorption coefficients of common building materials and finishes", + "author": "JCW Acoustic Supplies", + "url": "https://www.acoustic-supplies.com/absorption-coefficient-chart/", + "accessed": "2025-01-26" + }, { "title": "Optical Properties of Water and Ice", "author": "Wikipedia contributors", @@ -2796,6 +3390,326 @@ } ] }, + { + "name": "Juice (Apple)", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.856, 0.765, 0.569] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.3325, + "transmission": 1, + "transmissionDepth": 1, + "transmissionDispersion": 55.78, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.1296, 0.2374, 0.5218] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [0.026, 0.031, 0.041] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.947, 0.949, 0.945] + } + ] + }, + "density": [958, 1000, 1000], + "viscosity": [1.002], + "surfaceTension": 72, + "category": ["Liquid"], + "references": [ + { + "title": "Acquiring Scattering Properties Of Participating Media By Dilution", + "author": "Narasimhan, S. G., Gupta, M., Donner, C., Ramamoorthi, R., Nayar, S. K., & Jensen, H. W.", + "publisher": "Association for Computing Machinery", + "url": "https://dl.acm.org/doi/10.1145/1141911.1141986", + "volume": "25", + "issue": "3", + "pages": "1003--1012", + "year": "2006", + "doi": "https://doi.org/10.1145/1141911.1141986" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/juice-apple.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/juice-apple.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/juice-apple.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/juice-apple.avif" + } + ] + }, + { + "name": "Juice (Cranberry)", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.661, 0.381, 0.28] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.3325, + "transmission": 1, + "transmissionDepth": 1, + "transmissionDispersion": 55.78, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.3944, 0.9422, 1.2426] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [0.02, 0.024, 0.03] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.947, 0.951, 0.974] + } + ] + }, + "density": [958, 1000, 1000], + "viscosity": [1.002], + "surfaceTension": 72, + "category": ["Liquid"], + "references": [ + { + "title": "Acquiring Scattering Properties Of Participating Media By Dilution", + "author": "Narasimhan, S. G., Gupta, M., Donner, C., Ramamoorthi, R., Nayar, S. K., & Jensen, H. W.", + "publisher": "Association for Computing Machinery", + "url": "https://dl.acm.org/doi/10.1145/1141911.1141986", + "volume": "25", + "issue": "3", + "pages": "1003--1012", + "year": "2006", + "doi": "https://doi.org/10.1145/1141911.1141986" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/juice-cranberry.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/juice-cranberry.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/juice-cranberry.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/juice-cranberry.avif" + } + ] + }, + { + "name": "Juice (Grape)", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.348, 0.091, 0.053] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.3325, + "transmission": 1, + "transmissionDepth": 1, + "transmissionDispersion": 55.78, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [1.0404, 2.3958, 2.9325] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [0.014, 0.0, 0.0] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.961, 1.0, 1.0] + } + ] + }, + "density": [958, 1000, 1000], + "viscosity": [1.002], + "surfaceTension": 72, + "category": ["Liquid"], + "references": [ + { + "title": "Acquiring Scattering Properties Of Participating Media By Dilution", + "author": "Narasimhan, S. G., Gupta, M., Donner, C., Ramamoorthi, R., Nayar, S. K., & Jensen, H. W.", + "publisher": "Association for Computing Machinery", + "url": "https://dl.acm.org/doi/10.1145/1141911.1141986", + "volume": "25", + "issue": "3", + "pages": "1003--1012", + "year": "2006", + "doi": "https://doi.org/10.1145/1141911.1141986" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/juice-grape.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/juice-grape.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/juice-grape.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/juice-grape.avif" + } + ] + }, + { + "name": "Juice (Ruby Grapefruit)", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.09, 0.034, 0.016] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.3325, + "transmission": 1, + "transmissionDepth": 1, + "transmissionDispersion": 55.78, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.8587, 1.8314, 2.5262] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [1.55, 1.539, 1.599] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.929, 0.929, 0.931] + } + ] + }, + "density": [958, 1000, 1000], + "viscosity": [1.002], + "surfaceTension": 72, + "category": ["Liquid"], + "references": [ + { + "title": "Acquiring Scattering Properties Of Participating Media By Dilution", + "author": "Narasimhan, S. G., Gupta, M., Donner, C., Ramamoorthi, R., Nayar, S. K., & Jensen, H. W.", + "publisher": "Association for Computing Machinery", + "url": "https://dl.acm.org/doi/10.1145/1141911.1141986", + "volume": "25", + "issue": "3", + "pages": "1003--1012", + "year": "2006", + "doi": "https://doi.org/10.1145/1141911.1141986" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/juice-ruby-grapefruit.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/juice-ruby-grapefruit.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/juice-ruby-grapefruit.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/juice-ruby-grapefruit.avif" + } + ] + }, + { + "name": "Juice (White Grapefruit)", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.973, 0.966, 0.93] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.3325, + "transmission": 1, + "transmissionDepth": 1, + "transmissionDispersion": 55.78, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.138, 0.1883, 0.5678] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [5.05, 5.274, 7.528] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.54, 0.545, 0.565] + } + ] + }, + "density": [958, 1000, 1000], + "viscosity": [1.002], + "surfaceTension": 72, + "category": ["Liquid"], + "references": [ + { + "title": "Acquiring Scattering Properties Of Participating Media By Dilution", + "author": "Narasimhan, S. G., Gupta, M., Donner, C., Ramamoorthi, R., Nayar, S. K., & Jensen, H. W.", + "publisher": "Association for Computing Machinery", + "url": "https://dl.acm.org/doi/10.1145/1141911.1141986", + "volume": "25", + "issue": "3", + "pages": "1003--1012", + "year": "2006", + "doi": "https://doi.org/10.1145/1141911.1141986" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/juice-white-grapefruit.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/juice-white-grapefruit.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/juice-white-grapefruit.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/juice-white-grapefruit.avif" + } + ] + }, { "name": "Ketchup", "color": [ @@ -2808,6 +3722,26 @@ "roughness": 0.1, "ior": 1.3, "subsurfaceRadius": [0.476, 0.058, 0.039], + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.61, 9.7, 14.5] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [1.8, 0.7, 0.3] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.0, 0.0, 0.0] + } + ] + }, "density": [1055, 1165, 1100], "viscosity": [10000, 20000, 15000], "category": ["Organic"], @@ -3295,9 +4229,30 @@ "roughness": 0, "ior": 1.5, "subsurfaceRadius": [0.851, 0.557, 0.395], + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.021, 0.041, 0.071] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [21.9, 26.2, 30.0] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.0, 0.0, 0.0] + } + ] + }, "density": [2700], + "acousticAbsorption": [0.01, 0.01, 0.01, 0.01, 0.02, 0.02], "category": ["Crystal"], - "tags": ["sss"], + "tags": ["sss", "acoustics", "audio"], "references": [ { "title": "A Practical Model for Subsurface Light Transport", @@ -3321,6 +4276,13 @@ "publisher": "The Engineering ToolBox", "accessed": "2025-01-26" }, + { + "title": "Absorption (acoustics)", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Absorption_(acoustics)&oldid=1351206086", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2026-04-26" + }, { "title": "Study of physical and mechanical properties for some of Eastern Desert dimension marble and granite utilized in building decoration", "author": "Wahab, G. M. A., Gouda, M. & Ibrahim, G.", @@ -3474,6 +4436,26 @@ "roughness": 0, "ior": 1.348, "subsurfaceRadius": [1.842, 1.044, 0.35], + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.014, 0.025, 0.142] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [7.0, 12.2, 19.0] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.0, 0.0, 0.0] + } + ] + }, "density": [1026, 1035, 1030], "viscosity": [2], "surfaceTension": 48, @@ -3522,7 +4504,7 @@ { "title": "Density of Milk", "author": "Jones, A. N., Elert, G. (Ed.)", - "url": "https://hypertextbook.com/facts/2004/MichaelShmukler.shtml", + "url": "https://hypertextbook.com/facts/2002/AliciaNoelleJones.shtml", "publisher": "The Physics Factbook", "accessed": "2025-02-02" }, @@ -4357,10 +5339,18 @@ "roughness": 0, "ior": 1.6, "transmission": 1, + "density": [1050, 1250], "category": ["Plastic"], "description": "Modern car paints are nearly always an acrylic polyurethane \"enamel\" with a pigmented basecoat and a clear topcoat. It may be described as \"acrylic\", \"acrylic enamel\", \"urethane\", etc. and the clearcoat in particular may be described as a lacquer.", "tags": ["acrylic", "coat", "car paint", "lacquer", "polyurethane"], "references": [ + { + "title": "Polyurethane", + "author": "Wikipedia contributors", + "url": "https://en.wikipedia.org/w/index.php?title=Polyurethane&oldid=1344512232", + "publisher": "Wikipedia, The Free Encyclopedia", + "accessed": "2026-03-23" + }, { "title": "Automotive Paint", "author": "Wikipedia contributors", @@ -5764,7 +6754,7 @@ "density": [90, 450, 300], "acousticAbsorption": [0.45, 0.75, 0.9, 0.95, 0.95, 0.95], "category": ["Crystal"], - "tags": ["ice"], + "tags": ["ice", "acoustics", "audio"], "references": [ { "title": "Feeding a Physically Based Shading Model", @@ -6792,20 +7782,43 @@ "color": [ { "colorSpace": "srgb-linear", - "color": [1, 1, 1] + "color": [0.969, 0.996, 0.997] } ], "metalness": 0, "roughness": 0, "ior": 1.3325, "transmission": 1, + "transmissionDepth": 100, "transmissionDispersion": 55.78, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.00297, 0.00045, 0.00017] + }, + { + "colorSpace": "acescg", + "color": [0.00198, 0.00062, 0.00026] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [0.0, 0.0, 0.0] + }, + { + "colorSpace": "acescg", + "color": [0.0, 0.0, 0.0] + } + ] + }, "density": [958, 1000, 1000], "viscosity": [1.002], "surfaceTension": 72, "acousticAbsorption": [0.008, 0.008, 0.013, 0.015, 0.02, 0.025], "category": ["Liquid"], - "description": "While relatively small quantities of water appear to be colorless, pure water has a slight blue color that becomes deeper as the thickness of the observed sample increases. The hue of water is an intrinsic property and is caused by selective absorption and scattering of white light. Dissolved elements or suspended impurities may give water a different color.", + "description": "While relatively small quantities of water appear to be colorless, pure water has a slight blue color that becomes deeper as the thickness of the observed sample increases beyond 50 cm. The hue of water is an intrinsic property and is caused by selective absorption and scattering of white light. Dissolved elements or suspended impurities may give water a different color.", "references": [ { "title": "Refractive index database", @@ -6813,6 +7826,12 @@ "url": "https://refractiveindex.info/?shelf=main&book=H2O&page=Daimon-21.5C", "accessed": "2025-01-26" }, + { + "title": "Refractive index database", + "author": "Polyanskiy, M. N.", + "url": "https://refractiveindex.info/?shelf=main&book=H2O&page=Hale", + "accessed": "2026-04-21" + }, { "title": "Density", "author": "Wikipedia contributors", @@ -6907,7 +7926,8 @@ "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/water.avif", "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/water.avif" } - ] + ], + "tags": ["acoustics", "audio"] }, { "name": "Whiteboard", @@ -6949,6 +7969,134 @@ } ] }, + { + "name": "Wine (Red)", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.31, 0.081, 0.053] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.3325, + "transmission": 1, + "transmissionDepth": 1, + "transmissionDispersion": 55.78, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [1.1632, 2.5191, 2.9434] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [0.008, 0.0, 0.0] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.974, 1.0, 1.0] + } + ] + }, + "density": [958, 1000, 1000], + "viscosity": [1.002], + "surfaceTension": 72, + "category": ["Liquid"], + "references": [ + { + "title": "Acquiring Scattering Properties Of Participating Media By Dilution", + "author": "Narasimhan, S. G., Gupta, M., Donner, C., Ramamoorthi, R., Nayar, S. K., & Jensen, H. W.", + "publisher": "Association for Computing Machinery", + "url": "https://dl.acm.org/doi/10.1145/1141911.1141986", + "volume": "25", + "issue": "3", + "pages": "1003--1012", + "year": "2006", + "doi": "https://doi.org/10.1145/1141911.1141986" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/wine-red.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/wine-red.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/wine-red.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/wine-red.avif" + } + ] + }, + { + "name": "Wine (White)", + "color": [ + { + "colorSpace": "srgb-linear", + "color": [0.896, 0.885, 0.783] + } + ], + "metalness": 0, + "roughness": 0, + "ior": 1.3325, + "transmission": 1, + "transmissionDepth": 1, + "transmissionDispersion": 55.78, + "volumeCoefficients": { + "absorption": [ + { + "colorSpace": "srgb-linear", + "color": [0.1078, 0.1186, 0.24] + } + ], + "scattering": [ + { + "colorSpace": "srgb-linear", + "color": [0.002, 0.003, 0.005] + } + ], + "anisotropy": [ + { + "colorSpace": "srgb-linear", + "color": [0.914, 0.958, 0.975] + } + ] + }, + "density": [958, 1000, 1000], + "viscosity": [1.002], + "surfaceTension": 72, + "category": ["Liquid"], + "references": [ + { + "title": "Acquiring Scattering Properties Of Participating Media By Dilution", + "author": "Narasimhan, S. G., Gupta, M., Donner, C., Ramamoorthi, R., Nayar, S. K., & Jensen, H. W.", + "publisher": "Association for Computing Machinery", + "url": "https://dl.acm.org/doi/10.1145/1141911.1141986", + "volume": "25", + "issue": "3", + "pages": "1003--1012", + "year": "2006", + "doi": "https://doi.org/10.1145/1141911.1141986" + } + ], + "images": [ + { + "format": "jpeg", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/wine-white.jpeg", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/wine-white.jpeg" + }, + { + "format": "avif", + "300": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/300/wine-white.avif", + "600": "https://raw.githubusercontent.com/AntonPalmqvist/physically-based-api/main/images/renders/cycles/600/wine-white.avif" + } + ] + }, { "name": "Zinc", "color": [ diff --git a/images/renders/arnold/original/aluminum.png b/images/renders/arnold/original/aluminum.png deleted file mode 100644 index 089da0c..0000000 Binary files a/images/renders/arnold/original/aluminum.png and /dev/null differ diff --git a/images/renders/arnold/original/banana.png b/images/renders/arnold/original/banana.png deleted file mode 100644 index fa64971..0000000 Binary files a/images/renders/arnold/original/banana.png and /dev/null differ diff --git a/images/renders/arnold/original/blackboard.png b/images/renders/arnold/original/blackboard.png deleted file mode 100644 index 795f378..0000000 Binary files a/images/renders/arnold/original/blackboard.png and /dev/null differ diff --git a/images/renders/arnold/original/blood.png b/images/renders/arnold/original/blood.png deleted file mode 100644 index 5a29587..0000000 Binary files a/images/renders/arnold/original/blood.png and /dev/null differ diff --git a/images/renders/arnold/original/bone.png b/images/renders/arnold/original/bone.png deleted file mode 100644 index e14453d..0000000 Binary files a/images/renders/arnold/original/bone.png and /dev/null differ diff --git a/images/renders/arnold/original/brass.png b/images/renders/arnold/original/brass.png deleted file mode 100644 index 5981569..0000000 Binary files a/images/renders/arnold/original/brass.png and /dev/null differ diff --git a/images/renders/arnold/original/brick.png b/images/renders/arnold/original/brick.png deleted file mode 100644 index 670368b..0000000 Binary files a/images/renders/arnold/original/brick.png and /dev/null differ diff --git a/images/renders/arnold/original/carrot.png b/images/renders/arnold/original/carrot.png deleted file mode 100644 index cac33c2..0000000 Binary files a/images/renders/arnold/original/carrot.png and /dev/null differ diff --git a/images/renders/arnold/original/charcoal.png b/images/renders/arnold/original/charcoal.png deleted file mode 100644 index ae59aac..0000000 Binary files a/images/renders/arnold/original/charcoal.png and /dev/null differ diff --git a/images/renders/arnold/original/chocolate.png b/images/renders/arnold/original/chocolate.png deleted file mode 100644 index ec588fe..0000000 Binary files a/images/renders/arnold/original/chocolate.png and /dev/null differ diff --git a/images/renders/arnold/original/chromium.png b/images/renders/arnold/original/chromium.png deleted file mode 100644 index e694225..0000000 Binary files a/images/renders/arnold/original/chromium.png and /dev/null differ diff --git a/images/renders/arnold/original/cobalt.png b/images/renders/arnold/original/cobalt.png deleted file mode 100644 index d1f1409..0000000 Binary files a/images/renders/arnold/original/cobalt.png and /dev/null differ diff --git a/images/renders/arnold/original/coffee.png b/images/renders/arnold/original/coffee.png deleted file mode 100644 index 0734ab4..0000000 Binary files a/images/renders/arnold/original/coffee.png and /dev/null differ diff --git a/images/renders/arnold/original/concrete.png b/images/renders/arnold/original/concrete.png deleted file mode 100644 index 63de7c7..0000000 Binary files a/images/renders/arnold/original/concrete.png and /dev/null differ diff --git a/images/renders/arnold/original/cooking-oil.png b/images/renders/arnold/original/cooking-oil.png deleted file mode 100644 index cbc43f8..0000000 Binary files a/images/renders/arnold/original/cooking-oil.png and /dev/null differ diff --git a/images/renders/arnold/original/copper.png b/images/renders/arnold/original/copper.png deleted file mode 100644 index e67e34a..0000000 Binary files a/images/renders/arnold/original/copper.png and /dev/null differ diff --git a/images/renders/arnold/original/diamond.png b/images/renders/arnold/original/diamond.png deleted file mode 100644 index 36a5f6b..0000000 Binary files a/images/renders/arnold/original/diamond.png and /dev/null differ diff --git a/images/renders/arnold/original/egg-shell-white.png b/images/renders/arnold/original/egg-shell-white.png deleted file mode 100644 index 4004d13..0000000 Binary files a/images/renders/arnold/original/egg-shell-white.png and /dev/null differ diff --git a/images/renders/arnold/original/eye-cornea.png b/images/renders/arnold/original/eye-cornea.png deleted file mode 100644 index 56e596b..0000000 Binary files a/images/renders/arnold/original/eye-cornea.png and /dev/null differ diff --git a/images/renders/arnold/original/eye-lens.png b/images/renders/arnold/original/eye-lens.png deleted file mode 100644 index e762b4d..0000000 Binary files a/images/renders/arnold/original/eye-lens.png and /dev/null differ diff --git a/images/renders/arnold/original/eye-sclera.png b/images/renders/arnold/original/eye-sclera.png deleted file mode 100644 index 96f3909..0000000 Binary files a/images/renders/arnold/original/eye-sclera.png and /dev/null differ diff --git a/images/renders/arnold/original/gasoline.png b/images/renders/arnold/original/gasoline.png deleted file mode 100644 index 890ea36..0000000 Binary files a/images/renders/arnold/original/gasoline.png and /dev/null differ diff --git a/images/renders/arnold/original/glass.png b/images/renders/arnold/original/glass.png deleted file mode 100644 index 5c8b24f..0000000 Binary files a/images/renders/arnold/original/glass.png and /dev/null differ diff --git a/images/renders/arnold/original/gold.png b/images/renders/arnold/original/gold.png deleted file mode 100644 index 06467d5..0000000 Binary files a/images/renders/arnold/original/gold.png and /dev/null differ diff --git a/images/renders/arnold/original/gray-card.png b/images/renders/arnold/original/gray-card.png deleted file mode 100644 index a34de8b..0000000 Binary files a/images/renders/arnold/original/gray-card.png and /dev/null differ diff --git a/images/renders/arnold/original/honey.png b/images/renders/arnold/original/honey.png deleted file mode 100644 index e2f508e..0000000 Binary files a/images/renders/arnold/original/honey.png and /dev/null differ diff --git a/images/renders/arnold/original/ice.png b/images/renders/arnold/original/ice.png deleted file mode 100644 index 2b2c2fc..0000000 Binary files a/images/renders/arnold/original/ice.png and /dev/null differ diff --git a/images/renders/arnold/original/iron.png b/images/renders/arnold/original/iron.png deleted file mode 100644 index d3360c3..0000000 Binary files a/images/renders/arnold/original/iron.png and /dev/null differ diff --git a/images/renders/arnold/original/ketchup.png b/images/renders/arnold/original/ketchup.png deleted file mode 100644 index 3e9c2b9..0000000 Binary files a/images/renders/arnold/original/ketchup.png and /dev/null differ diff --git a/images/renders/arnold/original/lead.png b/images/renders/arnold/original/lead.png deleted file mode 100644 index 7daa46f..0000000 Binary files a/images/renders/arnold/original/lead.png and /dev/null differ diff --git a/images/renders/arnold/original/lemon.png b/images/renders/arnold/original/lemon.png deleted file mode 100644 index e906252..0000000 Binary files a/images/renders/arnold/original/lemon.png and /dev/null differ diff --git a/images/renders/arnold/original/marble.png b/images/renders/arnold/original/marble.png deleted file mode 100644 index 6ad8d32..0000000 Binary files a/images/renders/arnold/original/marble.png and /dev/null differ diff --git a/images/renders/arnold/original/mercury.png b/images/renders/arnold/original/mercury.png deleted file mode 100644 index 39b9517..0000000 Binary files a/images/renders/arnold/original/mercury.png and /dev/null differ diff --git a/images/renders/arnold/original/milk.png b/images/renders/arnold/original/milk.png deleted file mode 100644 index 5f089c2..0000000 Binary files a/images/renders/arnold/original/milk.png and /dev/null differ diff --git a/images/renders/arnold/original/nickel.png b/images/renders/arnold/original/nickel.png deleted file mode 100644 index 9abfae4..0000000 Binary files a/images/renders/arnold/original/nickel.png and /dev/null differ diff --git a/images/renders/arnold/original/office-paper.png b/images/renders/arnold/original/office-paper.png deleted file mode 100644 index 496b785..0000000 Binary files a/images/renders/arnold/original/office-paper.png and /dev/null differ diff --git a/images/renders/arnold/original/pearl.png b/images/renders/arnold/original/pearl.png deleted file mode 100644 index a4282d3..0000000 Binary files a/images/renders/arnold/original/pearl.png and /dev/null differ diff --git a/images/renders/arnold/original/petroleum.png b/images/renders/arnold/original/petroleum.png deleted file mode 100644 index fca65c3..0000000 Binary files a/images/renders/arnold/original/petroleum.png and /dev/null differ diff --git a/images/renders/arnold/original/plastic-acrylic.png b/images/renders/arnold/original/plastic-acrylic.png deleted file mode 100644 index 673d276..0000000 Binary files a/images/renders/arnold/original/plastic-acrylic.png and /dev/null differ diff --git a/images/renders/arnold/original/plastic-pc.png b/images/renders/arnold/original/plastic-pc.png deleted file mode 100644 index cc012a9..0000000 Binary files a/images/renders/arnold/original/plastic-pc.png and /dev/null differ diff --git a/images/renders/arnold/original/plastic-pet.png b/images/renders/arnold/original/plastic-pet.png deleted file mode 100644 index 5fc9132..0000000 Binary files a/images/renders/arnold/original/plastic-pet.png and /dev/null differ diff --git a/images/renders/arnold/original/plastic-pp.png b/images/renders/arnold/original/plastic-pp.png deleted file mode 100644 index 3ef6a60..0000000 Binary files a/images/renders/arnold/original/plastic-pp.png and /dev/null differ diff --git a/images/renders/arnold/original/plastic-pur.png b/images/renders/arnold/original/plastic-pur.png deleted file mode 100644 index 3b125ca..0000000 Binary files a/images/renders/arnold/original/plastic-pur.png and /dev/null differ diff --git a/images/renders/arnold/original/plastic-pvc.png b/images/renders/arnold/original/plastic-pvc.png deleted file mode 100644 index a7e789a..0000000 Binary files a/images/renders/arnold/original/plastic-pvc.png and /dev/null differ diff --git a/images/renders/arnold/original/platinum.png b/images/renders/arnold/original/platinum.png deleted file mode 100644 index 0f8d0b7..0000000 Binary files a/images/renders/arnold/original/platinum.png and /dev/null differ diff --git a/images/renders/arnold/original/salt.png b/images/renders/arnold/original/salt.png deleted file mode 100644 index 528f668..0000000 Binary files a/images/renders/arnold/original/salt.png and /dev/null differ diff --git a/images/renders/arnold/original/sand.png b/images/renders/arnold/original/sand.png deleted file mode 100644 index 97010fc..0000000 Binary files a/images/renders/arnold/original/sand.png and /dev/null differ diff --git a/images/renders/arnold/original/sapphire.png b/images/renders/arnold/original/sapphire.png deleted file mode 100644 index 121f46a..0000000 Binary files a/images/renders/arnold/original/sapphire.png and /dev/null differ diff --git a/images/renders/arnold/original/silicon.png b/images/renders/arnold/original/silicon.png deleted file mode 100644 index fa42005..0000000 Binary files a/images/renders/arnold/original/silicon.png and /dev/null differ diff --git a/images/renders/arnold/original/silver.png b/images/renders/arnold/original/silver.png deleted file mode 100644 index dc1f922..0000000 Binary files a/images/renders/arnold/original/silver.png and /dev/null differ diff --git a/images/renders/arnold/original/skin-i.png b/images/renders/arnold/original/skin-i.png deleted file mode 100644 index 5c83746..0000000 Binary files a/images/renders/arnold/original/skin-i.png and /dev/null differ diff --git a/images/renders/arnold/original/skin-ii.png b/images/renders/arnold/original/skin-ii.png deleted file mode 100644 index 1f116de..0000000 Binary files a/images/renders/arnold/original/skin-ii.png and /dev/null differ diff --git a/images/renders/arnold/original/skin-iii.png b/images/renders/arnold/original/skin-iii.png deleted file mode 100644 index 0c698fc..0000000 Binary files a/images/renders/arnold/original/skin-iii.png and /dev/null differ diff --git a/images/renders/arnold/original/skin-iv.png b/images/renders/arnold/original/skin-iv.png deleted file mode 100644 index 2d9176a..0000000 Binary files a/images/renders/arnold/original/skin-iv.png and /dev/null differ diff --git a/images/renders/arnold/original/skin-v.png b/images/renders/arnold/original/skin-v.png deleted file mode 100644 index 639f811..0000000 Binary files a/images/renders/arnold/original/skin-v.png and /dev/null differ diff --git a/images/renders/arnold/original/skin-vi.png b/images/renders/arnold/original/skin-vi.png deleted file mode 100644 index 0cba189..0000000 Binary files a/images/renders/arnold/original/skin-vi.png and /dev/null differ diff --git a/images/renders/arnold/original/snow.png b/images/renders/arnold/original/snow.png deleted file mode 100644 index 010f782..0000000 Binary files a/images/renders/arnold/original/snow.png and /dev/null differ diff --git a/images/renders/arnold/original/soap-bubble.png b/images/renders/arnold/original/soap-bubble.png deleted file mode 100644 index 005e631..0000000 Binary files a/images/renders/arnold/original/soap-bubble.png and /dev/null differ diff --git a/images/renders/arnold/original/tire.png b/images/renders/arnold/original/tire.png deleted file mode 100644 index cd94289..0000000 Binary files a/images/renders/arnold/original/tire.png and /dev/null differ diff --git a/images/renders/arnold/original/titanium.png b/images/renders/arnold/original/titanium.png deleted file mode 100644 index b9f6e40..0000000 Binary files a/images/renders/arnold/original/titanium.png and /dev/null differ diff --git a/images/renders/arnold/original/tungsten.png b/images/renders/arnold/original/tungsten.png deleted file mode 100644 index 51b3bea..0000000 Binary files a/images/renders/arnold/original/tungsten.png and /dev/null differ diff --git a/images/renders/arnold/original/vanadium.png b/images/renders/arnold/original/vanadium.png deleted file mode 100644 index 0969fb1..0000000 Binary files a/images/renders/arnold/original/vanadium.png and /dev/null differ diff --git a/images/renders/arnold/original/water.png b/images/renders/arnold/original/water.png deleted file mode 100644 index f3a5087..0000000 Binary files a/images/renders/arnold/original/water.png and /dev/null differ diff --git a/images/renders/arnold/original/whiteboard.png b/images/renders/arnold/original/whiteboard.png deleted file mode 100644 index aa1f03d..0000000 Binary files a/images/renders/arnold/original/whiteboard.png and /dev/null differ diff --git a/images/renders/arnold/original/zinc.png b/images/renders/arnold/original/zinc.png deleted file mode 100644 index f4fbe9b..0000000 Binary files a/images/renders/arnold/original/zinc.png and /dev/null differ diff --git a/images/renders/cycles/300/amber.avif b/images/renders/cycles/300/amber.avif index e52807f..fc3070c 100644 Binary files a/images/renders/cycles/300/amber.avif and b/images/renders/cycles/300/amber.avif differ diff --git a/images/renders/cycles/300/amber.jpeg b/images/renders/cycles/300/amber.jpeg index 98b0b54..94c9a76 100644 Binary files a/images/renders/cycles/300/amber.jpeg and b/images/renders/cycles/300/amber.jpeg differ diff --git a/images/renders/cycles/300/beer-pale-lager.avif b/images/renders/cycles/300/beer-pale-lager.avif new file mode 100644 index 0000000..ae1ac30 Binary files /dev/null and b/images/renders/cycles/300/beer-pale-lager.avif differ diff --git a/images/renders/cycles/300/beer-pale-lager.jpeg b/images/renders/cycles/300/beer-pale-lager.jpeg new file mode 100644 index 0000000..5027bc7 Binary files /dev/null and b/images/renders/cycles/300/beer-pale-lager.jpeg differ diff --git a/images/renders/cycles/300/blood-deoxygenated.avif b/images/renders/cycles/300/blood-deoxygenated.avif new file mode 100644 index 0000000..c446eed Binary files /dev/null and b/images/renders/cycles/300/blood-deoxygenated.avif differ diff --git a/images/renders/cycles/300/blood-deoxygenated.jpeg b/images/renders/cycles/300/blood-deoxygenated.jpeg new file mode 100644 index 0000000..277cfff Binary files /dev/null and b/images/renders/cycles/300/blood-deoxygenated.jpeg differ diff --git a/images/renders/cycles/300/blood-oxygenated.avif b/images/renders/cycles/300/blood-oxygenated.avif new file mode 100644 index 0000000..2b4bf06 Binary files /dev/null and b/images/renders/cycles/300/blood-oxygenated.avif differ diff --git a/images/renders/cycles/300/blood-oxygenated.jpeg b/images/renders/cycles/300/blood-oxygenated.jpeg new file mode 100644 index 0000000..7225a1e Binary files /dev/null and b/images/renders/cycles/300/blood-oxygenated.jpeg differ diff --git a/images/renders/cycles/300/blood.avif b/images/renders/cycles/300/blood.avif deleted file mode 100644 index 23dc342..0000000 Binary files a/images/renders/cycles/300/blood.avif and /dev/null differ diff --git a/images/renders/cycles/300/blood.jpeg b/images/renders/cycles/300/blood.jpeg deleted file mode 100644 index 4c0253e..0000000 Binary files a/images/renders/cycles/300/blood.jpeg and /dev/null differ diff --git a/images/renders/cycles/300/coffee.avif b/images/renders/cycles/300/coffee.avif index b02708f..47dc3b2 100644 Binary files a/images/renders/cycles/300/coffee.avif and b/images/renders/cycles/300/coffee.avif differ diff --git a/images/renders/cycles/300/coffee.jpeg b/images/renders/cycles/300/coffee.jpeg index 372cbf3..e656e7b 100644 Binary files a/images/renders/cycles/300/coffee.jpeg and b/images/renders/cycles/300/coffee.jpeg differ diff --git a/images/renders/cycles/300/cola.avif b/images/renders/cycles/300/cola.avif new file mode 100644 index 0000000..e194626 Binary files /dev/null and b/images/renders/cycles/300/cola.avif differ diff --git a/images/renders/cycles/300/cola.jpeg b/images/renders/cycles/300/cola.jpeg new file mode 100644 index 0000000..da2ec89 Binary files /dev/null and b/images/renders/cycles/300/cola.jpeg differ diff --git a/images/renders/cycles/300/cooking-oil.avif b/images/renders/cycles/300/cooking-oil.avif index b27d775..53b56d1 100644 Binary files a/images/renders/cycles/300/cooking-oil.avif and b/images/renders/cycles/300/cooking-oil.avif differ diff --git a/images/renders/cycles/300/cooking-oil.jpeg b/images/renders/cycles/300/cooking-oil.jpeg index 164e5f1..ac529a8 100644 Binary files a/images/renders/cycles/300/cooking-oil.jpeg and b/images/renders/cycles/300/cooking-oil.jpeg differ diff --git a/images/renders/cycles/300/cream.avif b/images/renders/cycles/300/cream.avif new file mode 100644 index 0000000..33b5413 Binary files /dev/null and b/images/renders/cycles/300/cream.avif differ diff --git a/images/renders/cycles/300/cream.jpeg b/images/renders/cycles/300/cream.jpeg new file mode 100644 index 0000000..6a1bc97 Binary files /dev/null and b/images/renders/cycles/300/cream.jpeg differ diff --git a/images/renders/cycles/300/gasoline.avif b/images/renders/cycles/300/gasoline.avif index aeb3f72..9a4213a 100644 Binary files a/images/renders/cycles/300/gasoline.avif and b/images/renders/cycles/300/gasoline.avif differ diff --git a/images/renders/cycles/300/gasoline.jpeg b/images/renders/cycles/300/gasoline.jpeg index e32ca28..da00b77 100644 Binary files a/images/renders/cycles/300/gasoline.jpeg and b/images/renders/cycles/300/gasoline.jpeg differ diff --git a/images/renders/cycles/300/glass-borosilicate.avif b/images/renders/cycles/300/glass-borosilicate.avif new file mode 100644 index 0000000..8e914a0 Binary files /dev/null and b/images/renders/cycles/300/glass-borosilicate.avif differ diff --git a/images/renders/cycles/300/glass-borosilicate.jpeg b/images/renders/cycles/300/glass-borosilicate.jpeg new file mode 100644 index 0000000..32e0600 Binary files /dev/null and b/images/renders/cycles/300/glass-borosilicate.jpeg differ diff --git a/images/renders/cycles/300/glass-soda-lime.avif b/images/renders/cycles/300/glass-soda-lime.avif new file mode 100644 index 0000000..be806c7 Binary files /dev/null and b/images/renders/cycles/300/glass-soda-lime.avif differ diff --git a/images/renders/cycles/300/glass-soda-lime.jpeg b/images/renders/cycles/300/glass-soda-lime.jpeg new file mode 100644 index 0000000..bcfc985 Binary files /dev/null and b/images/renders/cycles/300/glass-soda-lime.jpeg differ diff --git a/images/renders/cycles/300/glass.avif b/images/renders/cycles/300/glass.avif deleted file mode 100644 index f0de1d6..0000000 Binary files a/images/renders/cycles/300/glass.avif and /dev/null differ diff --git a/images/renders/cycles/300/glass.jpeg b/images/renders/cycles/300/glass.jpeg deleted file mode 100644 index ace7383..0000000 Binary files a/images/renders/cycles/300/glass.jpeg and /dev/null differ diff --git a/images/renders/cycles/300/honey-liquid.avif b/images/renders/cycles/300/honey-liquid.avif index 9fc6fcf..7b70fd3 100644 Binary files a/images/renders/cycles/300/honey-liquid.avif and b/images/renders/cycles/300/honey-liquid.avif differ diff --git a/images/renders/cycles/300/honey-liquid.jpeg b/images/renders/cycles/300/honey-liquid.jpeg index 7eb762e..58e5e1d 100644 Binary files a/images/renders/cycles/300/honey-liquid.jpeg and b/images/renders/cycles/300/honey-liquid.jpeg differ diff --git a/images/renders/cycles/300/ice.avif b/images/renders/cycles/300/ice.avif index d5f11c6..d721ac5 100644 Binary files a/images/renders/cycles/300/ice.avif and b/images/renders/cycles/300/ice.avif differ diff --git a/images/renders/cycles/300/ice.jpeg b/images/renders/cycles/300/ice.jpeg index be549e3..81a481b 100644 Binary files a/images/renders/cycles/300/ice.jpeg and b/images/renders/cycles/300/ice.jpeg differ diff --git a/images/renders/cycles/300/juice-apple.avif b/images/renders/cycles/300/juice-apple.avif new file mode 100644 index 0000000..bf74273 Binary files /dev/null and b/images/renders/cycles/300/juice-apple.avif differ diff --git a/images/renders/cycles/300/juice-apple.jpeg b/images/renders/cycles/300/juice-apple.jpeg new file mode 100644 index 0000000..cb506f0 Binary files /dev/null and b/images/renders/cycles/300/juice-apple.jpeg differ diff --git a/images/renders/cycles/300/juice-cranberry.avif b/images/renders/cycles/300/juice-cranberry.avif new file mode 100644 index 0000000..b21708f Binary files /dev/null and b/images/renders/cycles/300/juice-cranberry.avif differ diff --git a/images/renders/cycles/300/juice-cranberry.jpeg b/images/renders/cycles/300/juice-cranberry.jpeg new file mode 100644 index 0000000..eccd8e6 Binary files /dev/null and b/images/renders/cycles/300/juice-cranberry.jpeg differ diff --git a/images/renders/cycles/300/juice-grape.avif b/images/renders/cycles/300/juice-grape.avif new file mode 100644 index 0000000..a880ba7 Binary files /dev/null and b/images/renders/cycles/300/juice-grape.avif differ diff --git a/images/renders/cycles/300/juice-grape.jpeg b/images/renders/cycles/300/juice-grape.jpeg new file mode 100644 index 0000000..712bba5 Binary files /dev/null and b/images/renders/cycles/300/juice-grape.jpeg differ diff --git a/images/renders/cycles/300/juice-ruby-grapefruit.avif b/images/renders/cycles/300/juice-ruby-grapefruit.avif new file mode 100644 index 0000000..ce41c1d Binary files /dev/null and b/images/renders/cycles/300/juice-ruby-grapefruit.avif differ diff --git a/images/renders/cycles/300/juice-ruby-grapefruit.jpeg b/images/renders/cycles/300/juice-ruby-grapefruit.jpeg new file mode 100644 index 0000000..9644dd7 Binary files /dev/null and b/images/renders/cycles/300/juice-ruby-grapefruit.jpeg differ diff --git a/images/renders/cycles/300/juice-white-grapefruit.avif b/images/renders/cycles/300/juice-white-grapefruit.avif new file mode 100644 index 0000000..1b6269f Binary files /dev/null and b/images/renders/cycles/300/juice-white-grapefruit.avif differ diff --git a/images/renders/cycles/300/juice-white-grapefruit.jpeg b/images/renders/cycles/300/juice-white-grapefruit.jpeg new file mode 100644 index 0000000..07dc25e Binary files /dev/null and b/images/renders/cycles/300/juice-white-grapefruit.jpeg differ diff --git a/images/renders/cycles/300/ketchup.avif b/images/renders/cycles/300/ketchup.avif index bb4cfed..e844303 100644 Binary files a/images/renders/cycles/300/ketchup.avif and b/images/renders/cycles/300/ketchup.avif differ diff --git a/images/renders/cycles/300/ketchup.jpeg b/images/renders/cycles/300/ketchup.jpeg index f60cd3d..bf20b36 100644 Binary files a/images/renders/cycles/300/ketchup.jpeg and b/images/renders/cycles/300/ketchup.jpeg differ diff --git a/images/renders/cycles/300/marble.avif b/images/renders/cycles/300/marble.avif index c6833c3..566a822 100644 Binary files a/images/renders/cycles/300/marble.avif and b/images/renders/cycles/300/marble.avif differ diff --git a/images/renders/cycles/300/marble.jpeg b/images/renders/cycles/300/marble.jpeg index 71fd80a..2dad25d 100644 Binary files a/images/renders/cycles/300/marble.jpeg and b/images/renders/cycles/300/marble.jpeg differ diff --git a/images/renders/cycles/300/mercury.avif b/images/renders/cycles/300/mercury.avif index d85cec1..012a29a 100644 Binary files a/images/renders/cycles/300/mercury.avif and b/images/renders/cycles/300/mercury.avif differ diff --git a/images/renders/cycles/300/mercury.jpeg b/images/renders/cycles/300/mercury.jpeg index b7f86c2..f62a8e8 100644 Binary files a/images/renders/cycles/300/mercury.jpeg and b/images/renders/cycles/300/mercury.jpeg differ diff --git a/images/renders/cycles/300/milk.avif b/images/renders/cycles/300/milk.avif index 58b9e02..f307406 100644 Binary files a/images/renders/cycles/300/milk.avif and b/images/renders/cycles/300/milk.avif differ diff --git a/images/renders/cycles/300/milk.jpeg b/images/renders/cycles/300/milk.jpeg index 501fd5a..9ac4482 100644 Binary files a/images/renders/cycles/300/milk.jpeg and b/images/renders/cycles/300/milk.jpeg differ diff --git a/images/renders/cycles/300/petroleum.avif b/images/renders/cycles/300/petroleum.avif index 62928d0..7bd87e0 100644 Binary files a/images/renders/cycles/300/petroleum.avif and b/images/renders/cycles/300/petroleum.avif differ diff --git a/images/renders/cycles/300/petroleum.jpeg b/images/renders/cycles/300/petroleum.jpeg index 0429550..a4057c1 100644 Binary files a/images/renders/cycles/300/petroleum.jpeg and b/images/renders/cycles/300/petroleum.jpeg differ diff --git a/images/renders/cycles/300/water.avif b/images/renders/cycles/300/water.avif index 1862a22..e9a2288 100644 Binary files a/images/renders/cycles/300/water.avif and b/images/renders/cycles/300/water.avif differ diff --git a/images/renders/cycles/300/water.jpeg b/images/renders/cycles/300/water.jpeg index ce1ce87..f33819d 100644 Binary files a/images/renders/cycles/300/water.jpeg and b/images/renders/cycles/300/water.jpeg differ diff --git a/images/renders/cycles/300/wine-red.avif b/images/renders/cycles/300/wine-red.avif new file mode 100644 index 0000000..a7ea36c Binary files /dev/null and b/images/renders/cycles/300/wine-red.avif differ diff --git a/images/renders/cycles/300/wine-red.jpeg b/images/renders/cycles/300/wine-red.jpeg new file mode 100644 index 0000000..3f2ab10 Binary files /dev/null and b/images/renders/cycles/300/wine-red.jpeg differ diff --git a/images/renders/cycles/300/wine-white.avif b/images/renders/cycles/300/wine-white.avif new file mode 100644 index 0000000..9b33924 Binary files /dev/null and b/images/renders/cycles/300/wine-white.avif differ diff --git a/images/renders/cycles/300/wine-white.jpeg b/images/renders/cycles/300/wine-white.jpeg new file mode 100644 index 0000000..5d02d60 Binary files /dev/null and b/images/renders/cycles/300/wine-white.jpeg differ diff --git a/images/renders/cycles/600/amber.avif b/images/renders/cycles/600/amber.avif index 77002fb..824cfc5 100644 Binary files a/images/renders/cycles/600/amber.avif and b/images/renders/cycles/600/amber.avif differ diff --git a/images/renders/cycles/600/amber.jpeg b/images/renders/cycles/600/amber.jpeg index 7d1f63d..2ac83a4 100644 Binary files a/images/renders/cycles/600/amber.jpeg and b/images/renders/cycles/600/amber.jpeg differ diff --git a/images/renders/cycles/600/beer-pale-lager.avif b/images/renders/cycles/600/beer-pale-lager.avif new file mode 100644 index 0000000..3143b0e Binary files /dev/null and b/images/renders/cycles/600/beer-pale-lager.avif differ diff --git a/images/renders/cycles/600/beer-pale-lager.jpeg b/images/renders/cycles/600/beer-pale-lager.jpeg new file mode 100644 index 0000000..eb78685 Binary files /dev/null and b/images/renders/cycles/600/beer-pale-lager.jpeg differ diff --git a/images/renders/cycles/600/blood-deoxygenated.avif b/images/renders/cycles/600/blood-deoxygenated.avif new file mode 100644 index 0000000..64e1065 Binary files /dev/null and b/images/renders/cycles/600/blood-deoxygenated.avif differ diff --git a/images/renders/cycles/600/blood-deoxygenated.jpeg b/images/renders/cycles/600/blood-deoxygenated.jpeg new file mode 100644 index 0000000..95d9db7 Binary files /dev/null and b/images/renders/cycles/600/blood-deoxygenated.jpeg differ diff --git a/images/renders/cycles/600/blood-oxygenated.avif b/images/renders/cycles/600/blood-oxygenated.avif new file mode 100644 index 0000000..b06f459 Binary files /dev/null and b/images/renders/cycles/600/blood-oxygenated.avif differ diff --git a/images/renders/cycles/600/blood-oxygenated.jpeg b/images/renders/cycles/600/blood-oxygenated.jpeg new file mode 100644 index 0000000..a1bc2f0 Binary files /dev/null and b/images/renders/cycles/600/blood-oxygenated.jpeg differ diff --git a/images/renders/cycles/600/blood.avif b/images/renders/cycles/600/blood.avif deleted file mode 100644 index c2b19e8..0000000 Binary files a/images/renders/cycles/600/blood.avif and /dev/null differ diff --git a/images/renders/cycles/600/blood.jpeg b/images/renders/cycles/600/blood.jpeg deleted file mode 100644 index 5ff97bd..0000000 Binary files a/images/renders/cycles/600/blood.jpeg and /dev/null differ diff --git a/images/renders/cycles/600/coffee.avif b/images/renders/cycles/600/coffee.avif index b2a79b0..762596e 100644 Binary files a/images/renders/cycles/600/coffee.avif and b/images/renders/cycles/600/coffee.avif differ diff --git a/images/renders/cycles/600/coffee.jpeg b/images/renders/cycles/600/coffee.jpeg index 33b142e..f8430f2 100644 Binary files a/images/renders/cycles/600/coffee.jpeg and b/images/renders/cycles/600/coffee.jpeg differ diff --git a/images/renders/cycles/600/cola.avif b/images/renders/cycles/600/cola.avif new file mode 100644 index 0000000..2e21aae Binary files /dev/null and b/images/renders/cycles/600/cola.avif differ diff --git a/images/renders/cycles/600/cola.jpeg b/images/renders/cycles/600/cola.jpeg new file mode 100644 index 0000000..4162eca Binary files /dev/null and b/images/renders/cycles/600/cola.jpeg differ diff --git a/images/renders/cycles/600/cooking-oil.avif b/images/renders/cycles/600/cooking-oil.avif index 23e59df..5170cd1 100644 Binary files a/images/renders/cycles/600/cooking-oil.avif and b/images/renders/cycles/600/cooking-oil.avif differ diff --git a/images/renders/cycles/600/cooking-oil.jpeg b/images/renders/cycles/600/cooking-oil.jpeg index 063323a..d7d6ff2 100644 Binary files a/images/renders/cycles/600/cooking-oil.jpeg and b/images/renders/cycles/600/cooking-oil.jpeg differ diff --git a/images/renders/cycles/600/cream.avif b/images/renders/cycles/600/cream.avif new file mode 100644 index 0000000..3a9a455 Binary files /dev/null and b/images/renders/cycles/600/cream.avif differ diff --git a/images/renders/cycles/600/cream.jpeg b/images/renders/cycles/600/cream.jpeg new file mode 100644 index 0000000..c996f8a Binary files /dev/null and b/images/renders/cycles/600/cream.jpeg differ diff --git a/images/renders/cycles/600/gasoline.avif b/images/renders/cycles/600/gasoline.avif index 23a3e77..f2ae4ab 100644 Binary files a/images/renders/cycles/600/gasoline.avif and b/images/renders/cycles/600/gasoline.avif differ diff --git a/images/renders/cycles/600/gasoline.jpeg b/images/renders/cycles/600/gasoline.jpeg index c893620..0ee06e2 100644 Binary files a/images/renders/cycles/600/gasoline.jpeg and b/images/renders/cycles/600/gasoline.jpeg differ diff --git a/images/renders/cycles/600/glass-borosilicate.avif b/images/renders/cycles/600/glass-borosilicate.avif new file mode 100644 index 0000000..9b957f9 Binary files /dev/null and b/images/renders/cycles/600/glass-borosilicate.avif differ diff --git a/images/renders/cycles/600/glass-borosilicate.jpeg b/images/renders/cycles/600/glass-borosilicate.jpeg new file mode 100644 index 0000000..6f710f5 Binary files /dev/null and b/images/renders/cycles/600/glass-borosilicate.jpeg differ diff --git a/images/renders/cycles/600/glass-soda-lime.avif b/images/renders/cycles/600/glass-soda-lime.avif new file mode 100644 index 0000000..e2cf67d Binary files /dev/null and b/images/renders/cycles/600/glass-soda-lime.avif differ diff --git a/images/renders/cycles/600/glass-soda-lime.jpeg b/images/renders/cycles/600/glass-soda-lime.jpeg new file mode 100644 index 0000000..bfb0ec2 Binary files /dev/null and b/images/renders/cycles/600/glass-soda-lime.jpeg differ diff --git a/images/renders/cycles/600/glass.avif b/images/renders/cycles/600/glass.avif deleted file mode 100644 index eb873ea..0000000 Binary files a/images/renders/cycles/600/glass.avif and /dev/null differ diff --git a/images/renders/cycles/600/glass.jpeg b/images/renders/cycles/600/glass.jpeg deleted file mode 100644 index 0564f37..0000000 Binary files a/images/renders/cycles/600/glass.jpeg and /dev/null differ diff --git a/images/renders/cycles/600/honey-liquid.avif b/images/renders/cycles/600/honey-liquid.avif index d299cb9..afff609 100644 Binary files a/images/renders/cycles/600/honey-liquid.avif and b/images/renders/cycles/600/honey-liquid.avif differ diff --git a/images/renders/cycles/600/honey-liquid.jpeg b/images/renders/cycles/600/honey-liquid.jpeg index fba2c9a..e28c4fa 100644 Binary files a/images/renders/cycles/600/honey-liquid.jpeg and b/images/renders/cycles/600/honey-liquid.jpeg differ diff --git a/images/renders/cycles/600/ice.avif b/images/renders/cycles/600/ice.avif index 5ba3f25..1cfbee8 100644 Binary files a/images/renders/cycles/600/ice.avif and b/images/renders/cycles/600/ice.avif differ diff --git a/images/renders/cycles/600/ice.jpeg b/images/renders/cycles/600/ice.jpeg index d77ff7d..96f13aa 100644 Binary files a/images/renders/cycles/600/ice.jpeg and b/images/renders/cycles/600/ice.jpeg differ diff --git a/images/renders/cycles/600/juice-apple.avif b/images/renders/cycles/600/juice-apple.avif new file mode 100644 index 0000000..7392835 Binary files /dev/null and b/images/renders/cycles/600/juice-apple.avif differ diff --git a/images/renders/cycles/600/juice-apple.jpeg b/images/renders/cycles/600/juice-apple.jpeg new file mode 100644 index 0000000..17100b2 Binary files /dev/null and b/images/renders/cycles/600/juice-apple.jpeg differ diff --git a/images/renders/cycles/600/juice-cranberry.avif b/images/renders/cycles/600/juice-cranberry.avif new file mode 100644 index 0000000..96ea95e Binary files /dev/null and b/images/renders/cycles/600/juice-cranberry.avif differ diff --git a/images/renders/cycles/600/juice-cranberry.jpeg b/images/renders/cycles/600/juice-cranberry.jpeg new file mode 100644 index 0000000..5fdf373 Binary files /dev/null and b/images/renders/cycles/600/juice-cranberry.jpeg differ diff --git a/images/renders/cycles/600/juice-grape.avif b/images/renders/cycles/600/juice-grape.avif new file mode 100644 index 0000000..1c61ce6 Binary files /dev/null and b/images/renders/cycles/600/juice-grape.avif differ diff --git a/images/renders/cycles/600/juice-grape.jpeg b/images/renders/cycles/600/juice-grape.jpeg new file mode 100644 index 0000000..4df6c39 Binary files /dev/null and b/images/renders/cycles/600/juice-grape.jpeg differ diff --git a/images/renders/cycles/600/juice-ruby-grapefruit.avif b/images/renders/cycles/600/juice-ruby-grapefruit.avif new file mode 100644 index 0000000..adf98fd Binary files /dev/null and b/images/renders/cycles/600/juice-ruby-grapefruit.avif differ diff --git a/images/renders/cycles/600/juice-ruby-grapefruit.jpeg b/images/renders/cycles/600/juice-ruby-grapefruit.jpeg new file mode 100644 index 0000000..f0a1a46 Binary files /dev/null and b/images/renders/cycles/600/juice-ruby-grapefruit.jpeg differ diff --git a/images/renders/cycles/600/juice-white-grapefruit.avif b/images/renders/cycles/600/juice-white-grapefruit.avif new file mode 100644 index 0000000..ad5d71e Binary files /dev/null and b/images/renders/cycles/600/juice-white-grapefruit.avif differ diff --git a/images/renders/cycles/600/juice-white-grapefruit.jpeg b/images/renders/cycles/600/juice-white-grapefruit.jpeg new file mode 100644 index 0000000..f3a613b Binary files /dev/null and b/images/renders/cycles/600/juice-white-grapefruit.jpeg differ diff --git a/images/renders/cycles/600/ketchup.avif b/images/renders/cycles/600/ketchup.avif index 6f065d9..f112a46 100644 Binary files a/images/renders/cycles/600/ketchup.avif and b/images/renders/cycles/600/ketchup.avif differ diff --git a/images/renders/cycles/600/ketchup.jpeg b/images/renders/cycles/600/ketchup.jpeg index a0e4cf3..2e4f151 100644 Binary files a/images/renders/cycles/600/ketchup.jpeg and b/images/renders/cycles/600/ketchup.jpeg differ diff --git a/images/renders/cycles/600/marble.avif b/images/renders/cycles/600/marble.avif index b2cc476..bf51957 100644 Binary files a/images/renders/cycles/600/marble.avif and b/images/renders/cycles/600/marble.avif differ diff --git a/images/renders/cycles/600/marble.jpeg b/images/renders/cycles/600/marble.jpeg index dc3cb86..7a38042 100644 Binary files a/images/renders/cycles/600/marble.jpeg and b/images/renders/cycles/600/marble.jpeg differ diff --git a/images/renders/cycles/600/mercury.avif b/images/renders/cycles/600/mercury.avif index 5a3bf36..7ff1fe5 100644 Binary files a/images/renders/cycles/600/mercury.avif and b/images/renders/cycles/600/mercury.avif differ diff --git a/images/renders/cycles/600/mercury.jpeg b/images/renders/cycles/600/mercury.jpeg index aba7ee7..a4fcc1d 100644 Binary files a/images/renders/cycles/600/mercury.jpeg and b/images/renders/cycles/600/mercury.jpeg differ diff --git a/images/renders/cycles/600/milk.avif b/images/renders/cycles/600/milk.avif index d45a7e8..ae1a169 100644 Binary files a/images/renders/cycles/600/milk.avif and b/images/renders/cycles/600/milk.avif differ diff --git a/images/renders/cycles/600/milk.jpeg b/images/renders/cycles/600/milk.jpeg index 8269983..d5dde09 100644 Binary files a/images/renders/cycles/600/milk.jpeg and b/images/renders/cycles/600/milk.jpeg differ diff --git a/images/renders/cycles/600/petroleum.avif b/images/renders/cycles/600/petroleum.avif index 320eca6..6f71b9a 100644 Binary files a/images/renders/cycles/600/petroleum.avif and b/images/renders/cycles/600/petroleum.avif differ diff --git a/images/renders/cycles/600/petroleum.jpeg b/images/renders/cycles/600/petroleum.jpeg index 5a71003..aaba437 100644 Binary files a/images/renders/cycles/600/petroleum.jpeg and b/images/renders/cycles/600/petroleum.jpeg differ diff --git a/images/renders/cycles/600/water.avif b/images/renders/cycles/600/water.avif index d4ebb85..595a2b9 100644 Binary files a/images/renders/cycles/600/water.avif and b/images/renders/cycles/600/water.avif differ diff --git a/images/renders/cycles/600/water.jpeg b/images/renders/cycles/600/water.jpeg index aa5f376..c50f2c1 100644 Binary files a/images/renders/cycles/600/water.jpeg and b/images/renders/cycles/600/water.jpeg differ diff --git a/images/renders/cycles/600/wine-red.avif b/images/renders/cycles/600/wine-red.avif new file mode 100644 index 0000000..88c1f03 Binary files /dev/null and b/images/renders/cycles/600/wine-red.avif differ diff --git a/images/renders/cycles/600/wine-red.jpeg b/images/renders/cycles/600/wine-red.jpeg new file mode 100644 index 0000000..4f2aaf5 Binary files /dev/null and b/images/renders/cycles/600/wine-red.jpeg differ diff --git a/images/renders/cycles/600/wine-white.avif b/images/renders/cycles/600/wine-white.avif new file mode 100644 index 0000000..f61d319 Binary files /dev/null and b/images/renders/cycles/600/wine-white.avif differ diff --git a/images/renders/cycles/600/wine-white.jpeg b/images/renders/cycles/600/wine-white.jpeg new file mode 100644 index 0000000..9a0e648 Binary files /dev/null and b/images/renders/cycles/600/wine-white.jpeg differ diff --git a/images/renders/cycles/original/amber.png b/images/renders/cycles/original/amber.png index 4181c12..c48a5b0 100644 Binary files a/images/renders/cycles/original/amber.png and b/images/renders/cycles/original/amber.png differ diff --git a/images/renders/cycles/original/beer-pale-lager.png b/images/renders/cycles/original/beer-pale-lager.png new file mode 100644 index 0000000..865b1ec Binary files /dev/null and b/images/renders/cycles/original/beer-pale-lager.png differ diff --git a/images/renders/cycles/original/blood-deoxygenated.png b/images/renders/cycles/original/blood-deoxygenated.png new file mode 100644 index 0000000..2ee0b6d Binary files /dev/null and b/images/renders/cycles/original/blood-deoxygenated.png differ diff --git a/images/renders/cycles/original/blood-oxygenated.png b/images/renders/cycles/original/blood-oxygenated.png new file mode 100644 index 0000000..624c58d Binary files /dev/null and b/images/renders/cycles/original/blood-oxygenated.png differ diff --git a/images/renders/cycles/original/blood.png b/images/renders/cycles/original/blood.png deleted file mode 100644 index 557a85b..0000000 Binary files a/images/renders/cycles/original/blood.png and /dev/null differ diff --git a/images/renders/cycles/original/coffee.png b/images/renders/cycles/original/coffee.png index 4572573..a285501 100644 Binary files a/images/renders/cycles/original/coffee.png and b/images/renders/cycles/original/coffee.png differ diff --git a/images/renders/cycles/original/cola.png b/images/renders/cycles/original/cola.png new file mode 100644 index 0000000..26da2c1 Binary files /dev/null and b/images/renders/cycles/original/cola.png differ diff --git a/images/renders/cycles/original/cooking-oil.png b/images/renders/cycles/original/cooking-oil.png index 61c9ca5..98e88ab 100644 Binary files a/images/renders/cycles/original/cooking-oil.png and b/images/renders/cycles/original/cooking-oil.png differ diff --git a/images/renders/cycles/original/cream.png b/images/renders/cycles/original/cream.png new file mode 100644 index 0000000..488ba6f Binary files /dev/null and b/images/renders/cycles/original/cream.png differ diff --git a/images/renders/cycles/original/gasoline.png b/images/renders/cycles/original/gasoline.png index 67a7eb4..dda1497 100644 Binary files a/images/renders/cycles/original/gasoline.png and b/images/renders/cycles/original/gasoline.png differ diff --git a/images/renders/cycles/original/glass-borosilicate.png b/images/renders/cycles/original/glass-borosilicate.png new file mode 100644 index 0000000..bdd0a4a Binary files /dev/null and b/images/renders/cycles/original/glass-borosilicate.png differ diff --git a/images/renders/cycles/original/glass-soda-lime.png b/images/renders/cycles/original/glass-soda-lime.png new file mode 100644 index 0000000..1fcef75 Binary files /dev/null and b/images/renders/cycles/original/glass-soda-lime.png differ diff --git a/images/renders/cycles/original/glass.png b/images/renders/cycles/original/glass.png deleted file mode 100644 index 3fde8d5..0000000 Binary files a/images/renders/cycles/original/glass.png and /dev/null differ diff --git a/images/renders/cycles/original/honey-liquid.png b/images/renders/cycles/original/honey-liquid.png index 576cd78..c42687a 100644 Binary files a/images/renders/cycles/original/honey-liquid.png and b/images/renders/cycles/original/honey-liquid.png differ diff --git a/images/renders/cycles/original/ice.png b/images/renders/cycles/original/ice.png index 477f128..16d2d8e 100644 Binary files a/images/renders/cycles/original/ice.png and b/images/renders/cycles/original/ice.png differ diff --git a/images/renders/cycles/original/juice-apple.png b/images/renders/cycles/original/juice-apple.png new file mode 100644 index 0000000..2bcfd6b Binary files /dev/null and b/images/renders/cycles/original/juice-apple.png differ diff --git a/images/renders/cycles/original/juice-cranberry.png b/images/renders/cycles/original/juice-cranberry.png new file mode 100644 index 0000000..ce2c22a Binary files /dev/null and b/images/renders/cycles/original/juice-cranberry.png differ diff --git a/images/renders/cycles/original/juice-grape.png b/images/renders/cycles/original/juice-grape.png new file mode 100644 index 0000000..c091523 Binary files /dev/null and b/images/renders/cycles/original/juice-grape.png differ diff --git a/images/renders/cycles/original/juice-ruby-grapefruit.png b/images/renders/cycles/original/juice-ruby-grapefruit.png new file mode 100644 index 0000000..45390ca Binary files /dev/null and b/images/renders/cycles/original/juice-ruby-grapefruit.png differ diff --git a/images/renders/cycles/original/juice-white-grapefruit.png b/images/renders/cycles/original/juice-white-grapefruit.png new file mode 100644 index 0000000..b7a2aba Binary files /dev/null and b/images/renders/cycles/original/juice-white-grapefruit.png differ diff --git a/images/renders/cycles/original/ketchup.png b/images/renders/cycles/original/ketchup.png index 52f5128..0791b42 100644 Binary files a/images/renders/cycles/original/ketchup.png and b/images/renders/cycles/original/ketchup.png differ diff --git a/images/renders/cycles/original/marble.png b/images/renders/cycles/original/marble.png index 472d666..1ad928f 100644 Binary files a/images/renders/cycles/original/marble.png and b/images/renders/cycles/original/marble.png differ diff --git a/images/renders/cycles/original/mercury.png b/images/renders/cycles/original/mercury.png index 678dd33..87f27e0 100644 Binary files a/images/renders/cycles/original/mercury.png and b/images/renders/cycles/original/mercury.png differ diff --git a/images/renders/cycles/original/milk.png b/images/renders/cycles/original/milk.png index 725407d..87d3b34 100644 Binary files a/images/renders/cycles/original/milk.png and b/images/renders/cycles/original/milk.png differ diff --git a/images/renders/cycles/original/petroleum.png b/images/renders/cycles/original/petroleum.png index cd47934..e2bb890 100644 Binary files a/images/renders/cycles/original/petroleum.png and b/images/renders/cycles/original/petroleum.png differ diff --git a/images/renders/cycles/original/water.png b/images/renders/cycles/original/water.png index d6905ba..75a0d0c 100644 Binary files a/images/renders/cycles/original/water.png and b/images/renders/cycles/original/water.png differ diff --git a/images/renders/cycles/original/wine-red.png b/images/renders/cycles/original/wine-red.png new file mode 100644 index 0000000..7919494 Binary files /dev/null and b/images/renders/cycles/original/wine-red.png differ diff --git a/images/renders/cycles/original/wine-white.png b/images/renders/cycles/original/wine-white.png new file mode 100644 index 0000000..6c9bfc7 Binary files /dev/null and b/images/renders/cycles/original/wine-white.png differ diff --git a/images/renders/unreal/original/aluminum.png b/images/renders/unreal/original/aluminum.png deleted file mode 100644 index 1694410..0000000 Binary files a/images/renders/unreal/original/aluminum.png and /dev/null differ diff --git a/images/renders/unreal/original/banana.png b/images/renders/unreal/original/banana.png deleted file mode 100644 index f97c2f9..0000000 Binary files a/images/renders/unreal/original/banana.png and /dev/null differ diff --git a/images/renders/unreal/original/blackboard.png b/images/renders/unreal/original/blackboard.png deleted file mode 100644 index d2c6869..0000000 Binary files a/images/renders/unreal/original/blackboard.png and /dev/null differ diff --git a/images/renders/unreal/original/blood.png b/images/renders/unreal/original/blood.png deleted file mode 100644 index c5fd788..0000000 Binary files a/images/renders/unreal/original/blood.png and /dev/null differ diff --git a/images/renders/unreal/original/bone.png b/images/renders/unreal/original/bone.png deleted file mode 100644 index b6c2742..0000000 Binary files a/images/renders/unreal/original/bone.png and /dev/null differ diff --git a/images/renders/unreal/original/brass.png b/images/renders/unreal/original/brass.png deleted file mode 100644 index 7171803..0000000 Binary files a/images/renders/unreal/original/brass.png and /dev/null differ diff --git a/images/renders/unreal/original/brick.png b/images/renders/unreal/original/brick.png deleted file mode 100644 index 377d3fa..0000000 Binary files a/images/renders/unreal/original/brick.png and /dev/null differ diff --git a/images/renders/unreal/original/carrot.png b/images/renders/unreal/original/carrot.png deleted file mode 100644 index 900e2fc..0000000 Binary files a/images/renders/unreal/original/carrot.png and /dev/null differ diff --git a/images/renders/unreal/original/charcoal.png b/images/renders/unreal/original/charcoal.png deleted file mode 100644 index 1b1c026..0000000 Binary files a/images/renders/unreal/original/charcoal.png and /dev/null differ diff --git a/images/renders/unreal/original/chocolate.png b/images/renders/unreal/original/chocolate.png deleted file mode 100644 index 06616b0..0000000 Binary files a/images/renders/unreal/original/chocolate.png and /dev/null differ diff --git a/images/renders/unreal/original/chromium.png b/images/renders/unreal/original/chromium.png deleted file mode 100644 index 8a6fccb..0000000 Binary files a/images/renders/unreal/original/chromium.png and /dev/null differ diff --git a/images/renders/unreal/original/cobalt.png b/images/renders/unreal/original/cobalt.png deleted file mode 100644 index 93fb837..0000000 Binary files a/images/renders/unreal/original/cobalt.png and /dev/null differ diff --git a/images/renders/unreal/original/coffee.png b/images/renders/unreal/original/coffee.png deleted file mode 100644 index 254e0e0..0000000 Binary files a/images/renders/unreal/original/coffee.png and /dev/null differ diff --git a/images/renders/unreal/original/concrete.png b/images/renders/unreal/original/concrete.png deleted file mode 100644 index 874f2a6..0000000 Binary files a/images/renders/unreal/original/concrete.png and /dev/null differ diff --git a/images/renders/unreal/original/cooking-oil.png b/images/renders/unreal/original/cooking-oil.png deleted file mode 100644 index 89f7a3a..0000000 Binary files a/images/renders/unreal/original/cooking-oil.png and /dev/null differ diff --git a/images/renders/unreal/original/copper.png b/images/renders/unreal/original/copper.png deleted file mode 100644 index 56d823c..0000000 Binary files a/images/renders/unreal/original/copper.png and /dev/null differ diff --git a/images/renders/unreal/original/diamond.png b/images/renders/unreal/original/diamond.png deleted file mode 100644 index 027ffc9..0000000 Binary files a/images/renders/unreal/original/diamond.png and /dev/null differ diff --git a/images/renders/unreal/original/egg-shell-white.png b/images/renders/unreal/original/egg-shell-white.png deleted file mode 100644 index a24a03c..0000000 Binary files a/images/renders/unreal/original/egg-shell-white.png and /dev/null differ diff --git a/images/renders/unreal/original/eye-cornea.png b/images/renders/unreal/original/eye-cornea.png deleted file mode 100644 index e394413..0000000 Binary files a/images/renders/unreal/original/eye-cornea.png and /dev/null differ diff --git a/images/renders/unreal/original/eye-lens.png b/images/renders/unreal/original/eye-lens.png deleted file mode 100644 index 2d86110..0000000 Binary files a/images/renders/unreal/original/eye-lens.png and /dev/null differ diff --git a/images/renders/unreal/original/eye-sclera.png b/images/renders/unreal/original/eye-sclera.png deleted file mode 100644 index 44659f6..0000000 Binary files a/images/renders/unreal/original/eye-sclera.png and /dev/null differ diff --git a/images/renders/unreal/original/gasoline.png b/images/renders/unreal/original/gasoline.png deleted file mode 100644 index 6c8dd5d..0000000 Binary files a/images/renders/unreal/original/gasoline.png and /dev/null differ diff --git a/images/renders/unreal/original/glass.png b/images/renders/unreal/original/glass.png deleted file mode 100644 index 0e59c3c..0000000 Binary files a/images/renders/unreal/original/glass.png and /dev/null differ diff --git a/images/renders/unreal/original/gold.png b/images/renders/unreal/original/gold.png deleted file mode 100644 index 304dac0..0000000 Binary files a/images/renders/unreal/original/gold.png and /dev/null differ diff --git a/images/renders/unreal/original/gray-card.png b/images/renders/unreal/original/gray-card.png deleted file mode 100644 index ac3c381..0000000 Binary files a/images/renders/unreal/original/gray-card.png and /dev/null differ diff --git a/images/renders/unreal/original/honey.png b/images/renders/unreal/original/honey.png deleted file mode 100644 index c2df8cb..0000000 Binary files a/images/renders/unreal/original/honey.png and /dev/null differ diff --git a/images/renders/unreal/original/ice.png b/images/renders/unreal/original/ice.png deleted file mode 100644 index 00d2ab2..0000000 Binary files a/images/renders/unreal/original/ice.png and /dev/null differ diff --git a/images/renders/unreal/original/iron.png b/images/renders/unreal/original/iron.png deleted file mode 100644 index 81a1a11..0000000 Binary files a/images/renders/unreal/original/iron.png and /dev/null differ diff --git a/images/renders/unreal/original/ketchup.png b/images/renders/unreal/original/ketchup.png deleted file mode 100644 index 650658c..0000000 Binary files a/images/renders/unreal/original/ketchup.png and /dev/null differ diff --git a/images/renders/unreal/original/lead.png b/images/renders/unreal/original/lead.png deleted file mode 100644 index 74f4d87..0000000 Binary files a/images/renders/unreal/original/lead.png and /dev/null differ diff --git a/images/renders/unreal/original/lemon.png b/images/renders/unreal/original/lemon.png deleted file mode 100644 index a954d82..0000000 Binary files a/images/renders/unreal/original/lemon.png and /dev/null differ diff --git a/images/renders/unreal/original/marble.png b/images/renders/unreal/original/marble.png deleted file mode 100644 index f26505d..0000000 Binary files a/images/renders/unreal/original/marble.png and /dev/null differ diff --git a/images/renders/unreal/original/mercury.png b/images/renders/unreal/original/mercury.png deleted file mode 100644 index 6676603..0000000 Binary files a/images/renders/unreal/original/mercury.png and /dev/null differ diff --git a/images/renders/unreal/original/milk.png b/images/renders/unreal/original/milk.png deleted file mode 100644 index dcbfb82..0000000 Binary files a/images/renders/unreal/original/milk.png and /dev/null differ diff --git a/images/renders/unreal/original/nickel.png b/images/renders/unreal/original/nickel.png deleted file mode 100644 index d2f2db0..0000000 Binary files a/images/renders/unreal/original/nickel.png and /dev/null differ diff --git a/images/renders/unreal/original/office-paper.png b/images/renders/unreal/original/office-paper.png deleted file mode 100644 index 401e879..0000000 Binary files a/images/renders/unreal/original/office-paper.png and /dev/null differ diff --git a/images/renders/unreal/original/pearl.png b/images/renders/unreal/original/pearl.png deleted file mode 100644 index c37f66a..0000000 Binary files a/images/renders/unreal/original/pearl.png and /dev/null differ diff --git a/images/renders/unreal/original/petroleum.png b/images/renders/unreal/original/petroleum.png deleted file mode 100644 index af37233..0000000 Binary files a/images/renders/unreal/original/petroleum.png and /dev/null differ diff --git a/images/renders/unreal/original/plastic-acrylic.png b/images/renders/unreal/original/plastic-acrylic.png deleted file mode 100644 index cf04727..0000000 Binary files a/images/renders/unreal/original/plastic-acrylic.png and /dev/null differ diff --git a/images/renders/unreal/original/plastic-pc.png b/images/renders/unreal/original/plastic-pc.png deleted file mode 100644 index ca3d3ac..0000000 Binary files a/images/renders/unreal/original/plastic-pc.png and /dev/null differ diff --git a/images/renders/unreal/original/plastic-pet.png b/images/renders/unreal/original/plastic-pet.png deleted file mode 100644 index a5373d7..0000000 Binary files a/images/renders/unreal/original/plastic-pet.png and /dev/null differ diff --git a/images/renders/unreal/original/plastic-pp.png b/images/renders/unreal/original/plastic-pp.png deleted file mode 100644 index 6eef66a..0000000 Binary files a/images/renders/unreal/original/plastic-pp.png and /dev/null differ diff --git a/images/renders/unreal/original/plastic-pur.png b/images/renders/unreal/original/plastic-pur.png deleted file mode 100644 index 1bd7896..0000000 Binary files a/images/renders/unreal/original/plastic-pur.png and /dev/null differ diff --git a/images/renders/unreal/original/plastic-pvc.png b/images/renders/unreal/original/plastic-pvc.png deleted file mode 100644 index b279722..0000000 Binary files a/images/renders/unreal/original/plastic-pvc.png and /dev/null differ diff --git a/images/renders/unreal/original/platinum.png b/images/renders/unreal/original/platinum.png deleted file mode 100644 index 69f5955..0000000 Binary files a/images/renders/unreal/original/platinum.png and /dev/null differ diff --git a/images/renders/unreal/original/salt.png b/images/renders/unreal/original/salt.png deleted file mode 100644 index 8d23970..0000000 Binary files a/images/renders/unreal/original/salt.png and /dev/null differ diff --git a/images/renders/unreal/original/sand.png b/images/renders/unreal/original/sand.png deleted file mode 100644 index f752b74..0000000 Binary files a/images/renders/unreal/original/sand.png and /dev/null differ diff --git a/images/renders/unreal/original/sapphire.png b/images/renders/unreal/original/sapphire.png deleted file mode 100644 index 3c67ecd..0000000 Binary files a/images/renders/unreal/original/sapphire.png and /dev/null differ diff --git a/images/renders/unreal/original/silicon.png b/images/renders/unreal/original/silicon.png deleted file mode 100644 index 73159c4..0000000 Binary files a/images/renders/unreal/original/silicon.png and /dev/null differ diff --git a/images/renders/unreal/original/silver.png b/images/renders/unreal/original/silver.png deleted file mode 100644 index 4ef4f9b..0000000 Binary files a/images/renders/unreal/original/silver.png and /dev/null differ diff --git a/images/renders/unreal/original/skin-i.png b/images/renders/unreal/original/skin-i.png deleted file mode 100644 index d9faec3..0000000 Binary files a/images/renders/unreal/original/skin-i.png and /dev/null differ diff --git a/images/renders/unreal/original/skin-ii.png b/images/renders/unreal/original/skin-ii.png deleted file mode 100644 index 147edcb..0000000 Binary files a/images/renders/unreal/original/skin-ii.png and /dev/null differ diff --git a/images/renders/unreal/original/skin-iii.png b/images/renders/unreal/original/skin-iii.png deleted file mode 100644 index 8d70622..0000000 Binary files a/images/renders/unreal/original/skin-iii.png and /dev/null differ diff --git a/images/renders/unreal/original/skin-iv.png b/images/renders/unreal/original/skin-iv.png deleted file mode 100644 index 3d30867..0000000 Binary files a/images/renders/unreal/original/skin-iv.png and /dev/null differ diff --git a/images/renders/unreal/original/skin-v.png b/images/renders/unreal/original/skin-v.png deleted file mode 100644 index 96411de..0000000 Binary files a/images/renders/unreal/original/skin-v.png and /dev/null differ diff --git a/images/renders/unreal/original/skin-vi.png b/images/renders/unreal/original/skin-vi.png deleted file mode 100644 index b7ffc16..0000000 Binary files a/images/renders/unreal/original/skin-vi.png and /dev/null differ diff --git a/images/renders/unreal/original/snow.png b/images/renders/unreal/original/snow.png deleted file mode 100644 index b824668..0000000 Binary files a/images/renders/unreal/original/snow.png and /dev/null differ diff --git a/images/renders/unreal/original/soap-bubble.png b/images/renders/unreal/original/soap-bubble.png deleted file mode 100644 index bfc97cc..0000000 Binary files a/images/renders/unreal/original/soap-bubble.png and /dev/null differ diff --git a/images/renders/unreal/original/tire.png b/images/renders/unreal/original/tire.png deleted file mode 100644 index a46622e..0000000 Binary files a/images/renders/unreal/original/tire.png and /dev/null differ diff --git a/images/renders/unreal/original/titanium.png b/images/renders/unreal/original/titanium.png deleted file mode 100644 index a27990f..0000000 Binary files a/images/renders/unreal/original/titanium.png and /dev/null differ diff --git a/images/renders/unreal/original/tungsten.png b/images/renders/unreal/original/tungsten.png deleted file mode 100644 index 96ef164..0000000 Binary files a/images/renders/unreal/original/tungsten.png and /dev/null differ diff --git a/images/renders/unreal/original/vanadium.png b/images/renders/unreal/original/vanadium.png deleted file mode 100644 index 751e496..0000000 Binary files a/images/renders/unreal/original/vanadium.png and /dev/null differ diff --git a/images/renders/unreal/original/water.png b/images/renders/unreal/original/water.png deleted file mode 100644 index a288ae2..0000000 Binary files a/images/renders/unreal/original/water.png and /dev/null differ diff --git a/images/renders/unreal/original/whiteboard.png b/images/renders/unreal/original/whiteboard.png deleted file mode 100644 index eae7761..0000000 Binary files a/images/renders/unreal/original/whiteboard.png and /dev/null differ diff --git a/images/renders/unreal/original/zinc.png b/images/renders/unreal/original/zinc.png deleted file mode 100644 index cb6bc99..0000000 Binary files a/images/renders/unreal/original/zinc.png and /dev/null differ diff --git a/package-lock.json b/package-lock.json index 6551e65..ce7ab2d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,13 +7,13 @@ "name": "physically-based-api", "license": "CC0-1.0", "devDependencies": { - "@biomejs/biome": "^2.4.6", - "@redocly/cli": "^2.20.4", - "@scalar/api-reference": "^1.46.4", - "adm-zip": "^0.5.16", + "@biomejs/biome": "^2.4.10", + "@redocly/cli": "^2.25.4", + "@scalar/api-reference": "^1.51.0", + "adm-zip": "^0.5.17", "http-server": "^14.1.1", "husky": "^9.1.7", - "lint-staged": "^16.3.2", + "lint-staged": "^16.4.0", "sharp": "^0.34.5" } }, @@ -120,9 +120,9 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz", - "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.2.tgz", + "integrity": "sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==", "dev": true, "license": "MIT", "dependencies": { @@ -136,9 +136,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.28.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.6.tgz", - "integrity": "sha512-05WQkdpL9COIMz4LjTxGpPNCdlpyimKppYNoJ5Di5EUObifl8t4tuLuUBBZEpoLYOmfvIWrsp9fCl0HoPRVTdA==", + "version": "7.29.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.29.2.tgz", + "integrity": "sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==", "dev": true, "license": "MIT", "engines": { @@ -160,9 +160,9 @@ } }, "node_modules/@biomejs/biome": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.6.tgz", - "integrity": "sha512-QnHe81PMslpy3mnpL8DnO2M4S4ZnYPkjlGCLWBZT/3R9M6b5daArWMMtEfP52/n174RKnwRIf3oT8+wc9ihSfQ==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-2.4.10.tgz", + "integrity": "sha512-xxA3AphFQ1geij4JTHXv4EeSTda1IFn22ye9LdyVPoJU19fNVl0uzfEuhsfQ4Yue/0FaLs2/ccVi4UDiE7R30w==", "dev": true, "license": "MIT OR Apache-2.0", "bin": { @@ -176,20 +176,20 @@ "url": "https://opencollective.com/biome" }, "optionalDependencies": { - "@biomejs/cli-darwin-arm64": "2.4.6", - "@biomejs/cli-darwin-x64": "2.4.6", - "@biomejs/cli-linux-arm64": "2.4.6", - "@biomejs/cli-linux-arm64-musl": "2.4.6", - "@biomejs/cli-linux-x64": "2.4.6", - "@biomejs/cli-linux-x64-musl": "2.4.6", - "@biomejs/cli-win32-arm64": "2.4.6", - "@biomejs/cli-win32-x64": "2.4.6" + "@biomejs/cli-darwin-arm64": "2.4.10", + "@biomejs/cli-darwin-x64": "2.4.10", + "@biomejs/cli-linux-arm64": "2.4.10", + "@biomejs/cli-linux-arm64-musl": "2.4.10", + "@biomejs/cli-linux-x64": "2.4.10", + "@biomejs/cli-linux-x64-musl": "2.4.10", + "@biomejs/cli-win32-arm64": "2.4.10", + "@biomejs/cli-win32-x64": "2.4.10" } }, "node_modules/@biomejs/cli-darwin-arm64": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.6.tgz", - "integrity": "sha512-NW18GSyxr+8sJIqgoGwVp5Zqm4SALH4b4gftIA0n62PTuBs6G2tHlwNAOj0Vq0KKSs7Sf88VjjmHh0O36EnzrQ==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-arm64/-/cli-darwin-arm64-2.4.10.tgz", + "integrity": "sha512-vuzzI1cWqDVzOMIkYyHbKqp+AkQq4K7k+UCXWpkYcY/HDn1UxdsbsfgtVpa40shem8Kax4TLDLlx8kMAecgqiw==", "cpu": [ "arm64" ], @@ -204,9 +204,9 @@ } }, "node_modules/@biomejs/cli-darwin-x64": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.6.tgz", - "integrity": "sha512-4uiE/9tuI7cnjtY9b07RgS7gGyYOAfIAGeVJWEfeCnAarOAS7qVmuRyX6d7JTKw28/mt+rUzMasYeZ+0R/U1Mw==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-darwin-x64/-/cli-darwin-x64-2.4.10.tgz", + "integrity": "sha512-14fzASRo+BPotwp7nWULy2W5xeUyFnTaq1V13Etrrxkrih+ez/2QfgFm5Ehtf5vSjtgx/IJycMMpn5kPd5ZNaA==", "cpu": [ "x64" ], @@ -221,13 +221,16 @@ } }, "node_modules/@biomejs/cli-linux-arm64": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.6.tgz", - "integrity": "sha512-kMLaI7OF5GN1Q8Doymjro1P8rVEoy7BKQALNz6fiR8IC1WKduoNyteBtJlHT7ASIL0Cx2jR6VUOBIbcB1B8pew==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64/-/cli-linux-arm64-2.4.10.tgz", + "integrity": "sha512-7MH1CMW5uuxQ/s7FLST63qF8B3Hgu2HRdZ7tA1X1+mk+St4JOuIrqdhIBnnyqeyWJNI+Bww7Es5QZ0wIc1Cmkw==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -238,13 +241,16 @@ } }, "node_modules/@biomejs/cli-linux-arm64-musl": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.6.tgz", - "integrity": "sha512-F/JdB7eN22txiTqHM5KhIVt0jVkzZwVYrdTR1O3Y4auBOQcXxHK4dxULf4z43QyZI5tsnQJrRBHZy7wwtL+B3A==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-arm64-musl/-/cli-linux-arm64-musl-2.4.10.tgz", + "integrity": "sha512-WrJY6UuiSD/Dh+nwK2qOTu8kdMDlLV3dLMmychIghHPAysWFq1/DGC1pVZx8POE3ZkzKR3PUUnVrtZfMfaJjyQ==", "cpu": [ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -255,13 +261,16 @@ } }, "node_modules/@biomejs/cli-linux-x64": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.6.tgz", - "integrity": "sha512-oHXmUFEoH8Lql1xfc3QkFLiC1hGR7qedv5eKNlC185or+o4/4HiaU7vYODAH3peRCfsuLr1g6v2fK9dFFOYdyw==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64/-/cli-linux-x64-2.4.10.tgz", + "integrity": "sha512-tZLvEEi2u9Xu1zAqRjTcpIDGVtldigVvzug2fTuPG0ME/g8/mXpRPcNgLB22bGn6FvLJpHHnqLnwliOu8xjYrg==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -272,13 +281,16 @@ } }, "node_modules/@biomejs/cli-linux-x64-musl": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.6.tgz", - "integrity": "sha512-C9s98IPDu7DYarjlZNuzJKTjVHN03RUnmHV5htvqsx6vEUXCDSJ59DNwjKVD5XYoSS4N+BYhq3RTBAL8X6svEg==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-linux-x64-musl/-/cli-linux-x64-musl-2.4.10.tgz", + "integrity": "sha512-kDTi3pI6PBN6CiczsWYOyP2zk0IJI08EWEQyDMQWW221rPaaEz6FvjLhnU07KMzLv8q3qSuoB93ua6inSQ55Tw==", "cpu": [ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "MIT OR Apache-2.0", "optional": true, "os": [ @@ -289,9 +301,9 @@ } }, "node_modules/@biomejs/cli-win32-arm64": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.6.tgz", - "integrity": "sha512-xzThn87Pf3YrOGTEODFGONmqXpTwUNxovQb72iaUOdcw8sBSY3+3WD8Hm9IhMYLnPi0n32s3L3NWU6+eSjfqFg==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-arm64/-/cli-win32-arm64-2.4.10.tgz", + "integrity": "sha512-umwQU6qPzH+ISTf/eHyJ/QoQnJs3V9Vpjz2OjZXe9MVBZ7prgGafMy7yYeRGnlmDAn87AKTF3Q6weLoMGpeqdQ==", "cpu": [ "arm64" ], @@ -306,9 +318,9 @@ } }, "node_modules/@biomejs/cli-win32-x64": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.6.tgz", - "integrity": "sha512-7++XhnsPlr1HDbor5amovPjOH6vsrFOCdp93iKXhFn6bcMUI6soodj3WWKfgEO6JosKU1W5n3uky3WW9RlRjTg==", + "version": "2.4.10", + "resolved": "https://registry.npmjs.org/@biomejs/cli-win32-x64/-/cli-win32-x64-2.4.10.tgz", + "integrity": "sha512-aW/JU5GuyH4uxMrNYpoC2kjaHlyJGLgIa3XkhPEZI0uKhZhJZU8BuEyJmvgzSPQNGozBwWjC972RaNdcJ9KyJg==", "cpu": [ "x64" ], @@ -336,14 +348,14 @@ } }, "node_modules/@codemirror/commands": { - "version": "6.10.2", - "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.2.tgz", - "integrity": "sha512-vvX1fsih9HledO1c9zdotZYUZnE4xV0m6i3m25s5DIfXofuprk6cRcLUZvSk3CASUbwjQX21tOGbkY2BH8TpnQ==", + "version": "6.10.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.3.tgz", + "integrity": "sha512-JFRiqhKu+bvSkDLI+rUhJwSxQxYb759W5GBezE8Uc8mHLqC9aV/9aTC7yJSqCtB3F00pylrLCwnyS91Ap5ej4Q==", "dev": true, "license": "MIT", "dependencies": { "@codemirror/language": "^6.0.0", - "@codemirror/state": "^6.4.0", + "@codemirror/state": "^6.6.0", "@codemirror/view": "^6.27.0", "@lezer/common": "^1.1.0" } @@ -423,9 +435,9 @@ } }, "node_modules/@codemirror/lang-yaml": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@codemirror/lang-yaml/-/lang-yaml-6.1.2.tgz", - "integrity": "sha512-dxrfG8w5Ce/QbT7YID7mWZFKhdhsaTNOYjOkSIMt1qmC4VQnXSDSYVHHHn8k6kJUfIhtLo8t1JJgltlxWdsITw==", + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@codemirror/lang-yaml/-/lang-yaml-6.1.3.tgz", + "integrity": "sha512-AZ8DJBuXGVHybpBQhmZtgew5//4hv3tdkXnr3vDmOUMJRuB6vn/uuwtmTOTlqEaQFg3hQSVeA90NmvIQyUV6FQ==", "dev": true, "license": "MIT", "dependencies": { @@ -439,9 +451,9 @@ } }, "node_modules/@codemirror/language": { - "version": "6.12.2", - "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.2.tgz", - "integrity": "sha512-jEPmz2nGGDxhRTg3lTpzmIyGKxz3Gp3SJES4b0nAuE5SWQoKdT5GoQ69cwMmFd+wvFUhYirtDTr0/DRHpQAyWg==", + "version": "6.12.3", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.3.tgz", + "integrity": "sha512-QwCZW6Tt1siP37Jet9Tb02Zs81TQt6qQrZR2H+eGMcFsL1zMrk2/b9CLC7/9ieP1fjIUMgviLWMmgiHoJrj+ZA==", "dev": true, "license": "MIT", "dependencies": { @@ -466,9 +478,9 @@ } }, "node_modules/@codemirror/state": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.4.tgz", - "integrity": "sha512-8y7xqG/hpB53l25CIoit9/ngxdfoG+fx+V3SHBrinnhOtLvKHRyAJJuHzkWrR4YXXLX8eXBsejgAAxHUOdW1yw==", + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.6.0.tgz", + "integrity": "sha512-4nbvra5R5EtiCzr9BTHiTLc+MLXK2QGiAVYMyi8PkQd3SR+6ixar/Q/01Fa21TBIDOZXgeWV4WppsQolSreAPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -476,22 +488,22 @@ } }, "node_modules/@codemirror/view": { - "version": "6.39.16", - "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.39.16.tgz", - "integrity": "sha512-m6S22fFpKtOWhq8HuhzsI1WzUP/hB9THbDj0Tl5KX4gbO6Y91hwBl7Yky33NdvB6IffuRFiBxf1R8kJMyXmA4Q==", + "version": "6.41.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.41.0.tgz", + "integrity": "sha512-6H/qadXsVuDY219Yljhohglve8xf4B8xJkVOEWfA5uiYKiTFppjqsvsfR5iPA0RbvRBoOyTZpbLIxe9+0UR8xA==", "dev": true, "license": "MIT", "dependencies": { - "@codemirror/state": "^6.5.0", + "@codemirror/state": "^6.6.0", "crelt": "^1.0.6", "style-mod": "^4.1.0", "w3c-keyname": "^2.2.4" } }, "node_modules/@emnapi/runtime": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz", - "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==", + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.9.2.tgz", + "integrity": "sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==", "dev": true, "license": "MIT", "optional": true, @@ -759,6 +771,9 @@ "arm" ], "dev": true, + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -776,6 +791,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -793,6 +811,9 @@ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -810,6 +831,9 @@ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -827,6 +851,9 @@ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -844,6 +871,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -861,6 +891,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -878,6 +911,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "LGPL-3.0-or-later", "optional": true, "os": [ @@ -895,6 +931,9 @@ "arm" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -918,6 +957,9 @@ "arm64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -941,6 +983,9 @@ "ppc64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -964,6 +1009,9 @@ "riscv64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -987,6 +1035,9 @@ "s390x" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -1010,6 +1061,9 @@ "x64" ], "dev": true, + "libc": [ + "glibc" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -1033,6 +1087,9 @@ "arm64" ], "dev": true, + "libc": [ + "musl" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -1056,6 +1113,9 @@ "x64" ], "dev": true, + "libc": [ + "musl" + ], "license": "Apache-2.0", "optional": true, "os": [ @@ -1186,9 +1246,9 @@ "license": "MIT" }, "node_modules/@lezer/css": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.3.1.tgz", - "integrity": "sha512-PYAKeUVBo3HFThruRyp/iK91SwiZJnzXh8QzkQlwijB5y+N5iB28+iLk78o2zmKqqV0uolNhCwFqB8LA7b0Svg==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.3.3.tgz", + "integrity": "sha512-RzBo8r+/6QJeow7aPHIpGVIH59xTcJXp399820gZoMo9noQDRVpJLheIBUicYwKcsbOYoBRoLZlf2720dG/4Tg==", "dev": true, "license": "MIT", "dependencies": { @@ -1298,9 +1358,9 @@ } }, "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.1.tgz", + "integrity": "sha512-gLyJlPHPZYdAk1JENA9LeHejZe1Ti77/pTeFm/nMXmQH/HFZlcS/O2XJB+L8fkbrNSqhdtlvjBVjxwUYanNH5Q==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1349,6 +1409,164 @@ "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, + "node_modules/@opentelemetry/exporter-logs-otlp-http": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-logs-otlp-http/-/exporter-logs-otlp-http-0.208.0.tgz", + "integrity": "sha512-jOv40Bs9jy9bZVLo/i8FwUiuCvbjWDI+ZW13wimJm4LjnlwJxGgB+N/VWOZUTpM+ah/awXeQqKdNlpLf2EjvYg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/otlp-exporter-base": "0.208.0", + "@opentelemetry/otlp-transformer": "0.208.0", + "@opentelemetry/sdk-logs": "0.208.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/api-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", + "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/core": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", + "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/otlp-exporter-base": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-exporter-base/-/otlp-exporter-base-0.208.0.tgz", + "integrity": "sha512-gMd39gIfVb2OgxldxUtOwGJYSH8P1kVFFlJLuut32L6KgUC4gl1dMhn+YC2mGn0bDOiQYSk/uHOdSjuKp58vvA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/otlp-transformer": "0.208.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/otlp-transformer": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/otlp-transformer/-/otlp-transformer-0.208.0.tgz", + "integrity": "sha512-DCFPY8C6lAQHUNkzcNT9R+qYExvsk6C5Bto2pbNxgicpcSWbe2WHShLxkOxIdNcBiYPdVHv/e7vH7K6TI+C+fQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0", + "@opentelemetry/sdk-logs": "0.208.0", + "@opentelemetry/sdk-metrics": "2.2.0", + "@opentelemetry/sdk-trace-base": "2.2.0", + "protobufjs": "^7.3.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/sdk-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.208.0.tgz", + "integrity": "sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/sdk-metrics": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-metrics/-/sdk-metrics-2.2.0.tgz", + "integrity": "sha512-G5KYP6+VJMZzpGipQw7Giif48h6SGQ2PFKEYCybeXJsOCB4fp8azqMAAzE5lnnHK3ZVwYQrgmFbsUJO/zOnwGw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.9.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/exporter-logs-otlp-http/node_modules/@opentelemetry/sdk-trace-base": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-2.2.0.tgz", + "integrity": "sha512-xWQgL0Bmctsalg6PaXExmzdedSp3gyKV8mQBwK/j9VGdCDu2fmXIb2gAehBKbkXCpJ4HPkgv3QfoJWRT4dHWbw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, "node_modules/@opentelemetry/exporter-trace-otlp-http": { "version": "0.202.0", "resolved": "https://registry.npmjs.org/@opentelemetry/exporter-trace-otlp-http/-/exporter-trace-otlp-http-0.202.0.tgz", @@ -1513,6 +1731,23 @@ "dev": true, "license": "MIT" }, + "node_modules/@posthog/core": { + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/@posthog/core/-/core-1.24.1.tgz", + "integrity": "sha512-e8AciAnc6MRFws89ux8lJKFAaI03yEon0ASDoUO7yS91FVqbUGXYekObUUR3LHplcg+pmyiJBI0jolY0SFbGRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.6" + } + }, + "node_modules/@posthog/types": { + "version": "1.363.2", + "resolved": "https://registry.npmjs.org/@posthog/types/-/types-1.363.2.tgz", + "integrity": "sha512-UcUwHEd2LXxWq4bW/I4TbwYcA+BHO/cSuHcNpGXjRCp76eJk1eOuQnm/a3MrfHtbt2X11CQu+eWpqiSgcv+X6A==", + "dev": true, + "license": "MIT" + }, "node_modules/@protobufjs/aspromise": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", @@ -1588,9 +1823,9 @@ "license": "BSD-3-Clause" }, "node_modules/@redocly/ajv": { - "version": "8.18.0", - "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.18.0.tgz", - "integrity": "sha512-F+LMD2IDIXuHxgpLJh3nkLj9+tSaEzoUWd+7fONGq5pe2169FUDjpEkOfEpoGLz1sbZni/69p07OsecNfAOpqA==", + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@redocly/ajv/-/ajv-8.18.1.tgz", + "integrity": "sha512-Ifm/pP/tul1qmAecpbVxCBluVE32rKfjf8gYXH4xI2gCv9mRWFhJMHzkPDM4TXlxwPQYIFegymlsy8lXz7optA==", "dev": true, "license": "MIT", "dependencies": { @@ -1605,9 +1840,9 @@ } }, "node_modules/@redocly/cli": { - "version": "2.20.4", - "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-2.20.4.tgz", - "integrity": "sha512-ahZmcTfEvw2ghWBm418A3anN3XS88Izbqn+HyH6fm/iJ/x04vFwW2KSv/V2K2JZON5ImpTCQBHPQd9bSmmZw9A==", + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/@redocly/cli/-/cli-2.25.4.tgz", + "integrity": "sha512-ypBv8ZhckTzcOfsFH2VILsLqk00bJ1tI0POtlaEf8z0rDsnmD8auUETkMzw8wlUB+aQM7+VSzpSsmcmqeSgzWQ==", "dev": true, "license": "MIT", "dependencies": { @@ -1615,8 +1850,9 @@ "@opentelemetry/resources": "2.0.1", "@opentelemetry/sdk-trace-node": "2.0.1", "@opentelemetry/semantic-conventions": "1.34.0", - "@redocly/openapi-core": "2.20.4", - "@redocly/respect-core": "2.20.4", + "@redocly/cli-otel": "0.1.2", + "@redocly/openapi-core": "2.25.4", + "@redocly/respect-core": "2.25.4", "abort-controller": "^3.0.0", "ajv": "npm:@redocly/ajv@8.18.0", "ajv-formats": "^3.0.1", @@ -1624,10 +1860,10 @@ "cookie": "^0.7.2", "dotenv": "16.4.7", "glob": "^13.0.5", - "handlebars": "^4.7.6", + "handlebars": "^4.7.9", "https-proxy-agent": "^7.0.5", "mobx": "^6.0.4", - "picomatch": "^4.0.3", + "picomatch": "^4.0.4", "pluralize": "^8.0.0", "react": "^17.0.0 || ^18.2.0 || ^19.2.1", "react-dom": "^17.0.0 || ^18.2.0 || ^19.2.1", @@ -1637,7 +1873,7 @@ "simple-websocket": "^9.0.0", "styled-components": "6.3.9", "ulid": "^3.0.1", - "undici": "^6.23.0", + "undici": "6.24.0", "yargs": "17.0.1" }, "bin": { @@ -1649,10 +1885,30 @@ "npm": ">=10" } }, + "node_modules/@redocly/cli-otel": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@redocly/cli-otel/-/cli-otel-0.1.2.tgz", + "integrity": "sha512-Bg7BoO5t1x3lVK+KhA5aGPmeXpQmdf6WtTYHhelKJCsQ+tRMiJoFAQoKHoBHAoNxXrhlS3K9lKFLHGmtxsFQfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ulid": "^2.3.0" + } + }, + "node_modules/@redocly/cli-otel/node_modules/ulid": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ulid/-/ulid-2.4.0.tgz", + "integrity": "sha512-fIRiVTJNcSRmXKPZtGzFQv9WRrZ3M9eoptl/teFJvjOzmpU+/K/JH6HZ8deBfb5vMEpicJcLn7JmvdknlMq7Zg==", + "dev": true, + "license": "MIT", + "bin": { + "ulid": "bin/cli.js" + } + }, "node_modules/@redocly/config": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.44.0.tgz", - "integrity": "sha512-UHKkWcCNZrGiKBbrQ1CE08ElrOUGm5H97Zn8+wkp80Uu2AT/go5In1sbqvhHxViPYtu1MLdy7qKiifSyOL3W/A==", + "version": "0.46.0", + "resolved": "https://registry.npmjs.org/@redocly/config/-/config-0.46.0.tgz", + "integrity": "sha512-FZEprNEkmLITKKdv5blIai1qiCcc4dn5+96AjWnmFQmH/oz/OyBiXBSi752/M+Wmype7aH2uRywSCuYlu4CgVA==", "dev": true, "license": "MIT", "dependencies": { @@ -1660,20 +1916,20 @@ } }, "node_modules/@redocly/openapi-core": { - "version": "2.20.4", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-2.20.4.tgz", - "integrity": "sha512-3WZh8dPF6MrxLDbTG4GXtV81EOqHrpMWlOhELWBIICRieMMt/LKcGFuOBRdLEp/KMU2ypwQLKYHrKYCeUNwO3Q==", + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-2.25.4.tgz", + "integrity": "sha512-zYdKQEsowPNtkTixrfbn5DySWBLQpTsISthVBBEPAa3OZC75UI76CbHXEamJ8Kmlead9IkD5RbgeJvxqJ5/H6Q==", "dev": true, "license": "MIT", "dependencies": { "@redocly/ajv": "^8.18.0", - "@redocly/config": "^0.44.0", + "@redocly/config": "^0.46.0", "ajv": "npm:@redocly/ajv@8.18.0", "ajv-formats": "^3.0.1", "colorette": "^1.2.0", "js-levenshtein": "^1.1.6", "js-yaml": "^4.1.0", - "picomatch": "^4.0.3", + "picomatch": "^4.0.4", "pluralize": "^8.0.0", "yaml-ast-parser": "0.0.43" }, @@ -1683,16 +1939,16 @@ } }, "node_modules/@redocly/respect-core": { - "version": "2.20.4", - "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-2.20.4.tgz", - "integrity": "sha512-kOM1cCDQtTwZkD58Lx3IIUPcFuRD8bnlkCFUvi0iigy6JJKfpRwgXuzkzFf6FHVO9Z5LwJuYgIP58q3TftWrqg==", + "version": "2.25.4", + "resolved": "https://registry.npmjs.org/@redocly/respect-core/-/respect-core-2.25.4.tgz", + "integrity": "sha512-0xMbcSft+9Q2sO1wSJMxo510Aqc/kGF/AmUK3OaLQvGvKUgOqq2Op/0aorNQJk6s8WBEH4UN4eFt7fUzUeXs8g==", "dev": true, "license": "MIT", "dependencies": { "@faker-js/faker": "^7.6.0", "@noble/hashes": "^1.8.0", "@redocly/ajv": "^8.18.0", - "@redocly/openapi-core": "2.20.4", + "@redocly/openapi-core": "2.25.4", "ajv": "npm:@redocly/ajv@8.18.0", "better-ajv-errors": "^1.2.0", "colorette": "^2.0.20", @@ -1700,7 +1956,7 @@ "jsonpath-rfc9535": "1.3.0", "openapi-sampler": "^1.7.1", "outdent": "^0.8.0", - "picomatch": "^4.0.3" + "picomatch": "^4.0.4" }, "engines": { "node": ">=22.12.0 || >=20.19.0 <21.0.0", @@ -1727,140 +1983,129 @@ } }, "node_modules/@scalar/agent-chat": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/@scalar/agent-chat/-/agent-chat-0.7.3.tgz", - "integrity": "sha512-r8lF7vHm0Oee8y3MgYTEOKfJF8WwdiApLICuzcqKLt0YayEURiSMB36J1SPtzISO7t66WbFi3xru8MdOa3FmUw==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@scalar/agent-chat/-/agent-chat-0.10.1.tgz", + "integrity": "sha512-VjGMuuqtxgdxL59eOjaTEKTc8YYiBdegwuc4wiaFMdo6LLowkUDrx4PgwfO2DBZ032uBqZyjaWQemE0DA2CsSA==", "dev": true, "license": "MIT", "dependencies": { "@ai-sdk/vue": "3.0.33", - "@scalar/api-client": "2.31.3", - "@scalar/components": "0.19.15", - "@scalar/helpers": "0.2.18", - "@scalar/icons": "0.5.3", - "@scalar/json-magic": "0.11.7", - "@scalar/openapi-types": "0.5.4", - "@scalar/themes": "0.14.3", - "@scalar/types": "0.6.10", - "@scalar/use-toasts": "0.9.1", - "@scalar/workspace-store": "0.35.3", + "@scalar/api-client": "2.41.0", + "@scalar/components": "0.21.3", + "@scalar/helpers": "0.4.3", + "@scalar/icons": "0.7.2", + "@scalar/json-magic": "0.12.5", + "@scalar/openapi-types": "0.7.0", + "@scalar/themes": "0.15.2", + "@scalar/types": "0.7.6", + "@scalar/use-toasts": "0.10.1", + "@scalar/workspace-store": "0.43.1", "@vueuse/core": "13.9.0", "ai": "6.0.33", - "neverpanic": "0.0.5", + "js-base64": "^3.7.8", + "neverpanic": "0.0.7", "truncate-json": "3.0.1", - "vue": "^3.5.26", + "vue": "^3.5.30", "whatwg-mimetype": "4.0.0", "zod": "^4.3.5" }, "engines": { - "node": ">=20" - } - }, - "node_modules/@scalar/analytics-client": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@scalar/analytics-client/-/analytics-client-1.0.1.tgz", - "integrity": "sha512-ai4DJuxsNLUEgJIlYDE3n8/oF47M31Rgjz3LxbefzejxE8LiidUud/fcEzMYtdxqJYi3ketzhSbTWK0o6gg4mQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "zod": "^4.1.11" - }, - "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/api-client": { - "version": "2.31.3", - "resolved": "https://registry.npmjs.org/@scalar/api-client/-/api-client-2.31.3.tgz", - "integrity": "sha512-Qyy7C6Vt+9GHA4hOSdn2E0DkXB/6EjyCuqW9Vn063Wg8PIlkNAyOkszZtDtDUc0KI+c4J1iwCUVelrZr5lrnwQ==", + "version": "2.41.0", + "resolved": "https://registry.npmjs.org/@scalar/api-client/-/api-client-2.41.0.tgz", + "integrity": "sha512-7olL0H8zESePpKSmJwalP0u2RK00qEUHL8gHDEukIyjVF0oDZK/JCCXPSCtg94A+kWTG+e6BMtjhp0WWIqf2dg==", "dev": true, "license": "MIT", "dependencies": { "@headlessui/tailwindcss": "^0.2.2", "@headlessui/vue": "1.7.23", - "@scalar/analytics-client": "1.0.1", - "@scalar/components": "0.19.15", - "@scalar/draggable": "0.3.0", - "@scalar/helpers": "0.2.18", - "@scalar/icons": "0.5.3", - "@scalar/import": "0.4.55", - "@scalar/json-magic": "0.11.7", - "@scalar/oas-utils": "0.8.3", - "@scalar/object-utils": "1.2.32", - "@scalar/openapi-parser": "0.24.17", - "@scalar/openapi-types": "0.5.4", - "@scalar/postman-to-openapi": "0.4.10", - "@scalar/sidebar": "0.7.46", - "@scalar/snippetz": "0.6.19", - "@scalar/themes": "0.14.3", + "@scalar/components": "0.21.3", + "@scalar/draggable": "0.4.1", + "@scalar/helpers": "0.4.3", + "@scalar/icons": "0.7.2", + "@scalar/import": "0.5.4", + "@scalar/json-magic": "0.12.5", + "@scalar/oas-utils": "0.10.16", + "@scalar/object-utils": "1.3.4", + "@scalar/openapi-types": "0.7.0", + "@scalar/postman-to-openapi": "0.6.1", + "@scalar/sidebar": "0.8.18", + "@scalar/snippetz": "0.7.8", + "@scalar/themes": "0.15.2", "@scalar/typebox": "^0.1.3", - "@scalar/types": "0.6.10", - "@scalar/use-codemirror": "0.13.50", - "@scalar/use-hooks": "0.3.7", - "@scalar/use-toasts": "0.9.1", - "@scalar/workspace-store": "0.35.3", - "@types/har-format": "^1.2.15", + "@scalar/types": "0.7.6", + "@scalar/use-codemirror": "0.14.11", + "@scalar/use-hooks": "0.4.2", + "@scalar/use-toasts": "0.10.1", + "@scalar/workspace-store": "0.43.1", + "@types/har-format": "^1.2.16", "@vueuse/core": "13.9.0", "@vueuse/integrations": "13.9.0", - "focus-trap": "^7", + "focus-trap": "^7.8.0", "fuse.js": "^7.1.0", "js-base64": "^3.7.8", "microdiff": "^1.5.0", + "monaco-editor": "0.54.0", + "monaco-yaml": "5.2.3", "nanoid": "^5.1.6", - "pretty-bytes": "^7.1.0", + "posthog-js": "1.363.2", "pretty-ms": "^9.3.0", - "shell-quote": "^1.8.1", + "radix-vue": "^1.9.17", + "shell-quote": "^1.8.3", "type-fest": "^5.3.1", - "vue": "^3.5.26", + "vite-plugin-monaco-editor": "^1.1.0", + "vue": "^3.5.30", "vue-router": "4.6.2", "whatwg-mimetype": "4.0.0", "yaml": "^2.8.0", "zod": "^4.3.5" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/api-reference": { - "version": "1.46.4", - "resolved": "https://registry.npmjs.org/@scalar/api-reference/-/api-reference-1.46.4.tgz", - "integrity": "sha512-EpCcOG15Ry8DKNs/f5AdRA97s1B5kGPekzANpnK0j1IpyU4Sb/mfdyfB00WC+vUo7hfc4BFRSkkiPa5SSM7fng==", + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/@scalar/api-reference/-/api-reference-1.51.0.tgz", + "integrity": "sha512-CmyvtSM9YNTPit1ZxfYhfAp7MtE+KXUxOID4sIf8+Flfr5zFOHVAu1ww1WySszugWG/8xV4BCZuJZtHGwtQyHg==", "dev": true, "license": "MIT", "dependencies": { "@headlessui/vue": "1.7.23", - "@scalar/agent-chat": "0.7.3", - "@scalar/api-client": "2.31.3", - "@scalar/code-highlight": "0.2.4", - "@scalar/components": "0.19.15", - "@scalar/helpers": "0.2.18", - "@scalar/icons": "0.5.3", - "@scalar/oas-utils": "0.8.3", - "@scalar/openapi-parser": "0.24.17", - "@scalar/openapi-types": "0.5.4", - "@scalar/sidebar": "0.7.46", - "@scalar/snippetz": "0.6.19", - "@scalar/themes": "0.14.3", - "@scalar/types": "0.6.10", - "@scalar/use-hooks": "0.3.7", - "@scalar/use-toasts": "0.9.1", - "@scalar/workspace-store": "0.35.3", + "@scalar/agent-chat": "0.10.1", + "@scalar/api-client": "2.41.0", + "@scalar/code-highlight": "0.3.2", + "@scalar/components": "0.21.3", + "@scalar/helpers": "0.4.3", + "@scalar/icons": "0.7.2", + "@scalar/oas-utils": "0.10.16", + "@scalar/sidebar": "0.8.18", + "@scalar/snippetz": "0.7.8", + "@scalar/themes": "0.15.2", + "@scalar/types": "0.7.6", + "@scalar/use-hooks": "0.4.2", + "@scalar/use-toasts": "0.10.1", + "@scalar/workspace-store": "0.43.1", "@unhead/vue": "^2.1.4", "@vueuse/core": "13.9.0", "fuse.js": "^7.1.0", "github-slugger": "2.0.0", "microdiff": "^1.5.0", "nanoid": "^5.1.6", - "vue": "^3.5.26" + "vue": "^3.5.30", + "yaml": "^2.8.0" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/code-highlight": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@scalar/code-highlight/-/code-highlight-0.2.4.tgz", - "integrity": "sha512-sF9kpxyeh+jwh0ZpXias9UrPBbZf0zgY8Y2nlQqYAwVdGbFdO/bIzjKTi9vWCkKS78NsBfz7rLnJsQ+UP/11rA==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@scalar/code-highlight/-/code-highlight-0.3.2.tgz", + "integrity": "sha512-K9Cr3uQ0Rga4MEwAd3Jd4qvWy/pL7LPzL+xjdrpKEfdPj3C96W9oFE9Ok9wnNxuvuGqlN6JEqTw8Kjy3LYo45w==", "dev": true, "license": "MIT", "dependencies": { @@ -1873,166 +2118,165 @@ "rehype-parse": "^9.0.1", "rehype-raw": "^7.0.0", "rehype-sanitize": "^6.0.0", - "rehype-stringify": "^10.0.0", - "remark-gfm": "^4.0.0", + "rehype-stringify": "^10.0.1", + "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.0", + "remark-rehype": "^11.1.2", "remark-stringify": "^11.0.0", - "unified": "^11.0.4", - "unist-util-visit": "^5.0.0" + "unified": "^11.0.5", + "unist-util-visit": "^5.1.0" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/components": { - "version": "0.19.15", - "resolved": "https://registry.npmjs.org/@scalar/components/-/components-0.19.15.tgz", - "integrity": "sha512-oYK5zJarMJ5HvNGJsr6/Y7lz9TPy6Q+g3bQ1PxbaGURcKItXWlR+Yki1kZQ1A6/3b1XpBoMkMUHYp1bBOPW4KQ==", + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/@scalar/components/-/components-0.21.3.tgz", + "integrity": "sha512-vOQyxImr6nbMDGUkIM4vs+DF0A26l33J+zYHAV4cm1X8FQ0huPW464EPDiD7csPkg79yF9vqblhFhyqq4u2dqw==", "dev": true, "license": "MIT", "dependencies": { "@floating-ui/utils": "0.2.10", "@floating-ui/vue": "1.1.9", "@headlessui/vue": "1.7.23", - "@scalar/code-highlight": "0.2.4", - "@scalar/helpers": "0.2.18", - "@scalar/icons": "0.5.3", - "@scalar/oas-utils": "0.8.3", - "@scalar/themes": "0.14.3", - "@scalar/use-hooks": "0.3.7", + "@scalar/code-highlight": "0.3.2", + "@scalar/helpers": "0.4.3", + "@scalar/icons": "0.7.2", + "@scalar/themes": "0.15.2", + "@scalar/use-hooks": "0.4.2", "@vueuse/core": "13.9.0", "cva": "1.0.0-beta.4", "nanoid": "^5.1.6", - "pretty-bytes": "^7.1.0", "radix-vue": "^1.9.17", - "vue": "^3.5.26", + "vue": "^3.5.30", "vue-component-type-helpers": "^3.2.2" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/draggable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@scalar/draggable/-/draggable-0.3.0.tgz", - "integrity": "sha512-T/79XY5HGNo9Lte7wlnrH393zjiulom4HuwW4u8RtaafWxIdtXykD2+TgiO0KTreyzCrWyWrESqiqKKJMe2nKg==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@scalar/draggable/-/draggable-0.4.1.tgz", + "integrity": "sha512-TvTiy0tB2ulfBL7jwrpnsf7Geqlq/tWaIopkyZLii9bZPxPX5y1o6fVJXMyjtsUo0FSzvB382kN4uPi1TK/Hww==", "dev": true, "license": "MIT", "dependencies": { - "vue": "^3.5.21" + "vue": "^3.5.26" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/helpers": { - "version": "0.2.18", - "resolved": "https://registry.npmjs.org/@scalar/helpers/-/helpers-0.2.18.tgz", - "integrity": "sha512-w1d4tpNEVZ293oB2BAgLrS0kVPUtG3eByNmOCJA5eK9vcT4D3cmsGtWjUaaqit0BQCsBFHK51rasGvSWnApYTw==", + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@scalar/helpers/-/helpers-0.4.3.tgz", + "integrity": "sha512-Gv2V7SFreLx3DltzF2lKXdaJSH5cP1LOyt9PxON1cSWGxkrs3sg93c1taEJsW24E9ckfYXkL5hjCAVLfAN3wQw==", "dev": true, "license": "MIT", "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/icons": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@scalar/icons/-/icons-0.5.3.tgz", - "integrity": "sha512-W9W4dWM9UL75+CLPgQEhds+cJVBeLaKrcUnlguV7CGzcBkdV+u6bZVeqDgiUn5o9j1zZChkoXULSfU/a605csg==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/@scalar/icons/-/icons-0.7.2.tgz", + "integrity": "sha512-21L2y/D6oU7wZHHa9i6FK98cZ+XH4HX9+e69uNpvlp4awRUpz6ifNHOLlxI607bq+Yz4G313gnV0uyUHwZ/pig==", "dev": true, "license": "MIT", "dependencies": { "@phosphor-icons/core": "^2.1.1", - "@types/node": "^22.19.3", - "chalk": "^5.4.1", - "vue": "^3.5.26" + "@types/node": "^24.1.0", + "chalk": "^5.6.2", + "vue": "^3.5.30" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/import": { - "version": "0.4.55", - "resolved": "https://registry.npmjs.org/@scalar/import/-/import-0.4.55.tgz", - "integrity": "sha512-XCn7OwoFNWkEpIJHYMuoUvtR5gLtaKf8AXrcHVVNmQG5TcAd+PfzSYCYwNcRtPEmaBKIyt5Vc5zsgPS8wTFyBw==", + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@scalar/import/-/import-0.5.4.tgz", + "integrity": "sha512-EwqIC+cRzbGVg6w0P1tN0K/46hfb0rbHOTNwL4n7FmKxOH6zdbO5dCvlyh41rjOoc19keVGeq7oPg6o/6D6rBA==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/helpers": "0.2.18", + "@scalar/helpers": "0.4.3", "yaml": "^2.8.0" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/json-magic": { - "version": "0.11.7", - "resolved": "https://registry.npmjs.org/@scalar/json-magic/-/json-magic-0.11.7.tgz", - "integrity": "sha512-GVz9E0vXu+ecypkdn0biK1gbQVkK4QTTX1Hq3eMgxlLQC91wwiqWfCqwfhuX0LRu+Z5OmYhLhufDJEEh56rVgA==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@scalar/json-magic/-/json-magic-0.12.5.tgz", + "integrity": "sha512-MkGOjodEeQ7V7M78W6Oq+t3q1LaUR+SRLZLqFbU6s26Gc+12T+v89JXcHvd+3ug0xFVMg/kdczZ3O6miBhyNsA==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/helpers": "0.2.18", + "@scalar/helpers": "0.4.3", "pathe": "^2.0.3", "yaml": "^2.8.0" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/oas-utils": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/@scalar/oas-utils/-/oas-utils-0.8.3.tgz", - "integrity": "sha512-FQLZzY+c1tOkXsYtht3MyFJMpLqymhnUvrd7uk0FI659JAu5bDtcasJ1ZM2MbqALS0n7ta1u417ADEagTugPWQ==", + "version": "0.10.16", + "resolved": "https://registry.npmjs.org/@scalar/oas-utils/-/oas-utils-0.10.16.tgz", + "integrity": "sha512-xez3QrGYjn4Dhl6blvcUUzbVR1IOQVQhDO54UuZJwKWbOT3brEyAeZBwzttWmWDe3uGazPF160mj7qBXlT6sDQ==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/helpers": "0.2.18", - "@scalar/json-magic": "0.11.7", - "@scalar/object-utils": "1.2.32", - "@scalar/openapi-types": "0.5.4", - "@scalar/themes": "0.14.3", - "@scalar/types": "0.6.10", - "@scalar/workspace-store": "0.35.3", + "@scalar/helpers": "0.4.3", + "@scalar/json-magic": "0.12.5", + "@scalar/object-utils": "1.3.4", + "@scalar/openapi-parser": "0.25.8", + "@scalar/openapi-types": "0.7.0", + "@scalar/themes": "0.15.2", + "@scalar/types": "0.7.6", + "@scalar/workspace-store": "0.43.1", "flatted": "^3.3.3", "github-slugger": "2.0.0", "type-fest": "^5.3.1", - "vue": "^3.5.26", + "vue": "^3.5.30", "yaml": "^2.8.0", "zod": "^4.3.5" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/object-utils": { - "version": "1.2.32", - "resolved": "https://registry.npmjs.org/@scalar/object-utils/-/object-utils-1.2.32.tgz", - "integrity": "sha512-t3qTaI2Jd4xhXS42KTS9VqKJ4YENxLidemy+E9Y1voJmVScG+A9qHn4LSkXUrS2sYhOGuwERjxRZr2P7zgCMqA==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@scalar/object-utils/-/object-utils-1.3.4.tgz", + "integrity": "sha512-M3S6QgsMfSTgWgTQTS+m3+/pkpTlZmyWMFFUy/qWbQaD00qbR/OcftA7QIEPe6ToJgsNPHHS4+bOXzeLoJJBfQ==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/helpers": "0.2.18", + "@scalar/helpers": "0.4.3", "flatted": "^3.3.3", "just-clone": "^6.2.0", "ts-deepmerge": "^7.0.3" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/openapi-parser": { - "version": "0.24.17", - "resolved": "https://registry.npmjs.org/@scalar/openapi-parser/-/openapi-parser-0.24.17.tgz", - "integrity": "sha512-aM9UVrzlMreC3X/sZbyj+7XDZmat3ecGC3RpU8dqEO/HIH+CEX0xMLuP+41DhePCYg5+9TtDomSfWuMq4x1Z1A==", + "version": "0.25.8", + "resolved": "https://registry.npmjs.org/@scalar/openapi-parser/-/openapi-parser-0.25.8.tgz", + "integrity": "sha512-09yGXQSMYVlxJkLIn9Nz2q7Du7/olHKhR4oU0/JgkOdcKBiixSeLmhcAm7Hmj2Z82xOYpF+ZJUTCzsh8DQv5Fg==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/helpers": "0.2.18", - "@scalar/json-magic": "0.11.7", - "@scalar/openapi-types": "0.5.4", - "@scalar/openapi-upgrader": "0.1.11", + "@scalar/helpers": "0.4.3", + "@scalar/json-magic": "0.12.5", + "@scalar/openapi-types": "0.7.0", + "@scalar/openapi-upgrader": "0.2.4", "ajv": "^8.17.1", "ajv-draft-04": "^1.0.0", "ajv-formats": "^3.0.1", @@ -2041,94 +2285,91 @@ "yaml": "^2.8.0" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/openapi-types": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@scalar/openapi-types/-/openapi-types-0.5.4.tgz", - "integrity": "sha512-2pEbhprh8lLGDfUI6mNm9EV104pjb3+aJsXrFaqfgOSre7r6NlgM5HcSbsLjzDAnTikjJhJ3IMal1Rz8WVwiOw==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@scalar/openapi-types/-/openapi-types-0.7.0.tgz", + "integrity": "sha512-kN0PwlJW0de4bwQ4ib+mBHzKJUvBCyR/gwU4zLEq6SCbj+GfgYUh+2a0/yl1WYVUiSkkwFsHjfmQ8KjhR3HK0Q==", "dev": true, "license": "MIT", - "dependencies": { - "zod": "^4.3.5" - }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/openapi-upgrader": { - "version": "0.1.11", - "resolved": "https://registry.npmjs.org/@scalar/openapi-upgrader/-/openapi-upgrader-0.1.11.tgz", - "integrity": "sha512-ngJcHGoCHmpWgYtNy08vmzFfLdQEkMpvaCQqNPPMNKq0QEXOv89e/rn+TZJZgPnRlY7fDIoIhn9lNgr+azBW+w==", + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/@scalar/openapi-upgrader/-/openapi-upgrader-0.2.4.tgz", + "integrity": "sha512-AcrF7BMxKCTHnT82SHbHun6dJO4XC9tS5gD7EJsr/7YwFkx9JtbtZCryJXtqWJ5c7i1v1KH4PRRjDga/hCULTQ==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/openapi-types": "0.5.4" + "@scalar/openapi-types": "0.7.0" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/postman-to-openapi": { - "version": "0.4.10", - "resolved": "https://registry.npmjs.org/@scalar/postman-to-openapi/-/postman-to-openapi-0.4.10.tgz", - "integrity": "sha512-s7TECz1DLSXggRYEEVjoBXLxY3nKCU9n4zA7FxRywxsG485qmr2gMHqU5plFJDC59RUxcIOo+V+LbOpKo1EQUQ==", + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@scalar/postman-to-openapi/-/postman-to-openapi-0.6.1.tgz", + "integrity": "sha512-YUEH33s1HCAkApSdIFNB5XUGxzp7D5U9X2kgMKlZSyN2fW+yAePonaq5S9E4wU/2swSm+PvL9B2gw02yPjecUA==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/helpers": "0.2.18", - "@scalar/openapi-types": "0.5.4" + "@scalar/helpers": "0.4.3", + "@scalar/openapi-types": "0.7.0" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/sidebar": { - "version": "0.7.46", - "resolved": "https://registry.npmjs.org/@scalar/sidebar/-/sidebar-0.7.46.tgz", - "integrity": "sha512-80+28tW2qM0mH1v/dAZu1DMmv8nj/Rz88PDW4fRY8yMP6xoNi8IpKhnFJ4dnGOBMqu7/2VsOAIGADLVA6ZC4jw==", + "version": "0.8.18", + "resolved": "https://registry.npmjs.org/@scalar/sidebar/-/sidebar-0.8.18.tgz", + "integrity": "sha512-FtHXmSyXYXtM5Y3TPbBrVfhJgaGC3fFkJugZN/y5BzXZXQoKZyTmBMJk8jMkgaMp+0cvpEtKJfYuBJvoAxtFmA==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/components": "0.19.15", - "@scalar/helpers": "0.2.18", - "@scalar/icons": "0.5.3", - "@scalar/themes": "0.14.3", - "@scalar/use-hooks": "0.3.7", - "@scalar/workspace-store": "0.35.3", - "vue": "^3.5.26" + "@scalar/components": "0.21.3", + "@scalar/helpers": "0.4.3", + "@scalar/icons": "0.7.2", + "@scalar/themes": "0.15.2", + "@scalar/use-hooks": "0.4.2", + "@scalar/workspace-store": "0.43.1", + "vue": "^3.5.30" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/snippetz": { - "version": "0.6.19", - "resolved": "https://registry.npmjs.org/@scalar/snippetz/-/snippetz-0.6.19.tgz", - "integrity": "sha512-eWZiCFrv2ExTgYBytSOmXbnY5zVSXRV0tGjFGtDL6ovv9TZIjOrIi0CVg6NLgcs9I1XHAYpE0JlWKQnQ+dGQYw==", + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/@scalar/snippetz/-/snippetz-0.7.8.tgz", + "integrity": "sha512-1g037ajdeGepBKj6+At+6BGSW4OqwONq2NoonGDcpDkW01dInTJx9q8AatXT1qdVUwV1gAVOYjCHsmSxkZictw==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/types": "0.6.10", + "@scalar/types": "0.7.6", "js-base64": "^3.7.8", "stringify-object": "^6.0.0" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/themes": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/@scalar/themes/-/themes-0.14.3.tgz", - "integrity": "sha512-QZpuopwlXSX2e4sxYSSQEm3CzanPzlNIhUONVaZQOo0wUSfyaC1V4QTGMigSPzdo505ouZNyh80bR0Glmn4fag==", + "version": "0.15.2", + "resolved": "https://registry.npmjs.org/@scalar/themes/-/themes-0.15.2.tgz", + "integrity": "sha512-GA+cM2Lojv2sqwfB6yTerBAnBTfVzIzUZ3C8T4PP9snaLyy7b0CMoHtnDEqERX/NZiRfnrIWeEYGy09cDi0w4g==", "dev": true, "license": "MIT", "dependencies": { "nanoid": "^5.1.6" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/typebox": { @@ -2139,25 +2380,25 @@ "license": "MIT" }, "node_modules/@scalar/types": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/@scalar/types/-/types-0.6.10.tgz", - "integrity": "sha512-fZkelRwcEeAhsn4c0wjYXWrzSzLaEyfxTn/eazXJ4XfCIsgJTQyK0FD8mnOBZJ2vEIbtT2E1mBKnCbDxrJIlxA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/@scalar/types/-/types-0.7.6.tgz", + "integrity": "sha512-n5d7neeGTY/yS36AwAv3FAyCnJbbLjMPwyuEXBLgxHcb5i8DXnNfwy1nzz8jx/EJ88i1zmQ8BuMs+207saHgNA==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/helpers": "0.2.18", + "@scalar/helpers": "0.4.3", "nanoid": "^5.1.6", "type-fest": "^5.3.1", "zod": "^4.3.5" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/use-codemirror": { - "version": "0.13.50", - "resolved": "https://registry.npmjs.org/@scalar/use-codemirror/-/use-codemirror-0.13.50.tgz", - "integrity": "sha512-KaX8bixOz4sMy5a9XzjH03ffo6n905ol850bT8YRqBuPaTXoxq3M/Z0MipxvCRL+SQ/U07QiwJQnCO3jnXd+xQ==", + "version": "0.14.11", + "resolved": "https://registry.npmjs.org/@scalar/use-codemirror/-/use-codemirror-0.14.11.tgz", + "integrity": "sha512-5wtC4pUjzhy72j3aAueJg+fh9KflevJvXMn0YscsxiDTvqwIzeZcHe1N9VNtvzDXgLblEeBT6D0+Vs+boyExxg==", "dev": true, "license": "MIT", "dependencies": { @@ -2175,29 +2416,28 @@ "@lezer/common": "^1.2.3", "@lezer/highlight": "^1.2.1", "@replit/codemirror-css-color-picker": "^6.3.0", - "@scalar/components": "0.19.15", - "vue": "^3.5.26" + "vue": "^3.5.30" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/use-hooks": { - "version": "0.3.7", - "resolved": "https://registry.npmjs.org/@scalar/use-hooks/-/use-hooks-0.3.7.tgz", - "integrity": "sha512-fhFRYKtGyCOPaLwDRHGaw5XZ3LY+ptCpcPON51r1sGXCl3O1joB2rBTkcXuh2E04uMB5vsko/71hxhWJZxSnGg==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@scalar/use-hooks/-/use-hooks-0.4.2.tgz", + "integrity": "sha512-c12RFw75aqRFc2iXQDdm9cHk0E/bT8LTelgNQDR8Bhp7950Swssr10lWC61CWdOigjRth+ES61Jo8yGi5yUBwQ==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/use-toasts": "0.9.1", + "@scalar/use-toasts": "0.10.1", "@vueuse/core": "13.9.0", "cva": "1.0.0-beta.2", "tailwind-merge": "3.4.0", - "vue": "^3.5.26", + "vue": "^3.5.30", "zod": "^4.3.5" }, "engines": { - "node": ">=20" + "node": ">=22" } }, "node_modules/@scalar/use-hooks/node_modules/cva": { @@ -2222,41 +2462,51 @@ } }, "node_modules/@scalar/use-toasts": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/@scalar/use-toasts/-/use-toasts-0.9.1.tgz", - "integrity": "sha512-t8QoQO4ZWekiSdJ2O7C+PbXfv7x2fmhv3C7t/iITdNpOyLv4jAhlELGpxQHkWsU0ZwRrLU8e+rV0jJcKWE6vYA==", + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/@scalar/use-toasts/-/use-toasts-0.10.1.tgz", + "integrity": "sha512-8fsDd4efEDF+EydA+1+np/ac2KsAXPR1LdTYtTUxpv8Uj1l7lUMT/T5A7xnR+wNKmyVREihb9KnGp3pSjO2kYg==", "dev": true, "license": "MIT", "dependencies": { - "vue": "^3.5.21", + "vue": "^3.5.26", "vue-sonner": "^1.0.3" }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@scalar/validation": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@scalar/validation/-/validation-0.3.0.tgz", + "integrity": "sha512-4X/AP3JO23DuYxs1MMjn6IlT9gyrKPCuZj8ybTB9QIjC+3tSJLpQOwZg7HEyyz2HoVwOt9jdef2jO3RXW7DqTw==", + "dev": true, + "license": "MIT", "engines": { "node": ">=20" } }, "node_modules/@scalar/workspace-store": { - "version": "0.35.3", - "resolved": "https://registry.npmjs.org/@scalar/workspace-store/-/workspace-store-0.35.3.tgz", - "integrity": "sha512-q/ZKiNQ+PSKiNO/2EGFJn1/+Hp75IN+E2KWyx9etS0YLLFNiW3IaKXB3sCX8hMZ8z7Tf+EL718ejrs9+Rvc92A==", + "version": "0.43.1", + "resolved": "https://registry.npmjs.org/@scalar/workspace-store/-/workspace-store-0.43.1.tgz", + "integrity": "sha512-R0V2PXMhjbfELRtiRfn6vNaLPJalo1AKUs1AkCvJZyMaCNHrGUH14rdhwAz790ahVjebY66VKdn19Q4x1t60uA==", "dev": true, "license": "MIT", "dependencies": { - "@scalar/code-highlight": "0.2.4", - "@scalar/helpers": "0.2.18", - "@scalar/json-magic": "0.11.7", - "@scalar/object-utils": "1.2.32", - "@scalar/openapi-upgrader": "0.1.11", - "@scalar/snippetz": "0.6.19", + "@scalar/helpers": "0.4.3", + "@scalar/json-magic": "0.12.5", + "@scalar/openapi-upgrader": "0.2.4", + "@scalar/snippetz": "0.7.8", "@scalar/typebox": "0.1.3", - "@scalar/types": "0.6.10", + "@scalar/types": "0.7.6", + "@scalar/validation": "0.3.0", "github-slugger": "2.0.0", + "js-base64": "^3.7.8", "type-fest": "^5.3.1", - "vue": "^3.5.26", + "vue": "^3.5.30", "yaml": "^2.8.0" }, "engines": { - "node": ">=18" + "node": ">=22" } }, "node_modules/@standard-schema/spec": { @@ -2267,9 +2517,9 @@ "license": "MIT" }, "node_modules/@swc/helpers": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.19.tgz", - "integrity": "sha512-QamiFeIK3txNjgUTNppE6MiG3p7TdninpZu0E0PbqVh1a9FNLT2FRhisaa4NcaX52XVhA5l7Pk58Ft7Sqi/2sA==", + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.21.tgz", + "integrity": "sha512-jI/VAmtdjB/RnI8GTnokyX7Ug8c+g+ffD6QRLa6XQewtnGyukKkKSk3wLTM3b5cjt1jNh9x0jfVlagdN2gDKQg==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -2277,9 +2527,9 @@ } }, "node_modules/@tanstack/virtual-core": { - "version": "3.13.21", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.21.tgz", - "integrity": "sha512-ww+fmLHyCbPSf7JNbWZP3g7wl6SdNo3ah5Aiw+0e9FDErkVHLKprYUrwTm7dF646FtEkN/KkAKPYezxpmvOjxw==", + "version": "3.13.23", + "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.23.tgz", + "integrity": "sha512-zSz2Z2HNyLjCplANTDyl3BcdQJc2k1+yyFoKhNRmCr7V7dY8o8q5m8uFTI1/Pg1kL+Hgrz6u3Xo6eFUB7l66cg==", "dev": true, "license": "MIT", "funding": { @@ -2288,13 +2538,13 @@ } }, "node_modules/@tanstack/vue-virtual": { - "version": "3.13.21", - "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.13.21.tgz", - "integrity": "sha512-zneUNdQTcUhoDl6+ek+/O4S9gSZRAc2q7VLscZ4WZnFfZcHc3M7OyVCfSDC3hGuwFqzfL8Cx5bZF6zbGCYwXmw==", + "version": "3.13.23", + "resolved": "https://registry.npmjs.org/@tanstack/vue-virtual/-/vue-virtual-3.13.23.tgz", + "integrity": "sha512-b5jPluAR6U3eOq6GWAYSpj3ugnAIZgGR0e6aGAgyRse0Yu6MVQQ0ZWm9SArSXWtageogn6bkVD8D//c4IjW3xQ==", "dev": true, "license": "MIT", "dependencies": { - "@tanstack/virtual-core": "3.13.21" + "@tanstack/virtual-core": "3.13.23" }, "funding": { "type": "github", @@ -2305,9 +2555,9 @@ } }, "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "version": "4.1.13", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", + "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", "dev": true, "license": "MIT", "dependencies": { @@ -2356,13 +2606,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.19.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.15.tgz", - "integrity": "sha512-F0R/h2+dsy5wJAUe3tAU6oqa2qbWY5TpNfL/RGmo1y38hiyO1w3x2jPtt76wmuaJI4DQnOBu21cNXQ2STIUUWg==", + "version": "24.12.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.12.2.tgz", + "integrity": "sha512-A1sre26ke7HDIuY/M23nd9gfB+nrmhtYyMINbjI1zHJxYteKR6qSMX56FsmjMcDb3SMcjJg5BiRRgOCC/yBD0g==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": "~6.21.0" + "undici-types": "~7.16.0" } }, "node_modules/@types/stylis": { @@ -2402,14 +2652,14 @@ "license": "ISC" }, "node_modules/@unhead/vue": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.1.10.tgz", - "integrity": "sha512-VP78Onh2HNezLPfhYjfHqn4dxlcQsE6PJgTTs61NksO/thvilNswtgBq0N0MWCLtn43N5akEPGW2y2zxM3PWgQ==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/@unhead/vue/-/vue-2.1.12.tgz", + "integrity": "sha512-zEWqg0nZM8acpuTZE40wkeUl8AhIe0tU0OkilVi1D4fmVjACrwoh5HP6aNqJ8kUnKsoy6D+R3Vi/O+fmdNGO7g==", "dev": true, "license": "MIT", "dependencies": { "hookable": "^6.0.1", - "unhead": "2.1.10" + "unhead": "2.1.12" }, "funding": { "url": "https://github.com/sponsors/harlan-zw" @@ -2429,14 +2679,14 @@ } }, "node_modules/@vue/compiler-core": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.29.tgz", - "integrity": "sha512-cuzPhD8fwRHk8IGfmYaR4eEe4cAyJEL66Ove/WZL7yWNL134nqLddSLwNRIsFlnnW1kK+p8Ck3viFnC0chXCXw==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.32.tgz", + "integrity": "sha512-4x74Tbtqnda8s/NSD6e1Dr5p1c8HdMU5RWSjMSUzb8RTcUQqevDCxVAitcLBKT+ie3o0Dl9crc/S/opJM7qBGQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", - "@vue/shared": "3.5.29", + "@babel/parser": "^7.29.2", + "@vue/shared": "3.5.32", "entities": "^7.0.1", "estree-walker": "^2.0.2", "source-map-js": "^1.2.1" @@ -2456,31 +2706,31 @@ } }, "node_modules/@vue/compiler-dom": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.29.tgz", - "integrity": "sha512-n0G5o7R3uBVmVxjTIYcz7ovr8sy7QObFG8OQJ3xGCDNhbG60biP/P5KnyY8NLd81OuT1WJflG7N4KWYHaeeaIg==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.32.tgz", + "integrity": "sha512-ybHAu70NtiEI1fvAUz3oXZqkUYEe5J98GjMDpTGl5iHb0T15wQYLR4wE3h9xfuTNA+Cm2f4czfe8B4s+CCH57Q==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-core": "3.5.29", - "@vue/shared": "3.5.29" + "@vue/compiler-core": "3.5.32", + "@vue/shared": "3.5.32" } }, "node_modules/@vue/compiler-sfc": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.29.tgz", - "integrity": "sha512-oJZhN5XJs35Gzr50E82jg2cYdZQ78wEwvRO6Y63TvLVTc+6xICzJHP1UIecdSPPYIbkautNBanDiWYa64QSFIA==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.32.tgz", + "integrity": "sha512-8UYUYo71cP/0YHMO814TRZlPuUUw3oifHuMR7Wp9SNoRSrxRQnhMLNlCeaODNn6kNTJsjFoQ/kqIj4qGvya4Xg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.0", - "@vue/compiler-core": "3.5.29", - "@vue/compiler-dom": "3.5.29", - "@vue/compiler-ssr": "3.5.29", - "@vue/shared": "3.5.29", + "@babel/parser": "^7.29.2", + "@vue/compiler-core": "3.5.32", + "@vue/compiler-dom": "3.5.32", + "@vue/compiler-ssr": "3.5.32", + "@vue/shared": "3.5.32", "estree-walker": "^2.0.2", "magic-string": "^0.30.21", - "postcss": "^8.5.6", + "postcss": "^8.5.8", "source-map-js": "^1.2.1" } }, @@ -2533,14 +2783,14 @@ } }, "node_modules/@vue/compiler-ssr": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.29.tgz", - "integrity": "sha512-Y/ARJZE6fpjzL5GH/phJmsFwx3g6t2KmHKHx5q+MLl2kencADKIrhH5MLF6HHpRMmlRAYBRSvv347Mepf1zVNw==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.32.tgz", + "integrity": "sha512-Gp4gTs22T3DgRotZ8aA/6m2jMR+GMztvBXUBEUOYOcST+giyGWJ4WvFd7QLHBkzTxkfOt8IELKNdpzITLbA2rw==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.29", - "@vue/shared": "3.5.29" + "@vue/compiler-dom": "3.5.32", + "@vue/shared": "3.5.32" } }, "node_modules/@vue/devtools-api": { @@ -2551,57 +2801,57 @@ "license": "MIT" }, "node_modules/@vue/reactivity": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.29.tgz", - "integrity": "sha512-zcrANcrRdcLtmGZETBxWqIkoQei8HaFpZWx/GHKxx79JZsiZ8j1du0VUJtu4eJjgFvU/iKL5lRXFXksVmI+5DA==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.32.tgz", + "integrity": "sha512-/ORasxSGvZ6MN5gc+uE364SxFdJ0+WqVG0CENXaGW58TOCdrAW76WWaplDtECeS1qphvtBZtR+3/o1g1zL4xPQ==", "dev": true, "license": "MIT", "dependencies": { - "@vue/shared": "3.5.29" + "@vue/shared": "3.5.32" } }, "node_modules/@vue/runtime-core": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.29.tgz", - "integrity": "sha512-8DpW2QfdwIWOLqtsNcds4s+QgwSaHSJY/SUe04LptianUQ/0xi6KVsu/pYVh+HO3NTVvVJjIPL2t6GdeKbS4Lg==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.32.tgz", + "integrity": "sha512-pDrXCejn4UpFDFmMd27AcJEbHaLemaE5o4pbb7sLk79SRIhc6/t34BQA7SGNgYtbMnvbF/HHOftYBgFJtUoJUQ==", "dev": true, "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.29", - "@vue/shared": "3.5.29" + "@vue/reactivity": "3.5.32", + "@vue/shared": "3.5.32" } }, "node_modules/@vue/runtime-dom": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.29.tgz", - "integrity": "sha512-AHvvJEtcY9tw/uk+s/YRLSlxxQnqnAkjqvK25ZiM4CllCZWzElRAoQnCM42m9AHRLNJ6oe2kC5DCgD4AUdlvXg==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.32.tgz", + "integrity": "sha512-1CDVv7tv/IV13V8Nip1k/aaObVbWqRlVCVezTwx3K07p7Vxossp5JU1dcPNhJk3w347gonIUT9jQOGutyJrSVQ==", "dev": true, "license": "MIT", "dependencies": { - "@vue/reactivity": "3.5.29", - "@vue/runtime-core": "3.5.29", - "@vue/shared": "3.5.29", + "@vue/reactivity": "3.5.32", + "@vue/runtime-core": "3.5.32", + "@vue/shared": "3.5.32", "csstype": "^3.2.3" } }, "node_modules/@vue/server-renderer": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.29.tgz", - "integrity": "sha512-G/1k6WK5MusLlbxSE2YTcqAAezS+VuwHhOvLx2KnQU7G2zCH6KIb+5Wyt6UjMq7a3qPzNEjJXs1hvAxDclQH+g==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.32.tgz", + "integrity": "sha512-IOjm2+JQwRFS7W28HNuJeXQle9KdZbODFY7hFGVtnnghF51ta20EWAZJHX+zLGtsHhaU6uC9BGPV52KVpYryMQ==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-ssr": "3.5.29", - "@vue/shared": "3.5.29" + "@vue/compiler-ssr": "3.5.32", + "@vue/shared": "3.5.32" }, "peerDependencies": { - "vue": "3.5.29" + "vue": "3.5.32" } }, "node_modules/@vue/shared": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.29.tgz", - "integrity": "sha512-w7SR0A5zyRByL9XUkCfdLs7t9XOHUyJ67qPGQjOou3p6GvBeBW+AVjUUmlxtZ4PIYaRvE+1LmK44O4uajlZwcg==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.32.tgz", + "integrity": "sha512-ksNyrmRQzWJJ8n3cRDuSF7zNNontuJg1YHnmWRJd2AMu8Ij2bqwiiri2lH5rHtYPZjj4STkNcgcmiQqlOjiYGg==", "dev": true, "license": "MIT" }, @@ -2727,9 +2977,9 @@ } }, "node_modules/adm-zip": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", - "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.17.tgz", + "integrity": "sha512-+Ut8d9LLqwEvHHJl1+PIHqoyDxFgVN847JTVM3Izi3xHDWPE4UtzzXysMZQs64DMcrJfBeS/uoEP4AD3HQHnQQ==", "dev": true, "license": "MIT", "engines": { @@ -2765,6 +3015,16 @@ "zod": "^3.25.76 || ^4.1.8" } }, + "node_modules/ai/node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, "node_modules/ajv": { "name": "@redocly/ajv", "version": "8.18.0", @@ -2983,9 +3243,9 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz", - "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==", + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", + "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", "dev": true, "license": "MIT", "dependencies": { @@ -2995,19 +3255,6 @@ "node": "18 || 20 || >=22" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/call-bind-apply-helpers": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", @@ -3329,13 +3576,12 @@ } }, "node_modules/core-js": { - "version": "3.48.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.48.0.tgz", - "integrity": "sha512-zpEHTy1fjTMZCKLHUZoVeylt9XrzaIN2rbPXEt0k+q7JE5CkCZdo6bNq55bn24a69CH7ErAVLKijxJja4fw+UQ==", + "version": "3.49.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.49.0.tgz", + "integrity": "sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==", "dev": true, "hasInstallScript": true, "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -3358,6 +3604,21 @@ "dev": true, "license": "MIT" }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/css-color-keywords": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/css-color-keywords/-/css-color-keywords-1.0.0.tgz", @@ -3447,9 +3708,9 @@ } }, "node_modules/defu": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.4.tgz", - "integrity": "sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==", + "version": "6.1.6", + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.6.tgz", + "integrity": "sha512-f8mefEW4WIVg4LckePx3mALjQSPQgFlg9U8yaPdlsbdYcHQyj9n2zL2LJEA52smeYxOvmd/nB7TpMtHGMTHcug==", "dev": true, "license": "MIT" }, @@ -3488,17 +3749,11 @@ } }, "node_modules/dompurify": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.2.tgz", - "integrity": "sha512-6obghkliLdmKa56xdbLOpUZ43pAR6xFy1uOrxBaIDjT+yaRuuybLjGS9eVBoSR/UPU5fq3OXClEHLJNGvbxKpQ==", + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.7.tgz", + "integrity": "sha512-VaTstWtsneJY8xzy7DekmYWEOZcmzIe3Qb3zPd4STve1OBTa+e+WmS1ITQec1fZYXI3HCsOZZiSMpG6oxoWMWQ==", "dev": true, - "license": "(MPL-2.0 OR Apache-2.0)", - "engines": { - "node": ">=20" - }, - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } + "license": "(MPL-2.0 OR Apache-2.0)" }, "node_modules/dotenv": { "version": "16.4.7", @@ -3697,9 +3952,9 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-builder": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.0.0.tgz", - "integrity": "sha512-fpZuDogrAgnyt9oDDz+5DBz0zgPdPZz6D4IR7iESxRXElrlGTRkHJ9eEt+SACRJwT0FNFrt71DFQIUFBJfX/uQ==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.4.tgz", + "integrity": "sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==", "dev": true, "funding": [ { @@ -3707,12 +3962,15 @@ "url": "https://github.com/sponsors/NaturalIntelligence" } ], - "license": "MIT" + "license": "MIT", + "dependencies": { + "path-expression-matcher": "^1.1.3" + } }, "node_modules/fast-xml-parser": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.4.2.tgz", - "integrity": "sha512-pw/6pIl4k0CSpElPEJhDppLzaixDEuWui2CUQQBH/ECDf7+y6YwA4Gf7Tyb0Rfe4DIMuZipYj4AEL0nACKglvQ==", + "version": "5.5.10", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.5.10.tgz", + "integrity": "sha512-go2J2xODMc32hT+4Xr/bBGXMaIoiCwrwp2mMtAvKyvEFW6S/v5Gn2pBmE4nvbwNjGhpcAiOwEv7R6/GZ6XRa9w==", "dev": true, "funding": [ { @@ -3722,30 +3980,25 @@ ], "license": "MIT", "dependencies": { - "fast-xml-builder": "^1.0.0", - "strnum": "^2.1.2" + "fast-xml-builder": "^1.1.4", + "path-expression-matcher": "^1.2.1", + "strnum": "^2.2.2" }, "bin": { "fxparser": "src/cli/cli.js" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/fflate": { + "version": "0.4.8", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==", "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } + "license": "MIT" }, "node_modules/flatted": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.4.tgz", - "integrity": "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", + "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", "dev": true, "license": "ISC" }, @@ -3811,13 +4064,17 @@ } }, "node_modules/fuse.js": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz", - "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==", + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.3.0.tgz", + "integrity": "sha512-plz8RVjfcDedTGfVngWH1jmJvBvAwi1v2jecfDerbEnMcmOYUEEwKFTHbNoCiYyzaK2Ws8lABkTCcRSqCY1q4w==", "dev": true, "license": "Apache-2.0", "engines": { "node": ">=10" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/krisk" } }, "node_modules/get-caller-file": { @@ -3944,9 +4201,9 @@ } }, "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "version": "4.7.9", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.9.tgz", + "integrity": "sha512-4E71E0rpOaQuJR2A3xDZ+GM1HyWYv1clR58tC8emQNeQe3RH7MAzSbat+V0wG78LQBo6m6bzSG/L4pBuCsgnUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -4331,9 +4588,9 @@ "license": "Apache-2.0" }, "node_modules/hookable": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/hookable/-/hookable-6.0.1.tgz", - "integrity": "sha512-uKGyY8BuzN/a5gvzvA+3FVWo0+wUjgtfSdnmjtrOVwQCZPHpHDH2WRO3VZSOeluYrHoDCiXFffZXs8Dj1ULWtw==", + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/hookable/-/hookable-6.1.0.tgz", + "integrity": "sha512-ZoKZSJgu8voGK2geJS+6YtYjvIzu9AOM/KZXsBxr83uhLL++e9pEv/dlgwgy3dvHg06kTz6JOh1hk3C8Ceiymw==", "dev": true, "license": "MIT" }, @@ -4567,16 +4824,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-obj": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-3.0.0.tgz", @@ -4616,6 +4863,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, "node_modules/js-base64": { "version": "3.7.8", "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-3.7.8.tgz", @@ -4692,6 +4946,13 @@ "dev": true, "license": "MIT" }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "dev": true, + "license": "MIT" + }, "node_modules/jsonpath-rfc9535": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/jsonpath-rfc9535/-/jsonpath-rfc9535-1.3.0.tgz", @@ -4733,17 +4994,17 @@ } }, "node_modules/lint-staged": { - "version": "16.3.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.3.2.tgz", - "integrity": "sha512-xKqhC2AeXLwiAHXguxBjuChoTTWFC6Pees0SHPwOpwlvI3BH7ZADFPddAdN3pgo3aiKgPUx/bxE78JfUnxQnlg==", + "version": "16.4.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-16.4.0.tgz", + "integrity": "sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==", "dev": true, "license": "MIT", "dependencies": { "commander": "^14.0.3", "listr2": "^9.0.5", - "micromatch": "^4.0.8", + "picomatch": "^4.0.3", "string-argv": "^0.3.2", - "tinyexec": "^1.0.2", + "tinyexec": "^1.0.4", "yaml": "^2.8.2" }, "bin": { @@ -4873,9 +5134,9 @@ } }, "node_modules/lru-cache": { - "version": "11.2.6", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", - "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "version": "11.2.7", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.7.tgz", + "integrity": "sha512-aY/R+aEsRelme17KGQa/1ZSIpLpNYYrhcrepKTZgE+W3WM16YMCaPwOHLHsmopZHELU0Ojin1lPVxKR0MihncA==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -4949,16 +5210,16 @@ } }, "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-14.0.0.tgz", + "integrity": "sha512-uIj4+faQ+MgHgwUW1l2PsPglZLOLOT1uErt06dAPtx2kjteLAkbsd/0FiYg/MGS+i7ZKLb7w2WClxHkzOOuryQ==", "dev": true, "license": "MIT", "bin": { "marked": "bin/marked.js" }, "engines": { - "node": ">= 12" + "node": ">= 18" } }, "node_modules/math-intrinsics": { @@ -5791,33 +6052,6 @@ ], "license": "MIT" }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -5845,13 +6079,13 @@ } }, "node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "version": "10.2.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", + "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.2" + "brace-expansion": "^5.0.5" }, "engines": { "node": "18 || 20 || >=22" @@ -5943,6 +6177,94 @@ } } }, + "node_modules/monaco-editor": { + "version": "0.54.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.54.0.tgz", + "integrity": "sha512-hx45SEUoLatgWxHKCmlLJH81xBo0uXP4sRkESUpmDQevfi+e7K1VuiSprK6UpQ8u4zOcKNiH0pMvHvlMWA/4cw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dompurify": "3.1.7", + "marked": "14.0.0" + } + }, + "node_modules/monaco-languageserver-types": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/monaco-languageserver-types/-/monaco-languageserver-types-0.4.0.tgz", + "integrity": "sha512-QQ3BZiU5LYkJElGncSNb5AKoJ/LCs6YBMCJMAz9EA7v+JaOdn3kx2cXpPTcZfKA5AEsR0vc97sAw+5mdNhVBmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "monaco-types": "^0.1.0", + "vscode-languageserver-protocol": "^3.0.0", + "vscode-uri": "^3.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/monaco-marker-data-provider": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/monaco-marker-data-provider/-/monaco-marker-data-provider-1.2.5.tgz", + "integrity": "sha512-5ZdcYukhPwgYMCvlZ9H5uWs5jc23BQ8fFF5AhSIdrz5mvYLsqGZ58ZLxTv8rCX6+AxdJ8+vxg1HVSk+F2bLosg==", + "dev": true, + "license": "MIT", + "dependencies": { + "monaco-types": "^0.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/monaco-types": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/monaco-types/-/monaco-types-0.1.2.tgz", + "integrity": "sha512-8LwfrlWXsedHwAL41xhXyqzPibS8IqPuIXr9NdORhonS495c2/wky+sI1PRLvMCuiI0nqC2NH1six9hdiRY4Xg==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/monaco-worker-manager": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/monaco-worker-manager/-/monaco-worker-manager-2.0.1.tgz", + "integrity": "sha512-kdPL0yvg5qjhKPNVjJoym331PY/5JC11aPJXtCZNwWRvBr6jhkIamvYAyiY5P1AWFmNOy0aRDRoMdZfa71h8kg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "monaco-editor": ">=0.30.0" + } + }, + "node_modules/monaco-yaml": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/monaco-yaml/-/monaco-yaml-5.2.3.tgz", + "integrity": "sha512-GEplKC+YYmS0TOlJdv0FzbqkDN/IG2FSwEw+95myECVxTlhty2amwERYjzvorvJXmIagP1grd3Lleq7aQEJpPg==", + "dev": true, + "license": "MIT", + "workspaces": [ + "examples/*" + ], + "dependencies": { + "jsonc-parser": "^3.0.0", + "monaco-languageserver-types": "^0.4.0", + "monaco-marker-data-provider": "^1.0.0", + "monaco-types": "^0.1.0", + "monaco-worker-manager": "^2.0.0", + "path-browserify": "^1.0.0", + "prettier": "^2.0.0", + "vscode-languageserver-textdocument": "^1.0.0", + "vscode-languageserver-types": "^3.0.0", + "vscode-uri": "^3.0.0", + "yaml": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + }, + "peerDependencies": { + "monaco-editor": ">=0.36" + } + }, "node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", @@ -5951,9 +6273,9 @@ "license": "MIT" }, "node_modules/nanoid": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.6.tgz", - "integrity": "sha512-c7+7RQ+dMB5dPwwCp4ee1/iV/q2P6aK1mTZcfr1BTuVlyW9hJYiMPybJCcnBlQtuSmTIWNeazm/zqNoZSSElBg==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.1.7.tgz", + "integrity": "sha512-ua3NDgISf6jdwezAheMOk4mbE1LXjm1DfMUDMuJf4AqxLFK3ccGpgWizwa5YV7Yz9EpXwEaWoRXSb/BnV0t5dQ==", "dev": true, "funding": [ { @@ -5977,10 +6299,11 @@ "license": "MIT" }, "node_modules/neverpanic": { - "version": "0.0.5", - "resolved": "https://registry.npmjs.org/neverpanic/-/neverpanic-0.0.5.tgz", - "integrity": "sha512-daO+ijOQG8g2BXaAwpETa0GUvlIAfqC+1/CUdLp2Ga8qwDaUyHIieX/SM0yZoPBf7k92deq4DO7tZOWWeL063Q==", + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/neverpanic/-/neverpanic-0.0.7.tgz", + "integrity": "sha512-GFRTSX2JAEATOCQYlyFkR+9FJPl0pD24toE1foqYAsL6aPLlRKn6L0UFOtJhZCxEbDv+SUsiW4AcPs9cIFwkFw==", "dev": true, + "license": "MIT", "peerDependencies": { "typescript": "5" } @@ -6055,9 +6378,9 @@ } }, "node_modules/oas-linter/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "dev": true, "license": "ISC", "engines": { @@ -6085,9 +6408,9 @@ } }, "node_modules/oas-resolver/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "dev": true, "license": "ISC", "engines": { @@ -6125,9 +6448,9 @@ } }, "node_modules/oas-validator/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "dev": true, "license": "ISC", "engines": { @@ -6174,14 +6497,14 @@ } }, "node_modules/openapi-sampler": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.7.1.tgz", - "integrity": "sha512-pKFRROcYyxRt9GIn0NmS+GkWPS19l0CLQRYAnHk4m1Qp+G43ssVNcfRMs1sLkGrVMuFWO4P4F6YMXeXnfyFGuQ==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/openapi-sampler/-/openapi-sampler-1.7.2.tgz", + "integrity": "sha512-OKytvqB5XIaTgA9xtw8W8UTar+uymW2xPVpFN0NihMtuHPdPTGxBEhGnfFnJW5g/gOSIvkP+H0Xh3XhVI9/n7g==", "dev": true, "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.7", - "fast-xml-parser": "^5.3.8", + "fast-xml-parser": "^5.5.1", "json-pointer": "0.6.2" } }, @@ -6264,6 +6587,32 @@ "dev": true, "license": "MIT" }, + "node_modules/path-expression-matcher": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.2.1.tgz", + "integrity": "sha512-d7gQQmLvAKXKXE2GeP9apIGbMYKz88zWdsn/BN2HRWVQsDFdUY36WSLTY0Jvd4HWi7Fb30gQ62oAOzdgJA6fZw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/path-scurry": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", @@ -6303,9 +6652,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", "dev": true, "license": "MIT", "engines": { @@ -6407,17 +6756,160 @@ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/pretty-bytes": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-7.1.0.tgz", - "integrity": "sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw==", + "node_modules/posthog-js": { + "version": "1.363.2", + "resolved": "https://registry.npmjs.org/posthog-js/-/posthog-js-1.363.2.tgz", + "integrity": "sha512-4ZEWMrymlFzjgDSmh25VeJQT//2XUFbfKqEPDNUW4dxcqWiVMo1+gJFy5YhJgVYS46OAXLbMcJgmuZBCnDIgVg==", + "dev": true, + "license": "SEE LICENSE IN LICENSE", + "dependencies": { + "@opentelemetry/api": "^1.9.0", + "@opentelemetry/api-logs": "^0.208.0", + "@opentelemetry/exporter-logs-otlp-http": "^0.208.0", + "@opentelemetry/resources": "^2.2.0", + "@opentelemetry/sdk-logs": "^0.208.0", + "@posthog/core": "1.24.1", + "@posthog/types": "1.363.2", + "core-js": "^3.38.1", + "dompurify": "^3.3.2", + "fflate": "^0.4.8", + "preact": "^10.28.2", + "query-selector-shadow-dom": "^1.0.1", + "web-vitals": "^5.1.0" + } + }, + "node_modules/posthog-js/node_modules/@opentelemetry/api-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api-logs/-/api-logs-0.208.0.tgz", + "integrity": "sha512-CjruKY9V6NMssL/T1kAFgzosF1v9o6oeN+aX5JB/C/xPNtmgIJqcXHG7fA82Ou1zCpWGl4lROQUKwUNE1pMCyg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api": "^1.3.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/posthog-js/node_modules/@opentelemetry/core": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.6.1.tgz", + "integrity": "sha512-8xHSGWpJP9wBxgBpnqGL0R3PbdWQndL1Qp50qrg71+B28zK5OQmUgcDKLJgzyAAV38t4tOyLMGDD60LneR5W8g==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/posthog-js/node_modules/@opentelemetry/resources": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.6.1.tgz", + "integrity": "sha512-lID/vxSuKWXM55XhAKNoYXu9Cutoq5hFdkbTdI/zDKQktXzcWBVhNsOkiZFTMU9UtEWuGRNe0HUgmsFldIdxVA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.6.1", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/posthog-js/node_modules/@opentelemetry/sdk-logs": { + "version": "0.208.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-logs/-/sdk-logs-0.208.0.tgz", + "integrity": "sha512-QlAyL1jRpOeaqx7/leG1vJMp84g0xKP6gJmfELBpnI4O/9xPX+Hu5m1POk9Kl+veNkyth5t19hRlN6tNY1sjbA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/api-logs": "0.208.0", + "@opentelemetry/core": "2.2.0", + "@opentelemetry/resources": "2.2.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.4.0 <1.10.0" + } + }, + "node_modules/posthog-js/node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/core": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-2.2.0.tgz", + "integrity": "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/posthog-js/node_modules/@opentelemetry/sdk-logs/node_modules/@opentelemetry/resources": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-2.2.0.tgz", + "integrity": "sha512-1pNQf/JazQTMA0BiO5NINUzH0cbLbbl7mntLa4aJNmCCXSj0q03T5ZXXL0zw4G55TjdL9Tz32cznGClf+8zr5A==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "2.2.0", + "@opentelemetry/semantic-conventions": "^1.29.0" + }, + "engines": { + "node": "^18.19.0 || >=20.6.0" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.3.0 <1.10.0" + } + }, + "node_modules/posthog-js/node_modules/dompurify": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", + "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==", + "dev": true, + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/preact": { + "version": "10.29.1", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.29.1.tgz", + "integrity": "sha512-gQCLc/vWroE8lIpleXtdJhTFDogTdZG9AjMUpVkDf2iTCNwYNWA+u16dL41TqUDJO4gm2IgrcMv3uTpjd4Pwmg==", "dev": true, "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/prettier": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin-prettier.js" + }, "engines": { - "node": ">=20" + "node": ">=10.13.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/prettier/prettier?sponsor=1" } }, "node_modules/pretty-ms": { @@ -6510,6 +7002,13 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/query-selector-shadow-dom": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/query-selector-shadow-dom/-/query-selector-shadow-dom-1.0.1.tgz", + "integrity": "sha512-lT5yCqEBgfoMYpf3F2xQRK7zEr1rhIIZuceDK6+xRkJQ4NMbHTwXqk4NkwDwQMNqXgG9r9fyHnzwNVs6zV5KRw==", + "dev": true, + "license": "MIT" + }, "node_modules/queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", @@ -6695,9 +7194,9 @@ "license": "MIT" }, "node_modules/react-tabs": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-6.1.0.tgz", - "integrity": "sha512-6QtbTRDKM+jA/MZTTefvigNxo0zz+gnBTVFw2CFVvq+f2BuH0nF0vDLNClL045nuTAdOoK/IL1vTP0ZLX0DAyQ==", + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/react-tabs/-/react-tabs-6.1.1.tgz", + "integrity": "sha512-CPiuKoMFf89B7QlbFfdBD9XmUWiE3qudQputMVZB8GQvPJZRX/gqjDaDWOPDwGinEfpJKEuBCkGt83Tt4efeyA==", "dev": true, "license": "MIT", "dependencies": { @@ -6789,9 +7288,9 @@ "license": "MIT" }, "node_modules/redoc/node_modules/@redocly/openapi-core": { - "version": "1.34.10", - "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.10.tgz", - "integrity": "sha512-XCBR/9WHJ0cpezuunHMZjuFMl4KqUo7eiFwzrQrvm7lTXt0EBd3No8UY+9OyzXpDfreGEMMtxmaLZ+ksVw378g==", + "version": "1.34.11", + "resolved": "https://registry.npmjs.org/@redocly/openapi-core/-/openapi-core-1.34.11.tgz", + "integrity": "sha512-V09ayfnb5GyysmvARbt+voFZAjGcf7hSYxOYxSkCc4fbH/DTfq5YWoec8cflvmHHqyIFbqvmGKmYFzqhr9zxDg==", "dev": true, "license": "MIT", "dependencies": { @@ -6818,15 +7317,25 @@ "license": "MIT" }, "node_modules/redoc/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.3.tgz", + "integrity": "sha512-MCV/fYJEbqx68aE58kv2cA/kiky1G8vux3OR6/jbS+jIMe/6fJWa0DTzJU7dqijOWYwHi1t29FlfYI9uytqlpA==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, + "node_modules/redoc/node_modules/dompurify": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.3.tgz", + "integrity": "sha512-Oj6pzI2+RqBfFG+qOaOLbFXLQ90ARpcGG6UePL82bJLtdsa6CYJD7nmiU8MW9nQNOtCHV3lZ/Bzq1X0QYbBZCA==", + "dev": true, + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, "node_modules/redoc/node_modules/eventemitter3": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.4.tgz", @@ -6834,6 +7343,19 @@ "dev": true, "license": "MIT" }, + "node_modules/redoc/node_modules/marked": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", + "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "dev": true, + "license": "MIT", + "bin": { + "marked": "bin/marked.js" + }, + "engines": { + "node": ">= 12" + } + }, "node_modules/redoc/node_modules/minimatch": { "version": "5.1.9", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", @@ -7188,6 +7710,29 @@ "@img/sharp-win32-x64": "0.34.5" } }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/shell-quote": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", @@ -7571,9 +8116,9 @@ } }, "node_modules/strnum": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.0.tgz", - "integrity": "sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.2.2.tgz", + "integrity": "sha512-DnR90I+jtXNSTXWdwrEy9FakW7UX+qUZg28gj5fk2vxxl7uS/3bpI4fjFYVmdK9etptYBPNkpahuQnEwhwECqA==", "dev": true, "funding": [ { @@ -7691,9 +8236,9 @@ } }, "node_modules/swagger2openapi/node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.3.tgz", + "integrity": "sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==", "dev": true, "license": "ISC", "engines": { @@ -7701,9 +8246,9 @@ } }, "node_modules/swrv": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/swrv/-/swrv-1.1.0.tgz", - "integrity": "sha512-pjllRDr2s0iTwiE5Isvip51dZGR7GjLH1gCSVyE8bQnbAx6xackXsFdojau+1O5u98yHF5V73HQGOFxKUXO9gQ==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/swrv/-/swrv-1.2.0.tgz", + "integrity": "sha512-lH/g4UcNyj+7lzK4eRGT4C68Q4EhQ6JtM9otPRIASfhhzfLWtbZPHcMuhuba7S9YVYuxkMUGImwMyGpfbkH07A==", "dev": true, "license": "Apache-2.0", "peerDependencies": { @@ -7742,9 +8287,9 @@ } }, "node_modules/tailwindcss": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.1.tgz", - "integrity": "sha512-/tBrSQ36vCleJkAOsy9kbNTgaxvGbyOamC30PRePTQe/o1MFwEKHQk4Cn7BNGaPtjp+PuUrByJehM1hgxfq4sw==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.2.2.tgz", + "integrity": "sha512-KWBIxs1Xb6NoLdMVqhbhgwZf2PGBpPEiwOqgI4pFIYbNTfBXiKYyWoTsXgBQ9WFg/OlhnvHaY+AEpW7wSmFo2Q==", "dev": true, "license": "MIT", "peer": true @@ -7766,28 +8311,15 @@ } }, "node_modules/tinyexec": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.2.tgz", - "integrity": "sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==", + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.4.tgz", + "integrity": "sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==", "dev": true, "license": "MIT", "engines": { "node": ">=18" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -7857,9 +8389,9 @@ "license": "0BSD" }, "node_modules/type-fest": { - "version": "5.4.4", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.4.4.tgz", - "integrity": "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw==", + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-5.5.0.tgz", + "integrity": "sha512-PlBfpQwiUvGViBNX84Yxwjsdhd1TUlXr6zjX7eoirtCPIr08NAmxwa+fcYBTeRQxHo9YC9wwF3m9i700sHma8g==", "dev": true, "license": "(MIT OR CC0-1.0)", "dependencies": { @@ -7912,9 +8444,9 @@ } }, "node_modules/undici": { - "version": "6.23.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.23.0.tgz", - "integrity": "sha512-VfQPToRA5FZs/qJxLIinmU59u0r7LXqoJkCzinq3ckNJp3vKEh7jTWN589YQ5+aoAC/TGRLyJLCPKcLQbM8r9g==", + "version": "6.24.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.24.0.tgz", + "integrity": "sha512-lVLNosgqo5EkGqh5XUDhGfsMSoO8K0BAN0TyJLvwNRSl4xWGZlCVYsAIpa/OpA3TvmnM01GWcoKmc3ZWo5wKKA==", "dev": true, "license": "MIT", "engines": { @@ -7922,16 +8454,16 @@ } }, "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.16.0.tgz", + "integrity": "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==", "dev": true, "license": "MIT" }, "node_modules/unhead": { - "version": "2.1.10", - "resolved": "https://registry.npmjs.org/unhead/-/unhead-2.1.10.tgz", - "integrity": "sha512-We8l9uNF8zz6U8lfQaVG70+R/QBfQx1oPIgXin4BtZnK2IQpz6yazQ0qjMNVBDw2ADgF2ea58BtvSK+XX5AS7g==", + "version": "2.1.12", + "resolved": "https://registry.npmjs.org/unhead/-/unhead-2.1.12.tgz", + "integrity": "sha512-iTHdWD9ztTunOErtfUFk6Wr11BxvzumcYJ0CzaSCBUOEtg+DUZ9+gnE99i8QkLFT2q1rZD48BYYGXpOZVDLYkA==", "dev": true, "license": "MIT", "dependencies": { @@ -8144,18 +8676,70 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/vite-plugin-monaco-editor": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/vite-plugin-monaco-editor/-/vite-plugin-monaco-editor-1.1.0.tgz", + "integrity": "sha512-IvtUqZotrRoVqwT0PBBDIZPNraya3BxN/bfcNfnxZ5rkJiGcNtO5eAOWWSgT7zullIAEqQwxMU83yL9J5k7gww==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "monaco-editor": ">=0.33.0" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "dev": true, + "license": "MIT" + }, "node_modules/vue": { - "version": "3.5.29", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.29.tgz", - "integrity": "sha512-BZqN4Ze6mDQVNAni0IHeMJ5mwr8VAJ3MQC9FmprRhcBYENw+wOAAjRj8jfmN6FLl0j96OXbR+CjWhmAmM+QGnA==", + "version": "3.5.32", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.32.tgz", + "integrity": "sha512-vM4z4Q9tTafVfMAK7IVzmxg34rSzTFMyIe0UUEijUCkn9+23lj0WRfA83dg7eQZIUlgOSGrkViIaCfqSAUXsMw==", "dev": true, "license": "MIT", "dependencies": { - "@vue/compiler-dom": "3.5.29", - "@vue/compiler-sfc": "3.5.29", - "@vue/runtime-dom": "3.5.29", - "@vue/server-renderer": "3.5.29", - "@vue/shared": "3.5.29" + "@vue/compiler-dom": "3.5.32", + "@vue/compiler-sfc": "3.5.32", + "@vue/runtime-dom": "3.5.32", + "@vue/server-renderer": "3.5.32", + "@vue/shared": "3.5.32" }, "peerDependencies": { "typescript": "*" @@ -8167,9 +8751,9 @@ } }, "node_modules/vue-component-type-helpers": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-3.2.5.tgz", - "integrity": "sha512-tkvNr+bU8+xD/onAThIe7CHFvOJ/BO6XCOrxMzeytJq40nTfpGDJuVjyCM8ccGZKfAbGk2YfuZyDMXM56qheZQ==", + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/vue-component-type-helpers/-/vue-component-type-helpers-3.2.6.tgz", + "integrity": "sha512-O02tnvIfOQVmnvoWwuSydwRoHjZVt8UEBR+2p4rT35p8GAy5VTlWP8o5qXfJR/GWCN0nVZoYWsVUvx2jwgdBmQ==", "dev": true, "license": "MIT" }, @@ -8214,6 +8798,13 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/web-vitals": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/web-vitals/-/web-vitals-5.2.0.tgz", + "integrity": "sha512-i2z98bEmaCqSDiHEDu+gHl/dmR4Q+TxFmG3/13KkMO+o8UxQzCqWaDRCiLgEa41nlO4VpXSI0ASa1xWmO9sBlA==", + "dev": true, + "license": "Apache-2.0" + }, "node_modules/web-worker": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/web-worker/-/web-worker-1.5.0.tgz", @@ -8263,6 +8854,22 @@ "webidl-conversions": "^3.0.0" } }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, "node_modules/wordwrap": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", @@ -8346,9 +8953,9 @@ } }, "node_modules/yaml": { - "version": "2.8.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.2.tgz", - "integrity": "sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==", + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.3.tgz", + "integrity": "sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==", "dev": true, "license": "ISC", "bin": { diff --git a/package.json b/package.json index 43a9de3..5f071ed 100644 --- a/package.json +++ b/package.json @@ -23,13 +23,13 @@ }, "homepage": "https://api.physicallybased.info/", "devDependencies": { - "@biomejs/biome": "^2.4.6", - "@redocly/cli": "^2.20.4", - "@scalar/api-reference": "^1.46.4", - "adm-zip": "^0.5.16", + "@biomejs/biome": "^2.4.10", + "@redocly/cli": "^2.25.4", + "@scalar/api-reference": "^1.51.0", + "adm-zip": "^0.5.17", "http-server": "^14.1.1", "husky": "^9.1.7", - "lint-staged": "^16.3.2", + "lint-staged": "^16.4.0", "sharp": "^0.34.5" }, "lint-staged": { diff --git a/schemas/components/schemas/Camera.json b/schemas/components/schemas/Camera.json index ea48c77..092bda7 100644 --- a/schemas/components/schemas/Camera.json +++ b/schemas/components/schemas/Camera.json @@ -71,6 +71,16 @@ } } } + }, + "focalLength": { + "description": "Focal length of the camera, in millimeters, if the camera has a fixed lens.", + "type": "array", + "items": { + "type": "number" + }, + "example": [50], + "minItems": 1, + "maxItems": 2 } }, "required": ["format", "size"] @@ -96,10 +106,11 @@ { "$schema": "../../schemas/components/schemas/Camera.json", "header": { - "schemaVersion": 2.0, - "updated": 202512121608, + "schemaVersion": 2.1, + "updated": 202603101230, "license": "CC0 1.0 Universal", - "origin": "https://api.physicallybased.info/v2/cameras" + "origin": "https://api.physicallybased.info/v2/cameras", + "deprecated": false }, "data": [ { diff --git a/schemas/components/schemas/Lens.json b/schemas/components/schemas/Lens.json index 21614e7..28785d5 100644 --- a/schemas/components/schemas/Lens.json +++ b/schemas/components/schemas/Lens.json @@ -25,13 +25,13 @@ "example": "Varotal/i FF 30-95mm" }, "focalLength": { - "description": "Min and max focal length in millimeters. If it's a prime lens, set the same value twice.", + "description": "Min and max focal length in millimeters. If it's a prime lens, only set one value.", "type": "array", "items": { "type": "number" }, "example": [30, 95], - "minItems": 2, + "minItems": 1, "maxItems": 2 }, "aperture": { @@ -54,6 +54,11 @@ "type": "number", "example": 80 }, + "squeezeFactor": { + "description": "The squeeze factor of an anamorphic lens.", + "type": "number", + "example": 1.8 + }, "description": { "$ref": "./description.json" }, "tags": { "$ref": "./tag.json" }, "references": { "$ref": "./reference.json" } @@ -73,10 +78,11 @@ { "$schema": "../../schemas/components/schemas/Lens.json", "header": { - "schemaVersion": 2.0, - "updated": 202512121608, + "schemaVersion": 2.1, + "updated": 202603101230, "license": "CC0 1.0 Universal", - "origin": "https://api.physicallybased.info/v2/lenses" + "origin": "https://api.physicallybased.info/v2/lenses", + "deprecated": false }, "data": [ { diff --git a/schemas/components/schemas/Lightsource.json b/schemas/components/schemas/Lightsource.json index c255a8c..bc0fa94 100644 --- a/schemas/components/schemas/Lightsource.json +++ b/schemas/components/schemas/Lightsource.json @@ -58,14 +58,14 @@ "example": "2700 K" }, "color": { - "description": "Color of the light source.", + "description": "Color of the light source, normalized.", "type": "array", "minItems": 1, "uniqueItems": true, "items": { "$ref": "./color.json" } }, "temperature": { - "description": "The typical range of color temperature in Kelvin, if color lies on the Planckian curve. If there's no variation, only one value should be specified. A range can be specified with two values. A third value can be added to specify the most common temperature.", + "description": "The typical range of color temperature in Kelvin, if color lies near the Planckian curve (within 0.005 Duv). If too far off, temperature shouldn't be specified. A range can be specified with two values. A third value can be added to specify the most common temperature.", "type": "array", "items": { "type": "number" @@ -131,10 +131,11 @@ { "$schema": "../../schemas/components/schemas/Lightsource.json", "header": { - "schemaVersion": 2.0, - "updated": 202512121608, + "schemaVersion": 2.1, + "updated": 202603231920, "license": "CC0 1.0 Universal", - "origin": "https://api.physicallybased.info/v2/lightsources" + "origin": "https://api.physicallybased.info/v2/lightsources", + "deprecated": false }, "data": [ { diff --git a/schemas/components/schemas/Material.json b/schemas/components/schemas/Material.json index 445b029..3eebeaa 100644 --- a/schemas/components/schemas/Material.json +++ b/schemas/components/schemas/Material.json @@ -93,43 +93,40 @@ "type": "number", "example": 64 }, + "volumeCoefficients": { + "description": "Volume coefficients and anisotropy factor, defined per channel (RGB). Extinction coefficient (also called attenuation coefficient) = scattering coefficient + absorption coefficient.", + "type": "object", + "additionalProperties": false, + "properties": { + "absorption": { + "description": "Absorption coefficients, defined per channel (RGB). Measured in reciprocal centimeters (cm⁻¹), which is light absorbed per centimeter traveled in the medium.", + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { "$ref": "./color.json" } + }, + "scattering": { + "description": "Scattering coefficients, defined per channel (RGB). Measured in reciprocal centimeters (cm⁻¹), which is light absorbed per centimeter traveled in the medium.", + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { "$ref": "./color.json" } + }, + "anisotropy": { + "description": "Scattering phase function anisotropy factor, defined per channel (RGB).", + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { "$ref": "./color.json" } + } + } + }, "complexIor": { "description": "Complex IOR values, n (refractive index), and k (extinction coefficient), for each color channel. Calculated from spectral IOR data files with script from https://github.com/natyh/material-params", "type": "array", "minItems": 1, "uniqueItems": true, - "items": { - "additionalProperties": false, - "type": "object", - "properties": { - "colorSpace": { - "description": "The color space for which the n and k values have been calculated for.", - "type": "string", - "example": "srgb-linear" - }, - "n": { - "description": "N values for each RGB color channel.", - "type": "array", - "items": { - "type": "number" - }, - "example": [0, 0.351563, 1.85894], - "minItems": 3, - "maxItems": 3 - }, - "k": { - "description": "K values for each RGB color channel.", - "type": "array", - "items": { - "type": "number" - }, - "example": [6.59401, 2.08143, 1.49631], - "minItems": 3, - "maxItems": 3 - } - }, - "required": ["colorSpace", "n", "k"] - } + "items": { "$ref": "./color.json" } }, "thinFilmThickness": { "description": "The thickness of the thin film layer on the base (in nanometers). If there's no variation, only one value should be specified. A range can be specified with two values. A third value can be added to specify the most common thickness.", @@ -252,10 +249,11 @@ { "$schema": "../../schemas/components/schemas/Material.json", "header": { - "schemaVersion": 2.0, - "updated": 202512121608, + "schemaVersion": 2.1, + "updated": 202603231920, "license": "CC0 1.0 Universal", - "origin": "https://api.physicallybased.info/v2/materials" + "origin": "https://api.physicallybased.info/v2/materials", + "deprecated": false }, "data": [ { diff --git a/schemas/components/schemas/Root.json b/schemas/components/schemas/Root.json index 40e9544..46aa677 100644 --- a/schemas/components/schemas/Root.json +++ b/schemas/components/schemas/Root.json @@ -1,7 +1,7 @@ { "openapi": "3.1.0", "info": { - "version": "2.0", + "version": "2.1", "title": "Physically Based API", "summary": "A database of physically based values for CG artists.", "description": "A database of physically based values for CG artists.\n\n ## Features\n\n- **Open Database**: Access a collection of physically based values for materials, cameras, and light sources\n- **Lightweight**: The entire dataset is optimized for quick loading and integration as presets\n - materials.json ```161 KB```\n - lightsources.json ```25 KB```\n - cameras.json ```159 KB```\n - lenses.json (coming in v2.1)\n- **API Access**: Connect your tools to the API to get the latest updates from the database\n- **Community-Driven**: Contribute new materials or improve existing ones\n- **Free License**: All data is released under CC0 1.0\n\n## Implementations\n\nExplore the database through these implementations:\n\n- Blender [Photographer 5](https://chafouin.gumroad.com/l/photographer5) by [chafouin](https://mastodon.gamedev.place/@chafouin)\n- Web [MaterialXLab](https://kwokcb.github.io/MaterialXLab/javascript/PhysicallyBasedMaterialX_out.html) by [kwokcb](https://github.com/kwokcb)\n- Web [Physically Based](https://physicallybased.info) by [AntonPalmqvist](https://github.com/AntonPalmqvist)\n- Web [Three.js GPU Path Tracer](https://gkjohnson.github.io/three-gpu-pathtracer/example/bundle/materialDatabase.html) by [gkjohnson](https://github.com/gkjohnson)\n\n## Contribute\n\nContributions are welcome! Whether you want to add new entries, corrections, or suggestions, your help is appreciated. See the [Github page](https://github.com/AntonPalmqvist/physically-based-api) for more info.\n\n## License\n\nThe database is made available under the [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/legalcode) license, which means you are free to use, modify, and distribute its content without any restrictions, even for commercial purposes.\n\nShader ball used for renders is from [ASWF USD WG](https://github.com/usd-wg/assets/tree/main/full_assets/StandardShaderBall) and is licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).", diff --git a/schemas/components/schemas/color.json b/schemas/components/schemas/color.json index 2171248..de0d44c 100644 --- a/schemas/components/schemas/color.json +++ b/schemas/components/schemas/color.json @@ -3,12 +3,12 @@ "type": "object", "properties": { "colorSpace": { - "description": "The color space.", + "description": "The color space for which the values have been computed for.", "type": "string", "example": "acescg" }, "color": { - "description": "RGB triplet (vec3) in decimal format.", + "description": "RGB triplet array in decimal format.", "type": "array", "items": { "type": "number" @@ -16,7 +16,27 @@ "example": [0.929, 0.788, 0.374], "minItems": 3, "maxItems": 3 + }, + "n": { + "description": "Refractive index (n) of each RGB color channel.", + "type": "array", + "items": { + "type": "number" + }, + "example": [0, 0.351563, 1.85894], + "minItems": 3, + "maxItems": 3 + }, + "k": { + "description": "Extinction coefficient (k) of each RGB color channel.", + "type": "array", + "items": { + "type": "number" + }, + "example": [6.59401, 2.08143, 1.49631], + "minItems": 3, + "maxItems": 3 } }, - "required": ["colorSpace", "color"] + "required": ["colorSpace"] } diff --git a/schemas/components/schemas/header.json b/schemas/components/schemas/header.json index 59ef1d8..de9c9b1 100644 --- a/schemas/components/schemas/header.json +++ b/schemas/components/schemas/header.json @@ -22,7 +22,12 @@ "description": "URL to the source of this JSON file.", "type": "string", "pattern": "^https://api\\.physicallybased\\.info/v2" + }, + "deprecated": { + "description": "This will be set to true when this version of the API is deprecated and indicates that no more updates will be made. This helps visibility when using the data in different contexts.", + "type": "boolean", + "example": false } }, - "required": ["schemaVersion", "updated", "license", "origin"] + "required": ["schemaVersion", "updated", "license", "origin", "deprecated"] } diff --git a/schemas/openapi-schema-v2.json b/schemas/openapi-schema-v2.json index 4e6bd7a..00d42a3 100644 --- a/schemas/openapi-schema-v2.json +++ b/schemas/openapi-schema-v2.json @@ -1,10 +1,10 @@ { "openapi": "3.1.0", "info": { - "version": "2.0", + "version": "2.1", "title": "Physically Based API", "summary": "A database of physically based values for CG artists.", - "description": "A database of physically based values for CG artists.\n\n ## Features\n\n- **Open Database**: Access a curated collection of physically based material values\n- **Lightweight**: The entire dataset is optimized for quick loading and integration as presets\n - materials.json ```161 KB```\n - lightsources.json ```25 KB```\n - cameras.json ```159 KB```\n - lenses.json (coming in v2.1)\n- **API Access**: Connect your tools to the API to get the latest updates from the database\n- **Community-Driven**: Contribute new materials or improve existing ones\n- **Free License**: All data is released under CC0 1.0\n\n## Implementations\n\nExplore the database through these implementations:\n\n- Blender [Photographer 5](https://chafouin.gumroad.com/l/photographer5) by [chafouin](https://mastodon.gamedev.place/@chafouin)\n- Web [MaterialXLab](https://kwokcb.github.io/MaterialXLab/javascript/PhysicallyBasedMaterialX_out.html) by [kwokcb](https://github.com/kwokcb)\n- Web [Physically Based](https://physicallybased.info) by [AntonPalmqvist](https://github.com/AntonPalmqvist)\n- Web [Three.js GPU Path Tracer](https://gkjohnson.github.io/three-gpu-pathtracer/example/bundle/materialDatabase.html) by [gkjohnson](https://github.com/gkjohnson)\n\n## Contribute\n\nContributions are welcome! Whether you want to add new entries, corrections, or suggestions, your help is appreciated. See the [Github page](https://github.com/AntonPalmqvist/physically-based-api) for more info.\n\n## License\n\nThe database is made available under the [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/legalcode) license, which means you are free to use, modify, and distribute its content without any restrictions, even for commercial purposes.\n\nShader ball used for renders is from [ASWF USD WG](https://github.com/usd-wg/assets/tree/main/full_assets/StandardShaderBall) and is licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).", + "description": "A database of physically based values for CG artists.\n\n ## Features\n\n- **Open Database**: Access a collection of physically based values for materials, cameras, and light sources\n- **Lightweight**: The entire dataset is optimized for quick loading and integration as presets\n - materials.json ```161 KB```\n - lightsources.json ```25 KB```\n - cameras.json ```159 KB```\n - lenses.json (coming in v2.1)\n- **API Access**: Connect your tools to the API to get the latest updates from the database\n- **Community-Driven**: Contribute new materials or improve existing ones\n- **Free License**: All data is released under CC0 1.0\n\n## Implementations\n\nExplore the database through these implementations:\n\n- Blender [Photographer 5](https://chafouin.gumroad.com/l/photographer5) by [chafouin](https://mastodon.gamedev.place/@chafouin)\n- Web [MaterialXLab](https://kwokcb.github.io/MaterialXLab/javascript/PhysicallyBasedMaterialX_out.html) by [kwokcb](https://github.com/kwokcb)\n- Web [Physically Based](https://physicallybased.info) by [AntonPalmqvist](https://github.com/AntonPalmqvist)\n- Web [Three.js GPU Path Tracer](https://gkjohnson.github.io/three-gpu-pathtracer/example/bundle/materialDatabase.html) by [gkjohnson](https://github.com/gkjohnson)\n\n## Contribute\n\nContributions are welcome! Whether you want to add new entries, corrections, or suggestions, your help is appreciated. See the [Github page](https://github.com/AntonPalmqvist/physically-based-api) for more info.\n\n## License\n\nThe database is made available under the [CC0 1.0](https://creativecommons.org/publicdomain/zero/1.0/legalcode) license, which means you are free to use, modify, and distribute its content without any restrictions, even for commercial purposes.\n\nShader ball used for renders is from [ASWF USD WG](https://github.com/usd-wg/assets/tree/main/full_assets/StandardShaderBall) and is licensed under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/).", "license": { "url": "https://creativecommons.org/publicdomain/zero/1.0/legalcode", "name": "CC0 1.0" @@ -163,14 +163,20 @@ "origin": { "description": "URL to the source of this JSON file.", "type": "string", - "const": "https://api.physicallybased.info" + "pattern": "^https://api\\.physicallybased\\.info/v2" + }, + "deprecated": { + "description": "This will be set to true when this version of the API is deprecated and indicates that no more updates will be made. This helps visibility when using the data in different contexts.", + "type": "boolean", + "example": false } }, "required": [ "schemaVersion", "updated", "license", - "origin" + "origin", + "deprecated" ] }, "color": { @@ -178,12 +184,12 @@ "type": "object", "properties": { "colorSpace": { - "description": "The color space.", + "description": "The color space for which the values have been computed for.", "type": "string", "example": "acescg" }, "color": { - "description": "RGB triplet (vec3) in decimal format.", + "description": "RGB triplet array in decimal format.", "type": "array", "items": { "type": "number" @@ -195,11 +201,38 @@ ], "minItems": 3, "maxItems": 3 + }, + "n": { + "description": "Refractive index (n) of each RGB color channel.", + "type": "array", + "items": { + "type": "number" + }, + "example": [ + 0, + 0.351563, + 1.85894 + ], + "minItems": 3, + "maxItems": 3 + }, + "k": { + "description": "Extinction coefficient (k) of each RGB color channel.", + "type": "array", + "items": { + "type": "number" + }, + "example": [ + 6.59401, + 2.08143, + 1.49631 + ], + "minItems": 3, + "maxItems": 3 } }, "required": [ - "colorSpace", - "color" + "colorSpace" ] }, "description": { @@ -401,8 +434,8 @@ "type": "number", "example": 64 }, - "complexIor": { - "description": "Complex IOR values, n (refractive index), and k (extinction coefficient), for each color channel. Calculated from spectral IOR data files with script from https://github.com/natyh/material-params", + "volumeCoefficients": { + "description": "Volume coefficients and anisotropy factor, defined per channel (RGB). Extinction coefficient (also called attenuation coefficient) = scattering coefficient + absorption coefficient.", "type": "array", "minItems": 1, "uniqueItems": true, @@ -410,45 +443,43 @@ "additionalProperties": false, "type": "object", "properties": { - "colorSpace": { - "description": "The color space for which the n and k values have been calculated for.", - "type": "string", - "example": "srgb-linear" + "absorption": { + "description": "Absorption coefficients, defined per channel (RGB). Measured in reciprocal centimeters (cm⁻¹), which is light absorbed per centimeter traveled in the medium.", + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "$ref": "#/components/schemas/color" + } }, - "n": { - "description": "N values for each RGB color channel.", + "scattering": { + "description": "Scattering coefficients, defined per channel (RGB). Measured in reciprocal centimeters (cm⁻¹), which is light absorbed per centimeter traveled in the medium.", "type": "array", + "minItems": 1, + "uniqueItems": true, "items": { - "type": "number" - }, - "example": [ - 0, - 0.351563, - 1.85894 - ], - "minItems": 3, - "maxItems": 3 + "$ref": "#/components/schemas/color" + } }, - "k": { - "description": "K values for each RGB color channel.", + "anisotropy": { + "description": "Scattering phase function anisotropy factor, defined per channel (RGB).", "type": "array", + "minItems": 1, + "uniqueItems": true, "items": { - "type": "number" - }, - "example": [ - 6.59401, - 2.08143, - 1.49631 - ], - "minItems": 3, - "maxItems": 3 + "$ref": "#/components/schemas/color" + } } - }, - "required": [ - "colorSpace", - "n", - "k" - ] + } + } + }, + "complexIor": { + "description": "Complex IOR values, n (refractive index), and k (extinction coefficient), for each color channel. Calculated from spectral IOR data files with script from https://github.com/natyh/material-params", + "type": "array", + "minItems": 1, + "uniqueItems": true, + "items": { + "$ref": "#/components/schemas/color" } }, "thinFilmThickness": { @@ -601,10 +632,11 @@ { "$schema": "../../schemas/components/schemas/Material.json", "header": { - "schemaVersion": 2, - "updated": 202512121608, + "schemaVersion": 2.1, + "updated": 202603231920, "license": "CC0 1.0 Universal", - "origin": "https://api.physicallybased.info" + "origin": "https://api.physicallybased.info/v2/materials", + "deprecated": false }, "data": [ { @@ -841,7 +873,7 @@ "example": "2700 K" }, "color": { - "description": "Color of the light source.", + "description": "Color of the light source, normalized.", "type": "array", "minItems": 1, "uniqueItems": true, @@ -850,7 +882,7 @@ } }, "temperature": { - "description": "The typical range of color temperature in Kelvin, if color lies on the Planckian curve. If there's no variation, only one value should be specified. A range can be specified with two values. A third value can be added to specify the most common temperature.", + "description": "The typical range of color temperature in Kelvin, if color lies near the Planckian curve (within 0.005 Duv). If too far off, temperature shouldn't be specified. A range can be specified with two values. A third value can be added to specify the most common temperature.", "type": "array", "items": { "type": "number" @@ -942,10 +974,11 @@ { "$schema": "../../schemas/components/schemas/Lightsource.json", "header": { - "schemaVersion": 2, - "updated": 202512121608, + "schemaVersion": 2.1, + "updated": 202603231920, "license": "CC0 1.0 Universal", - "origin": "https://api.physicallybased.info" + "origin": "https://api.physicallybased.info/v2/lightsources", + "deprecated": false }, "data": [ { @@ -1143,6 +1176,18 @@ } } } + }, + "focalLength": { + "description": "Focal length of the camera, in millimeters, if the camera has a fixed lens.", + "type": "array", + "items": { + "type": "number" + }, + "example": [ + 50 + ], + "minItems": 1, + "maxItems": 2 } }, "required": [ @@ -1187,10 +1232,11 @@ { "$schema": "../../schemas/components/schemas/Camera.json", "header": { - "schemaVersion": 2, - "updated": 202512121608, + "schemaVersion": 2.1, + "updated": 202603101230, "license": "CC0 1.0 Universal", - "origin": "https://api.physicallybased.info" + "origin": "https://api.physicallybased.info/v2/cameras", + "deprecated": false }, "data": [ { diff --git a/scripts/create-usd.mjs b/scripts/create-usd.mjs index 69e9502..c4211a9 100644 --- a/scripts/create-usd.mjs +++ b/scripts/create-usd.mjs @@ -160,7 +160,6 @@ function createCameras() { ' def Camera "' + name + '"\n' + ' {\n' + ' float2 clippingRange = (0.1, 1000)\n' + - ' float focalLength = 50\n' + ' token projection = "perspective"\n' + ' float horizontalApertureOffset = 0\n' + ' float verticalApertureOffset = 0\n' + @@ -171,6 +170,7 @@ function createCameras() { ' "' + item.format.replace(/ |-|:|\./g, "_").replace(/[\/\()º]/g, "") + '" {\n' + ' over "' + name + '"\n' + ' {\n'+ + ' float focalLength = '+ (item.focalLength || 50) +'\n' + ' float horizontalAperture = ' + item.size[0].toFixed(2) + '\n' + ' float verticalAperture = ' + item.size[1].toFixed(2) + '\n' + ' }\n' +