apache / incubator-annotator

Apache Annotator provides annotation enabling code for browsers, servers, and humans.
https://annotator.apache.org/
Apache License 2.0
218 stars 44 forks source link

Data Model validation as API #133

Open PermissionError opened 1 year ago

PermissionError commented 1 year ago

Currently yarn validate --url <url> can be used to validate JSON documents against the Web Annotation Data Model schema. This is achieved through executing test/data-model.test.ts. I'm wondering if this should/could be included as API somewhere? An example use case would be where a server may wish to validate uploaded annotation data against the schema. I am aware that this probably doesn't fall into either the dom or selector package, but since the code is already there, it seems like a waste to not to include it in a more developer-friendly form. Perhaps in a new util package? It should be relatively trivial, and I could take that on.

Treora commented 1 year ago

Generally “since the code is already there” seems a weak argument to do more work on that code (if it is of little use, it might better be dropped altogether). In this case, there may indeed be some value, and combined with other utilities around the WA data model it could be material for a separate package indeed.

Coincidentally, I was recently thinking to suggest creating such a package (I thought to call it @apache-annotator/annotation), to incorporate some code from this module that I had made to satisfy my own needs. I don’t know if I’ll get back to it soon, so I just pushed some my work-in-progress, see #137.

If we end up adding this package, that would be a good home for the validation test too. We should also ensure that the TypeScript type I introduce there corresponds to the validation tests. (ideally we would deduplicate things and generate both the type and validator at once from a specification..)