@stamhoofd/backend 2.114.0 → 2.115.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import backendEnv from '@stamhoofd/backend-env';
2
2
 
3
+ process.title = 'stamhoofd-api';
3
4
  backendEnv.load({ service: 'api' }).catch((error) => {
4
5
  console.error('Failed to load environment:', error);
5
6
  process.exit(1);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stamhoofd/backend",
3
- "version": "2.114.0",
3
+ "version": "2.115.0",
4
4
  "main": "./dist/index.js",
5
5
  "exports": {
6
6
  ".": {
@@ -19,6 +19,7 @@
19
19
  "license": "UNLICENCED",
20
20
  "scripts": {
21
21
  "dev": "wait-on ../../shared/middleware/dist/index.js && concurrently -r 'yarn -s build --watch --preserveWatchOutput' \"yarn -s dev:watch\"",
22
+ "dev:full": "yarn -s dev",
22
23
  "dev:watch": "wait-on ./dist/index.js && nodemon --quiet --inspect=5858 --watch dist --watch '../../../shared/*/dist/' --watch '../../shared/*/dist/' --ext .ts,.json,.sql,.js --delay 2000ms --exec 'node --enable-source-maps ./dist/index.js' --signal SIGTERM",
23
24
  "dev:backend": "yarn -s dev",
24
25
  "build": "rm -rf ./dist/src/migrations && rm -rf ./dist/src/seeds && yarn -s copy-assets && tsc -b",
@@ -54,14 +55,14 @@
54
55
  "@simonbackx/simple-encoding": "2.23.1",
55
56
  "@simonbackx/simple-endpoints": "1.20.1",
56
57
  "@simonbackx/simple-logging": "^1.0.1",
57
- "@stamhoofd/backend-i18n": "2.114.0",
58
- "@stamhoofd/backend-middleware": "2.114.0",
59
- "@stamhoofd/email": "2.114.0",
60
- "@stamhoofd/models": "2.114.0",
61
- "@stamhoofd/queues": "2.114.0",
62
- "@stamhoofd/sql": "2.114.0",
63
- "@stamhoofd/structures": "2.114.0",
64
- "@stamhoofd/utility": "2.114.0",
58
+ "@stamhoofd/backend-i18n": "2.115.0",
59
+ "@stamhoofd/backend-middleware": "2.115.0",
60
+ "@stamhoofd/email": "2.115.0",
61
+ "@stamhoofd/models": "2.115.0",
62
+ "@stamhoofd/queues": "2.115.0",
63
+ "@stamhoofd/sql": "2.115.0",
64
+ "@stamhoofd/structures": "2.115.0",
65
+ "@stamhoofd/utility": "2.115.0",
65
66
  "archiver": "^7.0.1",
66
67
  "axios": "^1.13.2",
67
68
  "cookie": "^0.7.0",
@@ -79,5 +80,5 @@
79
80
  "publishConfig": {
80
81
  "access": "public"
81
82
  },
82
- "gitHead": "89f437d82d2c21b1741c9c7efdbdafd6c8b98318"
83
+ "gitHead": "b68983abee843a6d4f4460b7818d66a8780587cc"
83
84
  }
package/src/boot.ts CHANGED
@@ -10,17 +10,19 @@ import { SimpleError } from '@simonbackx/simple-errors';
10
10
  import { startCrons, stopCrons, waitForCrons } from '@stamhoofd/crons';
11
11
  import { Platform } from '@stamhoofd/models';
12
12
  import { QueueHandler } from '@stamhoofd/queues';
13
- import { resumeEmails } from './helpers/EmailResumer';
14
- import { GlobalHelper } from './helpers/GlobalHelper';
15
- import { SetupStepUpdater } from './helpers/SetupStepUpdater';
16
- import { ContextMiddleware } from './middleware/ContextMiddleware';
17
- import { AuditLogService } from './services/AuditLogService';
18
- import { BalanceItemService } from './services/BalanceItemService';
19
- import { DocumentService } from './services/DocumentService';
20
- import { FileSignService } from './services/FileSignService';
21
- import { PlatformMembershipService } from './services/PlatformMembershipService';
22
- import { UitpasService } from './services/uitpas/UitpasService';
23
- import { UniqueUserService } from './services/UniqueUserService';
13
+ import { resumeEmails } from './helpers/EmailResumer.js';
14
+ import { GlobalHelper } from './helpers/GlobalHelper.js';
15
+ import { SetupStepUpdater } from './helpers/SetupStepUpdater.js';
16
+ import { ContextMiddleware } from './middleware/ContextMiddleware.js';
17
+ import { AuditLogService } from './services/AuditLogService.js';
18
+ import { BalanceItemService } from './services/BalanceItemService.js';
19
+ import { DocumentService } from './services/DocumentService.js';
20
+ import { FileSignService } from './services/FileSignService.js';
21
+ import { PlatformMembershipService } from './services/PlatformMembershipService.js';
22
+ import { UitpasService } from './services/uitpas/UitpasService.js';
23
+ import { UniqueUserService } from './services/UniqueUserService.js';
24
+ import { CpuService } from './services/CpuService.js';
25
+ import { SQLLogger } from '@stamhoofd/sql';
24
26
 
25
27
  process.on('unhandledRejection', (error: Error) => {
26
28
  console.error('unhandledRejection');
@@ -123,15 +125,16 @@ export const boot = async (options: { killProcess: boolean }) => {
123
125
  productionLog('Loading loaders...');
124
126
 
125
127
  // Register Excel loaders
126
- await import('./excel-loaders');
128
+ await import('./excel-loaders/index.js');
127
129
 
128
130
  // Register Email Recipient loaders
129
- await import('./email-recipient-loaders/members');
130
- await import('./email-recipient-loaders/registrations');
131
- await import('./email-recipient-loaders/orders');
132
- await import('./email-recipient-loaders/receivable-balances');
133
- await import('./excel-loaders/registrations');
134
- await import('./email-recipient-loaders/documents');
131
+ await import('./email-recipient-loaders/members.js');
132
+ await import('./email-recipient-loaders/registrations.js');
133
+ await import('./email-recipient-loaders/orders.js');
134
+ await import('./email-recipient-loaders/receivable-balances.js');
135
+ await import('./excel-loaders/registrations.js');
136
+ await import('./email-recipient-loaders/documents.js');
137
+ await import ('./email-recipient-loaders/payments.js');
135
138
 
136
139
  productionLog('Opening port...');
137
140
  routerServer.listen(STAMHOOFD.PORT ?? 9090);
@@ -141,6 +144,14 @@ export const boot = async (options: { killProcess: boolean }) => {
141
144
 
142
145
  resumeEmails().catch(console.error);
143
146
 
147
+ if (STAMHOOFD.environment !== 'development' && STAMHOOFD.environment !== 'test') {
148
+ CpuService.startMonitoring();
149
+ }
150
+ else if (STAMHOOFD.environment === 'development') {
151
+ SQLLogger.slowQueryThresholdMs = 200;
152
+ SQLLogger.explainAllAndLogInefficient = true;
153
+ }
154
+
144
155
  if (routerServer.server) {
145
156
  // Default timeout is a bit too short
146
157
  routerServer.server.timeout = 61000;
@@ -234,7 +245,7 @@ export const boot = async (options: { killProcess: boolean }) => {
234
245
  }
235
246
 
236
247
  // Register crons
237
- await import('./crons');
248
+ await import('./crons.js');
238
249
 
239
250
  AuditLogService.listen();
240
251
  PlatformMembershipService.listen();
@@ -47,20 +47,7 @@ async function fetch(query: LimitedFilteredRequest) {
47
47
  async function count(request: LimitedFilteredRequest) {
48
48
  const query = await GetDocumentsEndpoint.buildQuery(request);
49
49
  const uniqueMemberIds = await query.count(SQL.distinct(SQL.column('memberId')));
50
-
51
- if (uniqueMemberIds > 100 || uniqueMemberIds === 0) {
52
- return uniqueMemberIds; // rough estimate
53
- }
54
- // do full count
55
- request.limit = 100;
56
- let count = 0;
57
- let req: LimitedFilteredRequest | null = request;
58
- while (req) {
59
- const result = await fetch(request);
60
- count += result.results.length;
61
- req = result.next ?? null;
62
- }
63
- return count;
50
+ return uniqueMemberIds;
64
51
  };
65
52
 
66
53
  Email.recipientLoaders.set(EmailRecipientFilterType.Documents, { fetch, count });