yingzios-platform-backend-shared 1.0.1

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.
Files changed (194) hide show
  1. package/README.md +51 -0
  2. package/dist/apollo/apollo.config.d.ts +26 -0
  3. package/dist/apollo/apollo.config.d.ts.map +1 -0
  4. package/dist/apollo/apollo.config.js +2 -0
  5. package/dist/apollo/apollo.module.d.ts +13 -0
  6. package/dist/apollo/apollo.module.d.ts.map +1 -0
  7. package/dist/apollo/apollo.module.js +61 -0
  8. package/dist/apollo/apollo.service.d.ts +17 -0
  9. package/dist/apollo/apollo.service.d.ts.map +1 -0
  10. package/dist/apollo/apollo.service.js +35 -0
  11. package/dist/apollo/index.d.ts +5 -0
  12. package/dist/apollo/index.d.ts.map +1 -0
  13. package/dist/apollo/index.js +17 -0
  14. package/dist/cache/cache.config.d.ts +28 -0
  15. package/dist/cache/cache.config.d.ts.map +1 -0
  16. package/dist/cache/cache.config.js +2 -0
  17. package/dist/cache/cache.module.d.ts +39 -0
  18. package/dist/cache/cache.module.d.ts.map +1 -0
  19. package/dist/cache/cache.module.js +75 -0
  20. package/dist/cache/cache.service.d.ts +49 -0
  21. package/dist/cache/cache.service.d.ts.map +1 -0
  22. package/dist/cache/cache.service.js +208 -0
  23. package/dist/cache/index.d.ts +4 -0
  24. package/dist/cache/index.d.ts.map +1 -0
  25. package/dist/cache/index.js +19 -0
  26. package/dist/env/env-loader.d.ts +50 -0
  27. package/dist/env/env-loader.d.ts.map +1 -0
  28. package/dist/env/env-loader.js +159 -0
  29. package/dist/env/env.module.d.ts +11 -0
  30. package/dist/env/env.module.d.ts.map +1 -0
  31. package/dist/env/env.module.js +47 -0
  32. package/dist/env/env.service.d.ts +31 -0
  33. package/dist/env/env.service.d.ts.map +1 -0
  34. package/dist/env/env.service.js +195 -0
  35. package/dist/env/index.d.ts +4 -0
  36. package/dist/env/index.d.ts.map +1 -0
  37. package/dist/env/index.js +19 -0
  38. package/dist/index.d.ts +12 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +27 -0
  41. package/dist/internal-auth/decorators/caller.decorator.d.ts +29 -0
  42. package/dist/internal-auth/decorators/caller.decorator.d.ts.map +1 -0
  43. package/dist/internal-auth/decorators/caller.decorator.js +37 -0
  44. package/dist/internal-auth/decorators/index.d.ts +3 -0
  45. package/dist/internal-auth/decorators/index.d.ts.map +1 -0
  46. package/dist/internal-auth/decorators/index.js +18 -0
  47. package/dist/internal-auth/decorators/use-either-guard.decorator.d.ts +31 -0
  48. package/dist/internal-auth/decorators/use-either-guard.decorator.d.ts.map +1 -0
  49. package/dist/internal-auth/decorators/use-either-guard.decorator.js +79 -0
  50. package/dist/internal-auth/guards/index.d.ts +2 -0
  51. package/dist/internal-auth/guards/index.d.ts.map +1 -0
  52. package/dist/internal-auth/guards/index.js +17 -0
  53. package/dist/internal-auth/guards/service-key.guard.d.ts +36 -0
  54. package/dist/internal-auth/guards/service-key.guard.d.ts.map +1 -0
  55. package/dist/internal-auth/guards/service-key.guard.js +86 -0
  56. package/dist/internal-auth/index.d.ts +43 -0
  57. package/dist/internal-auth/index.d.ts.map +1 -0
  58. package/dist/internal-auth/index.js +62 -0
  59. package/dist/internal-auth/internal-auth.module.d.ts +62 -0
  60. package/dist/internal-auth/internal-auth.module.d.ts.map +1 -0
  61. package/dist/internal-auth/internal-auth.module.js +118 -0
  62. package/dist/internal-auth/internal-http.service.d.ts +72 -0
  63. package/dist/internal-auth/internal-http.service.d.ts.map +1 -0
  64. package/dist/internal-auth/internal-http.service.js +119 -0
  65. package/dist/jwt/auto-fill-user.pipe.d.ts +43 -0
  66. package/dist/jwt/auto-fill-user.pipe.d.ts.map +1 -0
  67. package/dist/jwt/auto-fill-user.pipe.js +166 -0
  68. package/dist/jwt/decorators/current-user.decorator.d.ts +37 -0
  69. package/dist/jwt/decorators/current-user.decorator.d.ts.map +1 -0
  70. package/dist/jwt/decorators/current-user.decorator.js +29 -0
  71. package/dist/jwt/decorators/public.decorator.d.ts +8 -0
  72. package/dist/jwt/decorators/public.decorator.d.ts.map +1 -0
  73. package/dist/jwt/decorators/public.decorator.js +12 -0
  74. package/dist/jwt/guards/jwt-auth.guard.d.ts +20 -0
  75. package/dist/jwt/guards/jwt-auth.guard.d.ts.map +1 -0
  76. package/dist/jwt/guards/jwt-auth.guard.js +88 -0
  77. package/dist/jwt/index.d.ts +8 -0
  78. package/dist/jwt/index.d.ts.map +1 -0
  79. package/dist/jwt/index.js +26 -0
  80. package/dist/jwt/jwt-config.service.d.ts +10 -0
  81. package/dist/jwt/jwt-config.service.d.ts.map +1 -0
  82. package/dist/jwt/jwt-config.service.js +40 -0
  83. package/dist/jwt/jwt.config.d.ts +15 -0
  84. package/dist/jwt/jwt.config.d.ts.map +1 -0
  85. package/dist/jwt/jwt.config.js +2 -0
  86. package/dist/jwt/jwt.module.d.ts +19 -0
  87. package/dist/jwt/jwt.module.d.ts.map +1 -0
  88. package/dist/jwt/jwt.module.js +100 -0
  89. package/dist/jwt/jwt.service.d.ts +31 -0
  90. package/dist/jwt/jwt.service.d.ts.map +1 -0
  91. package/dist/jwt/jwt.service.js +71 -0
  92. package/dist/jwt/strategies/jwt.strategy.d.ts +25 -0
  93. package/dist/jwt/strategies/jwt.strategy.d.ts.map +1 -0
  94. package/dist/jwt/strategies/jwt.strategy.js +150 -0
  95. package/dist/jwt/user-aware-axios.service.d.ts +17 -0
  96. package/dist/jwt/user-aware-axios.service.d.ts.map +1 -0
  97. package/dist/jwt/user-aware-axios.service.js +105 -0
  98. package/dist/jwt/utils/jwt.utils.d.ts +24 -0
  99. package/dist/jwt/utils/jwt.utils.d.ts.map +1 -0
  100. package/dist/jwt/utils/jwt.utils.js +40 -0
  101. package/dist/logger/index.d.ts +4 -0
  102. package/dist/logger/index.d.ts.map +1 -0
  103. package/dist/logger/index.js +19 -0
  104. package/dist/logger/logger.config.d.ts +41 -0
  105. package/dist/logger/logger.config.d.ts.map +1 -0
  106. package/dist/logger/logger.config.js +13 -0
  107. package/dist/logger/logger.module.d.ts +17 -0
  108. package/dist/logger/logger.module.d.ts.map +1 -0
  109. package/dist/logger/logger.module.js +49 -0
  110. package/dist/logger/logger.service.d.ts +62 -0
  111. package/dist/logger/logger.service.d.ts.map +1 -0
  112. package/dist/logger/logger.service.js +124 -0
  113. package/dist/logger/winston.config.d.ts +43 -0
  114. package/dist/logger/winston.config.d.ts.map +1 -0
  115. package/dist/logger/winston.config.js +183 -0
  116. package/dist/nacos/index.d.ts +4 -0
  117. package/dist/nacos/index.d.ts.map +1 -0
  118. package/dist/nacos/index.js +19 -0
  119. package/dist/nacos/nacos.config.d.ts +10 -0
  120. package/dist/nacos/nacos.config.d.ts.map +1 -0
  121. package/dist/nacos/nacos.config.js +2 -0
  122. package/dist/nacos/nacos.module.d.ts +9 -0
  123. package/dist/nacos/nacos.module.d.ts.map +1 -0
  124. package/dist/nacos/nacos.module.js +42 -0
  125. package/dist/nacos/nacos.service.d.ts +43 -0
  126. package/dist/nacos/nacos.service.d.ts.map +1 -0
  127. package/dist/nacos/nacos.service.js +212 -0
  128. package/dist/nacos/utils.d.ts +10 -0
  129. package/dist/nacos/utils.d.ts.map +1 -0
  130. package/dist/nacos/utils.js +65 -0
  131. package/dist/restful/current-request.util.d.ts +16 -0
  132. package/dist/restful/current-request.util.d.ts.map +1 -0
  133. package/dist/restful/current-request.util.js +34 -0
  134. package/dist/restful/http-exception.filter.d.ts +24 -0
  135. package/dist/restful/http-exception.filter.d.ts.map +1 -0
  136. package/dist/restful/http-exception.filter.js +126 -0
  137. package/dist/restful/index.d.ts +8 -0
  138. package/dist/restful/index.d.ts.map +1 -0
  139. package/dist/restful/index.js +23 -0
  140. package/dist/restful/request-context.middleware.d.ts +6 -0
  141. package/dist/restful/request-context.middleware.d.ts.map +1 -0
  142. package/dist/restful/request-context.middleware.js +25 -0
  143. package/dist/restful/response-codes.d.ts +104 -0
  144. package/dist/restful/response-codes.d.ts.map +1 -0
  145. package/dist/restful/response-codes.js +163 -0
  146. package/dist/restful/response.dto.d.ts +52 -0
  147. package/dist/restful/response.dto.d.ts.map +1 -0
  148. package/dist/restful/response.dto.js +146 -0
  149. package/dist/restful/response.interceptor.d.ts +17 -0
  150. package/dist/restful/response.interceptor.d.ts.map +1 -0
  151. package/dist/restful/response.interceptor.js +86 -0
  152. package/dist/restful/restful.module.d.ts +5 -0
  153. package/dist/restful/restful.module.d.ts.map +1 -0
  154. package/dist/restful/restful.module.js +26 -0
  155. package/dist/sequelize/index.d.ts +4 -0
  156. package/dist/sequelize/index.d.ts.map +1 -0
  157. package/dist/sequelize/index.js +19 -0
  158. package/dist/sequelize/sequelize.config.d.ts +24 -0
  159. package/dist/sequelize/sequelize.config.d.ts.map +1 -0
  160. package/dist/sequelize/sequelize.config.js +5 -0
  161. package/dist/sequelize/sequelize.module.d.ts +28 -0
  162. package/dist/sequelize/sequelize.module.d.ts.map +1 -0
  163. package/dist/sequelize/sequelize.module.js +50 -0
  164. package/dist/sequelize/sequelize.provider.d.ts +7 -0
  165. package/dist/sequelize/sequelize.provider.d.ts.map +1 -0
  166. package/dist/sequelize/sequelize.provider.js +154 -0
  167. package/dist/snowflake/index.d.ts +4 -0
  168. package/dist/snowflake/index.d.ts.map +1 -0
  169. package/dist/snowflake/index.js +19 -0
  170. package/dist/snowflake/snowflake.config.d.ts +30 -0
  171. package/dist/snowflake/snowflake.config.d.ts.map +1 -0
  172. package/dist/snowflake/snowflake.config.js +12 -0
  173. package/dist/snowflake/snowflake.module.d.ts +17 -0
  174. package/dist/snowflake/snowflake.module.d.ts.map +1 -0
  175. package/dist/snowflake/snowflake.module.js +58 -0
  176. package/dist/snowflake/snowflake.service.d.ts +21 -0
  177. package/dist/snowflake/snowflake.service.d.ts.map +1 -0
  178. package/dist/snowflake/snowflake.service.js +44 -0
  179. package/dist/swagger/index.d.ts +6 -0
  180. package/dist/swagger/index.d.ts.map +1 -0
  181. package/dist/swagger/index.js +19 -0
  182. package/dist/swagger/swagger.config.d.ts +45 -0
  183. package/dist/swagger/swagger.config.d.ts.map +1 -0
  184. package/dist/swagger/swagger.config.js +19 -0
  185. package/dist/swagger/swagger.decorators.d.ts +21 -0
  186. package/dist/swagger/swagger.decorators.d.ts.map +1 -0
  187. package/dist/swagger/swagger.decorators.js +112 -0
  188. package/dist/swagger/swagger.module.d.ts +15 -0
  189. package/dist/swagger/swagger.module.d.ts.map +1 -0
  190. package/dist/swagger/swagger.module.js +49 -0
  191. package/dist/swagger/swagger.service.d.ts +44 -0
  192. package/dist/swagger/swagger.service.d.ts.map +1 -0
  193. package/dist/swagger/swagger.service.js +202 -0
  194. package/package.json +75 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cache/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,iBAAiB,CAAC;AAChC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./cache.config"), exports);
18
+ __exportStar(require("./cache.service"), exports);
19
+ __exportStar(require("./cache.module"), exports);
@@ -0,0 +1,50 @@
1
+ export interface EnvLoadOptions {
2
+ /**
3
+ * 服务目录路径(通常是 __dirname 所在目录)
4
+ * 如果不传,默认使用 process.cwd()
5
+ */
6
+ serviceDir?: string;
7
+ /**
8
+ * 是否启用根目录继承(默认 true)
9
+ */
10
+ inheritFromRoot?: boolean;
11
+ /**
12
+ * 根目录路径(默认自动向上查找包含 nx.json 的目录)
13
+ */
14
+ rootDir?: string;
15
+ /**
16
+ * 是否打印加载日志(默认 true)
17
+ */
18
+ verbose?: boolean;
19
+ }
20
+ /**
21
+ * 加载环境变量(支持根目录继承)
22
+ *
23
+ * 加载顺序:
24
+ * 1. 根目录 .env.local(公共配置)
25
+ * 2. 服务目录 .env.local(服务特定配置,会覆盖公共配置)
26
+ *
27
+ * @example
28
+ * ```typescript
29
+ * // 在服务的 main.ts 或 utils/index.ts 中
30
+ * import { loadEnvWithInheritance } from 'yz-web-server-shared';
31
+ *
32
+ * loadEnvWithInheritance({ serviceDir: __dirname });
33
+ * ```
34
+ */
35
+ export declare function loadEnvWithInheritance(options?: EnvLoadOptions): void;
36
+ /**
37
+ * 环境变量初始化函数(默认配置)
38
+ *
39
+ * 各服务可直接 import 使用:
40
+ * ```typescript
41
+ * import { envInitialize } from 'yz-web-server-shared';
42
+ * envInitialize();
43
+ * ```
44
+ *
45
+ * 加载顺序:
46
+ * 1. 根目录 .env.local(公共配置,如 Service Keys)
47
+ * 2. 服务目录 .env.local(服务特定配置,会覆盖公共配置)
48
+ */
49
+ export declare function envInitialize(): void;
50
+ //# sourceMappingURL=env-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-loader.d.ts","sourceRoot":"","sources":["../../src/env/env-loader.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;OAEG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA2ED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,GAAE,cAAmB,GAAG,IAAI,CAqCzE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,aAAa,IAAI,IAAI,CAMpC"}
@@ -0,0 +1,159 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.loadEnvWithInheritance = loadEnvWithInheritance;
37
+ exports.envInitialize = envInitialize;
38
+ const dotenv = __importStar(require("dotenv"));
39
+ const fs = __importStar(require("fs"));
40
+ const path = __importStar(require("path"));
41
+ /**
42
+ * 查找 monorepo 根目录
43
+ * 向上查找包含 nx.json 或 pnpm-workspace.yaml 的目录
44
+ */
45
+ function findMonorepoRoot(startDir) {
46
+ let currentDir = startDir;
47
+ const root = path.parse(currentDir).root;
48
+ while (currentDir !== root) {
49
+ if (fs.existsSync(path.join(currentDir, 'nx.json')) ||
50
+ fs.existsSync(path.join(currentDir, 'pnpm-workspace.yaml'))) {
51
+ return currentDir;
52
+ }
53
+ currentDir = path.dirname(currentDir);
54
+ }
55
+ return null;
56
+ }
57
+ /**
58
+ * 获取环境相关的配置文件列表
59
+ * 注意:.env.example 是示例文件,不会被加载
60
+ */
61
+ function getEnvFiles(env) {
62
+ if (env === 'test') {
63
+ return ['.env.test', '.env.local', '.env'];
64
+ }
65
+ if (env === 'prod' || env === 'production') {
66
+ return ['.env.prod', '.env.local', '.env'];
67
+ }
68
+ return ['.env.local', '.env'];
69
+ }
70
+ /**
71
+ * 从指定目录加载第一个存在的 .env 文件
72
+ * @returns 加载的文件路径,如果没有找到则返回 null
73
+ */
74
+ function loadEnvFromDir(dir, envFiles, override, verbose, label) {
75
+ for (const envFileName of envFiles) {
76
+ const envFilePath = path.join(dir, envFileName);
77
+ if (fs.existsSync(envFilePath)) {
78
+ const result = dotenv.config({ path: envFilePath, override });
79
+ if (result.error) {
80
+ console.error(`无法读取 ${label} .env 文件: ${envFilePath}`, result.error);
81
+ continue;
82
+ }
83
+ const injectedCount = Object.keys(result.parsed || {}).length;
84
+ if (injectedCount === 0) {
85
+ if (verbose) {
86
+ console.warn(`警告: ${envFilePath} 未解析出任何环境变量,继续尝试后续配置文件`);
87
+ }
88
+ continue;
89
+ }
90
+ if (verbose) {
91
+ console.log(`[${label}] 加载环境变量: ${envFilePath} (${injectedCount} 项)`);
92
+ }
93
+ return envFilePath;
94
+ }
95
+ }
96
+ return null;
97
+ }
98
+ /**
99
+ * 加载环境变量(支持根目录继承)
100
+ *
101
+ * 加载顺序:
102
+ * 1. 根目录 .env.local(公共配置)
103
+ * 2. 服务目录 .env.local(服务特定配置,会覆盖公共配置)
104
+ *
105
+ * @example
106
+ * ```typescript
107
+ * // 在服务的 main.ts 或 utils/index.ts 中
108
+ * import { loadEnvWithInheritance } from 'yz-web-server-shared';
109
+ *
110
+ * loadEnvWithInheritance({ serviceDir: __dirname });
111
+ * ```
112
+ */
113
+ function loadEnvWithInheritance(options = {}) {
114
+ const { serviceDir = process.cwd(), inheritFromRoot = true, rootDir, verbose = true, } = options;
115
+ const env = process.env.NODE_ENV;
116
+ const envFiles = getEnvFiles(env);
117
+ if (verbose) {
118
+ console.log(`---------[ 系统变量 ]---------`);
119
+ console.log(`NODE_ENV: ${env || 'development'}`);
120
+ }
121
+ let rootLoaded = null;
122
+ let serviceLoaded = null;
123
+ // 1. 先加载根目录配置(公共配置)
124
+ if (inheritFromRoot) {
125
+ const detectedRootDir = rootDir || findMonorepoRoot(serviceDir);
126
+ if (detectedRootDir && detectedRootDir !== serviceDir) {
127
+ rootLoaded = loadEnvFromDir(detectedRootDir, envFiles, false, verbose, '根目录');
128
+ }
129
+ }
130
+ // 2. 再加载服务目录配置(服务特定配置,会覆盖公共配置)
131
+ serviceLoaded = loadEnvFromDir(serviceDir, envFiles, true, verbose, '服务目录');
132
+ // 输出加载结果
133
+ if (verbose) {
134
+ if (!rootLoaded && !serviceLoaded) {
135
+ console.warn(`警告: 未找到任何环境配置文件`);
136
+ }
137
+ console.log(`---------[ /系统变量 ]---------`);
138
+ }
139
+ }
140
+ /**
141
+ * 环境变量初始化函数(默认配置)
142
+ *
143
+ * 各服务可直接 import 使用:
144
+ * ```typescript
145
+ * import { envInitialize } from 'yz-web-server-shared';
146
+ * envInitialize();
147
+ * ```
148
+ *
149
+ * 加载顺序:
150
+ * 1. 根目录 .env.local(公共配置,如 Service Keys)
151
+ * 2. 服务目录 .env.local(服务特定配置,会覆盖公共配置)
152
+ */
153
+ function envInitialize() {
154
+ loadEnvWithInheritance({
155
+ serviceDir: process.cwd(),
156
+ inheritFromRoot: true,
157
+ verbose: process.env.NODE_ENV !== 'test',
158
+ });
159
+ }
@@ -0,0 +1,11 @@
1
+ import { DynamicModule } from '@nestjs/common';
2
+ import { type RuntimeEnvHookOptions } from './env.service';
3
+ export interface EnvModuleAsyncOptions {
4
+ useFactory: (...args: any[]) => any;
5
+ inject?: any[];
6
+ runtimeFile?: RuntimeEnvHookOptions;
7
+ }
8
+ export declare class EnvModule {
9
+ static forRootAsync(options: EnvModuleAsyncOptions): DynamicModule;
10
+ }
11
+ //# sourceMappingURL=env.module.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.module.d.ts","sourceRoot":"","sources":["../../src/env/env.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAkB,MAAM,gBAAgB,CAAC;AAG/D,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,eAAe,CAAC;AAEvB,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC;IACpC,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AAED,qBAEa,SAAS;IACpB,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,qBAAqB,GAAG,aAAa;CA4BnE"}
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var EnvModule_1;
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.EnvModule = void 0;
11
+ const common_1 = require("@nestjs/common");
12
+ const env_loader_1 = require("./env-loader");
13
+ const env_service_1 = require("./env.service");
14
+ let EnvModule = EnvModule_1 = class EnvModule {
15
+ static forRootAsync(options) {
16
+ // 在模块构建时自动加载环境变量(支持根目录继承)
17
+ (0, env_loader_1.loadEnvWithInheritance)();
18
+ return {
19
+ module: EnvModule_1,
20
+ providers: [
21
+ {
22
+ provide: 'CUSTOM_ENV_CONFIG',
23
+ useFactory: async (...args) => {
24
+ const config = await options.useFactory(...args);
25
+ return config;
26
+ },
27
+ inject: options.inject || [],
28
+ },
29
+ {
30
+ provide: env_service_1.ENV_RUNTIME_FILE_OPTIONS,
31
+ useValue: options.runtimeFile ?? true, // 默认启用,输出 .env.runtime.json
32
+ },
33
+ env_service_1.EnvService,
34
+ {
35
+ provide: 'ENV_SERVICE',
36
+ useExisting: env_service_1.EnvService,
37
+ },
38
+ ],
39
+ exports: [env_service_1.EnvService, 'ENV_SERVICE'],
40
+ };
41
+ }
42
+ };
43
+ exports.EnvModule = EnvModule;
44
+ exports.EnvModule = EnvModule = EnvModule_1 = __decorate([
45
+ (0, common_1.Global)(),
46
+ (0, common_1.Module)({})
47
+ ], EnvModule);
@@ -0,0 +1,31 @@
1
+ import { OnApplicationBootstrap } from '@nestjs/common';
2
+ import type { LoggerService } from '@nestjs/common';
3
+ export declare const ENV_RUNTIME_FILE_OPTIONS = "ENV_RUNTIME_FILE_OPTIONS";
4
+ export interface RuntimeEnvFileOptions {
5
+ filePath?: string;
6
+ spaces?: number;
7
+ excludeKeys?: string[];
8
+ excludePrefixes?: string[];
9
+ }
10
+ export type RuntimeEnvHookOptions = boolean | RuntimeEnvFileOptions;
11
+ export declare class EnvService implements OnApplicationBootstrap {
12
+ readonly configs: Record<string, any>;
13
+ readonly logger: LoggerService;
14
+ readonly runtimeFileOptions?: RuntimeEnvHookOptions;
15
+ private envs;
16
+ constructor(configs: Record<string, any>, logger: LoggerService, runtimeFileOptions?: RuntimeEnvHookOptions);
17
+ getItem(key: string): any;
18
+ setItem(key: string, value: any): void;
19
+ getAll(): {
20
+ [k: string]: any;
21
+ };
22
+ onApplicationBootstrap(): void;
23
+ private logEnvironmentVariables;
24
+ private stringifyRuntimeEnvs;
25
+ private logMessage;
26
+ getRuntimeFileEnvs(options?: Omit<RuntimeEnvFileOptions, 'filePath' | 'spaces'>): {
27
+ [k: string]: any;
28
+ };
29
+ writeRuntimeFile(options?: RuntimeEnvFileOptions): string;
30
+ }
31
+ //# sourceMappingURL=env.service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.service.d.ts","sourceRoot":"","sources":["../../src/env/env.service.ts"],"names":[],"mappings":"AAGA,OAAO,EAAsB,sBAAsB,EAAY,MAAM,gBAAgB,CAAC;AACtF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAEpD,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;CAC5B;AAED,MAAM,MAAM,qBAAqB,GAAG,OAAO,GAAG,qBAAqB,CAAC;AAoDpE,qBACa,UAAW,YAAW,sBAAsB;IAIrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAErC,QAAQ,CAAC,MAAM,EAAE,aAAa;IAG9B,QAAQ,CAAC,kBAAkB,CAAC,EAAE,qBAAqB;IARrD,OAAO,CAAC,IAAI,CAA0B;gBAG3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAE5B,MAAM,EAAE,aAAa,EAGrB,kBAAkB,CAAC,EAAE,qBAAqB;IAYrD,OAAO,CAAC,GAAG,EAAE,MAAM;IAInB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG;IAI/B,MAAM;;;IAIN,sBAAsB;IAsBtB,OAAO,CAAC,uBAAuB;IAc/B,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,UAAU;IAQlB,kBAAkB,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,UAAU,GAAG,QAAQ,CAAC;;;IAqB/E,gBAAgB,CAAC,OAAO,CAAC,EAAE,qBAAqB;CAQjD"}
@@ -0,0 +1,195 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
19
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
20
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
21
+ 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;
22
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
23
+ };
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ var __metadata = (this && this.__metadata) || function (k, v) {
42
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
43
+ };
44
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
45
+ return function (target, key) { decorator(target, key, paramIndex); }
46
+ };
47
+ Object.defineProperty(exports, "__esModule", { value: true });
48
+ exports.EnvService = exports.ENV_RUNTIME_FILE_OPTIONS = void 0;
49
+ const fs = __importStar(require("fs"));
50
+ const path = __importStar(require("path"));
51
+ const common_1 = require("@nestjs/common");
52
+ exports.ENV_RUNTIME_FILE_OPTIONS = 'ENV_RUNTIME_FILE_OPTIONS';
53
+ const DEFAULT_RUNTIME_ENV_EXCLUDE_KEYS = new Set([
54
+ 'PATH',
55
+ 'NODE',
56
+ 'NODE_PATH',
57
+ 'NODE_OPTIONS',
58
+ 'FPATH',
59
+ 'PWD',
60
+ 'OLDPWD',
61
+ 'INIT_CWD',
62
+ 'HOME',
63
+ 'USER',
64
+ 'LOGNAME',
65
+ 'LANG',
66
+ 'TERM',
67
+ 'TERM_PROGRAM',
68
+ 'TERM_PROGRAM_VERSION',
69
+ 'COLORTERM',
70
+ 'SHELL',
71
+ 'SHLVL',
72
+ 'TMP',
73
+ 'TEMP',
74
+ 'TMPDIR',
75
+ 'COMMAND_MODE',
76
+ 'SSH_AUTH_SOCK',
77
+ 'INFOPATH',
78
+ 'PKG_CONFIG_PATH',
79
+ 'CPPFLAGS',
80
+ 'LDFLAGS',
81
+ 'GK_GL_ADDR',
82
+ 'GK_GL_PATH',
83
+ 'GIT_ASKPASS',
84
+ 'MallocNanoZone',
85
+ 'NVM_BIN',
86
+ 'NVM_DIR',
87
+ 'PNPM_SCRIPT_SRC_DIR',
88
+ 'PYENV_ROOT',
89
+ 'PYENV_SHELL',
90
+ '_',
91
+ ]);
92
+ const DEFAULT_RUNTIME_ENV_EXCLUDE_PREFIXES = [
93
+ 'npm_',
94
+ 'NVM_',
95
+ 'PYENV_',
96
+ 'VSCODE_',
97
+ 'HOMEBREW_',
98
+ '__CF',
99
+ 'XPC_',
100
+ ];
101
+ let EnvService = class EnvService {
102
+ configs;
103
+ logger;
104
+ runtimeFileOptions;
105
+ envs = new Map();
106
+ constructor(configs, logger, runtimeFileOptions) {
107
+ this.configs = configs;
108
+ this.logger = logger;
109
+ this.runtimeFileOptions = runtimeFileOptions;
110
+ for (const key in configs) {
111
+ this.envs.set(key, configs[key]);
112
+ }
113
+ // 使用process.env覆盖默认的configs,让它的优先级更高一些,方便开发调试
114
+ for (const [key, value] of Object.entries(process.env)) {
115
+ this.envs.set(key, value);
116
+ }
117
+ }
118
+ getItem(key) {
119
+ return this.envs.get(key);
120
+ }
121
+ setItem(key, value) {
122
+ this.envs.set(key, value);
123
+ }
124
+ getAll() {
125
+ return Object.fromEntries(this.envs);
126
+ }
127
+ onApplicationBootstrap() {
128
+ // 启动时输出环境变量到终端
129
+ this.logEnvironmentVariables();
130
+ if (!this.runtimeFileOptions) {
131
+ return;
132
+ }
133
+ const runtimeEnvPath = this.writeRuntimeFile(this.runtimeFileOptions === true ? undefined : this.runtimeFileOptions);
134
+ const message = `环境变量已写入文件: ${runtimeEnvPath}`;
135
+ if ('forceLog' in this.logger && typeof this.logger.forceLog === 'function') {
136
+ this.logger.forceLog(message);
137
+ return;
138
+ }
139
+ this.logger.log?.(message);
140
+ }
141
+ logEnvironmentVariables() {
142
+ const envs = this.getRuntimeFileEnvs();
143
+ const envCount = Object.keys(envs).length;
144
+ if (envCount === 0) {
145
+ console.log('未找到需要输出的环境变量');
146
+ return;
147
+ }
148
+ console.log('\n---------[ 运行时环境变量 ]---------');
149
+ console.log(this.stringifyRuntimeEnvs(envs, this.runtimeFileOptions));
150
+ console.log(`---------[ 共 ${envCount} 个变量 ]---------\n`);
151
+ }
152
+ stringifyRuntimeEnvs(envs, options) {
153
+ const spaces = typeof options === 'object' && options?.spaces != null ? options.spaces : 2;
154
+ return JSON.stringify(envs, null, spaces);
155
+ }
156
+ logMessage(message) {
157
+ if ('forceLog' in this.logger && typeof this.logger.forceLog === 'function') {
158
+ this.logger.forceLog(message);
159
+ }
160
+ else {
161
+ this.logger.log?.(message);
162
+ }
163
+ }
164
+ getRuntimeFileEnvs(options) {
165
+ const excludeKeys = new Set([
166
+ ...DEFAULT_RUNTIME_ENV_EXCLUDE_KEYS,
167
+ ...(options?.excludeKeys ?? []),
168
+ ]);
169
+ const excludePrefixes = [
170
+ ...DEFAULT_RUNTIME_ENV_EXCLUDE_PREFIXES,
171
+ ...(options?.excludePrefixes ?? []),
172
+ ];
173
+ return Object.fromEntries(Object.entries(this.getAll()).filter(([key]) => {
174
+ if (excludeKeys.has(key)) {
175
+ return false;
176
+ }
177
+ return !excludePrefixes.some((prefix) => key.startsWith(prefix));
178
+ }));
179
+ }
180
+ writeRuntimeFile(options) {
181
+ const runtimeEnvPath = options?.filePath ?? path.join(process.cwd(), '.env.runtime.json');
182
+ const envs = this.getRuntimeFileEnvs(options);
183
+ fs.writeFileSync(runtimeEnvPath, this.stringifyRuntimeEnvs(envs, options), 'utf8');
184
+ return runtimeEnvPath;
185
+ }
186
+ };
187
+ exports.EnvService = EnvService;
188
+ exports.EnvService = EnvService = __decorate([
189
+ (0, common_1.Injectable)(),
190
+ __param(0, (0, common_1.Inject)('CUSTOM_ENV_CONFIG')),
191
+ __param(1, (0, common_1.Inject)('APP_LOGGER')),
192
+ __param(2, (0, common_1.Optional)()),
193
+ __param(2, (0, common_1.Inject)(exports.ENV_RUNTIME_FILE_OPTIONS)),
194
+ __metadata("design:paramtypes", [Object, Object, Object])
195
+ ], EnvService);
@@ -0,0 +1,4 @@
1
+ export * from './env.module';
2
+ export * from './env.service';
3
+ export * from './env-loader';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/env/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./env.module"), exports);
18
+ __exportStar(require("./env.service"), exports);
19
+ __exportStar(require("./env-loader"), exports);
@@ -0,0 +1,12 @@
1
+ export * from './logger/index';
2
+ export * from './jwt/index';
3
+ export * from './swagger/index';
4
+ export * from './restful/index';
5
+ export * from './snowflake/index';
6
+ export * from './env/index';
7
+ export * from './sequelize/index';
8
+ export * from './cache/index';
9
+ export * from './nacos/index';
10
+ export * from './apollo/index';
11
+ export * from './internal-auth/index';
12
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAChC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,uBAAuB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./logger/index"), exports);
18
+ __exportStar(require("./jwt/index"), exports);
19
+ __exportStar(require("./swagger/index"), exports);
20
+ __exportStar(require("./restful/index"), exports);
21
+ __exportStar(require("./snowflake/index"), exports);
22
+ __exportStar(require("./env/index"), exports);
23
+ __exportStar(require("./sequelize/index"), exports);
24
+ __exportStar(require("./cache/index"), exports);
25
+ __exportStar(require("./nacos/index"), exports);
26
+ __exportStar(require("./apollo/index"), exports);
27
+ __exportStar(require("./internal-auth/index"), exports);
@@ -0,0 +1,29 @@
1
+ /**
2
+ * 调用方身份(服务或用户)
3
+ */
4
+ export interface CallerIdentity {
5
+ type: 'service' | 'user';
6
+ /** 用户调用时的用户信息 */
7
+ user?: any;
8
+ }
9
+ /**
10
+ * 获取调用方身份(支持服务和用户两种类型)
11
+ *
12
+ * 用于 @UseEitherGuard(ServiceKeyGuard, JwtAuthGuard) 场景,
13
+ * 自动识别是服务调用还是用户调用。
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * @UseEitherGuard(ServiceKeyGuard, JwtAuthGuard)
18
+ * @Get('/internal/orders')
19
+ * getOrders(@Caller() caller: CallerIdentity) {
20
+ * if (caller.type === 'service') {
21
+ * // 服务调用,无用户上下文
22
+ * } else {
23
+ * console.log(caller.user.id);
24
+ * }
25
+ * }
26
+ * ```
27
+ */
28
+ export declare const Caller: (...dataOrPipes: unknown[]) => ParameterDecorator;
29
+ //# sourceMappingURL=caller.decorator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"caller.decorator.d.ts","sourceRoot":"","sources":["../../../src/internal-auth/decorators/caller.decorator.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,GAAG,MAAM,CAAC;IACzB,iBAAiB;IACjB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,MAAM,mDAiBlB,CAAC"}