@lark-apaas/fullstack-nestjs-core 1.1.12-alpha.2 → 1.1.12-alpha.20
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/index.cjs +90 -31
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +91 -33
- package/package.json +7 -9
package/dist/index.cjs
CHANGED
|
@@ -32,6 +32,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
32
32
|
// src/index.ts
|
|
33
33
|
var index_exports = {};
|
|
34
34
|
__export(index_exports, {
|
|
35
|
+
AutoTrace: () => import_nestjs_common5.AutoTrace,
|
|
35
36
|
CsrfMiddleware: () => CsrfMiddleware,
|
|
36
37
|
CsrfTokenMiddleware: () => CsrfTokenMiddleware,
|
|
37
38
|
DevToolsModule: () => import_nestjs_openapi_devtools2.DevToolsModule,
|
|
@@ -170,7 +171,51 @@ CsrfMiddleware = _ts_decorate2([
|
|
|
170
171
|
// src/middlewares/view-context/index.ts
|
|
171
172
|
var import_common3 = require("@nestjs/common");
|
|
172
173
|
var import_nestjs_common = require("@lark-apaas/nestjs-common");
|
|
173
|
-
|
|
174
|
+
|
|
175
|
+
// src/utils/safe-stringify.ts
|
|
176
|
+
function safeEscape(s) {
|
|
177
|
+
return s.replace(/[<>&='"\n\r\u2028\u2029]/g, function(c) {
|
|
178
|
+
switch (c.charCodeAt(0)) {
|
|
179
|
+
case 60:
|
|
180
|
+
return "\\u003c";
|
|
181
|
+
// <
|
|
182
|
+
case 62:
|
|
183
|
+
return "\\u003e";
|
|
184
|
+
// >
|
|
185
|
+
case 38:
|
|
186
|
+
return "\\u0026";
|
|
187
|
+
// &
|
|
188
|
+
case 61:
|
|
189
|
+
return "\\u003d";
|
|
190
|
+
// =
|
|
191
|
+
case 39:
|
|
192
|
+
return "\\u0027";
|
|
193
|
+
// '
|
|
194
|
+
case 34:
|
|
195
|
+
return "\\u0022";
|
|
196
|
+
// "
|
|
197
|
+
case 10:
|
|
198
|
+
return "\\u000a";
|
|
199
|
+
// \n
|
|
200
|
+
case 13:
|
|
201
|
+
return "\\u000d";
|
|
202
|
+
// \r
|
|
203
|
+
// 正常来说用户无法输入这几个字符, 现代浏览器也修复了这个问题
|
|
204
|
+
// https://zhuanlan.zhihu.com/p/29958439
|
|
205
|
+
case 8232:
|
|
206
|
+
return "\\u2028";
|
|
207
|
+
// 行分隔符
|
|
208
|
+
case 8233:
|
|
209
|
+
return "\\u2029";
|
|
210
|
+
// 段落分隔符
|
|
211
|
+
default:
|
|
212
|
+
return c;
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
__name(safeEscape, "safeEscape");
|
|
217
|
+
|
|
218
|
+
// src/middlewares/view-context/index.ts
|
|
174
219
|
function _ts_decorate3(decorators, target, key, desc) {
|
|
175
220
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
176
221
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -221,14 +266,13 @@ var ViewContextMiddleware = class _ViewContextMiddleware {
|
|
|
221
266
|
const { userId, tenantId, appId } = req.userContext;
|
|
222
267
|
const csrfToken = req.csrfToken;
|
|
223
268
|
const appInfo = await this.getAppInfo(appId);
|
|
224
|
-
this.logger.debug(`appInfo: ${JSON.stringify(appInfo)}`);
|
|
225
269
|
req.__platform_data__ = {
|
|
226
270
|
csrfToken: csrfToken ?? "",
|
|
227
271
|
userId: userId ?? "",
|
|
228
272
|
appId: appId ?? "",
|
|
229
|
-
appName: (
|
|
273
|
+
appName: safeEscape(appInfo?.app_name ?? "\u5999\u642D\u5E94\u7528"),
|
|
230
274
|
appAvatar: appInfo?.app_avatar ?? "",
|
|
231
|
-
appDescription: (
|
|
275
|
+
appDescription: safeEscape(appInfo?.app_description ?? ""),
|
|
232
276
|
tenantId
|
|
233
277
|
};
|
|
234
278
|
res.locals = {
|
|
@@ -237,9 +281,9 @@ var ViewContextMiddleware = class _ViewContextMiddleware {
|
|
|
237
281
|
userId: userId ?? "",
|
|
238
282
|
tenantId: tenantId ?? "",
|
|
239
283
|
appId: appId ?? "",
|
|
240
|
-
appName: (
|
|
284
|
+
appName: safeEscape(appInfo?.app_name ?? "\u5999\u642D\u5E94\u7528"),
|
|
241
285
|
appAvatar: appInfo?.app_avatar ?? "",
|
|
242
|
-
appDescription: (
|
|
286
|
+
appDescription: safeEscape(appInfo?.app_description ?? "")
|
|
243
287
|
};
|
|
244
288
|
next();
|
|
245
289
|
}
|
|
@@ -429,26 +473,30 @@ var HttpInterceptorService = class {
|
|
|
429
473
|
setupInterceptors() {
|
|
430
474
|
const axiosInstance = this.httpService.axiosRef;
|
|
431
475
|
axiosInstance.interceptors.request.use((config) => {
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
476
|
+
if (process.env.NODE_ENV === "development") {
|
|
477
|
+
this.logger.log("HTTP Request", {
|
|
478
|
+
method: config.method?.toUpperCase(),
|
|
479
|
+
url: config.url,
|
|
480
|
+
headers: config.headers,
|
|
481
|
+
params: config.params,
|
|
482
|
+
data: config.data
|
|
483
|
+
}, "HttpService");
|
|
484
|
+
}
|
|
439
485
|
return config;
|
|
440
486
|
}, (error) => {
|
|
441
487
|
this.logger.error("HTTP Request Error", error, "HttpService");
|
|
442
488
|
return Promise.reject(error);
|
|
443
489
|
});
|
|
444
490
|
axiosInstance.interceptors.response.use((response) => {
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
491
|
+
if (process.env.NODE_ENV === "development") {
|
|
492
|
+
this.logger.log("HTTP Response", {
|
|
493
|
+
method: response.config.method?.toUpperCase(),
|
|
494
|
+
url: response.config.url,
|
|
495
|
+
status: response.status,
|
|
496
|
+
statusText: response.statusText,
|
|
497
|
+
data: response.data
|
|
498
|
+
}, "HttpService");
|
|
499
|
+
}
|
|
452
500
|
return response;
|
|
453
501
|
}, (error) => {
|
|
454
502
|
this.logger.error("HTTP Response Error", {
|
|
@@ -691,14 +739,14 @@ var PlatformHttpClientService = class _PlatformHttpClientService {
|
|
|
691
739
|
*/
|
|
692
740
|
registerGlobalInterceptors() {
|
|
693
741
|
this.client.interceptors.request.use((config) => {
|
|
694
|
-
this.logger.
|
|
742
|
+
this.logger.debug(`Server SDK HTTP Request: ${config.method?.toUpperCase()} ${config.url}`);
|
|
695
743
|
return config;
|
|
696
744
|
}, (error) => {
|
|
697
|
-
this.logger.error("HTTP Request Error", error, "HttpService");
|
|
745
|
+
this.logger.error("Server SDK HTTP Request Error", error, "HttpService");
|
|
698
746
|
return Promise.reject(error);
|
|
699
747
|
});
|
|
700
748
|
this.client.interceptors.response.use((response) => {
|
|
701
|
-
this.logger.
|
|
749
|
+
this.logger.debug(`Server SDK HTTP Response: ${response.status} ${response.url}`);
|
|
702
750
|
return response;
|
|
703
751
|
}, (error) => {
|
|
704
752
|
const errorLog = {
|
|
@@ -706,7 +754,7 @@ var PlatformHttpClientService = class _PlatformHttpClientService {
|
|
|
706
754
|
statusText: error.response?.statusText,
|
|
707
755
|
message: error.message
|
|
708
756
|
};
|
|
709
|
-
this.logger.error(`HTTP Response Error: ${error.config?.method?.toUpperCase()} ${error.config?.url} ${JSON.stringify(errorLog)}`);
|
|
757
|
+
this.logger.error(`Server SDK HTTP Response Error: ${error.config?.method?.toUpperCase()} ${error.config?.url} ${JSON.stringify(errorLog)}`);
|
|
710
758
|
return Promise.reject(error);
|
|
711
759
|
});
|
|
712
760
|
}
|
|
@@ -718,7 +766,7 @@ PlatformHttpClientService = _ts_decorate8([
|
|
|
718
766
|
], PlatformHttpClientService);
|
|
719
767
|
|
|
720
768
|
// src/modules/platform/config/feature-switch.ts
|
|
721
|
-
var DISABLE_DATAPASS = process.env.
|
|
769
|
+
var DISABLE_DATAPASS = process.env.FORCE_FRAMEWORK_DISABLE_DATAPASS === "true";
|
|
722
770
|
|
|
723
771
|
// src/modules/platform/module.ts
|
|
724
772
|
function _ts_decorate9(decorators, target, key, desc) {
|
|
@@ -772,10 +820,12 @@ var PlatformModule = class _PlatformModule {
|
|
|
772
820
|
const appLogger = args[1];
|
|
773
821
|
const drizzleLogger = {
|
|
774
822
|
logQuery(query, params) {
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
823
|
+
if (process.env.NODE_ENV === "development") {
|
|
824
|
+
appLogger.log?.("SQL Query " + JSON.stringify({
|
|
825
|
+
query,
|
|
826
|
+
params
|
|
827
|
+
}), "Database");
|
|
828
|
+
}
|
|
779
829
|
}
|
|
780
830
|
};
|
|
781
831
|
return {
|
|
@@ -814,7 +864,11 @@ var PlatformModule = class _PlatformModule {
|
|
|
814
864
|
PlatformHttpClientService
|
|
815
865
|
]
|
|
816
866
|
},
|
|
817
|
-
HttpInterceptorService
|
|
867
|
+
HttpInterceptorService,
|
|
868
|
+
{
|
|
869
|
+
provide: import_core2.APP_INTERCEPTOR,
|
|
870
|
+
useClass: import_nestjs_observable.TraceInterceptor
|
|
871
|
+
}
|
|
818
872
|
],
|
|
819
873
|
exports: [
|
|
820
874
|
import_config2.ConfigModule,
|
|
@@ -834,7 +888,9 @@ var PlatformModule = class _PlatformModule {
|
|
|
834
888
|
if (process.env.NODE_ENV === "development") {
|
|
835
889
|
consumer.apply(FrameworkDebugMiddleware).forRoutes("/api/__framework__/debug");
|
|
836
890
|
}
|
|
837
|
-
consumer.apply(UserContextMiddleware, RequestContextMiddleware, import_nestjs_logger2.LoggerContextMiddleware,
|
|
891
|
+
consumer.apply(UserContextMiddleware, RequestContextMiddleware, import_nestjs_logger2.LoggerContextMiddleware, import_nestjs_observable.ObservableTraceMiddleware, ...DISABLE_DATAPASS ? [] : [
|
|
892
|
+
import_nestjs_datapaas.SqlExecutionContextMiddleware
|
|
893
|
+
]).forRoutes("/*");
|
|
838
894
|
consumer.apply(CsrfTokenMiddleware, ViewContextMiddleware).exclude("/api/(.*)").forRoutes("*");
|
|
839
895
|
if (options.enableCsrf !== false) {
|
|
840
896
|
const csrfRoutes = options.csrfRoutes || "/api/*";
|
|
@@ -878,6 +934,7 @@ async function configureApp(app, perms = defaultPerms) {
|
|
|
878
934
|
console.error("[OpenAPI] OpenAPI \u751F\u6210\u5931\u8D25:", err);
|
|
879
935
|
}
|
|
880
936
|
}
|
|
937
|
+
console.log("App Started Successfully.");
|
|
881
938
|
}
|
|
882
939
|
__name(configureApp, "configureApp");
|
|
883
940
|
|
|
@@ -887,8 +944,10 @@ __reExport(index_exports, require("@lark-apaas/nestjs-authnpaas"), module.export
|
|
|
887
944
|
__reExport(index_exports, require("@lark-apaas/nestjs-datapaas"), module.exports);
|
|
888
945
|
__reExport(index_exports, require("@lark-apaas/nestjs-observable"), module.exports);
|
|
889
946
|
__reExport(index_exports, require("@lark-apaas/nestjs-trigger"), module.exports);
|
|
947
|
+
var import_nestjs_common5 = require("@lark-apaas/nestjs-common");
|
|
890
948
|
// Annotate the CommonJS export names for ESM import in node:
|
|
891
949
|
0 && (module.exports = {
|
|
950
|
+
AutoTrace,
|
|
892
951
|
CsrfMiddleware,
|
|
893
952
|
CsrfTokenMiddleware,
|
|
894
953
|
DevToolsModule,
|
package/dist/index.d.cts
CHANGED
|
@@ -4,6 +4,7 @@ import { NestExpressApplication } from '@nestjs/platform-express';
|
|
|
4
4
|
export { DevToolsModule, DevToolsOptions, DevToolsV2Module, DevToolsV2Options } from '@lark-apaas/nestjs-openapi-devtools';
|
|
5
5
|
import { Request, Response, NextFunction } from 'express';
|
|
6
6
|
import { PlatformHttpClient } from '@lark-apaas/nestjs-common';
|
|
7
|
+
export { AutoTrace } from '@lark-apaas/nestjs-common';
|
|
7
8
|
export * from '@lark-apaas/nestjs-authnpaas';
|
|
8
9
|
export * from '@lark-apaas/nestjs-datapaas';
|
|
9
10
|
export * from '@lark-apaas/nestjs-observable';
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { NestExpressApplication } from '@nestjs/platform-express';
|
|
|
4
4
|
export { DevToolsModule, DevToolsOptions, DevToolsV2Module, DevToolsV2Options } from '@lark-apaas/nestjs-openapi-devtools';
|
|
5
5
|
import { Request, Response, NextFunction } from 'express';
|
|
6
6
|
import { PlatformHttpClient } from '@lark-apaas/nestjs-common';
|
|
7
|
+
export { AutoTrace } from '@lark-apaas/nestjs-common';
|
|
7
8
|
export * from '@lark-apaas/nestjs-authnpaas';
|
|
8
9
|
export * from '@lark-apaas/nestjs-datapaas';
|
|
9
10
|
export * from '@lark-apaas/nestjs-observable';
|
package/dist/index.js
CHANGED
|
@@ -3,10 +3,10 @@ var __name = (target, value) => __defProp(target, "name", { value, configurable:
|
|
|
3
3
|
|
|
4
4
|
// src/modules/platform/module.ts
|
|
5
5
|
import { Global, Module, ValidationPipe } from "@nestjs/common";
|
|
6
|
-
import { APP_PIPE } from "@nestjs/core";
|
|
6
|
+
import { APP_INTERCEPTOR, APP_PIPE } from "@nestjs/core";
|
|
7
7
|
import { CommonModule, OBSERVABLE_SERVICE } from "@lark-apaas/nestjs-common";
|
|
8
8
|
import { ConfigModule, ConfigService } from "@nestjs/config";
|
|
9
|
-
import { NestjsObservableModule as ObservableModule, Observable } from "@lark-apaas/nestjs-observable";
|
|
9
|
+
import { NestjsObservableModule as ObservableModule, Observable, ObservableTraceMiddleware, TraceInterceptor } from "@lark-apaas/nestjs-observable";
|
|
10
10
|
import { HttpModule } from "@nestjs/axios";
|
|
11
11
|
import { LoggerModule, AppLogger as AppLogger2, LoggerContextMiddleware } from "@lark-apaas/nestjs-logger";
|
|
12
12
|
import { DataPaasModule, SqlExecutionContextMiddleware } from "@lark-apaas/nestjs-datapaas";
|
|
@@ -128,7 +128,51 @@ CsrfMiddleware = _ts_decorate2([
|
|
|
128
128
|
// src/middlewares/view-context/index.ts
|
|
129
129
|
import { Inject, Injectable as Injectable3, Logger } from "@nestjs/common";
|
|
130
130
|
import { PLATFORM_HTTP_CLIENT } from "@lark-apaas/nestjs-common";
|
|
131
|
-
|
|
131
|
+
|
|
132
|
+
// src/utils/safe-stringify.ts
|
|
133
|
+
function safeEscape(s) {
|
|
134
|
+
return s.replace(/[<>&='"\n\r\u2028\u2029]/g, function(c) {
|
|
135
|
+
switch (c.charCodeAt(0)) {
|
|
136
|
+
case 60:
|
|
137
|
+
return "\\u003c";
|
|
138
|
+
// <
|
|
139
|
+
case 62:
|
|
140
|
+
return "\\u003e";
|
|
141
|
+
// >
|
|
142
|
+
case 38:
|
|
143
|
+
return "\\u0026";
|
|
144
|
+
// &
|
|
145
|
+
case 61:
|
|
146
|
+
return "\\u003d";
|
|
147
|
+
// =
|
|
148
|
+
case 39:
|
|
149
|
+
return "\\u0027";
|
|
150
|
+
// '
|
|
151
|
+
case 34:
|
|
152
|
+
return "\\u0022";
|
|
153
|
+
// "
|
|
154
|
+
case 10:
|
|
155
|
+
return "\\u000a";
|
|
156
|
+
// \n
|
|
157
|
+
case 13:
|
|
158
|
+
return "\\u000d";
|
|
159
|
+
// \r
|
|
160
|
+
// 正常来说用户无法输入这几个字符, 现代浏览器也修复了这个问题
|
|
161
|
+
// https://zhuanlan.zhihu.com/p/29958439
|
|
162
|
+
case 8232:
|
|
163
|
+
return "\\u2028";
|
|
164
|
+
// 行分隔符
|
|
165
|
+
case 8233:
|
|
166
|
+
return "\\u2029";
|
|
167
|
+
// 段落分隔符
|
|
168
|
+
default:
|
|
169
|
+
return c;
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
__name(safeEscape, "safeEscape");
|
|
174
|
+
|
|
175
|
+
// src/middlewares/view-context/index.ts
|
|
132
176
|
function _ts_decorate3(decorators, target, key, desc) {
|
|
133
177
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
134
178
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -179,14 +223,13 @@ var ViewContextMiddleware = class _ViewContextMiddleware {
|
|
|
179
223
|
const { userId, tenantId, appId } = req.userContext;
|
|
180
224
|
const csrfToken = req.csrfToken;
|
|
181
225
|
const appInfo = await this.getAppInfo(appId);
|
|
182
|
-
this.logger.debug(`appInfo: ${JSON.stringify(appInfo)}`);
|
|
183
226
|
req.__platform_data__ = {
|
|
184
227
|
csrfToken: csrfToken ?? "",
|
|
185
228
|
userId: userId ?? "",
|
|
186
229
|
appId: appId ?? "",
|
|
187
|
-
appName:
|
|
230
|
+
appName: safeEscape(appInfo?.app_name ?? "\u5999\u642D\u5E94\u7528"),
|
|
188
231
|
appAvatar: appInfo?.app_avatar ?? "",
|
|
189
|
-
appDescription:
|
|
232
|
+
appDescription: safeEscape(appInfo?.app_description ?? ""),
|
|
190
233
|
tenantId
|
|
191
234
|
};
|
|
192
235
|
res.locals = {
|
|
@@ -195,9 +238,9 @@ var ViewContextMiddleware = class _ViewContextMiddleware {
|
|
|
195
238
|
userId: userId ?? "",
|
|
196
239
|
tenantId: tenantId ?? "",
|
|
197
240
|
appId: appId ?? "",
|
|
198
|
-
appName:
|
|
241
|
+
appName: safeEscape(appInfo?.app_name ?? "\u5999\u642D\u5E94\u7528"),
|
|
199
242
|
appAvatar: appInfo?.app_avatar ?? "",
|
|
200
|
-
appDescription:
|
|
243
|
+
appDescription: safeEscape(appInfo?.app_description ?? "")
|
|
201
244
|
};
|
|
202
245
|
next();
|
|
203
246
|
}
|
|
@@ -387,26 +430,30 @@ var HttpInterceptorService = class {
|
|
|
387
430
|
setupInterceptors() {
|
|
388
431
|
const axiosInstance = this.httpService.axiosRef;
|
|
389
432
|
axiosInstance.interceptors.request.use((config) => {
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
433
|
+
if (process.env.NODE_ENV === "development") {
|
|
434
|
+
this.logger.log("HTTP Request", {
|
|
435
|
+
method: config.method?.toUpperCase(),
|
|
436
|
+
url: config.url,
|
|
437
|
+
headers: config.headers,
|
|
438
|
+
params: config.params,
|
|
439
|
+
data: config.data
|
|
440
|
+
}, "HttpService");
|
|
441
|
+
}
|
|
397
442
|
return config;
|
|
398
443
|
}, (error) => {
|
|
399
444
|
this.logger.error("HTTP Request Error", error, "HttpService");
|
|
400
445
|
return Promise.reject(error);
|
|
401
446
|
});
|
|
402
447
|
axiosInstance.interceptors.response.use((response) => {
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
448
|
+
if (process.env.NODE_ENV === "development") {
|
|
449
|
+
this.logger.log("HTTP Response", {
|
|
450
|
+
method: response.config.method?.toUpperCase(),
|
|
451
|
+
url: response.config.url,
|
|
452
|
+
status: response.status,
|
|
453
|
+
statusText: response.statusText,
|
|
454
|
+
data: response.data
|
|
455
|
+
}, "HttpService");
|
|
456
|
+
}
|
|
410
457
|
return response;
|
|
411
458
|
}, (error) => {
|
|
412
459
|
this.logger.error("HTTP Response Error", {
|
|
@@ -649,14 +696,14 @@ var PlatformHttpClientService = class _PlatformHttpClientService {
|
|
|
649
696
|
*/
|
|
650
697
|
registerGlobalInterceptors() {
|
|
651
698
|
this.client.interceptors.request.use((config) => {
|
|
652
|
-
this.logger.
|
|
699
|
+
this.logger.debug(`Server SDK HTTP Request: ${config.method?.toUpperCase()} ${config.url}`);
|
|
653
700
|
return config;
|
|
654
701
|
}, (error) => {
|
|
655
|
-
this.logger.error("HTTP Request Error", error, "HttpService");
|
|
702
|
+
this.logger.error("Server SDK HTTP Request Error", error, "HttpService");
|
|
656
703
|
return Promise.reject(error);
|
|
657
704
|
});
|
|
658
705
|
this.client.interceptors.response.use((response) => {
|
|
659
|
-
this.logger.
|
|
706
|
+
this.logger.debug(`Server SDK HTTP Response: ${response.status} ${response.url}`);
|
|
660
707
|
return response;
|
|
661
708
|
}, (error) => {
|
|
662
709
|
const errorLog = {
|
|
@@ -664,7 +711,7 @@ var PlatformHttpClientService = class _PlatformHttpClientService {
|
|
|
664
711
|
statusText: error.response?.statusText,
|
|
665
712
|
message: error.message
|
|
666
713
|
};
|
|
667
|
-
this.logger.error(`HTTP Response Error: ${error.config?.method?.toUpperCase()} ${error.config?.url} ${JSON.stringify(errorLog)}`);
|
|
714
|
+
this.logger.error(`Server SDK HTTP Response Error: ${error.config?.method?.toUpperCase()} ${error.config?.url} ${JSON.stringify(errorLog)}`);
|
|
668
715
|
return Promise.reject(error);
|
|
669
716
|
});
|
|
670
717
|
}
|
|
@@ -676,7 +723,7 @@ PlatformHttpClientService = _ts_decorate8([
|
|
|
676
723
|
], PlatformHttpClientService);
|
|
677
724
|
|
|
678
725
|
// src/modules/platform/config/feature-switch.ts
|
|
679
|
-
var DISABLE_DATAPASS = process.env.
|
|
726
|
+
var DISABLE_DATAPASS = process.env.FORCE_FRAMEWORK_DISABLE_DATAPASS === "true";
|
|
680
727
|
|
|
681
728
|
// src/modules/platform/module.ts
|
|
682
729
|
function _ts_decorate9(decorators, target, key, desc) {
|
|
@@ -730,10 +777,12 @@ var PlatformModule = class _PlatformModule {
|
|
|
730
777
|
const appLogger = args[1];
|
|
731
778
|
const drizzleLogger = {
|
|
732
779
|
logQuery(query, params) {
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
780
|
+
if (process.env.NODE_ENV === "development") {
|
|
781
|
+
appLogger.log?.("SQL Query " + JSON.stringify({
|
|
782
|
+
query,
|
|
783
|
+
params
|
|
784
|
+
}), "Database");
|
|
785
|
+
}
|
|
737
786
|
}
|
|
738
787
|
};
|
|
739
788
|
return {
|
|
@@ -772,7 +821,11 @@ var PlatformModule = class _PlatformModule {
|
|
|
772
821
|
PlatformHttpClientService
|
|
773
822
|
]
|
|
774
823
|
},
|
|
775
|
-
HttpInterceptorService
|
|
824
|
+
HttpInterceptorService,
|
|
825
|
+
{
|
|
826
|
+
provide: APP_INTERCEPTOR,
|
|
827
|
+
useClass: TraceInterceptor
|
|
828
|
+
}
|
|
776
829
|
],
|
|
777
830
|
exports: [
|
|
778
831
|
ConfigModule,
|
|
@@ -792,7 +845,9 @@ var PlatformModule = class _PlatformModule {
|
|
|
792
845
|
if (process.env.NODE_ENV === "development") {
|
|
793
846
|
consumer.apply(FrameworkDebugMiddleware).forRoutes("/api/__framework__/debug");
|
|
794
847
|
}
|
|
795
|
-
consumer.apply(UserContextMiddleware, RequestContextMiddleware, LoggerContextMiddleware,
|
|
848
|
+
consumer.apply(UserContextMiddleware, RequestContextMiddleware, LoggerContextMiddleware, ObservableTraceMiddleware, ...DISABLE_DATAPASS ? [] : [
|
|
849
|
+
SqlExecutionContextMiddleware
|
|
850
|
+
]).forRoutes("/*");
|
|
796
851
|
consumer.apply(CsrfTokenMiddleware, ViewContextMiddleware).exclude("/api/(.*)").forRoutes("*");
|
|
797
852
|
if (options.enableCsrf !== false) {
|
|
798
853
|
const csrfRoutes = options.csrfRoutes || "/api/*";
|
|
@@ -836,6 +891,7 @@ async function configureApp(app, perms = defaultPerms) {
|
|
|
836
891
|
console.error("[OpenAPI] OpenAPI \u751F\u6210\u5931\u8D25:", err);
|
|
837
892
|
}
|
|
838
893
|
}
|
|
894
|
+
console.log("App Started Successfully.");
|
|
839
895
|
}
|
|
840
896
|
__name(configureApp, "configureApp");
|
|
841
897
|
|
|
@@ -845,7 +901,9 @@ export * from "@lark-apaas/nestjs-authnpaas";
|
|
|
845
901
|
export * from "@lark-apaas/nestjs-datapaas";
|
|
846
902
|
export * from "@lark-apaas/nestjs-observable";
|
|
847
903
|
export * from "@lark-apaas/nestjs-trigger";
|
|
904
|
+
import { AutoTrace } from "@lark-apaas/nestjs-common";
|
|
848
905
|
export {
|
|
906
|
+
AutoTrace,
|
|
849
907
|
CsrfMiddleware,
|
|
850
908
|
CsrfTokenMiddleware,
|
|
851
909
|
DevToolsModule,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lark-apaas/fullstack-nestjs-core",
|
|
3
|
-
"version": "1.1.12-alpha.
|
|
3
|
+
"version": "1.1.12-alpha.20",
|
|
4
4
|
"description": "FullStack Nestjs Core",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -39,18 +39,17 @@
|
|
|
39
39
|
"prepublishOnly": "npm run build"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@lark-apaas/http-client": "0.1.2",
|
|
42
|
+
"@lark-apaas/http-client": "^0.1.2",
|
|
43
43
|
"@lark-apaas/nestjs-authnpaas": "^1.0.2",
|
|
44
|
-
"@lark-apaas/nestjs-common": "
|
|
45
|
-
"@lark-apaas/nestjs-datapaas": "
|
|
46
|
-
"@lark-apaas/nestjs-logger": "
|
|
47
|
-
"@lark-apaas/nestjs-observable": "
|
|
44
|
+
"@lark-apaas/nestjs-common": "0.1.2-alpha.1",
|
|
45
|
+
"@lark-apaas/nestjs-datapaas": "1.0.8-alpha.2",
|
|
46
|
+
"@lark-apaas/nestjs-logger": "1.0.6-alpha.2",
|
|
47
|
+
"@lark-apaas/nestjs-observable": "0.0.3-alpha.1",
|
|
48
48
|
"@lark-apaas/nestjs-openapi-devtools": "^1.0.9",
|
|
49
49
|
"@lark-apaas/nestjs-trigger": "^0.0.1",
|
|
50
50
|
"@nestjs/axios": "^4.0.1",
|
|
51
51
|
"axios": "^1.13.2",
|
|
52
|
-
"cookie-parser": "^1.4.7"
|
|
53
|
-
"serialize-javascript": "^7.0.2"
|
|
52
|
+
"cookie-parser": "^1.4.7"
|
|
54
53
|
},
|
|
55
54
|
"devDependencies": {
|
|
56
55
|
"@nestjs/common": "^10.4.20",
|
|
@@ -58,7 +57,6 @@
|
|
|
58
57
|
"@nestjs/swagger": "^7.4.2",
|
|
59
58
|
"@types/cookie-parser": "^1.4.9",
|
|
60
59
|
"@types/express": "^5.0.3",
|
|
61
|
-
"@types/serialize-javascript": "^5.0.4",
|
|
62
60
|
"class-transformer": "^0.5.1",
|
|
63
61
|
"class-validator": "^0.14.2",
|
|
64
62
|
"drizzle-orm": "0.44.6",
|