static get type() {

		return 'ScriptableNode';

	}
This type of node allows to implement nodes with custom scripts. The script
section is represented as an instance of `CodeNode` written with JavaScript.
The script itself must adhere to a specific structure.

- main(): Executed once by default and every time `node.needsUpdate` is set.
- layout: The layout object defines the script's interface (inputs and outputs).

```js
ScriptableNodeResources.set( 'TSL', TSL );

const scriptableNode = scriptable( js( `
	layout = {
		outputType: 'node',
		elements: [
			{ name: 'source', inputType: 'node' },
		]
	};

	const { mul, oscSine } = TSL;

	function main() {
		const source = parameters.get( 'source' ) || float();
		return mul( source, oscSine() ) );
	}

` ) );

scriptableNode.setParameter( 'source', color( 1, 0, 0 ) );

const material = new THREE.MeshBasicNodeMaterial();
material.colorNode = scriptableNode;
```

@augments Node