export default ({type, value}) => {
    if (type !== 'word') {
        return false;
    }
    if (value[0] === '-') {
        if (/[0-9]/.test(value[1])) {
            return false;
        }
        if (value[1] === '-' && value[2] !== '-') {
            return false;
        }
        return true;
    }
    return !/[0-9]/.test(value[0]);
};

export const type = 'node';

@@ -1,12 +1,280 @@
+function isInvalid (value) %7B%0A    return /%5B%5Ea-z0-9_-%5D/ig.test(value);%0A%7D%0A%0Afunction isCodepoint (value) %7B%0A    return /%5C%5Cu%5Ba-f0-9%5D%7B1,6%7D/ig.test(value) %7C%7C /%5C%5C%5Ba-f0-9%5D%7B1,6%7D/ig.test(value);%0A%7D%0A%0Afunction isValid (value) %7B%0A    return !isInvalid(value) %7C%7C isCodepoint(value);%0A%7D%0A%0A
 export defau
@@ -561,12 +561,22 @@
 urn 
-tr
+isValid(val
 ue
+)
 ;%0A  
@@ -613,16 +613,34 @@
 alue%5B0%5D)
+ && isValid(value)
 ;%0A%7D;%0A%0Aex

Update isCustomIdent validator.