diff --git a/docs/parameterData.json b/docs/parameterData.json index b99217ebe8..2ee5d8badd 100644 --- a/docs/parameterData.json +++ b/docs/parameterData.json @@ -3,142 +3,414 @@ "describe": { "overloads": [ [ - "String", - "FALLBACK|LABEL?" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "FALLBACK", + "optional": true + }, + { + "type": "LABEL", + "optional": true + } + ], + "optional": true + } ] ] }, "describeElement": { "overloads": [ [ - "String", - "String", - "FALLBACK|LABEL?" + { + "type": "String" + }, + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "FALLBACK", + "optional": true + }, + { + "type": "LABEL", + "optional": true + } + ], + "optional": true + } ] ] }, "textOutput": { "overloads": [ [ - "FALLBACK|LABEL?" + { + "type": "union", + "elements": [ + { + "type": "FALLBACK", + "optional": true + }, + { + "type": "LABEL", + "optional": true + } + ], + "optional": true + } ] ] }, "gridOutput": { "overloads": [ [ - "FALLBACK|LABEL?" + { + "type": "union", + "elements": [ + { + "type": "FALLBACK", + "optional": true + }, + { + "type": "LABEL", + "optional": true + } + ], + "optional": true + } ] ] }, "p5": { "overloads": [ [ - "Object", - "String|HTMLElement" + { + "type": "Object" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "HTMLElement", + "optional": true + } + ] + } ] ] }, "color": { "overloads": [ [ - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "Number", - "Number", - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "String" + { + "type": "String" + } ], [ - "Number[]" + { + "type": "Array", + "element": "Number" + } ], [ - "p5.Color" + { + "type": "p5.Color" + } ] ] }, "red": { "overloads": [ [ - "p5.Color|Number[]|String" + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "green": { "overloads": [ [ - "p5.Color|Number[]|String" + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "blue": { "overloads": [ [ - "p5.Color|Number[]|String" + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "alpha": { "overloads": [ [ - "p5.Color|Number[]|String" + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "hue": { "overloads": [ [ - "p5.Color|Number[]|String" + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "saturation": { "overloads": [ [ - "p5.Color|Number[]|String" + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "brightness": { "overloads": [ [ - "p5.Color|Number[]|String" + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "lightness": { "overloads": [ [ - "p5.Color|Number[]|String" + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "lerpColor": { "overloads": [ [ - "p5.Color", - "p5.Color", - "Number" + { + "type": "p5.Color" + }, + { + "type": "p5.Color" + }, + { + "type": "Number" + } ] ] }, "paletteLerp": { "overloads": [ [ - "[p5.Color|String|Number|Number[], Number][]", - "Number" + { + "type": "Array", + "element": { + "type": "Tuple", + "elements": [ + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "String", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + } + ] + }, + { + "type": "Number" + } + ] + } + }, + { + "type": "Number" + } ] ] }, "beginClip": { "overloads": [ [ - "Object?" + { + "type": "Object", + "optional": true + } ] ] }, @@ -150,46 +422,92 @@ "clip": { "overloads": [ [ - "Function", - "Object?" + { + "type": "Function" + }, + { + "type": "Object", + "optional": true + } ] ] }, "background": { "overloads": [ [ - "p5.Color" + { + "type": "p5.Color" + } ], [ - "String", - "Number?" + { + "type": "String" + }, + { + "type": "Number", + "optional": true + } ], [ - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "Number", - "Number", - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "Number[]" + { + "type": "Array", + "element": "Number" + } ], [ - "p5.Image", - "Number?" + { + "type": "p5.Image" + }, + { + "type": "Number", + "optional": true + } ] ] }, "clear": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ], [] ] @@ -197,38 +515,151 @@ "colorMode": { "overloads": [ [ - "RGB|HSB|HSL|RGBHDR|HWB|LAB|LCH|OKLAB|OKLCH", - "Number?" - ], - [ - "RGB|HSB|HSL|RGBHDR|HWB|LAB|LCH|OKLAB|OKLCH", - "Number", - "Number", - "Number", - "Number?" + { + "type": "union", + "elements": [ + { + "type": "RGB", + "optional": true + }, + { + "type": "HSB", + "optional": true + }, + { + "type": "HSL", + "optional": true + }, + { + "type": "RGBHDR", + "optional": true + }, + { + "type": "HWB", + "optional": true + }, + { + "type": "LAB", + "optional": true + }, + { + "type": "LCH", + "optional": true + }, + { + "type": "OKLAB", + "optional": true + }, + { + "type": "OKLCH", + "optional": true + } + ] + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "RGB", + "optional": true + }, + { + "type": "HSB", + "optional": true + }, + { + "type": "HSL", + "optional": true + }, + { + "type": "RGBHDR", + "optional": true + }, + { + "type": "HWB", + "optional": true + }, + { + "type": "LAB", + "optional": true + }, + { + "type": "LCH", + "optional": true + }, + { + "type": "OKLAB", + "optional": true + }, + { + "type": "OKLCH", + "optional": true + } + ] + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ] ] }, "fill": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "String" + { + "type": "String" + } ], [ - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "Number[]" + { + "type": "Array", + "element": "Number" + } ], [ - "p5.Color" + { + "type": "p5.Color" + } ] ] }, @@ -245,31 +676,58 @@ "stroke": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "String" + { + "type": "String" + } ], [ - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "Number[]" + { + "type": "Array", + "element": "Number" + } ], [ - "p5.Color" + { + "type": "p5.Color" + } ] ] }, "erase": { "overloads": [ [ - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, @@ -281,33 +739,159 @@ "blendMode": { "overloads": [ [ - "BLEND|DARKEST|LIGHTEST|DIFFERENCE|MULTIPLY|EXCLUSION|SCREEN|REPLACE|OVERLAY|HARD_LIGHT|SOFT_LIGHT|DODGE|BURN|ADD|REMOVE|SUBTRACT" + { + "type": "union", + "elements": [ + { + "type": "BLEND", + "optional": true + }, + { + "type": "DARKEST", + "optional": true + }, + { + "type": "LIGHTEST", + "optional": true + }, + { + "type": "DIFFERENCE", + "optional": true + }, + { + "type": "MULTIPLY", + "optional": true + }, + { + "type": "EXCLUSION", + "optional": true + }, + { + "type": "SCREEN", + "optional": true + }, + { + "type": "REPLACE", + "optional": true + }, + { + "type": "OVERLAY", + "optional": true + }, + { + "type": "HARD_LIGHT", + "optional": true + }, + { + "type": "SOFT_LIGHT", + "optional": true + }, + { + "type": "DODGE", + "optional": true + }, + { + "type": "BURN", + "optional": true + }, + { + "type": "ADD", + "optional": true + }, + { + "type": "REMOVE", + "optional": true + }, + { + "type": "SUBTRACT", + "optional": true + } + ] + } ] ] }, "print": { "overloads": [ [ - "Any" + { + "type": "Any" + } ], [ - "String|Number|Array" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Array", + "optional": true + } + ] + } ] ] }, "cursor": { "overloads": [ [ - "ARROW|CROSS|HAND|MOVE|TEXT|WAIT|String", - "Number?", - "Number?" + { + "type": "union", + "elements": [ + { + "type": "ARROW", + "optional": true + }, + { + "type": "CROSS", + "optional": true + }, + { + "type": "HAND", + "optional": true + }, + { + "type": "MOVE", + "optional": true + }, + { + "type": "TEXT", + "optional": true + }, + { + "type": "WAIT", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "frameRate": { "overloads": [ [ - "Number" + { + "type": "Number" + } ], [] ] @@ -325,21 +909,30 @@ "windowResized": { "overloads": [ [ - "UIEvent?" + { + "type": "UIEvent", + "optional": true + } ] ] }, "fullscreen": { "overloads": [ [ - "Boolean?" + { + "type": "Boolean", + "optional": true + } ] ] }, "pixelDensity": { "overloads": [ [ - "Number?" + { + "type": "Number", + "optional": true + } ], [] ] @@ -367,18 +960,52 @@ "worldToScreen": { "overloads": [ [ - "Number|p5.Vector", - "Number", - "Number?" + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "p5.Vector", + "optional": true + } + ] + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ] ] }, "screenToWorld": { "overloads": [ [ - "Number|p5.Vector", - "Number", - "Number?" + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "p5.Vector", + "optional": true + } + ] + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ] ] }, @@ -395,24 +1022,66 @@ "createCanvas": { "overloads": [ [ - "Number?", - "Number?", - "P2D|WEBGL|P2DHDR?", - "HTMLCanvasElement?" - ], - [ - "Number?", - "Number?", - "HTMLCanvasElement?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "union", + "elements": [ + { + "type": "P2D", + "optional": true + }, + { + "type": "WEBGL", + "optional": true + }, + { + "type": "P2DHDR", + "optional": true + } + ], + "optional": true + }, + { + "type": "HTMLCanvasElement", + "optional": true + } + ], + [ + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "HTMLCanvasElement", + "optional": true + } ] ] }, "resizeCanvas": { "overloads": [ [ - "Number", - "Number", - "Boolean?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Boolean", + "optional": true + } ] ] }, @@ -424,29 +1093,62 @@ "createGraphics": { "overloads": [ [ - "Number", - "Number", - "P2D|WEBGL?", - "HTMLCanvasElement?" - ], - [ - "Number", - "Number", - "HTMLCanvasElement?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "union", + "elements": [ + { + "type": "P2D", + "optional": true + }, + { + "type": "WEBGL", + "optional": true + } + ], + "optional": true + }, + { + "type": "HTMLCanvasElement", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "HTMLCanvasElement", + "optional": true + } ] ] }, "createFramebuffer": { "overloads": [ [ - "Object?" + { + "type": "Object", + "optional": true + } ] ] }, "clearDepth": { "overloads": [ [ - "Number?" + { + "type": "Number", + "optional": true + } ] ] }, @@ -468,40 +1170,89 @@ "redraw": { "overloads": [ [ - "Integer?" + { + "type": "Integer", + "optional": true + } ] ] }, "applyMatrix": { "overloads": [ [ - "Array" - ], - [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number" - ], - [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number" + { + "type": "Array" + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, @@ -513,67 +1264,138 @@ "rotate": { "overloads": [ [ - "Number", - "p5.Vector|Number[]?" + { + "type": "Number" + }, + { + "type": "union", + "elements": [ + { + "type": "p5.Vector", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + } + ], + "optional": true + } ] ] }, "rotateX": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "rotateY": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "rotateZ": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "scale": { "overloads": [ [ - "Number|p5.Vector|Number[]", - "Number?", - "Number?" - ], - [ - "p5.Vector|Number[]" + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "p5.Vector", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + } + ] + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Vector", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + } + ] + } ] ] }, "shearX": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "shearY": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "translate": { "overloads": [ [ - "Number", - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "p5.Vector" + { + "type": "p5.Vector" + } ] ] }, @@ -590,15 +1412,43 @@ "storeItem": { "overloads": [ [ - "String", - "String|Number|Boolean|Object|Array" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Boolean", + "optional": true + }, + { + "type": "Object", + "optional": true + }, + { + "type": "Array", + "optional": true + } + ] + } ] ] }, "getItem": { "overloads": [ [ - "String" + { + "type": "String" + } ] ] }, @@ -610,31 +1460,76 @@ "removeItem": { "overloads": [ [ - "String" + { + "type": "String" + } ] ] }, "select": { "overloads": [ [ - "String", - "String|p5.Element|HTMLElement?" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "p5.Element", + "optional": true + }, + { + "type": "HTMLElement", + "optional": true + } + ], + "optional": true + } ] ] }, "selectAll": { "overloads": [ [ - "String", - "String|p5.Element|HTMLElement?" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "p5.Element", + "optional": true + }, + { + "type": "HTMLElement", + "optional": true + } + ], + "optional": true + } ] ] }, "createElement": { "overloads": [ [ - "String", - "String?" + { + "type": "String" + }, + { + "type": "String", + "optional": true + } ] ] }, @@ -651,90 +1546,152 @@ "createDiv": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, "createP": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, "createSpan": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, "createImg": { "overloads": [ [ - "String", - "String" + { + "type": "String" + }, + { + "type": "String" + } ], [ - "String", - "String", - "String?", - "Function?" + { + "type": "String" + }, + { + "type": "String" + }, + { + "type": "String", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "createA": { "overloads": [ [ - "String", - "String", - "String?" + { + "type": "String" + }, + { + "type": "String" + }, + { + "type": "String", + "optional": true + } ] ] }, "createSlider": { "overloads": [ [ - "Number", - "Number", - "Number?", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "createButton": { "overloads": [ [ - "String", - "String?" + { + "type": "String" + }, + { + "type": "String", + "optional": true + } ] ] }, "createCheckbox": { "overloads": [ [ - "String?", - "Boolean?" + { + "type": "String", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } ] ] }, "createSelect": { "overloads": [ [ - "Boolean?" + { + "type": "Boolean", + "optional": true + } ], [ - "Object" + { + "type": "Object" + } ] ] }, "createRadio": { "overloads": [ [ - "Object?" + { + "type": "Object", + "optional": true + } ], [ - "String?" + { + "type": "String", + "optional": true + } ], [] ] @@ -742,40 +1699,71 @@ "createColorPicker": { "overloads": [ [ - "String|p5.Color?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "p5.Color", + "optional": true + } + ], + "optional": true + } ] ] }, "createInput": { "overloads": [ [ - "String?", - "String?" + { + "type": "String", + "optional": true + }, + { + "type": "String", + "optional": true + } ], [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, "createFileInput": { "overloads": [ [ - "Function", - "Boolean?" + { + "type": "Function" + }, + { + "type": "Boolean", + "optional": true + } ] ] }, "setMoveThreshold": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "setShakeThreshold": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, @@ -797,77 +1785,119 @@ "keyPressed": { "overloads": [ [ - "KeyboardEvent?" + { + "type": "KeyboardEvent", + "optional": true + } ] ] }, "keyReleased": { "overloads": [ [ - "KeyboardEvent?" + { + "type": "KeyboardEvent", + "optional": true + } ] ] }, "keyTyped": { "overloads": [ [ - "KeyboardEvent?" + { + "type": "KeyboardEvent", + "optional": true + } ] ] }, "keyIsDown": { "overloads": [ [ - "Number|String" + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "mouseMoved": { "overloads": [ [ - "MouseEvent?" + { + "type": "MouseEvent", + "optional": true + } ] ] }, "mouseDragged": { "overloads": [ [ - "MouseEvent?" + { + "type": "MouseEvent", + "optional": true + } ] ] }, "mousePressed": { "overloads": [ [ - "MouseEvent?" + { + "type": "MouseEvent", + "optional": true + } ] ] }, "mouseReleased": { "overloads": [ [ - "MouseEvent?" + { + "type": "MouseEvent", + "optional": true + } ] ] }, "mouseClicked": { "overloads": [ [ - "MouseEvent?" + { + "type": "MouseEvent", + "optional": true + } ] ] }, "doubleClicked": { "overloads": [ [ - "MouseEvent?" + { + "type": "MouseEvent", + "optional": true + } ] ] }, "mouseWheel": { "overloads": [ [ - "WheelEvent?" + { + "type": "WheelEvent", + "optional": true + } ] ] }, @@ -884,98 +1914,333 @@ "createImage": { "overloads": [ [ - "Integer", - "Integer" + { + "type": "Integer" + }, + { + "type": "Integer" + } ] ] }, "saveCanvas": { "overloads": [ [ - "p5.Framebuffer|p5.Element|HTMLCanvasElement", - "String?", - "String?" - ], - [ - "String?", - "String?" + { + "type": "union", + "elements": [ + { + "type": "p5.Framebuffer", + "optional": true + }, + { + "type": "p5.Element", + "optional": true + }, + { + "type": "HTMLCanvasElement", + "optional": true + } + ] + }, + { + "type": "String", + "optional": true + }, + { + "type": "String", + "optional": true + } + ], + [ + { + "type": "String", + "optional": true + }, + { + "type": "String", + "optional": true + } ] ] }, "saveFrames": { "overloads": [ [ - "String", - "String", - "Number", - "Number", - "function(Array)?" + { + "type": "String" + }, + { + "type": "String" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Function", + "parameters": [ + { + "type": "Array" + } + ], + "optional": true + } ] ] }, "loadImage": { "overloads": [ [ - "String|Request", - "function(p5.Image)?", - "function(Event)?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "Function", + "parameters": [ + { + "type": "p5.Image" + } + ], + "optional": true + }, + { + "type": "Function", + "parameters": [ + { + "type": "Event" + } + ], + "optional": true + } ] ] }, "saveGif": { "overloads": [ [ - "String", - "Number", - "Object?" + { + "type": "String" + }, + { + "type": "Number" + }, + { + "type": "Object", + "optional": true + } ] ] }, "image": { "overloads": [ [ - "p5.Image|p5.Element|p5.Texture|p5.Framebuffer|p5.FramebufferTexture|p5.Renderer|p5.Graphics", - "Number", - "Number", - "Number?", - "Number?" - ], - [ - "p5.Image|p5.Element|p5.Texture|p5.Framebuffer|p5.FramebufferTexture", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number?", - "Number?", - "CONTAIN|COVER?", - "LEFT|RIGHT|CENTER?", - "TOP|BOTTOM|CENTER?" + { + "type": "union", + "elements": [ + { + "type": "p5.Image", + "optional": true + }, + { + "type": "p5.Element", + "optional": true + }, + { + "type": "p5.Texture", + "optional": true + }, + { + "type": "p5.Framebuffer", + "optional": true + }, + { + "type": "p5.FramebufferTexture", + "optional": true + }, + { + "type": "p5.Renderer", + "optional": true + }, + { + "type": "p5.Graphics", + "optional": true + } + ] + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Image", + "optional": true + }, + { + "type": "p5.Element", + "optional": true + }, + { + "type": "p5.Texture", + "optional": true + }, + { + "type": "p5.Framebuffer", + "optional": true + }, + { + "type": "p5.FramebufferTexture", + "optional": true + } + ] + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "union", + "elements": [ + { + "type": "CONTAIN", + "optional": true + }, + { + "type": "COVER", + "optional": true + } + ], + "optional": true + }, + { + "type": "union", + "elements": [ + { + "type": "LEFT", + "optional": true + }, + { + "type": "RIGHT", + "optional": true + }, + { + "type": "CENTER", + "optional": true + } + ], + "optional": true + }, + { + "type": "union", + "elements": [ + { + "type": "TOP", + "optional": true + }, + { + "type": "BOTTOM", + "optional": true + }, + { + "type": "CENTER", + "optional": true + } + ], + "optional": true + } ] ] }, "tint": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "String" + { + "type": "String" + } ], [ - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "Number[]" + { + "type": "Array", + "element": "Number" + } ], [ - "p5.Color" + { + "type": "p5.Color" + } ] ] }, @@ -987,86 +2252,368 @@ "imageMode": { "overloads": [ [ - "CORNER|CORNERS|CENTER" + { + "type": "union", + "elements": [ + { + "type": "CORNER", + "optional": true + }, + { + "type": "CORNERS", + "optional": true + }, + { + "type": "CENTER", + "optional": true + } + ] + } ] ] }, "blend": { "overloads": [ [ - "p5.Image", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "BLEND|DARKEST|LIGHTEST|DIFFERENCE|MULTIPLY|EXCLUSION|SCREEN|REPLACE|OVERLAY|HARD_LIGHT|SOFT_LIGHT|DODGE|BURN|ADD|NORMAL" - ], - [ - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "BLEND|DARKEST|LIGHTEST|DIFFERENCE|MULTIPLY|EXCLUSION|SCREEN|REPLACE|OVERLAY|HARD_LIGHT|SOFT_LIGHT|DODGE|BURN|ADD|NORMAL" + { + "type": "p5.Image" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "union", + "elements": [ + { + "type": "BLEND", + "optional": true + }, + { + "type": "DARKEST", + "optional": true + }, + { + "type": "LIGHTEST", + "optional": true + }, + { + "type": "DIFFERENCE", + "optional": true + }, + { + "type": "MULTIPLY", + "optional": true + }, + { + "type": "EXCLUSION", + "optional": true + }, + { + "type": "SCREEN", + "optional": true + }, + { + "type": "REPLACE", + "optional": true + }, + { + "type": "OVERLAY", + "optional": true + }, + { + "type": "HARD_LIGHT", + "optional": true + }, + { + "type": "SOFT_LIGHT", + "optional": true + }, + { + "type": "DODGE", + "optional": true + }, + { + "type": "BURN", + "optional": true + }, + { + "type": "ADD", + "optional": true + }, + { + "type": "NORMAL", + "optional": true + } + ] + } + ], + [ + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "union", + "elements": [ + { + "type": "BLEND", + "optional": true + }, + { + "type": "DARKEST", + "optional": true + }, + { + "type": "LIGHTEST", + "optional": true + }, + { + "type": "DIFFERENCE", + "optional": true + }, + { + "type": "MULTIPLY", + "optional": true + }, + { + "type": "EXCLUSION", + "optional": true + }, + { + "type": "SCREEN", + "optional": true + }, + { + "type": "REPLACE", + "optional": true + }, + { + "type": "OVERLAY", + "optional": true + }, + { + "type": "HARD_LIGHT", + "optional": true + }, + { + "type": "SOFT_LIGHT", + "optional": true + }, + { + "type": "DODGE", + "optional": true + }, + { + "type": "BURN", + "optional": true + }, + { + "type": "ADD", + "optional": true + }, + { + "type": "NORMAL", + "optional": true + } + ] + } ] ] }, "copy": { "overloads": [ [ - "p5.Image|p5.Element", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer" - ], - [ - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer" + { + "type": "union", + "elements": [ + { + "type": "p5.Image", + "optional": true + }, + { + "type": "p5.Element", + "optional": true + } + ] + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + } + ], + [ + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + } ] ] }, "filter": { "overloads": [ [ - "THRESHOLD|GRAY|OPAQUE|INVERT|POSTERIZE|BLUR|ERODE|DILATE|BLUR", - "Number?", - "Boolean?" - ], - [ - "p5.Shader" + { + "type": "union", + "elements": [ + { + "type": "THRESHOLD", + "optional": true + }, + { + "type": "GRAY", + "optional": true + }, + { + "type": "OPAQUE", + "optional": true + }, + { + "type": "INVERT", + "optional": true + }, + { + "type": "POSTERIZE", + "optional": true + }, + { + "type": "BLUR", + "optional": true + }, + { + "type": "ERODE", + "optional": true + }, + { + "type": "DILATE", + "optional": true + }, + { + "type": "BLUR", + "optional": true + } + ] + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ], + [ + { + "type": "p5.Shader" + } ] ] }, "get": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ], [], [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, @@ -1078,19 +2625,52 @@ "set": { "overloads": [ [ - "Number", - "Number", - "Number|Number[]|Object" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "Object", + "optional": true + } + ] + } ] ] }, "updatePixels": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ], [] ] @@ -1098,125 +2678,425 @@ "loadJSON": { "overloads": [ [ - "String|Request", - "Function?", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "loadStrings": { "overloads": [ [ - "String|Request", - "Function?", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "loadTable": { "overloads": [ [ - "String|Request", - "String?", - "String?", - "Function?", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "String", + "optional": true + }, + { + "type": "String", + "optional": true + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "loadXML": { "overloads": [ [ - "String|Request", - "Function?", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "loadBytes": { "overloads": [ [ - "String|Request", - "Function?", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "loadBlob": { "overloads": [ [ - "String|Request", - "Function?", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "httpGet": { "overloads": [ [ - "String|Request", - "String?", - "Function?", - "Function?" - ], - [ - "String|Request", - "Function", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "String", + "optional": true + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "Function" + }, + { + "type": "Function", + "optional": true + } ] ] }, "httpPost": { "overloads": [ [ - "String|Request", - "Object|Boolean?", - "String?", - "Function?", - "Function?" - ], - [ - "String|Request", - "Object|Boolean", - "Function?", - "Function?" - ], - [ - "String|Request", - "Function?", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "Object", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ], + "optional": true + }, + { + "type": "String", + "optional": true + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "Object", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "httpDo": { "overloads": [ [ - "String|Request", - "String?", - "String?", - "Object?", - "Function?", - "Function?" - ], - [ - "String|Request", - "Function?", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "String", + "optional": true + }, + { + "type": "String", + "optional": true + }, + { + "type": "Object", + "optional": true + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "createWriter": { "overloads": [ [ - "String", - "String?" + { + "type": "String" + }, + { + "type": "String", + "optional": true + } ] ] }, "write": { "overloads": [ [ - "String|Number|Array" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Array", + "optional": true + } + ] + } ] ] }, @@ -1228,327 +3108,552 @@ "save": { "overloads": [ [ - "Object|String?", - "String?", - "Boolean|String?" + { + "type": "union", + "elements": [ + { + "type": "Object", + "optional": true + }, + { + "type": "String", + "optional": true + } + ], + "optional": true + }, + { + "type": "String", + "optional": true + }, + { + "type": "union", + "elements": [ + { + "type": "Boolean", + "optional": true + }, + { + "type": "String", + "optional": true + } + ], + "optional": true + } ] ] }, "saveJSON": { "overloads": [ [ - "Array|Object", - "String", - "Boolean?" + { + "type": "union", + "elements": [ + { + "type": "Array", + "optional": true + }, + { + "type": "Object", + "optional": true + } + ] + }, + { + "type": "String" + }, + { + "type": "Boolean", + "optional": true + } ] ] }, "saveStrings": { "overloads": [ [ - "String[]", - "String", - "String?", - "Boolean?" + { + "type": "Array", + "element": "String" + }, + { + "type": "String" + }, + { + "type": "String", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } ] ] }, "saveTable": { "overloads": [ [ - "p5.Table", - "String", - "String?" + { + "type": "p5.Table" + }, + { + "type": "String" + }, + { + "type": "String", + "optional": true + } ] ] }, "abs": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "ceil": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "constrain": { "overloads": [ [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "dist": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number" - ], - [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number" - ], - [ - "p5.Vector" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "p5.Vector" + } ] ] }, "exp": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "floor": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "lerp": { "overloads": [ [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "log": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "mag": { "overloads": [ [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "map": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Boolean?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Boolean", + "optional": true + } ] ] }, "max": { "overloads": [ [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ], [ - "Number[]" + { + "type": "Array", + "element": "Number" + } ] ] }, "min": { "overloads": [ [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ], [ - "Number[]" + { + "type": "Array", + "element": "Number" + } ] ] }, "norm": { "overloads": [ [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "pow": { "overloads": [ [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "round": { "overloads": [ [ - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ] ] }, "sq": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "sqrt": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "fract": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "createVector": { "overloads": [ [ - "...Number[]" + { + "type": "Number", + "rest": true + } ] ] }, "noise": { "overloads": [ [ - "Number", - "Number?", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "noiseDetail": { "overloads": [ [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "noiseSeed": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "randomSeed": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "random": { "overloads": [ [ - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ], [ - "Array" + { + "type": "Array" + } ] ] }, "randomGaussian": { "overloads": [ [ - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "acos": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "asin": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "atan": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "atan2": { "overloads": [ [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "cos": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "sin": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "tan": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "degrees": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "radians": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "angleMode": { "overloads": [ [ - "RADIANS|DEGREES" + { + "type": "union", + "elements": [ + { + "type": "RADIANS", + "optional": true + }, + { + "type": "DEGREES", + "optional": true + } + ] + } ], [] ] @@ -1556,156 +3661,380 @@ "arc": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "CHORD|PIE|OPEN?", - "Integer?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "union", + "elements": [ + { + "type": "CHORD", + "optional": true + }, + { + "type": "PIE", + "optional": true + }, + { + "type": "OPEN", + "optional": true + } + ], + "optional": true + }, + { + "type": "Integer", + "optional": true + } ] ] }, "ellipse": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number?" - ], - [ - "Number", - "Number", - "Number", - "Number", - "Integer?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Integer", + "optional": true + } ] ] }, "circle": { "overloads": [ [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "line": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number" - ], - [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "point": { "overloads": [ [ - "Number", - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "p5.Vector" + { + "type": "p5.Vector" + } ] ] }, "quad": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Integer?", - "Integer?" - ], - [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Integer?", - "Integer?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ] ] }, "rect": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?" - ], - [ - "Number", - "Number", - "Number", - "Number", - "Integer?", - "Integer?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ] ] }, "square": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "triangle": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "ellipseMode": { "overloads": [ [ - "CENTER|RADIUS|CORNER|CORNERS" + { + "type": "union", + "elements": [ + { + "type": "CENTER", + "optional": true + }, + { + "type": "RADIUS", + "optional": true + }, + { + "type": "CORNER", + "optional": true + }, + { + "type": "CORNERS", + "optional": true + } + ] + } ] ] }, @@ -1717,7 +4046,27 @@ "rectMode": { "overloads": [ [ - "CENTER|RADIUS|CORNER|CORNERS" + { + "type": "union", + "elements": [ + { + "type": "CENTER", + "optional": true + }, + { + "type": "RADIUS", + "optional": true + }, + { + "type": "CORNER", + "optional": true + }, + { + "type": "CORNERS", + "optional": true + } + ] + } ] ] }, @@ -1729,128 +4078,284 @@ "strokeCap": { "overloads": [ [ - "ROUND|SQUARE|PROJECT" + { + "type": "union", + "elements": [ + { + "type": "ROUND", + "optional": true + }, + { + "type": "SQUARE", + "optional": true + }, + { + "type": "PROJECT", + "optional": true + } + ] + } ] ] }, "strokeJoin": { "overloads": [ [ - "MITER|BEVEL|ROUND" + { + "type": "union", + "elements": [ + { + "type": "MITER", + "optional": true + }, + { + "type": "BEVEL", + "optional": true + }, + { + "type": "ROUND", + "optional": true + } + ] + } ] ] }, "strokeWeight": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "bezier": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number" - ], - [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "bezierPoint": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "bezierTangent": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "spline": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number" - ], - [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "splinePoint": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "splineTangent": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "bezierOrder": { "overloads": [ [ - "Number" + { + "type": "Number" + } ], [] ] @@ -1858,44 +4363,83 @@ "splineVertex": { "overloads": [ [ - "Number", - "Number" - ], - [ - "Number", - "Number", - "Number?" - ], - [ - "Number", - "Number", - "Number?", - "Number?" - ], - [ - "Number", - "Number", - "Number", - "Number?", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "splineProperty": { "overloads": [ [ - "String", - null + { + "type": "String" + }, + {} ], [ - "String" + { + "type": "String" + } ] ] }, "splineProperties": { "overloads": [ [ - "Object" + { + "type": "Object" + } ], [] ] @@ -1903,21 +4447,47 @@ "vertex": { "overloads": [ [ - "Number", - "Number" - ], - [ - "Number", - "Number", - "Number?", - "Number?" - ], - [ - "Number", - "Number", - "Number", - "Number?", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, @@ -1929,130 +4499,370 @@ "endContour": { "overloads": [ [ - "OPEN|CLOSE?" + { + "type": "union", + "elements": [ + { + "type": "OPEN", + "optional": true + }, + { + "type": "CLOSE", + "optional": true + } + ], + "optional": true + } ] ] }, "beginShape": { "overloads": [ [ - "POINTS|LINES|TRIANGLES|TRIANGLE_FAN|TRIANGLE_STRIP|QUADS|QUAD_STRIP|PATH?" + { + "type": "union", + "elements": [ + { + "type": "POINTS", + "optional": true + }, + { + "type": "LINES", + "optional": true + }, + { + "type": "TRIANGLES", + "optional": true + }, + { + "type": "TRIANGLE_FAN", + "optional": true + }, + { + "type": "TRIANGLE_STRIP", + "optional": true + }, + { + "type": "QUADS", + "optional": true + }, + { + "type": "QUAD_STRIP", + "optional": true + }, + { + "type": "PATH", + "optional": true + } + ], + "optional": true + } ] ] }, "bezierVertex": { "overloads": [ [ - "Number", - "Number", - "Number?", - "Number?" - ], - [ - "Number", - "Number", - "Number", - "Number?", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "endShape": { "overloads": [ [ - "CLOSE?", - "Integer?" + { + "type": "CLOSE", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ] ] }, "normal": { "overloads": [ [ - "p5.Vector" + { + "type": "p5.Vector" + } ], [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "vertexProperty": { "overloads": [ [ - "String", - "Number|Number[]" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + } + ] + } ] ] }, "loadFont": { "overloads": [ [ - "String", - "String?", - "Object?", - "Function?", - "Function?" - ], - [ - "String", - "Function?", - "Function?" + { + "type": "String" + }, + { + "type": "String", + "optional": true + }, + { + "type": "Object", + "properties": { + "sets": { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Array", + "element": "String", + "optional": true + } + ], + "optional": true + } + }, + "optional": true + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } + ], + [ + { + "type": "String" + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "text": { "overloads": [ [ - "String|Object|Array|Number|Boolean", - "Number", - "Number", - "Number?", - "Number?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Object", + "optional": true + }, + { + "type": "Array", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "textAlign": { "overloads": [ [ - "LEFT|CENTER|RIGHT", - "TOP|BOTTOM|CENTER|BASELINE?" + { + "type": "union", + "elements": [ + { + "type": "LEFT", + "optional": true + }, + { + "type": "CENTER", + "optional": true + }, + { + "type": "RIGHT", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "TOP", + "optional": true + }, + { + "type": "BOTTOM", + "optional": true + }, + { + "type": "CENTER", + "optional": true + }, + { + "type": "BASELINE", + "optional": true + } + ], + "optional": true + } ] ] }, "textAscent": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, "textDescent": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, "textLeading": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "textFont": { "overloads": [ [ - "p5.Font|String|Object", - "Number?" + { + "type": "union", + "elements": [ + { + "type": "p5.Font", + "optional": true + }, + { + "type": "String", + "optional": true + }, + { + "type": "Object", + "optional": true + } + ] + }, + { + "type": "Number", + "optional": true + } ] ] }, "textSize": { "overloads": [ [ - "Number" + { + "type": "Number" + } ], [] ] @@ -2060,7 +4870,27 @@ "textStyle": { "overloads": [ [ - "NORMAL|ITALIC|BOLD|BOLDITALIC" + { + "type": "union", + "elements": [ + { + "type": "NORMAL", + "optional": true + }, + { + "type": "ITALIC", + "optional": true + }, + { + "type": "BOLD", + "optional": true + }, + { + "type": "BOLDITALIC", + "optional": true + } + ] + } ], [] ] @@ -2068,14 +4898,28 @@ "textWidth": { "overloads": [ [ - "String" + { + "type": "String" + } ] ] }, "textWrap": { "overloads": [ [ - "WORD|CHAR" + { + "type": "union", + "elements": [ + { + "type": "WORD", + "optional": true + }, + { + "type": "CHAR", + "optional": true + } + ] + } ], [] ] @@ -2083,18 +4927,32 @@ "textBounds": { "overloads": [ [ - "String", - "Number", - "Number", - "Number?", - "Number?" + { + "type": "String" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "textDirection": { "overloads": [ [ - "String" + { + "type": "String" + } ], [] ] @@ -2102,18 +4960,24 @@ "textProperty": { "overloads": [ [ - "String", - null + { + "type": "String" + }, + {} ], [ - "String" + { + "type": "String" + } ] ] }, "textProperties": { "overloads": [ [ - "Object" + { + "type": "Object" + } ], [] ] @@ -2121,18 +4985,32 @@ "fontBounds": { "overloads": [ [ - "String", - "Number", - "Number", - "Number?", - "Number?" + { + "type": "String" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "fontWidth": { "overloads": [ [ - "String" + { + "type": "String" + } ] ] }, @@ -2149,7 +5027,9 @@ "textWeight": { "overloads": [ [ - "Number" + { + "type": "Number" + } ], [] ] @@ -2157,89 +5037,199 @@ "float": { "overloads": [ [ - "String" + { + "type": "String" + } ], [ - "String[]" + { + "type": "Array", + "element": "String" + } ] ] }, "int": { "overloads": [ [ - "String|Boolean|Number" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Boolean", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ] + } ], [ - "Array" + { + "type": "Array" + } ] ] }, "str": { "overloads": [ [ - "String|Boolean|Number" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Boolean", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ] + } ] ] }, "boolean": { "overloads": [ [ - "String|Boolean|Number" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Boolean", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ] + } ], [ - "Array" + { + "type": "Array" + } ] ] }, "byte": { "overloads": [ [ - "String|Boolean|Number" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Boolean", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ] + } ], [ - "Array" + { + "type": "Array" + } ] ] }, "char": { "overloads": [ [ - "String|Number" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ] + } ], [ - "Array" + { + "type": "Array" + } ] ] }, "unchar": { "overloads": [ [ - "String" + { + "type": "String" + } ], [ - "String[]" + { + "type": "Array", + "element": "String" + } ] ] }, "hex": { "overloads": [ [ - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "Number[]", - "Number?" + { + "type": "Array", + "element": "Number" + }, + { + "type": "Number", + "optional": true + } ] ] }, "unhex": { "overloads": [ [ - "String" + { + "type": "String" + } ], [ - "String[]" + { + "type": "Array", + "element": "String" + } ] ] }, @@ -2281,182 +5271,449 @@ "nf": { "overloads": [ [ - "Number|String", - "Integer|String?", - "Integer|String?" - ], - [ - "Number[]", - "Integer|String?", - "Integer|String?" + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "Integer", + "optional": true + }, + { + "type": "String", + "optional": true + } + ], + "optional": true + }, + { + "type": "union", + "elements": [ + { + "type": "Integer", + "optional": true + }, + { + "type": "String", + "optional": true + } + ], + "optional": true + } + ], + [ + { + "type": "Array", + "element": "Number" + }, + { + "type": "union", + "elements": [ + { + "type": "Integer", + "optional": true + }, + { + "type": "String", + "optional": true + } + ], + "optional": true + }, + { + "type": "union", + "elements": [ + { + "type": "Integer", + "optional": true + }, + { + "type": "String", + "optional": true + } + ], + "optional": true + } ] ] }, "nfc": { "overloads": [ [ - "Number|String", - "Integer|String?" - ], - [ - "Number[]", - "Integer|String?" + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "Integer", + "optional": true + }, + { + "type": "String", + "optional": true + } + ], + "optional": true + } + ], + [ + { + "type": "Array", + "element": "Number" + }, + { + "type": "union", + "elements": [ + { + "type": "Integer", + "optional": true + }, + { + "type": "String", + "optional": true + } + ], + "optional": true + } ] ] }, "nfp": { "overloads": [ [ - "Number", - "Integer?", - "Integer?" + { + "type": "Number" + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ], [ - "Number[]", - "Integer?", - "Integer?" + { + "type": "Array", + "element": "Number" + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ] ] }, "nfs": { "overloads": [ [ - "Number", - "Integer?", - "Integer?" + { + "type": "Number" + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ], [ - "Array", - "Integer?", - "Integer?" + { + "type": "Array" + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ] ] }, "splitTokens": { "overloads": [ [ - "String", - "String?" + { + "type": "String" + }, + { + "type": "String", + "optional": true + } ] ] }, "shuffle": { "overloads": [ [ - "Array", - "Boolean?" + { + "type": "Array" + }, + { + "type": "Boolean", + "optional": true + } ] ] }, "strokeMode": { "overloads": [ [ - "String" + { + "type": "String" + } ] ] }, "buildGeometry": { "overloads": [ [ - "Function" + { + "type": "Function" + } ] ] }, "freeGeometry": { "overloads": [ [ - "p5.Geometry" + { + "type": "p5.Geometry" + } ] ] }, "plane": { "overloads": [ [ - "Number?", - "Number?", - "Integer?", - "Integer?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ] ] }, "box": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Integer?", - "Integer?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ] ] }, "sphere": { "overloads": [ [ - "Number?", - "Integer?", - "Integer?" + { + "type": "Number", + "optional": true + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ] ] }, "cylinder": { "overloads": [ [ - "Number?", - "Number?", - "Integer?", - "Integer?", - "Boolean?", - "Boolean?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Boolean", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } ] ] }, "cone": { "overloads": [ [ - "Number?", - "Number?", - "Integer?", - "Integer?", - "Boolean?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } ] ] }, "ellipsoid": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Integer?", - "Integer?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ] ] }, "torus": { "overloads": [ [ - "Number?", - "Number?", - "Integer?", - "Integer?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Integer", + "optional": true + }, + { + "type": "Integer", + "optional": true + } ] ] }, "curveDetail": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "orbitControl": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Object?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Object", + "optional": true + } ] ] }, @@ -2464,33 +5721,123 @@ "overloads": [ [], [ - "GRID|AXES" - ], - [ - "GRID|AXES", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?" - ], - [ - "GRID|AXES", - "Number?", - "Number?", - "Number?", - "Number?" - ], - [ - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "union", + "elements": [ + { + "type": "GRID", + "optional": true + }, + { + "type": "AXES", + "optional": true + } + ] + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "GRID", + "optional": true + }, + { + "type": "AXES", + "optional": true + } + ] + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "GRID", + "optional": true + }, + { + "type": "AXES", + "optional": true + } + ] + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, @@ -2502,114 +5849,278 @@ "ambientLight": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "String" + { + "type": "String" + } ], [ - "Number[]" + { + "type": "Array", + "element": "Number" + } ], [ - "p5.Color" + { + "type": "p5.Color" + } ] ] }, "specularColor": { "overloads": [ [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ], [ - "Number" + { + "type": "Number" + } ], [ - "String" + { + "type": "String" + } ], [ - "Number[]" + { + "type": "Array", + "element": "Number" + } ], [ - "p5.Color" + { + "type": "p5.Color" + } ] ] }, "directionalLight": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number" - ], - [ - "Number", - "Number", - "Number", - "p5.Vector" - ], - [ - "p5.Color|Number[]|String", - "Number", - "Number", - "Number" - ], - [ - "p5.Color|Number[]|String", - "p5.Vector" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector" + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + }, + { + "type": "p5.Vector" + } ] ] }, "pointLight": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number" - ], - [ - "Number", - "Number", - "Number", - "p5.Vector" - ], - [ - "p5.Color|Number[]|String", - "Number", - "Number", - "Number" - ], - [ - "p5.Color|Number[]|String", - "p5.Vector" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector" + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + }, + { + "type": "p5.Vector" + } ] ] }, "imageLight": { "overloads": [ [ - "p5.image" + { + "type": "p5.image" + } ] ] }, "panorama": { "overloads": [ [ - "p5.Image" + { + "type": "p5.Image" + } ] ] }, @@ -2621,93 +6132,303 @@ "lightFalloff": { "overloads": [ [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "spotLight": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number?", - "Number?" - ], - [ - "p5.Color|Number[]|String", - "p5.Vector", - "p5.Vector", - "Number?", - "Number?" - ], - [ - "Number", - "Number", - "Number", - "p5.Vector", - "p5.Vector", - "Number?", - "Number?" - ], - [ - "p5.Color|Number[]|String", - "Number", - "Number", - "Number", - "p5.Vector", - "Number?", - "Number?" - ], - [ - "p5.Color|Number[]|String", - "p5.Vector", - "Number", - "Number", - "Number", - "Number?", - "Number?" - ], - [ - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "p5.Vector", - "Number?", - "Number?" - ], - [ - "Number", - "Number", - "Number", - "p5.Vector", - "Number", - "Number", - "Number", - "Number?", - "Number?" - ], - [ - "p5.Color|Number[]|String", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number", - "Number?", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + }, + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + }, + { + "type": "p5.Vector" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, @@ -2719,107 +6440,364 @@ "loadModel": { "overloads": [ [ - "String|Request", - "String?", - "Boolean", - "function(p5.Geometry)?", - "function(Event)?" - ], - [ - "String|Request", - "String?", - "function(p5.Geometry)?", - "function(Event)?" - ], - [ - "String|Request", - "Object?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "String", + "optional": true + }, + { + "type": "Boolean" + }, + { + "type": "Function", + "parameters": [ + { + "type": "p5.Geometry" + } + ], + "optional": true + }, + { + "type": "Function", + "parameters": [ + { + "type": "Event" + } + ], + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "String", + "optional": true + }, + { + "type": "Function", + "parameters": [ + { + "type": "p5.Geometry" + } + ], + "optional": true + }, + { + "type": "Function", + "parameters": [ + { + "type": "Event" + } + ], + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "Object", + "properties": { + "fileType": { + "type": "String", + "optional": true + }, + "successCallback": { + "type": "Function", + "parameters": [ + { + "type": "p5.Geometry" + } + ], + "optional": true + }, + "failureCallback": { + "type": "Function", + "parameters": [ + { + "type": "Event" + } + ], + "optional": true + }, + "normalize": { + "type": "Boolean", + "optional": true + }, + "flipU": { + "type": "Boolean", + "optional": true + }, + "flipV": { + "type": "Boolean", + "optional": true + } + }, + "optional": true + } ] ] }, "model": { "overloads": [ [ - "p5.Geometry", - "Number?" + { + "type": "p5.Geometry" + }, + { + "type": "Number", + "optional": true + } ] ] }, "createModel": { "overloads": [ [ - "String", - "String?", - "Boolean", - "function(p5.Geometry)?", - "function(Event)?" - ], - [ - "String", - "String?", - "function(p5.Geometry)?", - "function(Event)?" - ], - [ - "String", - "String?", - "Object?" + { + "type": "String" + }, + { + "type": "String", + "optional": true + }, + { + "type": "Boolean" + }, + { + "type": "Function", + "parameters": [ + { + "type": "p5.Geometry" + } + ], + "optional": true + }, + { + "type": "Function", + "parameters": [ + { + "type": "Event" + } + ], + "optional": true + } + ], + [ + { + "type": "String" + }, + { + "type": "String", + "optional": true + }, + { + "type": "Function", + "parameters": [ + { + "type": "p5.Geometry" + } + ], + "optional": true + }, + { + "type": "Function", + "parameters": [ + { + "type": "Event" + } + ], + "optional": true + } + ], + [ + { + "type": "String" + }, + { + "type": "String", + "optional": true + }, + { + "type": "Object", + "properties": { + "successCallback": { + "type": "Function", + "parameters": [ + { + "type": "p5.Geometry" + } + ], + "optional": true + }, + "failureCallback": { + "type": "Function", + "parameters": [ + { + "type": "Event" + } + ], + "optional": true + }, + "normalize": { + "type": "boolean", + "optional": true + }, + "flipU": { + "type": "boolean", + "optional": true + }, + "flipV": { + "type": "boolean", + "optional": true + } + }, + "optional": true + } ] ] }, "loadShader": { "overloads": [ [ - "String|Request", - "String|Request", - "Function?", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Request", + "optional": true + } + ] + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "createShader": { "overloads": [ [ - "String", - "String", - "Object?" + { + "type": "String" + }, + { + "type": "String" + }, + { + "type": "Object", + "optional": true + } ] ] }, "loadFilterShader": { "overloads": [ [ - "String", - "Function?", - "Function?" + { + "type": "String" + }, + { + "type": "Function", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "createFilterShader": { "overloads": [ [ - "String" + { + "type": "String" + } ] ] }, "shader": { "overloads": [ [ - "p5.Shader" + { + "type": "p5.Shader" + } ] ] }, "strokeShader": { "overloads": [ [ - "p5.Shader" + { + "type": "p5.Shader" + } ] ] }, "imageShader": { "overloads": [ [ - "p5.Shader" + { + "type": "p5.Shader" + } ] ] }, @@ -2856,22 +6834,95 @@ "texture": { "overloads": [ [ - "p5.Image|p5.MediaElement|p5.Graphics|p5.Texture|p5.Framebuffer|p5.FramebufferTexture" + { + "type": "union", + "elements": [ + { + "type": "p5.Image", + "optional": true + }, + { + "type": "p5.MediaElement", + "optional": true + }, + { + "type": "p5.Graphics", + "optional": true + }, + { + "type": "p5.Texture", + "optional": true + }, + { + "type": "p5.Framebuffer", + "optional": true + }, + { + "type": "p5.FramebufferTexture", + "optional": true + } + ] + } ] ] }, "textureMode": { "overloads": [ [ - "IMAGE|NORMAL" + { + "type": "union", + "elements": [ + { + "type": "IMAGE", + "optional": true + }, + { + "type": "NORMAL", + "optional": true + } + ] + } ] ] }, "textureWrap": { "overloads": [ [ - "CLAMP|REPEAT|MIRROR", - "CLAMP|REPEAT|MIRROR?" + { + "type": "union", + "elements": [ + { + "type": "CLAMP", + "optional": true + }, + { + "type": "REPEAT", + "optional": true + }, + { + "type": "MIRROR", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "CLAMP", + "optional": true + }, + { + "type": "REPEAT", + "optional": true + }, + { + "type": "MIRROR", + "optional": true + } + ], + "optional": true + } ] ] }, @@ -2883,94 +6934,223 @@ "ambientMaterial": { "overloads": [ [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ], [ - "Number" + { + "type": "Number" + } ], [ - "p5.Color|Number[]|String" + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "emissiveMaterial": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number?" - ], - [ - "Number" - ], - [ - "p5.Color|Number[]|String" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number" + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "specularMaterial": { "overloads": [ [ - "Number", - "Number?" - ], - [ - "Number", - "Number", - "Number", - "Number?" - ], - [ - "p5.Color|Number[]|String" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Color", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "shininess": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "metalness": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "camera": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "perspective": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "linePerspective": { "overloads": [ [ - "Boolean" + { + "type": "Boolean" + } ], [] ] @@ -2978,24 +7158,60 @@ "ortho": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "frustum": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, @@ -3007,33 +7223,50 @@ "setCamera": { "overloads": [ [ - "p5.Camera" + { + "type": "p5.Camera" + } ] ] }, "saveObj": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, "saveStl": { "overloads": [ [ - "String?", - "Object?" + { + "type": "String", + "optional": true + }, + { + "type": "Object", + "optional": true + } ] ] }, "setAttributes": { "overloads": [ [ - "String", - "Boolean" + { + "type": "String" + }, + { + "type": "Boolean" + } ], [ - "Object" + { + "type": "Object" + } ] ] }, @@ -3045,8 +7278,24 @@ "createVideo": { "overloads": [ [ - "String|String[]", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Array", + "element": "String", + "optional": true + } + ] + }, + { + "type": "Function", + "optional": true + } ] ] }, @@ -3054,17 +7303,57 @@ "overloads": [ [], [ - "String|String[]?", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Array", + "element": "String", + "optional": true + } + ], + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] }, "createCapture": { "overloads": [ [ - "AUDIO|VIDEO|Object?", - "Object?", - "Function?" + { + "type": "union", + "elements": [ + { + "type": "AUDIO", + "optional": true + }, + { + "type": "VIDEO", + "optional": true + }, + { + "type": "Object", + "optional": true + } + ], + "optional": true + }, + { + "type": "Object", + "optional": true + }, + { + "type": "Function", + "optional": true + } ] ] } @@ -3098,8 +7387,24 @@ "computeNormals": { "overloads": [ [ - "FLAT|SMOOTH?", - "Object?" + { + "type": "union", + "elements": [ + { + "type": "FLAT", + "optional": true + }, + { + "type": "SMOOTH", + "optional": true + } + ], + "optional": true + }, + { + "type": "Object", + "optional": true + } ] ] }, @@ -3116,9 +7421,27 @@ "vertexProperty": { "overloads": [ [ - "String", - "Number|Number[]", - "Number?" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + } + ] + }, + { + "type": "Number", + "optional": true + } ] ] } @@ -3127,35 +7450,46 @@ "toString": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, "setRed": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "setGreen": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "setBlue": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "setAlpha": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] } @@ -3174,7 +7508,10 @@ "createFramebuffer": { "overloads": [ [ - "Object?" + { + "type": "Object", + "optional": true + } ] ] } @@ -3188,7 +7525,23 @@ "parent": { "overloads": [ [ - "String|p5.Element|Object" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "p5.Element", + "optional": true + }, + { + "type": "Object", + "optional": true + } + ] + } ], [] ] @@ -3197,7 +7550,20 @@ "overloads": [ [], [ - "String|p5.Element?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "p5.Element", + "optional": true + } + ], + "optional": true + } ] ] }, @@ -3205,15 +7571,23 @@ "overloads": [ [], [ - "String?", - "Boolean?" + { + "type": "String", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } ] ] }, "id": { "overloads": [ [ - "String" + { + "type": "String" + } ], [] ] @@ -3221,7 +7595,9 @@ "class": { "overloads": [ [ - "String" + { + "type": "String" + } ], [] ] @@ -3229,35 +7605,42 @@ "addClass": { "overloads": [ [ - "String" + { + "type": "String" + } ] ] }, "removeClass": { "overloads": [ [ - "String" + { + "type": "String" + } ] ] }, "hasClass": { "overloads": [ [ - null + {} ] ] }, "toggleClass": { "overloads": [ [ - null + {} ] ] }, "center": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, @@ -3265,9 +7648,18 @@ "overloads": [ [], [ - "Number?", - "Number?", - "String?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } ] ] }, @@ -3285,19 +7677,61 @@ "overloads": [ [], [ - "Number|AUTO?", - "Number|AUTO?" + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "AUTO", + "optional": true + } + ], + "optional": true + }, + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "AUTO", + "optional": true + } + ], + "optional": true + } ] ] }, "style": { "overloads": [ [ - "String" + { + "type": "String" + } ], [ - "String", - "String|p5.Color" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "p5.Color", + "optional": true + } + ] + } ] ] }, @@ -3305,15 +7739,21 @@ "overloads": [ [], [ - "String", - "String" + { + "type": "String" + }, + { + "type": "String" + } ] ] }, "removeAttribute": { "overloads": [ [ - "String" + { + "type": "String" + } ] ] }, @@ -3321,106 +7761,270 @@ "overloads": [ [], [ - "String|Number" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ] + } ] ] }, "mousePressed": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "doubleClicked": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "mouseWheel": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "mouseReleased": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "mouseClicked": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "mouseMoved": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "mouseOver": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "mouseOut": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "dragOver": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "dragLeave": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "changed": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "input": { "overloads": [ [ - "Function|Boolean" + { + "type": "union", + "elements": [ + { + "type": "Function", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "drop": { "overloads": [ [ - "Function", - "Function?" + { + "type": "Function" + }, + { + "type": "Function", + "optional": true + } ] ] }, "draggable": { "overloads": [ [ - "p5.Element?" + { + "type": "p5.Element", + "optional": true + } ] ] } @@ -3454,7 +8058,10 @@ "autoplay": { "overloads": [ [ - "Boolean?" + { + "type": "Boolean", + "optional": true + } ] ] }, @@ -3462,7 +8069,9 @@ "overloads": [ [], [ - "Number" + { + "type": "Number" + } ] ] }, @@ -3470,7 +8079,9 @@ "overloads": [ [], [ - "Number" + { + "type": "Number" + } ] ] }, @@ -3478,7 +8089,9 @@ "overloads": [ [], [ - "Number" + { + "type": "Number" + } ] ] }, @@ -3490,14 +8103,28 @@ "onended": { "overloads": [ [ - "Function" + { + "type": "Function" + } ] ] }, "connect": { "overloads": [ [ - "AudioNode|Object" + { + "type": "union", + "elements": [ + { + "type": "AudioNode", + "optional": true + }, + { + "type": "Object", + "optional": true + } + ] + } ] ] }, @@ -3519,16 +8146,25 @@ "addCue": { "overloads": [ [ - "Number", - "Function", - "Object?" + { + "type": "Number" + }, + { + "type": "Function" + }, + { + "type": "Object", + "optional": true + } ] ] }, "removeCue": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, @@ -3542,7 +8178,10 @@ "pixelDensity": { "overloads": [ [ - "Number?" + { + "type": "Number", + "optional": true + } ] ] }, @@ -3554,117 +8193,414 @@ "updatePixels": { "overloads": [ [ - "Integer", - "Integer", - "Integer", - "Integer" + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + } ] ] }, "get": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ], [], [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "set": { "overloads": [ [ - "Number", - "Number", - "Number|Number[]|Object" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "Object", + "optional": true + } + ] + } ] ] }, "resize": { "overloads": [ [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "copy": { "overloads": [ [ - "p5.Image|p5.Element", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer" - ], - [ - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer" + { + "type": "union", + "elements": [ + { + "type": "p5.Image", + "optional": true + }, + { + "type": "p5.Element", + "optional": true + } + ] + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + } + ], + [ + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + } ] ] }, "mask": { "overloads": [ [ - "p5.Image" + { + "type": "p5.Image" + } ] ] }, "filter": { "overloads": [ [ - "THRESHOLD|GRAY|OPAQUE|INVERT|POSTERIZE|ERODE|DILATE|BLUR", - "Number?" + { + "type": "union", + "elements": [ + { + "type": "THRESHOLD", + "optional": true + }, + { + "type": "GRAY", + "optional": true + }, + { + "type": "OPAQUE", + "optional": true + }, + { + "type": "INVERT", + "optional": true + }, + { + "type": "POSTERIZE", + "optional": true + }, + { + "type": "ERODE", + "optional": true + }, + { + "type": "DILATE", + "optional": true + }, + { + "type": "BLUR", + "optional": true + } + ] + }, + { + "type": "Number", + "optional": true + } ] ] }, "blend": { "overloads": [ [ - "p5.Image", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "BLEND|DARKEST|LIGHTEST|DIFFERENCE|MULTIPLY|EXCLUSION|SCREEN|REPLACE|OVERLAY|HARD_LIGHT|SOFT_LIGHT|DODGE|BURN|ADD|NORMAL" - ], - [ - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "Integer", - "BLEND|DARKEST|LIGHTEST|DIFFERENCE|MULTIPLY|EXCLUSION|SCREEN|REPLACE|OVERLAY|HARD_LIGHT|SOFT_LIGHT|DODGE|BURN|ADD|NORMAL" + { + "type": "p5.Image" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "union", + "elements": [ + { + "type": "BLEND", + "optional": true + }, + { + "type": "DARKEST", + "optional": true + }, + { + "type": "LIGHTEST", + "optional": true + }, + { + "type": "DIFFERENCE", + "optional": true + }, + { + "type": "MULTIPLY", + "optional": true + }, + { + "type": "EXCLUSION", + "optional": true + }, + { + "type": "SCREEN", + "optional": true + }, + { + "type": "REPLACE", + "optional": true + }, + { + "type": "OVERLAY", + "optional": true + }, + { + "type": "HARD_LIGHT", + "optional": true + }, + { + "type": "SOFT_LIGHT", + "optional": true + }, + { + "type": "DODGE", + "optional": true + }, + { + "type": "BURN", + "optional": true + }, + { + "type": "ADD", + "optional": true + }, + { + "type": "NORMAL", + "optional": true + } + ] + } + ], + [ + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "Integer" + }, + { + "type": "union", + "elements": [ + { + "type": "BLEND", + "optional": true + }, + { + "type": "DARKEST", + "optional": true + }, + { + "type": "LIGHTEST", + "optional": true + }, + { + "type": "DIFFERENCE", + "optional": true + }, + { + "type": "MULTIPLY", + "optional": true + }, + { + "type": "EXCLUSION", + "optional": true + }, + { + "type": "SCREEN", + "optional": true + }, + { + "type": "REPLACE", + "optional": true + }, + { + "type": "OVERLAY", + "optional": true + }, + { + "type": "HARD_LIGHT", + "optional": true + }, + { + "type": "SOFT_LIGHT", + "optional": true + }, + { + "type": "DODGE", + "optional": true + }, + { + "type": "BURN", + "optional": true + }, + { + "type": "ADD", + "optional": true + }, + { + "type": "NORMAL", + "optional": true + } + ] + } ] ] }, "save": { "overloads": [ [ - "String", - "String?" + { + "type": "String" + }, + { + "type": "String", + "optional": true + } ] ] }, @@ -3681,7 +8617,9 @@ "setFrame": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, @@ -3703,8 +8641,13 @@ "delay": { "overloads": [ [ - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ] ] } @@ -3713,21 +8656,28 @@ "addRow": { "overloads": [ [ - "p5.TableRow?" + { + "type": "p5.TableRow", + "optional": true + } ] ] }, "removeRow": { "overloads": [ [ - "Integer" + { + "type": "Integer" + } ] ] }, "getRow": { "overloads": [ [ - "Integer" + { + "type": "Integer" + } ] ] }, @@ -3739,39 +8689,118 @@ "findRow": { "overloads": [ [ - "String", - "Integer|String" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "Integer", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "findRows": { "overloads": [ [ - "String", - "Integer|String" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "Integer", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "matchRow": { "overloads": [ [ - "String|RegExp", - "String|Integer" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "RegExp", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + } ] ] }, "matchRows": { "overloads": [ [ - "String", - "String|Integer?" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ], + "optional": true + } ] ] }, "getColumn": { "overloads": [ [ - "String|Number" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ] + } ] ] }, @@ -3783,7 +8812,10 @@ "addColumn": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, @@ -3800,80 +8832,223 @@ "removeTokens": { "overloads": [ [ - "String", - "String|Integer?" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ], + "optional": true + } ] ] }, "trim": { "overloads": [ [ - "String|Integer?" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ], + "optional": true + } ] ] }, "removeColumn": { "overloads": [ [ - "String|Integer" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + } ] ] }, "set": { "overloads": [ [ - "Integer", - "String|Integer", - "String|Number" + { + "type": "Integer" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ] + } ] ] }, "setNum": { "overloads": [ [ - "Integer", - "String|Integer", - "Number" + { + "type": "Integer" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + }, + { + "type": "Number" + } ] ] }, "setString": { "overloads": [ [ - "Integer", - "String|Integer", - "String" + { + "type": "Integer" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + }, + { + "type": "String" + } ] ] }, "get": { "overloads": [ [ - "Integer", - "String|Integer" + { + "type": "Integer" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + } ] ] }, "getNum": { "overloads": [ [ - "Integer", - "String|Integer" + { + "type": "Integer" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + } ] ] }, "getString": { "overloads": [ [ - "Integer", - "String|Integer" + { + "type": "Integer" + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + } ] ] }, "getObject": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, @@ -3887,45 +9062,161 @@ "set": { "overloads": [ [ - "String|Integer", - "String|Number" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ] + } ] ] }, "setNum": { "overloads": [ [ - "String|Integer", - "Number|String" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + } + ] + } ] ] }, "setString": { "overloads": [ [ - "String|Integer", - "String|Number|Boolean|Object" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Boolean", + "optional": true + }, + { + "type": "Object", + "optional": true + } + ] + } ] ] }, "get": { "overloads": [ [ - "String|Integer" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + } ] ] }, "getNum": { "overloads": [ [ - "String|Integer" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + } ] ] }, "getString": { "overloads": [ [ - "String|Integer" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + } ] ] } @@ -3944,7 +9235,9 @@ "setName": { "overloads": [ [ - "String" + { + "type": "String" + } ] ] }, @@ -3961,28 +9254,57 @@ "getChildren": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, "getChild": { "overloads": [ [ - "String|Integer" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + } ] ] }, "addChild": { "overloads": [ [ - "p5.XML" + { + "type": "p5.XML" + } ] ] }, "removeChild": { "overloads": [ [ - "String|Integer" + { + "type": "union", + "elements": [ + { + "type": "String", + "optional": true + }, + { + "type": "Integer", + "optional": true + } + ] + } ] ] }, @@ -3999,38 +9321,71 @@ "hasAttribute": { "overloads": [ [ - "String" + { + "type": "String" + } ] ] }, "getNum": { "overloads": [ [ - "String", - "Number?" + { + "type": "String" + }, + { + "type": "Number", + "optional": true + } ] ] }, "getString": { "overloads": [ [ - "String", - "Number?" + { + "type": "String" + }, + { + "type": "Number", + "optional": true + } ] ] }, "setAttribute": { "overloads": [ [ - "String", - "Number|String|Boolean" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "String", + "optional": true + }, + { + "type": "Boolean", + "optional": true + } + ] + } ] ] }, "getContent": { "overloads": [ [ - "String?" + { + "type": "String", + "optional": true + } ] ] }, @@ -4044,27 +9399,55 @@ "getValue": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "setValue": { "overloads": [ [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "set": { "overloads": [ [ - "Number?", - "Number?", - "Number?" - ], - [ - "p5.Vector|Number[]" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Vector", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + } + ] + } ] ] }, @@ -4072,122 +9455,283 @@ "overloads": [ [], [ - "p5.Vector" + { + "type": "p5.Vector" + } ] ] }, "add": { "overloads": [ [ - "Number|Array", - "Number?", - "Number?" - ], - [ - "p5.Vector|Number[]" - ], - [ - "p5.Vector", - "p5.Vector", - "p5.Vector?" + { + "type": "union", + "elements": [ + { + "type": "Number", + "optional": true + }, + { + "type": "Array", + "optional": true + } + ] + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Vector", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + } + ] + } + ], + [ + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector", + "optional": true + } ] ] }, "rem": { "overloads": [ [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ], [ - "p5.Vector|Number[]" + { + "type": "union", + "elements": [ + { + "type": "p5.Vector", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + } + ] + } ], [ - "p5.Vector", - "p5.Vector" + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + } ] ] }, "sub": { "overloads": [ [ - "Number", - "Number?", - "Number?" - ], - [ - "p5.Vector|Number[]" - ], - [ - "p5.Vector", - "p5.Vector", - "p5.Vector?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Vector", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + } + ] + } + ], + [ + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector", + "optional": true + } ] ] }, "mult": { "overloads": [ [ - "Number", - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "Number[]" + { + "type": "Array", + "element": "Number" + } ], [ - "p5.Vector" + { + "type": "p5.Vector" + } ], [], [ - "p5.Vector", - "Number", - "p5.Vector?" - ], - [ - "p5.Vector", - "p5.Vector", - "p5.Vector?" - ], - [ - "p5.Vector", - "Number[]", - "p5.Vector?" + { + "type": "p5.Vector" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector", + "optional": true + } + ], + [ + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector", + "optional": true + } + ], + [ + { + "type": "p5.Vector" + }, + { + "type": "Array", + "element": "Number" + }, + { + "type": "p5.Vector", + "optional": true + } ] ] }, "div": { "overloads": [ [ - "Number" + { + "type": "Number" + } ], [ - "Number", - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ], [ - "Number[]" + { + "type": "Array", + "element": "Number" + } ], [ - "p5.Vector" + { + "type": "p5.Vector" + } ], [], [ - "p5.Vector", - "Number", - "p5.Vector?" - ], - [ - "p5.Vector", - "p5.Vector", - "p5.Vector?" - ], - [ - "p5.Vector", - "Number[]", - "p5.Vector?" + { + "type": "p5.Vector" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector", + "optional": true + } + ], + [ + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector", + "optional": true + } + ], + [ + { + "type": "p5.Vector" + }, + { + "type": "Array", + "element": "Number" + }, + { + "type": "p5.Vector", + "optional": true + } ] ] }, @@ -4195,7 +9739,9 @@ "overloads": [ [], [ - "p5.Vector" + { + "type": "p5.Vector" + } ] ] }, @@ -4203,36 +9749,58 @@ "overloads": [ [], [ - "p5.Vector" + { + "type": "p5.Vector" + } ] ] }, "dot": { "overloads": [ [ - "Number", - "Number?", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ], [ - "p5.Vector" + { + "type": "p5.Vector" + } ], [], [ - "p5.Vector", - "p5.Vector" + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + } ] ] }, "cross": { "overloads": [ [ - "p5.Vector" + { + "type": "p5.Vector" + } ], [], [ - "p5.Vector", - "p5.Vector" + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + } ] ] }, @@ -4240,34 +9808,57 @@ "overloads": [ [], [ - "p5.Vector", - "p5.Vector?" + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector", + "optional": true + } ] ] }, "limit": { "overloads": [ [ - "Number" + { + "type": "Number" + } ], [], [ - "p5.Vector", - "Number", - "p5.Vector?" + { + "type": "p5.Vector" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector", + "optional": true + } ] ] }, "setMag": { "overloads": [ [ - "Number" + { + "type": "Number" + } ], [], [ - "p5.Vector", - "Number", - "p5.Vector?" + { + "type": "p5.Vector" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector", + "optional": true + } ] ] }, @@ -4275,88 +9866,150 @@ "overloads": [ [], [ - "p5.Vector" + { + "type": "p5.Vector" + } ] ] }, "setHeading": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "rotate": { "overloads": [ [ - "Number" + { + "type": "Number" + } ], [], [ - "p5.Vector", - "Number", - "p5.Vector?" + { + "type": "p5.Vector" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector", + "optional": true + } ] ] }, "angleBetween": { "overloads": [ [ - "p5.Vector" + { + "type": "p5.Vector" + } ], [], [ - "p5.Vector", - "p5.Vector" + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + } ] ] }, "lerp": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ], [ - "p5.Vector", - "Number" + { + "type": "p5.Vector" + }, + { + "type": "Number" + } ], [], [ - "p5.Vector", - "p5.Vector", - "Number", - "p5.Vector?" + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector", + "optional": true + } ] ] }, "slerp": { "overloads": [ [ - "p5.Vector", - "Number" + { + "type": "p5.Vector" + }, + { + "type": "Number" + } ], [], [ - "p5.Vector", - "p5.Vector", - "Number", - "p5.Vector?" + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + }, + { + "type": "Number" + }, + { + "type": "p5.Vector", + "optional": true + } ] ] }, "reflect": { "overloads": [ [ - "p5.Vector" + { + "type": "p5.Vector" + } ], [], [ - "p5.Vector", - "p5.Vector", - "p5.Vector?" + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector", + "optional": true + } ] ] }, @@ -4364,41 +10017,100 @@ "overloads": [ [], [ - "p5.Vector" + { + "type": "p5.Vector" + } ] ] }, "equals": { "overloads": [ [ - "Number?", - "Number?", - "Number?" - ], - [ - "p5.Vector|Array" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } + ], + [ + { + "type": "union", + "elements": [ + { + "type": "p5.Vector", + "optional": true + }, + { + "type": "Array", + "optional": true + } + ] + } ], [], [ - "p5.Vector|Array", - "p5.Vector|Array" + { + "type": "union", + "elements": [ + { + "type": "p5.Vector", + "optional": true + }, + { + "type": "Array", + "optional": true + } + ] + }, + { + "type": "union", + "elements": [ + { + "type": "p5.Vector", + "optional": true + }, + { + "type": "Array", + "optional": true + } + ] + } ] ] }, "fromAngle": { "overloads": [ [ - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ] ] }, "fromAngles": { "overloads": [ [ - "Number", - "Number", - "Number?" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + } ] ] }, @@ -4416,8 +10128,12 @@ "overloads": [ [], [ - "p5.Vector", - "p5.Vector" + { + "type": "p5.Vector" + }, + { + "type": "p5.Vector" + } ] ] } @@ -4426,44 +10142,100 @@ "textToPaths": { "overloads": [ [ - "String", - "Number", - "Number", - "Number?", - "Number?", - "Object?" + { + "type": "String" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Object", + "optional": true + } ] ] }, "textToPoints": { "overloads": [ [ - "String", - "Number", - "Number", - "Object?" + { + "type": "String" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Object", + "optional": true + } ] ] }, "textToContours": { "overloads": [ [ - "String", - "Number", - "Number", - "Object?" + { + "type": "String" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Object", + "optional": true + } ] ] }, "textToModel": { "overloads": [ [ - "String", - "Number", - "Number", - "Number", - "Number", - "Object?" + { + "type": "String" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Object", + "properties": { + "extrude": { + "type": "Number", + "optional": true + }, + "sampleFactor": { + "type": "Number", + "optional": true + } + }, + "optional": true + } ] ] } @@ -4472,106 +10244,211 @@ "perspective": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "ortho": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "frustum": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "pan": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "tilt": { "overloads": [ [ - "Number" + { + "type": "Number" + } ] ] }, "lookAt": { "overloads": [ [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "camera": { "overloads": [ [ - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?", - "Number?" + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Number", + "optional": true + } ] ] }, "move": { "overloads": [ [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "setPosition": { "overloads": [ [ - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "set": { "overloads": [ [ - "p5.Camera" + { + "type": "p5.Camera" + } ] ] }, "slerp": { "overloads": [ [ - "p5.Camera", - "p5.Camera", - "Number" + { + "type": "p5.Camera" + }, + { + "type": "p5.Camera" + }, + { + "type": "Number" + } ] ] } @@ -4580,22 +10457,32 @@ "resize": { "overloads": [ [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ] ] }, "pixelDensity": { "overloads": [ [ - "Number?" + { + "type": "Number", + "optional": true + } ] ] }, "autoSized": { "overloads": [ [ - "Boolean?" + { + "type": "Boolean", + "optional": true + } ] ] }, @@ -4622,22 +10509,36 @@ "draw": { "overloads": [ [ - "Function" + { + "type": "Function" + } ] ] }, "get": { "overloads": [ [ - "Number", - "Number", - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + }, + { + "type": "Number" + } ], [], [ - "Number", - "Number" + { + "type": "Number" + }, + { + "type": "Number" + } ] ] } @@ -4656,22 +10557,72 @@ "modify": { "overloads": [ [ - "Object?" + { + "type": "Object", + "optional": true + } ] ] }, "copyToContext": { "overloads": [ [ - "p5|p5.Graphics" + { + "type": "union", + "elements": [ + { + "type": "p5", + "optional": true + }, + { + "type": "p5.Graphics", + "optional": true + } + ] + } ] ] }, "setUniform": { "overloads": [ [ - "String", - "Boolean|Number|Number[]|p5.Image|p5.Graphics|p5.MediaElement|p5.Texture" + { + "type": "String" + }, + { + "type": "union", + "elements": [ + { + "type": "Boolean", + "optional": true + }, + { + "type": "Number", + "optional": true + }, + { + "type": "Array", + "element": "Number", + "optional": true + }, + { + "type": "p5.Image", + "optional": true + }, + { + "type": "p5.Graphics", + "optional": true + }, + { + "type": "p5.MediaElement", + "optional": true + }, + { + "type": "p5.Texture", + "optional": true + } + ] + } ] ] } diff --git a/src/core/friendly_errors/param_validator.js b/src/core/friendly_errors/param_validator.js index d4fc78830a..47618fef5f 100644 --- a/src/core/friendly_errors/param_validator.js +++ b/src/core/friendly_errors/param_validator.js @@ -142,9 +142,9 @@ function validateParams(p5, fn, lifecycles) { */ fn.generateZodSchemasForFunc = function (func) { const { funcName, funcClass } = extractFuncNameAndClass(func); - let funcInfo = dataDoc[funcClass][funcName]; + let funcInfo = dataDoc?.[funcClass]?.[funcName]; - if(!funcInfo) return; + if (!funcInfo) return; let overloads = []; if (funcInfo.hasOwnProperty('overloads')) { @@ -206,12 +206,25 @@ function validateParams(p5, fn, lifecycles) { // our constants sometimes have numeric or non-primitive values. // 2) In some cases, the type can be constants or strings, making z.enum() // insufficient for the use case. - else if (baseType.includes('|') && baseType.split('|').every(t => validBracketNesting(t))) { - const types = baseType.split('|'); - typeSchema = z.union(types - .map(t => generateTypeSchema(t)) - .filter(s => s !== undefined)); - } else if (baseType.endsWith('[]')) { + else if (baseType.includes('|') && baseType.split('|').every(validBracketNesting)) { + const types = baseType.split('|').map(t => t.trim()); // Trim whitespace + + const schemas = types.map(type => { + try { + return generateTypeSchema(type); + } catch (e) { + console.warn(`Error generating schema for union type: ${type}`, e); + return undefined; + } + }).filter(Boolean); + + if (schemas.length === 0) { + throw new Error(`Unable to generate schema for union type: ${baseType}`); + } + + typeSchema = z.union(schemas); + } + else if (baseType.endsWith('[]')) { typeSchema = z.array(generateTypeSchema(baseType.slice(0, -2))); } else { throw new Error(`Unsupported type '${baseType}' in parameter validation. Please report this issue.`); @@ -223,18 +236,85 @@ function validateParams(p5, fn, lifecycles) { // Generate a schema for a single parameter. In the case where a parameter can // be of multiple types, `generateTypeSchema` is called for each type. const generateParamSchema = param => { - const isOptional = param?.endsWith('?'); - param = param?.replace(/\?$/, ''); + // If param is not an object, return a generic schema. + if (!param || typeof param !== 'object') return z.any(); - const isRest = param?.startsWith('...') && param?.endsWith('[]'); - param = param?.replace(/^\.\.\.(.+)\[\]$/, '$1'); + /** + * Recursively builds a Zod schema from a type descriptor object. + * + * @param {object} typeObj - An object describing the type. + * @returns {ZodType} - A Zod schema representing the type. + */ + const buildSchema = typeObj => { + if (!typeObj || typeof typeObj !== 'object' || !typeObj.type) return z.any(); + + let schema; + + switch (typeObj.type) { + // Direct mappings from type names to Zod schemas + case "String": + case "Number": + case "Boolean": + case "Function": + case "Object": + case "Integer": + schema = schemaMap[typeObj.type]; + break; - let schema = generateTypeSchema(param); - if (isOptional) { - schema = schema.optional(); - } - return { schema, rest: isRest }; - }; + // Array type handling + case "Array": + if (typeObj.element) { + // Handle element type recursively or through direct map + let elementSchema; + if (typeof typeObj.element === 'string') { + elementSchema = schemaMap[typeObj.element] || z.any(); + } else { + elementSchema = buildSchema(typeObj.element); + } + schema = z.array(elementSchema); + } else { + schema = z.array(z.any()); + } + break; + + // Union type handling + case "union": + schema = z.union(typeObj.elements.map(buildSchema)); + break; + + // Tuple type handling + case "Tuple": + schema = z.tuple(typeObj.elements.map(buildSchema)); + break; + + default: + // Literal constant mapping if defined in constantsMap + if (constantsMap.hasOwnProperty(typeObj.type)) { + schema = z.literal(constantsMap[typeObj.type]); + } + // Handle p5.js custom class instance types + else if (typeObj.type.startsWith('p5.')) { + const className = typeObj.type.split('.')[1]; + schema = z.instanceof(p5Constructors[className]); + } + // Fallback to known types or generic + else if (schemaMap[typeObj.type]) { + schema = schemaMap[typeObj.type]; + } else { + schema = z.any(); + } + } + + // Mark schema as optional if specified + if (typeObj.optional) { + schema = schema.optional(); + } + + return schema; + }; + + return { schema: buildSchema(param), rest: param.rest }; +}; // Note that in Zod, `optional()` only checks for undefined, not the absence // of value. @@ -248,21 +328,20 @@ function validateParams(p5, fn, lifecycles) { // Therefore, on top of using `optional()`, we also have to generate parameter // combinations that are valid for all numbers of parameters. const generateOverloadCombinations = params => { - // No optional parameters, return the original parameter list right away. - if (!params.some(p => p?.endsWith('?'))) { - return [params]; - } - - const requiredParamsCount = params.filter(p => p === null || !p.endsWith('?')).length; const result = []; - for (let i = requiredParamsCount; i <= params.length; i++) { + const requiredCount = params.findIndex(p => p.optional); + if (requiredCount === -1) return [params]; + + result.push([]); // support empty if all are optional + for (let i = requiredCount; i <= params.length; i++) { result.push(params.slice(0, i)); } - return result; }; + + // Generate schemas for each function overload and merge them const overloadSchemas = overloads.flatMap(overload => { const combinations = generateOverloadCombinations(overload); @@ -390,7 +469,9 @@ function validateParams(p5, fn, lifecycles) { // Helper function to build a type mismatch message. const buildTypeMismatchMessage = (actualType, expectedTypeStr, position) => { - const positionStr = position ? `at the ${ordinals[position]} parameter` : ''; + const positionStr = (position !== null && position !== undefined && ordinals[position]) + ? `at the ${ordinals[position]} parameter` + : ''; const actualTypeStr = actualType ? `, but received ${actualType}` : ''; return `Expected ${expectedTypeStr} ${positionStr}${actualTypeStr}`; } @@ -426,16 +507,17 @@ function validateParams(p5, fn, lifecycles) { }); if (expectedTypes.size > 0) { - if (error.path?.length > 0 && args[error.path[0]] instanceof Promise) { + if (error.path?.length > 0 && args[error.path[0]] instanceof Promise) { message += 'Did you mean to put `await` before a loading function? ' + 'An unexpected Promise was found. '; isVersionError = true; } const expectedTypesStr = Array.from(expectedTypes).join(' or '); - const position = error.path.join('.'); + const position = error.path.length > 0 ? error.path[0] : null; message += buildTypeMismatchMessage(actualType, expectedTypesStr, position); + message += ` in ${func}().`; } return message; @@ -443,8 +525,7 @@ function validateParams(p5, fn, lifecycles) { switch (currentError.code) { case 'invalid_union': { - processUnionError(currentError); - break; + return processUnionError(currentError); } case 'too_small': { const minArgs = currentError.minimum; @@ -452,9 +533,14 @@ function validateParams(p5, fn, lifecycles) { break; } case 'invalid_type': { - message += buildTypeMismatchMessage(currentError.received, currentError.expected, currentError.path.join('.')); - break; + let position = null; + if (currentError.path.length > 0) { + position = currentError.path[0]; + } + const received = currentError.received ?? (Array.isArray(args[position]) ? 'array' : typeof args[position]); + return message + buildTypeMismatchMessage(received, currentError.expected, position) + ` in ${func}().`; } + case 'too_big': { const maxArgs = currentError.maximum; message += `Expected at most ${maxArgs} argument${maxArgs > 1 ? 's' : ''}, but received more`; @@ -529,10 +615,9 @@ function validateParams(p5, fn, lifecycles) { let funcSchemas = schemaRegistry.get(func); if (!funcSchemas) { funcSchemas = fn.generateZodSchemasForFunc(func); - if (!funcSchemas) return; + if (!funcSchemas) return schemaRegistry.set(func, funcSchemas); } - try { return { success: true, @@ -550,15 +635,15 @@ function validateParams(p5, fn, lifecycles) { } }; - lifecycles.presetup = function(){ + lifecycles.presetup = function () { loadP5Constructors(); const excludes = ['validate']; - for(const f in this){ - if(!excludes.includes(f) && !f.startsWith('_') && typeof this[f] === 'function'){ + for (const f in this) { + if (!excludes.includes(f) && !f.startsWith('_') && typeof this[f] === 'function') { const copy = this[f]; - this[f] = function(...args) { + this[f] = function (...args) { this.validate(f, args); return copy.call(this, ...args); }; @@ -571,4 +656,4 @@ export default validateParams; if (typeof p5 !== 'undefined') { validateParams(p5, p5.prototype); -} +} \ No newline at end of file diff --git a/utils/convert.mjs b/utils/convert.mjs index 9fb921c2a2..5ea2005b60 100644 --- a/utils/convert.mjs +++ b/utils/convert.mjs @@ -39,7 +39,7 @@ function descriptionString(node, parent) { classes.push(node.meta); } if (classes.length > 0) { - attrs=` class="${classes.join(' ')}"`; + attrs = ` class="${classes.join(' ')}"`; } return `
${node.value}
`; } else if (node.type === 'inlineCode') { @@ -85,11 +85,21 @@ function typeObject(node) { } else if (node.type === 'UndefinedLiteral') { return { type: 'undefined' }; } else if (node.type === 'FunctionType') { - let signature = `function(${node.params.map(p => typeObject(p).type).join(', ')})`; - if (node.result) { - signature += `: ${typeObject(node.result).type}`; - } - return { type: signature }; + // Map each parameter node to its type representation. + const parameters = node.params.map(p => typeObject(p)); + + // If a return type exists, extract its type; otherwise leave undefined. + const returnType = node.result ? typeObject(node.result).type : undefined; + + // Return a structured representation of the function type: + // - 'type' is a label indicating it's a function + // - 'parameters' is an array of parameter type objects + // - 'returnType' is included only if it's defined + return { + type: 'Function', + parameters, + ...(returnType && { returnType }) // conditionally include returnType + }; } else if (node.type === 'ArrayType') { return { type: `[${node.elements.map(e => typeObject(e).type).join(', ')}]` }; } else if (node.type === 'RestType') { @@ -231,24 +241,55 @@ function getParams(entry) { // instead convert it to a string. We want a slightly different conversion to // string, so we match these params to the Documentation.js-provided `params` // array and grab the description from those. - return (entry.tags || []) - - // Filter out the nested parameters (eg. options.extrude), - // to be treated as part of parent parameters (eg. options) - // and not separate entries - .filter(t => t.title === 'param' && !t.name.includes('.')) - .map(node => { - const param = (entry.params || []).find(param => param.name === node.name); - return { - ...node, - description: param?.description || { - type: 'html', - value: node.description + + const paramsMap = {}; + + // Build a nested parameter structure from tag names like "options.width" + for (const tag of (entry.tags || [])) { + if (tag.title !== 'param') continue; + + const path = tag.name.split('.'); + const typeInfo = typeObject(tag.type); + + let current = paramsMap; + + for (let i = 0; i < path.length; i++) { + const key = path[i]; + + if (i === path.length - 1) { + // Leaf node: assign the type info directly + current[key] = { ...typeInfo }; + + // If the param is a function, populate parameters explicitly (only if not already done) + if ( + typeInfo.type === 'Function' && + !current[key].parameters && + tag.type?.expression?.type === 'FunctionType' + ) { + current[key].parameters = tag.type.expression.params.map(p => typeObject(p)); } - }; - }); + + } else { + // Intermediate node: create object structure for nested params + current[key] = current[key] || { type: 'Object', optional: true, properties: {} }; + + // Ensure properties object exists + if (!current[key].properties) { + current[key].properties = {}; + } + + // Traverse deeper + current = current[key].properties; + } + } + } + + // Flatten top-level entries into an array, preserving name + return Object.entries(paramsMap).map(([key, val]) => ({ name: key, ...val })); } + + // ============================================================================ // Constants // ============================================================================ @@ -292,13 +333,10 @@ for (const entry of allData) { description: descriptionString(entry.description), example: entry.examples.map(getExample), alt: getAlt(entry), - params: getParams(entry).map(p => { - return { - name: p.name, - description: p.description && descriptionString(p.description), - ...typeObject(p.type) - }; - }), + + // getParams(entry) returns full structured and formatted parameter Objects + params: getParams(entry), + return: entry.returns[0] && { description: descriptionString(entry.returns[0].description), ...typeObject(entry.returns[0].type) @@ -458,13 +496,8 @@ for (const entry of allData) { overloads: [ ...(prevItem.overloads || []), { - params: getParams(entry).map(p => { - return { - name: p.name, - description: p.description && descriptionString(p.description), - ...typeObject(p.type) - }; - }), + // getParams(entry) returns full structured and formatted parameter Objects + params: getParams(entry), return: entry.returns[0] && { description: descriptionString(entry.returns[0].description), ...typeObject(entry.returns[0].type) @@ -512,51 +545,166 @@ function cleanUpClassItems(data) { } } - // Reduce the amount of information in each function's overloads, while - // keeping all the essential data available. - const flattenOverloads = funcObj => { + // Recursively processes a parameter object to normalize its structure. + // Handles function types, rest parameters, union types, array tuples, and nested properties. + const processParam = param => { const result = {}; - const processOverload = overload => { - if (overload.params) { - return Object.values(overload.params).map(param => processParam(param)); + if (!param.type) return result; + + // Handle function parameters + if (param.type === 'Function') { + result.type = 'Function'; + + if (param.parameters) { + // Convert numeric-keyed object or array to array of processed params + if (Array.isArray(param.parameters)) { + result.parameters = param.parameters.map(processParam); + } else if (typeof param.parameters === 'object') { + result.parameters = Object.values(param.parameters).map(processParam); + } } - return overload; + + if (param.optional) result.optional = true; + if (param.rest) result.rest = true; + return result; } - // To simplify `parameterData.json`, instead of having a separate field for - // optional parameters, we'll add a ? to the end of parameter type to - // indicate that it's optional. - const processParam = param => { - let type = param.type; - if (param.optional) { - type += '?'; + // Handle rest parameters (e.g., "...string[]") + let typeStr = param.type; + if (typeStr.startsWith('...')) { + result.rest = true; + typeStr = typeStr.slice(3); + if (typeStr.endsWith('[]')) { + typeStr = typeStr.slice(0, -2); } - if (param.rest) { - type = `...${type}[]`; + } + + // Parse union type strings + const parseUnion = unionStr => { + const parts = []; + let current = ''; + let bracketDepth = 0; + + for (const ch of unionStr) { + if (ch === '[') bracketDepth++; + if (ch === ']') bracketDepth--; + if (ch === '|' && bracketDepth === 0) { + parts.push(current.trim()); + current = ''; + } else { + current += ch; + } + } + if (current) parts.push(current.trim()); + + return parts.map(part => { + const arrayMatch = part.match(/^(.+)\[\]$/); + if (arrayMatch) { + return { + type: "Array", + element: arrayMatch[1], + optional: true + }; + } + return { + type: part, + optional: true + }; + }); + }; + + // Handle array of tuples (e.g., [number, string][]) + const arrayTupleMatch = typeStr.match(/^\[(.+)\]\[\]$/); + if (arrayTupleMatch) { + const tupleStr = arrayTupleMatch[1]; + const elements = []; + let current = ''; + let depth = 0; + + for (let i = 0; i < tupleStr.length; i++) { + const ch = tupleStr[i]; + if (ch === '[') depth++; + if (ch === ']') depth--; + if (ch === ',' && depth === 0) { + elements.push(current.trim()); + current = ''; + } else { + current += ch; + } + } + if (current) elements.push(current.trim()); + + result.type = "Array"; + result.element = { + type: "Tuple", + elements: elements.map(el => { + if (el.includes('|')) { + return { + type: "union", + elements: parseUnion(el) + }; + } else if (el.endsWith('[]')) { + return { + type: "Array", + element: el.slice(0, -2), + optional: true + }; + } else { + return { type: el }; + } + }) + }; + } else if (typeStr.includes('|')) { + // Handle union types + result.type = "union"; + result.elements = parseUnion(typeStr); + } else if (typeStr.match(/^(.+)\[\]$/)) { + // Handle simple arrays + const match = typeStr.match(/^(.+)\[\]$/); + result.type = "Array"; + result.element = match[1]; + } else { + // Simple type + result.type = typeStr; + } + + // Handle nested object properties + if (param.properties) { + result.properties = {}; + for (const [key, val] of Object.entries(param.properties)) { + result.properties[key] = processParam(val); } - return type; } - // In some cases, even when the arguments are intended to mean different - // things, their types and order are identical. Since the exact meaning - // of the arguments is less important for parameter validation, we'll - // perform overload deduplication here. + if (param.optional) result.optional = true; + if (param.rest) result.rest = true; + + return result; + }; + + // Normalizes function overloads and removes duplicate signatures. + const flattenOverloads = funcObj => { + const result = {}; + const removeDuplicateOverloads = (overload, uniqueOverloads) => { const overloadString = JSON.stringify(overload); - if (uniqueOverloads.has(overloadString)) { - return false; - } + if (uniqueOverloads.has(overloadString)) return false; uniqueOverloads.add(overloadString); return true; - } + }; for (const [key, value] of Object.entries(funcObj)) { if (value && typeof value === 'object' && value.overloads) { const uniqueOverloads = new Set(); + result[key] = { - overloads: Object.values(value.overloads) - .map(overload => processOverload(overload)) + overloads: Object.values(value.overloads || {}) + .map(overload => { + return Array.isArray(overload.params) + ? overload.params.map(processParam) + : Object.values(overload.params || {}).map(processParam); + }) .filter(overload => removeDuplicateOverloads(overload, uniqueOverloads)) }; } else { @@ -567,6 +715,7 @@ function cleanUpClassItems(data) { return result; }; + // Apply flattenOverloads to each class item for (const classItem in data) { if (typeof data[classItem] === 'object') { data[classItem] = flattenOverloads(data[classItem]); @@ -575,41 +724,51 @@ function cleanUpClassItems(data) { return data; } - +/** + * Builds a filtered and simplified representation of documented class items. + * Only includes items with overloads and required fields. + * + * @param {Object} docs - Documentation object containing classitems. + * @returns {Object} Cleaned class items grouped by class and name. + */ function buildParamDocs(docs) { - let newClassItems = {}; - // the fields we need—note that `name` and `class` are needed at this step because it's used to group classitems together. They will be removed later in cleanUpClassItems. - let allowed = new Set(['name', 'class', 'params', 'overloads']); + const newClassItems = {}; + const allowed = new Set(['name', 'class', 'params', 'overloads']); - for (let classitem of docs.classitems) { - // If `classitem` doesn't have overloads, then it's not a function—skip processing in this case + for (const classitem of docs.classitems) { + // Skip non-function class items (those without overloads) if (classitem.name && classitem.class && classitem.hasOwnProperty('overloads')) { - // Skip if the item already exists in newClassItems - if (newClassItems[classitem.class] && newClassItems[classitem.class][classitem.name]) { + // Skip if already processed + if (newClassItems[classitem.class]?.[classitem.name]) { continue; } - // Clean up fields that will not be used in each classitem's overloads + // Normalize overloads classitem.overloads?.forEach(overload => { + if (overload.params && !Array.isArray(overload.params)) { + overload.params = Object.values(overload.params); + } + delete overload.line; delete overload.return; + overload.params.forEach(param => { delete param.description; delete param.name; }); }); + // Retain only allowed fields Object.keys(classitem).forEach(key => { if (!allowed.has(key)) delete classitem[key]; }); + // Group by class and function name newClassItems[classitem.class] = newClassItems[classitem.class] || {}; newClassItems[classitem.class][classitem.name] = classitem; } } - const cleanedClassItems = cleanUpClassItems(newClassItems); - let out = fs.createWriteStream( path.join(__dirname, '../docs/parameterData.json'), { @@ -617,6 +776,7 @@ function buildParamDocs(docs) { mode: '0644' } ); + out.write(JSON.stringify(cleanedClassItems, null, 2)); out.end(); }