util: add isPrimitive