chore(*): move to service directory
feat(provider): add provider pattern
feat(sub): add off function
feat(sub): add once function