Doesn't look like there is anything in the JS API to help with that so here's what I came up with.
let sketch = require('sketch')
let document = sketch.getSelectedDocument()
let selection = document.selectedLayers.layers[0]
let mask = findMask(selection)
let intersection = intersectRect(mask,selection)
function findMask(layer) {
// ensure selected object actually is masked
if (!layer.sketchObject.isMasked()) { return nil }
let objectIndex = selection.index
let parent = selection.parent
// remove all layers above selected object
// as the masking layer is always below
let possibleLayers = parent.layers.slice(0,objectIndex)
// loop down through next layers to find the closest mask object
for (let i=possibleLayers.length-1; i >= 0; i--) {
if (possibleLayers[i].sketchObject.hasClippingMask()) {
return possibleLayers[i]
}
}
return false
}
function intersectRect(layer1,layer2) {
return CGRectIntersection(
layer1.sketchObject.rect(),
layer2.sketchObject.rect())
}