@naturalcycles/backend-lib 8.0.4 → 9.0.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/dist/admin/adminMiddleware.d.ts +3 -3
- package/dist/admin/adminMiddleware.js +11 -18
- package/dist/admin/base.admin.service.d.ts +1 -1
- package/dist/admin/base.admin.service.js +9 -13
- package/dist/admin/firebase.shared.service.d.ts +3 -3
- package/dist/admin/firebase.shared.service.js +12 -15
- package/dist/admin/secureHeaderMiddleware.d.ts +2 -2
- package/dist/admin/secureHeaderMiddleware.js +7 -10
- package/dist/bin/deploy-gae.js +9 -11
- package/dist/bin/deploy-health-check.js +6 -8
- package/dist/bin/deploy-prepare.js +5 -7
- package/dist/bin/undeploy-gae.js +5 -7
- package/dist/db/httpDB.js +7 -11
- package/dist/db/httpDBRequestHandler.d.ts +1 -1
- package/dist/db/httpDBRequestHandler.js +27 -29
- package/dist/db/index.d.ts +3 -3
- package/dist/db/index.js +3 -7
- package/dist/deploy/backend.cfg.util.js +6 -9
- package/dist/deploy/deploy.model.js +1 -2
- package/dist/deploy/deploy.util.d.ts +2 -2
- package/dist/deploy/deploy.util.js +25 -33
- package/dist/deploy/deployGae.d.ts +2 -2
- package/dist/deploy/deployGae.js +23 -27
- package/dist/deploy/deployHealthCheck.js +16 -20
- package/dist/deploy/deployPrepare.d.ts +1 -1
- package/dist/deploy/deployPrepare.js +17 -21
- package/dist/deploy/index.d.ts +8 -8
- package/dist/deploy/index.js +6 -14
- package/dist/env/env.shared.service.js +8 -12
- package/dist/index.d.ts +33 -33
- package/dist/index.js +34 -38
- package/dist/paths.cnst.js +5 -9
- package/dist/sentry/sentry.shared.service.js +11 -15
- package/dist/server/asyncLocalStorageMiddleware.d.ts +1 -1
- package/dist/server/asyncLocalStorageMiddleware.js +9 -15
- package/dist/server/basicAuthMiddleware.d.ts +1 -1
- package/dist/server/basicAuthMiddleware.js +5 -8
- package/dist/server/bodyParserTimeoutMiddleware.d.ts +1 -1
- package/dist/server/bodyParserTimeoutMiddleware.js +5 -9
- package/dist/server/createDefaultApp.d.ts +3 -3
- package/dist/server/createDefaultApp.js +22 -23
- package/dist/server/createDefaultApp.model.d.ts +3 -3
- package/dist/server/createDefaultApp.model.js +1 -2
- package/dist/server/deployInfo.util.d.ts +1 -1
- package/dist/server/deployInfo.util.js +5 -8
- package/dist/server/genericErrorMiddleware.d.ts +2 -2
- package/dist/server/genericErrorMiddleware.js +6 -10
- package/dist/server/getDefaultRouter.d.ts +1 -1
- package/dist/server/getDefaultRouter.js +3 -6
- package/dist/server/logMiddleware.d.ts +1 -1
- package/dist/server/logMiddleware.js +12 -16
- package/dist/server/methodOverrideMiddleware.d.ts +1 -1
- package/dist/server/methodOverrideMiddleware.js +1 -4
- package/dist/server/notFoundMiddleware.d.ts +1 -1
- package/dist/server/notFoundMiddleware.js +3 -6
- package/dist/server/okMiddleware.d.ts +1 -1
- package/dist/server/okMiddleware.js +1 -4
- package/dist/server/request.log.util.d.ts +1 -1
- package/dist/server/request.log.util.js +7 -11
- package/dist/server/request.util.d.ts +1 -1
- package/dist/server/request.util.js +1 -4
- package/dist/server/requestTimeoutMiddleware.d.ts +1 -1
- package/dist/server/requestTimeoutMiddleware.js +9 -13
- package/dist/server/safeJsonMiddleware.d.ts +1 -1
- package/dist/server/safeJsonMiddleware.js +3 -6
- package/dist/server/server.model.js +1 -2
- package/dist/server/server.util.js +1 -4
- package/dist/server/serverStatsMiddleware.d.ts +1 -1
- package/dist/server/serverStatsMiddleware.js +19 -24
- package/dist/server/serverStatusMiddleware.d.ts +1 -1
- package/dist/server/serverStatusMiddleware.js +12 -16
- package/dist/server/simpleRequestLoggerMiddleware.d.ts +1 -1
- package/dist/server/simpleRequestLoggerMiddleware.js +8 -11
- package/dist/server/startServer.d.ts +1 -1
- package/dist/server/startServer.js +18 -22
- package/dist/server/startServer.model.d.ts +3 -3
- package/dist/server/startServer.model.js +1 -2
- package/dist/server/validation/validateMiddleware.d.ts +2 -2
- package/dist/server/validation/validateMiddleware.js +9 -15
- package/dist/server/validation/validateRequest.d.ts +1 -1
- package/dist/server/validation/validateRequest.js +6 -9
- package/dist/server/validation/zodValidateMiddleware.d.ts +2 -2
- package/dist/server/validation/zodValidateMiddleware.js +6 -9
- package/dist/testing/express.test.service.d.ts +5 -5
- package/dist/testing/express.test.service.js +16 -14
- package/dist/testing/index.d.ts +2 -2
- package/dist/testing/index.js +2 -5
- package/dist/util.js +2 -6
- package/package.json +7 -7
- package/src/admin/adminMiddleware.ts +3 -3
- package/src/admin/base.admin.service.ts +1 -1
- package/src/admin/firebase.shared.service.ts +7 -6
- package/src/admin/secureHeaderMiddleware.ts +4 -4
- package/src/bin/deploy-gae.ts +3 -3
- package/src/bin/deploy-health-check.ts +1 -1
- package/src/bin/deploy-prepare.ts +1 -1
- package/src/bin/undeploy-gae.ts +1 -1
- package/src/db/httpDBRequestHandler.ts +4 -3
- package/src/db/index.ts +3 -3
- package/src/deploy/backend.cfg.util.ts +1 -1
- package/src/deploy/deploy.util.ts +3 -4
- package/src/deploy/deployGae.ts +6 -6
- package/src/deploy/deployHealthCheck.ts +1 -1
- package/src/deploy/deployPrepare.ts +6 -5
- package/src/deploy/index.ts +8 -8
- package/src/index.ts +33 -33
- package/src/sentry/sentry.shared.service.ts +1 -1
- package/src/server/asyncLocalStorageMiddleware.ts +2 -2
- package/src/server/basicAuthMiddleware.ts +1 -1
- package/src/server/bodyParserTimeoutMiddleware.ts +2 -2
- package/src/server/createDefaultApp.model.ts +3 -3
- package/src/server/createDefaultApp.ts +16 -14
- package/src/server/deployInfo.util.ts +1 -1
- package/src/server/genericErrorMiddleware.ts +2 -2
- package/src/server/getDefaultRouter.ts +1 -1
- package/src/server/logMiddleware.ts +1 -1
- package/src/server/methodOverrideMiddleware.ts +1 -1
- package/src/server/notFoundMiddleware.ts +2 -2
- package/src/server/okMiddleware.ts +1 -1
- package/src/server/request.log.util.ts +1 -1
- package/src/server/request.util.ts +1 -1
- package/src/server/requestTimeoutMiddleware.ts +2 -2
- package/src/server/safeJsonMiddleware.ts +1 -1
- package/src/server/serverStatsMiddleware.ts +3 -3
- package/src/server/serverStatusMiddleware.ts +2 -2
- package/src/server/simpleRequestLoggerMiddleware.ts +3 -3
- package/src/server/startServer.model.ts +3 -3
- package/src/server/startServer.ts +4 -7
- package/src/server/validation/validateMiddleware.ts +2 -2
- package/src/server/validation/validateRequest.ts +1 -1
- package/src/server/validation/zodValidateMiddleware.ts +2 -2
- package/src/testing/express.test.service.ts +20 -11
- package/src/testing/index.ts +2 -2
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { CommonLogLevel } from '@naturalcycles/js-lib'
|
|
2
2
|
import { boldGrey, green, red, yellow } from '@naturalcycles/nodejs-lib'
|
|
3
|
-
import type { BackendRequest } from './server.model'
|
|
3
|
+
import type { BackendRequest } from './server.model.js'
|
|
4
4
|
|
|
5
5
|
export function logRequest(req: BackendRequest, statusCode: number, ...tokens: any[]): void {
|
|
6
6
|
req[logLevel(statusCode)](
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { NumberOfSeconds } from '@naturalcycles/js-lib'
|
|
2
2
|
import { _ms, AppError } from '@naturalcycles/js-lib'
|
|
3
|
-
import type { BackendRequest, BackendRequestHandler, BackendResponse } from '../index'
|
|
4
|
-
import { getRequestEndpoint, onFinished, respondWithError } from '../index'
|
|
3
|
+
import type { BackendRequest, BackendRequestHandler, BackendResponse } from '../index.js'
|
|
4
|
+
import { getRequestEndpoint, onFinished, respondWithError } from '../index.js'
|
|
5
5
|
|
|
6
6
|
export interface RequestTimeoutMiddlewareCfg {
|
|
7
7
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { _safeJsonStringify } from '@naturalcycles/js-lib'
|
|
2
|
-
import type { BackendRequestHandler, BackendResponse } from './server.model'
|
|
2
|
+
import type { BackendRequestHandler, BackendResponse } from './server.model.js'
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Replaces express's built-in req.json() function with the safe one,
|
|
@@ -11,9 +11,9 @@ import {
|
|
|
11
11
|
_sum,
|
|
12
12
|
NumberStack,
|
|
13
13
|
} from '@naturalcycles/js-lib'
|
|
14
|
-
import type { BackendRequestHandler } from '../index'
|
|
15
|
-
import { onFinished } from '../index'
|
|
16
|
-
import { getRequestEndpoint } from './request.util'
|
|
14
|
+
import type { BackendRequestHandler } from '../index.js'
|
|
15
|
+
import { onFinished } from '../index.js'
|
|
16
|
+
import { getRequestEndpoint } from './request.util.js'
|
|
17
17
|
|
|
18
18
|
const { GAE_INSTANCE } = process.env
|
|
19
19
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { _filterNullishValues, localTime } from '@naturalcycles/js-lib'
|
|
2
2
|
import { memoryUsageFull, processSharedUtil } from '@naturalcycles/nodejs-lib'
|
|
3
|
-
import { getDeployInfo } from './deployInfo.util'
|
|
4
|
-
import type { BackendRequestHandler } from './server.model'
|
|
3
|
+
import { getDeployInfo } from './deployInfo.util.js'
|
|
4
|
+
import type { BackendRequestHandler } from './server.model.js'
|
|
5
5
|
|
|
6
6
|
const { versions, arch, platform } = process
|
|
7
7
|
const { GAE_APPLICATION, GAE_SERVICE, GAE_VERSION, K_SERVICE, K_REVISION, APP_ENV, NODE_OPTIONS } =
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { UnixTimestampMillis } from '@naturalcycles/js-lib'
|
|
2
2
|
import { _since } from '@naturalcycles/js-lib'
|
|
3
3
|
import { boldGrey, dimGrey } from '@naturalcycles/nodejs-lib'
|
|
4
|
-
import type { BackendRequestHandler } from '../index'
|
|
5
|
-
import { onFinished } from '../index'
|
|
6
|
-
import { logRequest } from './request.log.util'
|
|
4
|
+
import type { BackendRequestHandler } from '../index.js'
|
|
5
|
+
import { onFinished } from '../index.js'
|
|
6
|
+
import { logRequest } from './request.log.util.js'
|
|
7
7
|
|
|
8
8
|
const { APP_ENV } = process.env
|
|
9
9
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Server } from 'node:http'
|
|
2
|
-
import type { SentrySharedService } from '../sentry/sentry.shared.service'
|
|
3
|
-
import type { DefaultAppCfg } from './createDefaultApp.model'
|
|
4
|
-
import type { BackendApplication } from './server.model'
|
|
2
|
+
import type { SentrySharedService } from '../sentry/sentry.shared.service.js'
|
|
3
|
+
import type { DefaultAppCfg } from './createDefaultApp.model.js'
|
|
4
|
+
import type { BackendApplication } from './server.model.js'
|
|
5
5
|
|
|
6
6
|
/**
|
|
7
7
|
* If DefaultAppCfg.resources is passed and `expressApp` is not passed - it will call createDefaultApp(cfg).
|
|
@@ -2,8 +2,8 @@ import type { Server } from 'node:http'
|
|
|
2
2
|
import os from 'node:os'
|
|
3
3
|
import { _Memo, _ms } from '@naturalcycles/js-lib'
|
|
4
4
|
import { boldGrey, dimGrey, white } from '@naturalcycles/nodejs-lib'
|
|
5
|
-
import { createDefaultApp } from '../index'
|
|
6
|
-
import type { StartServerCfg, StartServerData } from './startServer.model'
|
|
5
|
+
import { createDefaultApp } from '../index.js'
|
|
6
|
+
import type { StartServerCfg, StartServerData } from './startServer.model.js'
|
|
7
7
|
|
|
8
8
|
const { NODE_OPTIONS, APP_ENV } = process.env
|
|
9
9
|
|
|
@@ -13,11 +13,8 @@ export class BackendServer {
|
|
|
13
13
|
server?: Server
|
|
14
14
|
|
|
15
15
|
async start(): Promise<StartServerData> {
|
|
16
|
-
const {
|
|
17
|
-
|
|
18
|
-
expressApp = createDefaultApp(this.cfg),
|
|
19
|
-
registerUncaughtExceptionHandlers = true,
|
|
20
|
-
} = this.cfg
|
|
16
|
+
const { port: cfgPort, registerUncaughtExceptionHandlers = true } = this.cfg
|
|
17
|
+
const expressApp = this.cfg.expressApp || (await createDefaultApp(this.cfg))
|
|
21
18
|
|
|
22
19
|
// 1. Register error handlers, etc.
|
|
23
20
|
if (registerUncaughtExceptionHandlers) {
|
|
@@ -2,8 +2,8 @@ import type { JsonSchema, JsonSchemaBuilder } from '@naturalcycles/js-lib'
|
|
|
2
2
|
import { _get, AppError } from '@naturalcycles/js-lib'
|
|
3
3
|
import type { AjvValidationError } from '@naturalcycles/nodejs-lib'
|
|
4
4
|
import { AjvSchema } from '@naturalcycles/nodejs-lib'
|
|
5
|
-
import type { BackendRequestHandler } from '../server.model'
|
|
6
|
-
import type { ReqValidationOptions } from './validateRequest'
|
|
5
|
+
import type { BackendRequestHandler } from '../server.model.js'
|
|
6
|
+
import type { ReqValidationOptions } from './validateRequest.js'
|
|
7
7
|
|
|
8
8
|
const REDACTED = 'REDACTED'
|
|
9
9
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { _get, AppError } from '@naturalcycles/js-lib'
|
|
2
2
|
import type { AnySchema, JoiValidationError } from '@naturalcycles/nodejs-lib'
|
|
3
3
|
import { getValidationResult } from '@naturalcycles/nodejs-lib'
|
|
4
|
-
import type { BackendRequest } from '../server.model'
|
|
4
|
+
import type { BackendRequest } from '../server.model.js'
|
|
5
5
|
|
|
6
6
|
const REDACTED = 'REDACTED'
|
|
7
7
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { _get, AppError } from '@naturalcycles/js-lib'
|
|
2
2
|
import type { ZodSchema, ZodValidationError } from '@naturalcycles/js-lib/dist/zod/index.js'
|
|
3
3
|
import { zSafeValidate } from '@naturalcycles/js-lib/dist/zod/index.js'
|
|
4
|
-
import type { BackendRequestHandler } from '../server.model'
|
|
5
|
-
import type { ReqValidationOptions } from './validateRequest'
|
|
4
|
+
import type { BackendRequestHandler } from '../server.model.js'
|
|
5
|
+
import type { ReqValidationOptions } from './validateRequest.js'
|
|
6
6
|
|
|
7
7
|
const REDACTED = 'REDACTED'
|
|
8
8
|
|
|
@@ -2,13 +2,13 @@ import type { Server } from 'node:http'
|
|
|
2
2
|
import type { AddressInfo } from 'node:net'
|
|
3
3
|
import type { Fetcher, FetcherOptions, FetchFunction } from '@naturalcycles/js-lib'
|
|
4
4
|
import { getFetcher, pDelay } from '@naturalcycles/js-lib'
|
|
5
|
-
import type { BackendApplication, DefaultAppCfg } from '../index'
|
|
6
|
-
import { createDefaultApp } from '../index'
|
|
7
|
-
import type { BackendRequestHandlerCfg } from '../server/createDefaultApp.model'
|
|
5
|
+
import type { BackendApplication, DefaultAppCfg } from '../index.js'
|
|
6
|
+
import { createDefaultApp } from '../index.js'
|
|
7
|
+
import type { BackendRequestHandlerCfg } from '../server/createDefaultApp.model.js'
|
|
8
8
|
|
|
9
9
|
const nativeFetchFn: FetchFunction = async (url, init) => await globalThis.fetch(url, init)
|
|
10
10
|
|
|
11
|
-
export interface ExpressApp extends Fetcher {
|
|
11
|
+
export interface ExpressApp extends Fetcher, AsyncDisposable {
|
|
12
12
|
close: () => Promise<void>
|
|
13
13
|
}
|
|
14
14
|
|
|
@@ -19,13 +19,13 @@ export interface ExpressApp extends Fetcher {
|
|
|
19
19
|
// })
|
|
20
20
|
|
|
21
21
|
class ExpressTestService {
|
|
22
|
-
createAppFromResource(
|
|
22
|
+
async createAppFromResource(
|
|
23
23
|
resource: BackendRequestHandlerCfg,
|
|
24
24
|
opt?: FetcherOptions,
|
|
25
25
|
defaultAppCfg?: DefaultAppCfg,
|
|
26
|
-
): ExpressApp {
|
|
26
|
+
): Promise<ExpressApp> {
|
|
27
27
|
return this.createApp(
|
|
28
|
-
createDefaultApp({
|
|
28
|
+
await createDefaultApp({
|
|
29
29
|
...defaultAppCfg,
|
|
30
30
|
resources: [resource],
|
|
31
31
|
}),
|
|
@@ -33,9 +33,12 @@ class ExpressTestService {
|
|
|
33
33
|
)
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
-
createAppFromResources(
|
|
36
|
+
async createAppFromResources(
|
|
37
|
+
resources: BackendRequestHandlerCfg[],
|
|
38
|
+
opt?: FetcherOptions,
|
|
39
|
+
): Promise<ExpressApp> {
|
|
37
40
|
return this.createApp(
|
|
38
|
-
createDefaultApp({
|
|
41
|
+
await createDefaultApp({
|
|
39
42
|
resources,
|
|
40
43
|
}),
|
|
41
44
|
opt,
|
|
@@ -70,10 +73,16 @@ class ExpressTestService {
|
|
|
70
73
|
// console.log(`close took ${_since(started)}`) // todo: investigate why it takes ~5 seconds!
|
|
71
74
|
// Kirill: not awaiting the server-close, otherwise it takes significant waiting time
|
|
72
75
|
// to "teardown" server after it's been hit by Fetcher
|
|
73
|
-
server.close()
|
|
74
|
-
// server.
|
|
76
|
+
// server.close()
|
|
77
|
+
// 2024-08-31: server.close is no longer slow, so now we're back at awaiting it
|
|
78
|
+
await new Promise(resolve => {
|
|
79
|
+
server.unref().close(resolve)
|
|
80
|
+
})
|
|
81
|
+
await pDelay()
|
|
75
82
|
}
|
|
76
83
|
|
|
84
|
+
fetcher[Symbol.asyncDispose] = async () => await fetcher.close()
|
|
85
|
+
|
|
77
86
|
return fetcher
|
|
78
87
|
}
|
|
79
88
|
|
package/src/testing/index.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { ExpressApp } from './express.test.service'
|
|
2
|
-
import { expressTestService } from './express.test.service'
|
|
1
|
+
import type { ExpressApp } from './express.test.service.js'
|
|
2
|
+
import { expressTestService } from './express.test.service.js'
|
|
3
3
|
|
|
4
4
|
export type { ExpressApp }
|
|
5
5
|
|