@lark-apaas/fullstack-nestjs-core 1.0.3-alpha.2 → 1.0.3-alpha.3
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 +103 -72
- package/dist/index.js +99 -68
- package/package.json +5 -2
package/dist/index.cjs
CHANGED
|
@@ -13510,7 +13510,7 @@ __export(index_exports, {
|
|
|
13510
13510
|
module.exports = __toCommonJS(index_exports);
|
|
13511
13511
|
|
|
13512
13512
|
// src/modules/platform/module.ts
|
|
13513
|
-
var
|
|
13513
|
+
var import_common5 = require("@nestjs/common");
|
|
13514
13514
|
var import_core = require("@nestjs/core");
|
|
13515
13515
|
var import_config2 = __toESM(require_config2(), 1);
|
|
13516
13516
|
var import_nestjs_logger = require("@lark-apaas/nestjs-logger");
|
|
@@ -13621,6 +13621,101 @@ CsrfMiddleware = _ts_decorate2([
|
|
|
13621
13621
|
(0, import_common2.Injectable)()
|
|
13622
13622
|
], CsrfMiddleware);
|
|
13623
13623
|
|
|
13624
|
+
// src/middlewares/view-context/index.ts
|
|
13625
|
+
var import_common3 = require("@nestjs/common");
|
|
13626
|
+
function _ts_decorate3(decorators, target, key, desc) {
|
|
13627
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13628
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13629
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13630
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13631
|
+
}
|
|
13632
|
+
__name(_ts_decorate3, "_ts_decorate");
|
|
13633
|
+
var ViewContextMiddleware = class {
|
|
13634
|
+
static {
|
|
13635
|
+
__name(this, "ViewContextMiddleware");
|
|
13636
|
+
}
|
|
13637
|
+
use(req, res, next) {
|
|
13638
|
+
const { userId, tenantId, appId } = req.userContext;
|
|
13639
|
+
const csrfToken = req.csrfToken;
|
|
13640
|
+
res.locals = {
|
|
13641
|
+
csrfToken: csrfToken ?? "",
|
|
13642
|
+
userId: userId ?? "",
|
|
13643
|
+
tenantId: tenantId ?? "",
|
|
13644
|
+
appId: appId ?? "",
|
|
13645
|
+
...res.locals
|
|
13646
|
+
};
|
|
13647
|
+
next();
|
|
13648
|
+
}
|
|
13649
|
+
};
|
|
13650
|
+
ViewContextMiddleware = _ts_decorate3([
|
|
13651
|
+
(0, import_common3.Injectable)()
|
|
13652
|
+
], ViewContextMiddleware);
|
|
13653
|
+
|
|
13654
|
+
// src/middlewares/csrf_token/index.ts
|
|
13655
|
+
var import_common4 = require("@nestjs/common");
|
|
13656
|
+
|
|
13657
|
+
// src/middlewares/csrf_token/helper.ts
|
|
13658
|
+
var import_crypto = __toESM(require("crypto"), 1);
|
|
13659
|
+
function resolveCsrfTokenOptions(options) {
|
|
13660
|
+
return {
|
|
13661
|
+
...options,
|
|
13662
|
+
cookieKey: options.cookieKey ?? "suda-csrf-token",
|
|
13663
|
+
cookieMaxAge: options.cookieMaxAge ?? 1e3 * 60 * 60 * 24 * 30,
|
|
13664
|
+
cookiePath: options.cookiePath ?? "/"
|
|
13665
|
+
};
|
|
13666
|
+
}
|
|
13667
|
+
__name(resolveCsrfTokenOptions, "resolveCsrfTokenOptions");
|
|
13668
|
+
function genToken() {
|
|
13669
|
+
const ts = Math.floor(Date.now() / 1e3);
|
|
13670
|
+
const randInt64 = BigInt("0x" + import_crypto.default.randomBytes(8).toString("hex")).toString();
|
|
13671
|
+
const s = `${randInt64}.${ts}`;
|
|
13672
|
+
const sha1 = import_crypto.default.createHash("sha1");
|
|
13673
|
+
sha1.update(s);
|
|
13674
|
+
return `${sha1.digest("hex")}-${ts}`;
|
|
13675
|
+
}
|
|
13676
|
+
__name(genToken, "genToken");
|
|
13677
|
+
|
|
13678
|
+
// src/middlewares/csrf_token/index.ts
|
|
13679
|
+
function _ts_decorate4(decorators, target, key, desc) {
|
|
13680
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13681
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13682
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13683
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13684
|
+
}
|
|
13685
|
+
__name(_ts_decorate4, "_ts_decorate");
|
|
13686
|
+
var CsrfTokenMiddleware = class _CsrfTokenMiddleware {
|
|
13687
|
+
static {
|
|
13688
|
+
__name(this, "CsrfTokenMiddleware");
|
|
13689
|
+
}
|
|
13690
|
+
static options = resolveCsrfTokenOptions({});
|
|
13691
|
+
static configure(opts) {
|
|
13692
|
+
this.options = resolveCsrfTokenOptions(opts);
|
|
13693
|
+
}
|
|
13694
|
+
use(req, res, next) {
|
|
13695
|
+
const { cookieKey, cookieMaxAge, cookiePath } = _CsrfTokenMiddleware.options;
|
|
13696
|
+
const originToken = req.cookies[cookieKey.toLowerCase()];
|
|
13697
|
+
if (originToken) {
|
|
13698
|
+
req.csrfToken = originToken;
|
|
13699
|
+
next();
|
|
13700
|
+
} else {
|
|
13701
|
+
const token = genToken();
|
|
13702
|
+
req.csrfToken = token;
|
|
13703
|
+
res.cookie(cookieKey, token, {
|
|
13704
|
+
maxAge: cookieMaxAge,
|
|
13705
|
+
path: cookiePath,
|
|
13706
|
+
httpOnly: true,
|
|
13707
|
+
secure: true,
|
|
13708
|
+
sameSite: "none",
|
|
13709
|
+
partitioned: true
|
|
13710
|
+
});
|
|
13711
|
+
next();
|
|
13712
|
+
}
|
|
13713
|
+
}
|
|
13714
|
+
};
|
|
13715
|
+
CsrfTokenMiddleware = _ts_decorate4([
|
|
13716
|
+
(0, import_common4.Injectable)()
|
|
13717
|
+
], CsrfTokenMiddleware);
|
|
13718
|
+
|
|
13624
13719
|
// src/modules/platform/config/app.config.ts
|
|
13625
13720
|
var import_config = __toESM(require_config2(), 1);
|
|
13626
13721
|
var NAMESPACE = "app";
|
|
@@ -13634,13 +13729,13 @@ var app_config_default = (0, import_config.registerAs)(NAMESPACE, () => {
|
|
|
13634
13729
|
});
|
|
13635
13730
|
|
|
13636
13731
|
// src/modules/platform/module.ts
|
|
13637
|
-
function
|
|
13732
|
+
function _ts_decorate5(decorators, target, key, desc) {
|
|
13638
13733
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13639
13734
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13640
13735
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13641
13736
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13642
13737
|
}
|
|
13643
|
-
__name(
|
|
13738
|
+
__name(_ts_decorate5, "_ts_decorate");
|
|
13644
13739
|
var PLATFORM_MODULE_OPTIONS = "PLATFORM_MODULE_OPTIONS";
|
|
13645
13740
|
var PlatformModule = class _PlatformModule {
|
|
13646
13741
|
static {
|
|
@@ -13700,7 +13795,7 @@ var PlatformModule = class _PlatformModule {
|
|
|
13700
13795
|
},
|
|
13701
13796
|
{
|
|
13702
13797
|
provide: import_core.APP_PIPE,
|
|
13703
|
-
useClass:
|
|
13798
|
+
useClass: import_common5.ValidationPipe
|
|
13704
13799
|
}
|
|
13705
13800
|
],
|
|
13706
13801
|
exports: [
|
|
@@ -13715,6 +13810,7 @@ var PlatformModule = class _PlatformModule {
|
|
|
13715
13810
|
configure(consumer) {
|
|
13716
13811
|
const options = _PlatformModule.moduleOptions;
|
|
13717
13812
|
consumer.apply(UserContextMiddleware, import_nestjs_logger.LoggerContextMiddleware, import_nestjs_datapaas.SqlExecutionContextMiddleware).forRoutes("/*");
|
|
13813
|
+
consumer.apply(CsrfTokenMiddleware, ViewContextMiddleware).exclude("/api/*");
|
|
13718
13814
|
if (options.enableCsrf !== false) {
|
|
13719
13815
|
const csrfRoutes = options.csrfRoutes || "/api/*";
|
|
13720
13816
|
if (Array.isArray(csrfRoutes)) {
|
|
@@ -13727,9 +13823,9 @@ var PlatformModule = class _PlatformModule {
|
|
|
13727
13823
|
}
|
|
13728
13824
|
}
|
|
13729
13825
|
};
|
|
13730
|
-
PlatformModule =
|
|
13731
|
-
(0,
|
|
13732
|
-
(0,
|
|
13826
|
+
PlatformModule = _ts_decorate5([
|
|
13827
|
+
(0, import_common5.Global)(),
|
|
13828
|
+
(0, import_common5.Module)({})
|
|
13733
13829
|
], PlatformModule);
|
|
13734
13830
|
|
|
13735
13831
|
// src/setup.ts
|
|
@@ -13840,71 +13936,6 @@ async function configureApp(app, options) {
|
|
|
13840
13936
|
}
|
|
13841
13937
|
}
|
|
13842
13938
|
__name(configureApp, "configureApp");
|
|
13843
|
-
|
|
13844
|
-
// src/middlewares/csrf_token/index.ts
|
|
13845
|
-
var import_common4 = require("@nestjs/common");
|
|
13846
|
-
|
|
13847
|
-
// src/middlewares/csrf_token/helper.ts
|
|
13848
|
-
var import_crypto = __toESM(require("crypto"), 1);
|
|
13849
|
-
function resolveCsrfTokenOptions(options) {
|
|
13850
|
-
return {
|
|
13851
|
-
...options,
|
|
13852
|
-
cookieKey: options.cookieKey ?? "suda-csrf-token",
|
|
13853
|
-
cookieMaxAge: options.cookieMaxAge ?? 1e3 * 60 * 60 * 24 * 30,
|
|
13854
|
-
cookiePath: options.cookiePath ?? "/"
|
|
13855
|
-
};
|
|
13856
|
-
}
|
|
13857
|
-
__name(resolveCsrfTokenOptions, "resolveCsrfTokenOptions");
|
|
13858
|
-
function genToken() {
|
|
13859
|
-
const ts = Math.floor(Date.now() / 1e3);
|
|
13860
|
-
const randInt64 = BigInt("0x" + import_crypto.default.randomBytes(8).toString("hex")).toString();
|
|
13861
|
-
const s = `${randInt64}.${ts}`;
|
|
13862
|
-
const sha1 = import_crypto.default.createHash("sha1");
|
|
13863
|
-
sha1.update(s);
|
|
13864
|
-
return `${sha1.digest("hex")}-${ts}`;
|
|
13865
|
-
}
|
|
13866
|
-
__name(genToken, "genToken");
|
|
13867
|
-
|
|
13868
|
-
// src/middlewares/csrf_token/index.ts
|
|
13869
|
-
function _ts_decorate4(decorators, target, key, desc) {
|
|
13870
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13871
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13872
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13873
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13874
|
-
}
|
|
13875
|
-
__name(_ts_decorate4, "_ts_decorate");
|
|
13876
|
-
var CsrfTokenMiddleware = class _CsrfTokenMiddleware {
|
|
13877
|
-
static {
|
|
13878
|
-
__name(this, "CsrfTokenMiddleware");
|
|
13879
|
-
}
|
|
13880
|
-
static options = resolveCsrfTokenOptions({});
|
|
13881
|
-
static configure(opts) {
|
|
13882
|
-
this.options = resolveCsrfTokenOptions(opts);
|
|
13883
|
-
}
|
|
13884
|
-
use(req, res, next) {
|
|
13885
|
-
const { cookieKey, cookieMaxAge, cookiePath } = _CsrfTokenMiddleware.options;
|
|
13886
|
-
const originToken = req.cookies[cookieKey.toLowerCase()];
|
|
13887
|
-
if (originToken) {
|
|
13888
|
-
req.csrfToken = originToken;
|
|
13889
|
-
next();
|
|
13890
|
-
} else {
|
|
13891
|
-
const token = genToken();
|
|
13892
|
-
req.csrfToken = token;
|
|
13893
|
-
res.cookie(cookieKey, token, {
|
|
13894
|
-
maxAge: cookieMaxAge,
|
|
13895
|
-
path: cookiePath,
|
|
13896
|
-
httpOnly: true,
|
|
13897
|
-
secure: true,
|
|
13898
|
-
sameSite: "none",
|
|
13899
|
-
partitioned: true
|
|
13900
|
-
});
|
|
13901
|
-
next();
|
|
13902
|
-
}
|
|
13903
|
-
}
|
|
13904
|
-
};
|
|
13905
|
-
CsrfTokenMiddleware = _ts_decorate4([
|
|
13906
|
-
(0, import_common4.Injectable)()
|
|
13907
|
-
], CsrfTokenMiddleware);
|
|
13908
13939
|
// Annotate the CommonJS export names for ESM import in node:
|
|
13909
13940
|
0 && (module.exports = {
|
|
13910
13941
|
CsrfMiddleware,
|
package/dist/index.js
CHANGED
|
@@ -13609,6 +13609,101 @@ CsrfMiddleware = _ts_decorate2([
|
|
|
13609
13609
|
Injectable2()
|
|
13610
13610
|
], CsrfMiddleware);
|
|
13611
13611
|
|
|
13612
|
+
// src/middlewares/view-context/index.ts
|
|
13613
|
+
import { Injectable as Injectable3 } from "@nestjs/common";
|
|
13614
|
+
function _ts_decorate3(decorators, target, key, desc) {
|
|
13615
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13616
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13617
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13618
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13619
|
+
}
|
|
13620
|
+
__name(_ts_decorate3, "_ts_decorate");
|
|
13621
|
+
var ViewContextMiddleware = class {
|
|
13622
|
+
static {
|
|
13623
|
+
__name(this, "ViewContextMiddleware");
|
|
13624
|
+
}
|
|
13625
|
+
use(req, res, next) {
|
|
13626
|
+
const { userId, tenantId, appId } = req.userContext;
|
|
13627
|
+
const csrfToken = req.csrfToken;
|
|
13628
|
+
res.locals = {
|
|
13629
|
+
csrfToken: csrfToken ?? "",
|
|
13630
|
+
userId: userId ?? "",
|
|
13631
|
+
tenantId: tenantId ?? "",
|
|
13632
|
+
appId: appId ?? "",
|
|
13633
|
+
...res.locals
|
|
13634
|
+
};
|
|
13635
|
+
next();
|
|
13636
|
+
}
|
|
13637
|
+
};
|
|
13638
|
+
ViewContextMiddleware = _ts_decorate3([
|
|
13639
|
+
Injectable3()
|
|
13640
|
+
], ViewContextMiddleware);
|
|
13641
|
+
|
|
13642
|
+
// src/middlewares/csrf_token/index.ts
|
|
13643
|
+
import { Injectable as Injectable4 } from "@nestjs/common";
|
|
13644
|
+
|
|
13645
|
+
// src/middlewares/csrf_token/helper.ts
|
|
13646
|
+
import crypto from "crypto";
|
|
13647
|
+
function resolveCsrfTokenOptions(options) {
|
|
13648
|
+
return {
|
|
13649
|
+
...options,
|
|
13650
|
+
cookieKey: options.cookieKey ?? "suda-csrf-token",
|
|
13651
|
+
cookieMaxAge: options.cookieMaxAge ?? 1e3 * 60 * 60 * 24 * 30,
|
|
13652
|
+
cookiePath: options.cookiePath ?? "/"
|
|
13653
|
+
};
|
|
13654
|
+
}
|
|
13655
|
+
__name(resolveCsrfTokenOptions, "resolveCsrfTokenOptions");
|
|
13656
|
+
function genToken() {
|
|
13657
|
+
const ts = Math.floor(Date.now() / 1e3);
|
|
13658
|
+
const randInt64 = BigInt("0x" + crypto.randomBytes(8).toString("hex")).toString();
|
|
13659
|
+
const s = `${randInt64}.${ts}`;
|
|
13660
|
+
const sha1 = crypto.createHash("sha1");
|
|
13661
|
+
sha1.update(s);
|
|
13662
|
+
return `${sha1.digest("hex")}-${ts}`;
|
|
13663
|
+
}
|
|
13664
|
+
__name(genToken, "genToken");
|
|
13665
|
+
|
|
13666
|
+
// src/middlewares/csrf_token/index.ts
|
|
13667
|
+
function _ts_decorate4(decorators, target, key, desc) {
|
|
13668
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13669
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13670
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13671
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13672
|
+
}
|
|
13673
|
+
__name(_ts_decorate4, "_ts_decorate");
|
|
13674
|
+
var CsrfTokenMiddleware = class _CsrfTokenMiddleware {
|
|
13675
|
+
static {
|
|
13676
|
+
__name(this, "CsrfTokenMiddleware");
|
|
13677
|
+
}
|
|
13678
|
+
static options = resolveCsrfTokenOptions({});
|
|
13679
|
+
static configure(opts) {
|
|
13680
|
+
this.options = resolveCsrfTokenOptions(opts);
|
|
13681
|
+
}
|
|
13682
|
+
use(req, res, next) {
|
|
13683
|
+
const { cookieKey, cookieMaxAge, cookiePath } = _CsrfTokenMiddleware.options;
|
|
13684
|
+
const originToken = req.cookies[cookieKey.toLowerCase()];
|
|
13685
|
+
if (originToken) {
|
|
13686
|
+
req.csrfToken = originToken;
|
|
13687
|
+
next();
|
|
13688
|
+
} else {
|
|
13689
|
+
const token = genToken();
|
|
13690
|
+
req.csrfToken = token;
|
|
13691
|
+
res.cookie(cookieKey, token, {
|
|
13692
|
+
maxAge: cookieMaxAge,
|
|
13693
|
+
path: cookiePath,
|
|
13694
|
+
httpOnly: true,
|
|
13695
|
+
secure: true,
|
|
13696
|
+
sameSite: "none",
|
|
13697
|
+
partitioned: true
|
|
13698
|
+
});
|
|
13699
|
+
next();
|
|
13700
|
+
}
|
|
13701
|
+
}
|
|
13702
|
+
};
|
|
13703
|
+
CsrfTokenMiddleware = _ts_decorate4([
|
|
13704
|
+
Injectable4()
|
|
13705
|
+
], CsrfTokenMiddleware);
|
|
13706
|
+
|
|
13612
13707
|
// src/modules/platform/config/app.config.ts
|
|
13613
13708
|
var import_config = __toESM(require_config2(), 1);
|
|
13614
13709
|
var NAMESPACE = "app";
|
|
@@ -13622,13 +13717,13 @@ var app_config_default = (0, import_config.registerAs)(NAMESPACE, () => {
|
|
|
13622
13717
|
});
|
|
13623
13718
|
|
|
13624
13719
|
// src/modules/platform/module.ts
|
|
13625
|
-
function
|
|
13720
|
+
function _ts_decorate5(decorators, target, key, desc) {
|
|
13626
13721
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13627
13722
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13628
13723
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13629
13724
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13630
13725
|
}
|
|
13631
|
-
__name(
|
|
13726
|
+
__name(_ts_decorate5, "_ts_decorate");
|
|
13632
13727
|
var PLATFORM_MODULE_OPTIONS = "PLATFORM_MODULE_OPTIONS";
|
|
13633
13728
|
var PlatformModule = class _PlatformModule {
|
|
13634
13729
|
static {
|
|
@@ -13703,6 +13798,7 @@ var PlatformModule = class _PlatformModule {
|
|
|
13703
13798
|
configure(consumer) {
|
|
13704
13799
|
const options = _PlatformModule.moduleOptions;
|
|
13705
13800
|
consumer.apply(UserContextMiddleware, LoggerContextMiddleware, SqlExecutionContextMiddleware).forRoutes("/*");
|
|
13801
|
+
consumer.apply(CsrfTokenMiddleware, ViewContextMiddleware).exclude("/api/*");
|
|
13706
13802
|
if (options.enableCsrf !== false) {
|
|
13707
13803
|
const csrfRoutes = options.csrfRoutes || "/api/*";
|
|
13708
13804
|
if (Array.isArray(csrfRoutes)) {
|
|
@@ -13715,7 +13811,7 @@ var PlatformModule = class _PlatformModule {
|
|
|
13715
13811
|
}
|
|
13716
13812
|
}
|
|
13717
13813
|
};
|
|
13718
|
-
PlatformModule =
|
|
13814
|
+
PlatformModule = _ts_decorate5([
|
|
13719
13815
|
Global(),
|
|
13720
13816
|
Module({})
|
|
13721
13817
|
], PlatformModule);
|
|
@@ -13828,71 +13924,6 @@ async function configureApp(app, options) {
|
|
|
13828
13924
|
}
|
|
13829
13925
|
}
|
|
13830
13926
|
__name(configureApp, "configureApp");
|
|
13831
|
-
|
|
13832
|
-
// src/middlewares/csrf_token/index.ts
|
|
13833
|
-
import { Injectable as Injectable3 } from "@nestjs/common";
|
|
13834
|
-
|
|
13835
|
-
// src/middlewares/csrf_token/helper.ts
|
|
13836
|
-
import crypto from "crypto";
|
|
13837
|
-
function resolveCsrfTokenOptions(options) {
|
|
13838
|
-
return {
|
|
13839
|
-
...options,
|
|
13840
|
-
cookieKey: options.cookieKey ?? "suda-csrf-token",
|
|
13841
|
-
cookieMaxAge: options.cookieMaxAge ?? 1e3 * 60 * 60 * 24 * 30,
|
|
13842
|
-
cookiePath: options.cookiePath ?? "/"
|
|
13843
|
-
};
|
|
13844
|
-
}
|
|
13845
|
-
__name(resolveCsrfTokenOptions, "resolveCsrfTokenOptions");
|
|
13846
|
-
function genToken() {
|
|
13847
|
-
const ts = Math.floor(Date.now() / 1e3);
|
|
13848
|
-
const randInt64 = BigInt("0x" + crypto.randomBytes(8).toString("hex")).toString();
|
|
13849
|
-
const s = `${randInt64}.${ts}`;
|
|
13850
|
-
const sha1 = crypto.createHash("sha1");
|
|
13851
|
-
sha1.update(s);
|
|
13852
|
-
return `${sha1.digest("hex")}-${ts}`;
|
|
13853
|
-
}
|
|
13854
|
-
__name(genToken, "genToken");
|
|
13855
|
-
|
|
13856
|
-
// src/middlewares/csrf_token/index.ts
|
|
13857
|
-
function _ts_decorate4(decorators, target, key, desc) {
|
|
13858
|
-
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
13859
|
-
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
13860
|
-
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
13861
|
-
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
13862
|
-
}
|
|
13863
|
-
__name(_ts_decorate4, "_ts_decorate");
|
|
13864
|
-
var CsrfTokenMiddleware = class _CsrfTokenMiddleware {
|
|
13865
|
-
static {
|
|
13866
|
-
__name(this, "CsrfTokenMiddleware");
|
|
13867
|
-
}
|
|
13868
|
-
static options = resolveCsrfTokenOptions({});
|
|
13869
|
-
static configure(opts) {
|
|
13870
|
-
this.options = resolveCsrfTokenOptions(opts);
|
|
13871
|
-
}
|
|
13872
|
-
use(req, res, next) {
|
|
13873
|
-
const { cookieKey, cookieMaxAge, cookiePath } = _CsrfTokenMiddleware.options;
|
|
13874
|
-
const originToken = req.cookies[cookieKey.toLowerCase()];
|
|
13875
|
-
if (originToken) {
|
|
13876
|
-
req.csrfToken = originToken;
|
|
13877
|
-
next();
|
|
13878
|
-
} else {
|
|
13879
|
-
const token = genToken();
|
|
13880
|
-
req.csrfToken = token;
|
|
13881
|
-
res.cookie(cookieKey, token, {
|
|
13882
|
-
maxAge: cookieMaxAge,
|
|
13883
|
-
path: cookiePath,
|
|
13884
|
-
httpOnly: true,
|
|
13885
|
-
secure: true,
|
|
13886
|
-
sameSite: "none",
|
|
13887
|
-
partitioned: true
|
|
13888
|
-
});
|
|
13889
|
-
next();
|
|
13890
|
-
}
|
|
13891
|
-
}
|
|
13892
|
-
};
|
|
13893
|
-
CsrfTokenMiddleware = _ts_decorate4([
|
|
13894
|
-
Injectable3()
|
|
13895
|
-
], CsrfTokenMiddleware);
|
|
13896
13927
|
export {
|
|
13897
13928
|
CsrfMiddleware,
|
|
13898
13929
|
CsrfTokenMiddleware,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lark-apaas/fullstack-nestjs-core",
|
|
3
|
-
"version": "1.0.3-alpha.
|
|
3
|
+
"version": "1.0.3-alpha.3",
|
|
4
4
|
"description": "FullStack Nestjs Core",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,7 +19,9 @@
|
|
|
19
19
|
"node": ">=18.0.0"
|
|
20
20
|
},
|
|
21
21
|
"files": [
|
|
22
|
-
"dist"
|
|
22
|
+
"dist",
|
|
23
|
+
"templates",
|
|
24
|
+
"postinstall.config.mjs"
|
|
23
25
|
],
|
|
24
26
|
"exports": {
|
|
25
27
|
".": {
|
|
@@ -38,6 +40,7 @@
|
|
|
38
40
|
"lint:fix": "eslint src --ext .ts --fix"
|
|
39
41
|
},
|
|
40
42
|
"dependencies": {
|
|
43
|
+
"@lark-apaas/fullstack-cli": "workspace:*",
|
|
41
44
|
"@lark-apaas/nestjs-authnpaas": "^1.0.0",
|
|
42
45
|
"@lark-apaas/nestjs-datapaas": "^1.0.1",
|
|
43
46
|
"@lark-apaas/nestjs-logger": "^1.0.0",
|