index.js 616 B

1234567891011121314151617181920212223242526272829303132
  1. 'use strict';
  2. const parsers = [
  3. ...require('./event'),
  4. ...require('./report'),
  5. ...require('./poll'),
  6. ...require('./register-party'),
  7. ];
  8. async function parse(input) {
  9. for (const parser of parsers) {
  10. if (await parser.canParse(input)) {
  11. return await parser.parse(input);
  12. }
  13. }
  14. throw new Error(`No parser for input: ${input}`);
  15. }
  16. function serialize(message) {
  17. for (const parser of parsers) {
  18. if (parser.canSerialize(message)) {
  19. return parser.serialize(message);
  20. }
  21. }
  22. throw new Error(`No serializer for message: ${message}`);
  23. }
  24. module.exports = {
  25. parse,
  26. serialize,
  27. };