Skip to content

Commit 3a6668b

Browse files
committed
Replace lodash with es-toolkit #11562
Because es-toolkit is smaller, faster and more strictly typed (avoiding bugs in our apps). Shaving +20 KiB, Initial total becomes ~98% of original size.
1 parent 01de165 commit 3a6668b

File tree

9 files changed

+27
-39
lines changed

9 files changed

+27
-39
lines changed

client/app/front-office/components/session-facilitator-private/session-facilitator-private.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {Component, inject, OnInit} from '@angular/core';
22
import {Literal, NaturalIconDirective, NaturalQueryVariablesManager} from '@ecodev/natural';
3-
import {groupBy, sortBy} from 'lodash-es';
3+
import {groupBy, sortBy} from 'es-toolkit';
44
import {FacilitatorDocumentsService} from '../../../admin/facilitator-documents/services/facilitator-documents.service';
55
import {UserService} from '../../../admin/users/services/user.service';
66
import {SortingOrder, UserRole, Users, UserSortingField, UsersVariables} from '../../../shared/generated-types';
@@ -33,7 +33,7 @@ export class SessionFacilitatorPrivateComponent implements OnInit {
3333
this.userService.getAll(qvm).subscribe(result => (this.facilitators = result.items));
3434
this.facilitatorDocumentService.getAll(new NaturalQueryVariablesManager()).subscribe(documents => {
3535
console.log(documents);
36-
this.categories = groupBy(sortBy(documents.items, 'category.name'), 'category');
36+
this.categories = groupBy(sortBy(documents.items, [d => d.category]), d => d.category);
3737
});
3838
}
3939
}

client/app/front-office/front-office.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import {
1010
NaturalSearchSelections,
1111
toNavigationParameters,
1212
} from '@ecodev/natural';
13-
import {differenceBy} from 'lodash-es';
13+
import {differenceBy} from 'es-toolkit';
1414
import {filter, finalize} from 'rxjs/operators';
1515
import {UserService} from '../admin/users/services/user.service';
1616
import {CurrentUserForProfile, UserRole} from '../shared/generated-types';
@@ -265,7 +265,7 @@ export class FrontOfficeComponent implements OnInit, AfterViewInit {
265265
this.userService.getViewerObservable().subscribe(viewer => (this.viewer = viewer));
266266

267267
// Setup mobile menu with items from top menu that are missing on main menu
268-
this.mobileNavigation = [...this.navigation, ...differenceBy(this.topNavigation, this.navigation, 'link')];
268+
this.mobileNavigation = [...this.navigation, ...differenceBy(this.topNavigation, this.navigation, n => n.link)];
269269

270270
// Further navigations
271271
this.router.events

client/app/front-office/modules/shop/components/subscriptions/subscriptions.component.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {Component, inject, OnInit} from '@angular/core';
22
import {MatDialog, MatDialogConfig} from '@angular/material/dialog';
33
import {ActivatedRoute, Router} from '@angular/router';
44
import {NaturalQueryVariablesManager} from '@ecodev/natural';
5-
import {keyBy} from 'lodash-es';
5+
import {keyBy} from 'es-toolkit';
66
import {ProductType, Subscriptions} from '../../../../../shared/generated-types';
77
import {EmailsComponent} from '../emails/emails.component';
88
import {SubscriptionService} from './subscription.service';
@@ -30,7 +30,7 @@ export class SubscriptionsComponent implements OnInit {
3030
public ngOnInit(): void {
3131
this.subscriptionService
3232
.getAll(new NaturalQueryVariablesManager())
33-
.subscribe(res => (this.subscriptions = keyBy(res.items, 'id')));
33+
.subscribe(res => (this.subscriptions = keyBy(res.items, i => i.id)));
3434
}
3535

3636
public order(id: string, type: ProductType, withEmails?: boolean): void {

client/app/front-office/services/navigation.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import {ComponentPortal} from '@angular/cdk/portal';
33
import {DOCUMENT} from '@angular/common';
44
import {ElementRef, inject, Injectable, Injector, StaticProvider} from '@angular/core';
55
import {NavigationEnd, Router, RouterLink} from '@angular/router';
6-
import {cloneDeep} from 'lodash-es';
6+
import {cloneDeep} from 'es-toolkit';
77
import {merge, Observable, Subject} from 'rxjs';
88
import {filter} from 'rxjs/operators';
99
import {APP_MENU_DATA, MenuComponent, MenuDropdownData} from '../components/menu/menu.component';

client/app/shared/classes/AbstractInfiniteLoadList.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import {
1010
PaginationInput,
1111
QueryVariables,
1212
} from '@ecodev/natural';
13-
import {defaults, isEqual, pick} from 'lodash-es';
13+
import {defaults, pick} from 'es-toolkit/compat';
14+
import {isEqual} from 'es-toolkit';
1415
import {takeUntilDestroyed} from '@angular/core/rxjs-interop';
1516

1617
@Directive({standalone: true})

client/app/shared/services/permissions.service.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import {Literal} from '@ecodev/natural';
44
import {BehaviorSubject, Observable} from 'rxjs';
55
import {concatMap, debounceTime, distinctUntilChanged, filter, map, shareReplay} from 'rxjs/operators';
66
import {Permissions} from '../generated-types';
7-
import {isEqual} from 'lodash-es';
7+
import {isEqual} from 'es-toolkit';
88
import {permissionsQuery} from './permissions.queries';
99

1010
type Contexts = {

client/app/user/components/register/register-confirm.component.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {Component, inject, OnInit} from '@angular/core';
22
import {deliverableEmail, NaturalIconDirective, relationsToIds} from '@ecodev/natural';
3-
import {pick} from 'lodash-es';
3+
import {pick} from 'es-toolkit';
44
import {RegisterComponent} from './register.component';
55
import {FormsModule, ReactiveFormsModule, Validators} from '@angular/forms';
66
import {UserByTokenResolve} from '../../../admin/users/user';

package.json

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
"@angular/router": "^19.2.13",
2828
"@apollo/client": "^3.13.7",
2929
"@ecodev/fab-speed-dial": "^18.0.0",
30-
"@ecodev/natural": "^63.5.1",
31-
"@ecodev/natural-editor": "^63.5.1",
30+
"@ecodev/natural": "^63.6.1",
31+
"@ecodev/natural-editor": "^63.6.1",
3232
"@ecodev/natural-layout": "^2.0.2",
3333
"@graphql-codegen/cli": "^5.0.5",
3434
"@graphql-codegen/typescript-apollo-angular": "^4.0.0",
@@ -37,8 +37,8 @@
3737
"apollo-angular": "^10.0.3",
3838
"big.js": "^6.2.2",
3939
"crypto-es": "^2.1.0",
40+
"es-toolkit": "^1.39.7",
4041
"graphql": "^16.10.0",
41-
"lodash-es": "^4.17.21",
4242
"ngx-progressbar": "^14.0.0",
4343
"rxjs": "~7.8.2",
4444
"striptags": "^4.0.0-alpha.4",
@@ -53,7 +53,6 @@
5353
"@playwright/test": "^1.51.1",
5454
"@types/big.js": "^6.2.2",
5555
"@types/jasmine": "~5.1.7",
56-
"@types/lodash-es": "^4.17.12",
5756
"@types/node": "^22.14.1",
5857
"angular-eslint": "^19.3.0",
5958
"eslint": "^9.24.0",

yarn.lock

Lines changed: 13 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1326,10 +1326,10 @@
13261326
dependencies:
13271327
tslib "^2.8.1"
13281328

1329-
"@ecodev/natural-editor@^63.5.1":
1330-
version "63.5.1"
1331-
resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-63.5.1.tgz#3d7817412d7aa986765903ee92371d352f8dd65c"
1332-
integrity sha512-i7kstOAaDRzQ3JAtvUU3oXSK/tkuGQz1w2r24k8P44ltcPXz6fFAIAa4FmkcQcpXC8yP58gJ+T9e/ft/N0jwFA==
1329+
"@ecodev/natural-editor@^63.6.1":
1330+
version "63.6.1"
1331+
resolved "https://registry.yarnpkg.com/@ecodev/natural-editor/-/natural-editor-63.6.1.tgz#61ad567d7b830d694090991f6144e0c6ea2d2f35"
1332+
integrity sha512-xM9lGqGM1zIjZSLfAaA54lH7YocO1MEr32iwLTUiMVKBoVJbi74eIK2KtbFfE3EAeWaGEzyJDf9yzkL3p0yaOw==
13331333
dependencies:
13341334
prosemirror-commands "^1.5.2"
13351335
prosemirror-dropcursor "^1.8.1"
@@ -1351,10 +1351,10 @@
13511351
resolved "https://registry.yarnpkg.com/@ecodev/natural-layout/-/natural-layout-2.0.2.tgz#e2c64c2ddb3c60793a39236b52624fde323e610a"
13521352
integrity sha512-BV75kFQmpfuSBNQ1jyKu+IdGkFTMESjPrtKrEyc3MqcmVhV5IiYU0LXTaghLZozuZgCT9HfMOnEsh05aS2j9uQ==
13531353

1354-
"@ecodev/natural@^63.5.1":
1355-
version "63.5.1"
1356-
resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-63.5.1.tgz#d7bcedbd91daad69fc03fccc8d3f7689a33ed85b"
1357-
integrity sha512-F3KIqRkksf4wv4M6nKqjolYwyW24hkcsthZn4C3yUyiKQVZ7zWGhXpeLfzjLDl10rbtpDnV0+vmcGJ/BL15W6Q==
1354+
"@ecodev/natural@^63.6.1":
1355+
version "63.6.1"
1356+
resolved "https://registry.yarnpkg.com/@ecodev/natural/-/natural-63.6.1.tgz#6714736396715782e3d32a72ab75be44bf240fa6"
1357+
integrity sha512-Dd5QCBPQ2QqvD2Qc8QI9zYb6vYFDe233X1jkVbr1r9JpUl1Wt/C8Ukz48X+CNgI8aYHLR03s1oXOL/ggkOXqsA==
13581358
dependencies:
13591359
extract-files "^13.0.0"
13601360
tslib "^2.8.1"
@@ -3347,18 +3347,6 @@
33473347
resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841"
33483348
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
33493349

3350-
"@types/lodash-es@^4.17.12":
3351-
version "4.17.12"
3352-
resolved "https://registry.yarnpkg.com/@types/lodash-es/-/lodash-es-4.17.12.tgz#65f6d1e5f80539aa7cfbfc962de5def0cf4f341b"
3353-
integrity sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==
3354-
dependencies:
3355-
"@types/lodash" "*"
3356-
3357-
"@types/lodash@*":
3358-
version "4.17.16"
3359-
resolved "https://registry.yarnpkg.com/@types/lodash/-/lodash-4.17.16.tgz#94ae78fab4a38d73086e962d0b65c30d816bfb0a"
3360-
integrity sha512-HX7Em5NYQAXKW+1T+FiuG27NGwzJfCX3s1GjOa7ujxZa52kjJLOr4FUxT+giF6Tgxv1e+/czV/iTtBw27WTU9g==
3361-
33623350
"@types/mime@^1":
33633351
version "1.3.5"
33643352
resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690"
@@ -5015,6 +5003,11 @@ es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
50155003
dependencies:
50165004
es-errors "^1.3.0"
50175005

5006+
es-toolkit@^1.39.7:
5007+
version "1.39.7"
5008+
resolved "https://registry.yarnpkg.com/es-toolkit/-/es-toolkit-1.39.7.tgz#961b80a11c922c1a6dca5ca4089c1de7f9937be7"
5009+
integrity sha512-ek/wWryKouBrZIjkwW2BFf91CWOIMvoy2AE5YYgUrfWsJQM2Su1LoLtrw8uusEpN9RfqLlV/0FVNjT0WMv8Bxw==
5010+
50185011
esbuild-wasm@0.25.4:
50195012
version "0.25.4"
50205013
resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.25.4.tgz#06744be7a790acd0a65c98c5a6289b31a17a0dcb"
@@ -6572,11 +6565,6 @@ locate-path@^7.1.0:
65726565
dependencies:
65736566
p-locate "^6.0.0"
65746567

6575-
lodash-es@^4.17.21:
6576-
version "4.17.21"
6577-
resolved "https://registry.yarnpkg.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
6578-
integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
6579-
65806568
lodash.debounce@^4.0.8:
65816569
version "4.0.8"
65826570
resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af"

0 commit comments

Comments
 (0)