Technology stack
|
These versions are pinned on purpose. Do not bump Angular, NgRx, RxJS, AG Grid, TypeScript or the test runner unless a task explicitly asks for it. See architectural decisions for the reasoning and the upgrade blockers. |
Core
| Concern | Version | Notes |
|---|---|---|
Angular |
12.2.15 |
View Engine-era APIs are still in use in places; the build runs with
|
TypeScript |
4.3.5 |
|
RxJS |
6.5.4 (+ |
Both pipeable-operator style and legacy deep imports
( |
Zone.js |
~0.11.4 |
Standard. Note |
core-js |
2.6.12 |
Legacy polyfill set required by the Node 12 / older-browser target. |
State
| Package | Version | Notes |
|---|---|---|
|
4.1.1 |
Pre- |
|
4.1.1 |
|
|
4.1.1 |
|
|
4.1.1 |
|
A custom meta-reducer, storeDebugger in src/app/store-debugger.ts, is
registered in StoreModule.forRoot. See
state management.
UI
| Package | Version | Notes |
|---|---|---|
|
12.2.13 |
Re-exported through |
Bootstrap |
4.0.0-beta.2 |
A beta release, used for grid and utility classes. Coexists with Material; expect specificity conflicts. |
|
23.x |
The workhorse for every large table. Enterprise features are in use, so the
enterprise licence matters. |
|
— |
Two icon sets in parallel; templates use both |
|
^4.2.4 / ^5.10.6 |
Rich-text editing for emails and notes. TinyMCE assets are copied into
|
jQuery + |
^3.5.0 / 1.3.8 |
Assigned to |
|
6.5.0 |
The single user-facing notification channel; wrapped by
|
|
8.1.1 |
Route guard plus |
|
— |
Narrow single-purpose UI helpers (CRM timeline paging, table ordering, copy buttons, outside-click dismissal, card number formatting/validation). |
Data, auth and platform
| Package | Version | Notes |
|---|---|---|
|
0.1.18 |
Model (de)serialisation and |
|
2.2.0 |
Used by |
|
— |
Google Identity typings for the SSO login component. |
|
^15.1.1 |
A browser-side Elasticsearch client, used only by
|
|
^1.0.14 |
|
|
1.1.0 |
TTL-aware |
|
1.2.2 |
Cache-key hashing in |
|
^10.1.1 |
Sets the EVA auth cookie on the shared parent domain. |
|
^2.29.4 |
Date arithmetic and relative-time display. Also loaded as a global script. |
|
1.3.3 |
CSV/report downloads. Loaded as a global script and imported. |
|
2.0.0 |
Stack resolution for the error logger. |
|
^5.7.1 |
Front-end/back-end version comparison in |
|
1.6.28 |
Async font loading. |
|
— |
Legacy leftovers. |
Build and tooling
| Tool | Role |
|---|---|
|
Wraps the Angular browser builder so that |
|
Legacy loader set ( |
|
Vendor prefixing via |
|
SCSS compilation; |
Node 12.21.0 ( |
Hard requirement. |
ESLint 7 + Prettier 2.5 + Husky 7 + lint-staged 12 |
Quality gates; see conventions. |
Karma 6 + Jasmine 3.6 + Puppeteer + |
Unit testing; see testing. |
Cypress 7.x (+ |
E2E; currently unmaintained. |
|
Runs |
|
CI report merging and local orchestration (including opening the EVA dev server in a second terminal tab). |
Notable build configuration
From angular.json:
-
outputHashing: all,vendorChunk: false,aot: true, output todist/. -
Global styles are listed explicitly:
styles.scss,bootstrap.scss,font-awesome.scss,layout.scss,loader.scss,material2-theme.scss,theme.scss,ui.scss, plus the two icon-font stylesheets. -
Global scripts:
jquery.min.js,moment.min.js,FileSaver.js. -
allowedCommonJsDependencies:ag-grid-enterprise,jwt-decode,angular2-moment,elasticsearch,rxjs,payment. -
Three configurations —
production(also swapsenvironment.ts→environment.prod.ts),staging,development;developmentis the default.
|
The |