Fully customization of BPMN code

I want to ask few questions regaridng the customisation of all the BPMN JS code:-
1- I want to start from scratch and I want to add mutliple things (like diff. events etc.) which is not in the BPMN, can I add ?
1- Is there any proper documentation to understand the JS code (in which BMPN has been written) of BPMN library ?
2- Can we change the JS code wrt our requirements ?

What tool do you want to build? How is it related to BPMN?