feat(library/definitional/projection): add projection generator, closes #257