{ "$schema": "./script.schema.json", "schema_version": "2.1.0", "package": "json_script_example", "description": "Math utility functions", "exports": { "functions": [ "add", "subtract", "multiply", "divide", "clamp" ], "constants": [ "PI", "E" ] }, "constants": [ { "id": "pi_const", "name": "PI", "value": 3.14159265359, "type": "number", "exported": true }, { "id": "e_const", "name": "E", "value": 2.71828182846, "type": "number", "exported": true } ], "functions": [ { "id": "add_fn", "name": "add", "description": "Add two numbers", "exported": true, "params": [ { "name": "a", "type": "number" }, { "name": "b", "type": "number" } ], "returnType": "number", "body": [ { "type": "return", "value": { "type": "binary_expression", "left": "$ref:params.a", "operator": "+", "right": "$ref:params.b" } } ] }, { "id": "subtract_fn", "name": "subtract", "description": "Subtract two numbers", "exported": true, "params": [ { "name": "a", "type": "number" }, { "name": "b", "type": "number" } ], "returnType": "number", "body": [ { "type": "return", "value": { "type": "binary_expression", "left": "$ref:params.a", "operator": "-", "right": "$ref:params.b" } } ] }, { "id": "multiply_fn", "name": "multiply", "description": "Multiply two numbers", "exported": true, "params": [ { "name": "a", "type": "number" }, { "name": "b", "type": "number" } ], "returnType": "number", "body": [ { "type": "return", "value": { "type": "binary_expression", "left": "$ref:params.a", "operator": "*", "right": "$ref:params.b" } } ] }, { "id": "divide_fn", "name": "divide", "description": "Divide two numbers", "exported": true, "params": [ { "name": "a", "type": "number" }, { "name": "b", "type": "number" } ], "returnType": "number", "body": [ { "type": "comment", "text": "Check for division by zero" }, { "type": "if_statement", "condition": { "type": "binary_expression", "left": "$ref:params.b", "operator": "==", "right": 0 }, "then": [ { "type": "return", "value": null } ] }, { "type": "return", "value": { "type": "binary_expression", "left": "$ref:params.a", "operator": "/", "right": "$ref:params.b" } } ] }, { "id": "clamp_fn", "name": "clamp", "description": "Clamp a value between min and max", "exported": true, "params": [ { "name": "value", "type": "number" }, { "name": "min", "type": "number" }, { "name": "max", "type": "number" } ], "returnType": "number", "body": [ { "type": "comment", "text": "If value < min, return min" }, { "type": "if_statement", "condition": { "type": "binary_expression", "left": "$ref:params.value", "operator": "<", "right": "$ref:params.min" }, "then": [ { "type": "return", "value": "$ref:params.min" } ] }, { "type": "comment", "text": "If value > max, return max" }, { "type": "if_statement", "condition": { "type": "binary_expression", "left": "$ref:params.value", "operator": ">", "right": "$ref:params.max" }, "then": [ { "type": "return", "value": "$ref:params.max" } ] }, { "type": "comment", "text": "Otherwise return value" }, { "type": "return", "value": "$ref:params.value" } ] } ] }