The code in here is shared among the scout services
Basics
the folder common is published on npm registry in a public organisation (everybody can see code)
the common lib is also part of a seperate git repo (required by npm to have seperate git repo)
to login to npm before pushing lib, run `npm login'
to push lib, run npm publish --access public
the libs in the common lib are written in typescript but published in JS to guarantee compatibility
Publish process
Commit changes to git
increase package version tag by running npm version patch or setting it manually in package.json
run npm run build
depending on the operating system, you may need to change the del-cli cmd in package.json clean script
run npm publish
install or update the common lib in services: npm [install|update] @pauls_ticket_sales/common
to import module, add import {BadReuestError|component name} from '@pauls_ticker_sales/common
Contains Logic that ...
Does the listening and revceiving of events via nats event bus
To ensure that typescript can check the contents of new events when used in service
Define new event name/subject in subject.ts
Define specialised event properties in a new interface file detailing event properties such as TicketCreatedEvent
Defines a base class for publishing and listening of events (base-listerner.ts and base-receiver.ts)
ensuring checking of event names and properties as done here is not cross platform independent as it is bound to java script. Cross platform independant solutions are JSON schema, Protobuf (lecture 301)