js aop library