Skip to content

Packages

Brent Christensen edited this page Sep 10, 2021 · 12 revisions

The following packages are the building blocks used to construct domains all of Event Espresso's next generation UIs. The plan is to eventually release most of these through a package manager like npm or GitHub.

package description
adapters buffer layer between EE and UI elements from external libraries
config configuration logic powering this monorepo
constants business logic that remains the same for every domain
data base layer for our Apollo GraphQL implementation
dates date based components (used a lot in event management)
edtr-services base level services common throughout the EE admin
ee-components custom EE React components with embedded business logic
events no not that kind of event...this is an event emitter (coming soon)
form EE form system built on top of React Final Form
form-builder powerful drag n drop form building system
helpers common and useful domain related logic
hooks basic non-domain oriented hooks
i18n internaitionalization logic built on top of wp-i18n
icons automagically generated SVG images mostly for use in buttons
ioc facade for WP Hooks allowing inversion of control
predicates granular functions for composing business logic
plugins
react-exit-modal-typeform interface with typeform surveys
registry manages interoperability between domains
rich-text-editor makes text look more purdy
rrule-generator used for generating recurring event dates
services common functional business logic shared by multiple domains
slot-fill
storage client side persistence logic
storybook UI component development tool
styles shared Sass elements
toaster non-modal user notifications
tpc business logic for calculating ticket prices
ui-components UI only custom EE React components
utils common and useful non-domain related logic

Package Dependency Hierarchy

It is important to note that to avoid circular dependencies, we have implemented a strict set of rules pertaining to where packages can be imported. Packages are orgnaized into "levels" and any code within a particular level can ONLY import code from a lower level or external dependency. So for example, the packages in LEVEL 1 can NOT import any other package as they are the absolute base level that everything else is built from. Conversely, the tpc package in LEVEL 9 can import any code from any other package because it is in the highest code level.