@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 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 import_common3 = require("@nestjs/common");
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 _ts_decorate3(decorators, target, key, desc) {
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(_ts_decorate3, "_ts_decorate");
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: import_common3.ValidationPipe
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 = _ts_decorate3([
13731
- (0, import_common3.Global)(),
13732
- (0, import_common3.Module)({})
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 _ts_decorate3(decorators, target, key, desc) {
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(_ts_decorate3, "_ts_decorate");
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 = _ts_decorate3([
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.2",
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",