@aifabrix/miso-client 4.9.0 → 4.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (268) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/README.md +164 -139
  3. package/dist/api/applications.api.d.ts +3 -3
  4. package/dist/api/applications.api.d.ts.map +1 -1
  5. package/dist/api/applications.api.js +21 -16
  6. package/dist/api/applications.api.js.map +1 -1
  7. package/dist/api/auth-cache.api.d.ts +3 -3
  8. package/dist/api/auth-cache.api.d.ts.map +1 -1
  9. package/dist/api/auth-cache.api.js +30 -30
  10. package/dist/api/auth-cache.api.js.map +1 -1
  11. package/dist/api/auth-login.api.d.ts +3 -3
  12. package/dist/api/auth-login.api.d.ts.map +1 -1
  13. package/dist/api/auth-login.api.js +25 -23
  14. package/dist/api/auth-login.api.js.map +1 -1
  15. package/dist/api/auth-token.api.d.ts +3 -3
  16. package/dist/api/auth-token.api.d.ts.map +1 -1
  17. package/dist/api/auth-token.api.js +53 -41
  18. package/dist/api/auth-token.api.js.map +1 -1
  19. package/dist/api/auth-user.api.d.ts +3 -3
  20. package/dist/api/auth-user.api.d.ts.map +1 -1
  21. package/dist/api/auth-user.api.js +18 -18
  22. package/dist/api/auth-user.api.js.map +1 -1
  23. package/dist/api/auth.api.d.ts +3 -3
  24. package/dist/api/auth.api.d.ts.map +1 -1
  25. package/dist/api/auth.api.js.map +1 -1
  26. package/dist/api/encryption.api.d.ts +2 -2
  27. package/dist/api/encryption.api.js +8 -8
  28. package/dist/api/index.d.ts +7 -7
  29. package/dist/api/logs-create.api.d.ts +3 -3
  30. package/dist/api/logs-create.api.d.ts.map +1 -1
  31. package/dist/api/logs-create.api.js +41 -19
  32. package/dist/api/logs-create.api.js.map +1 -1
  33. package/dist/api/logs-export.api.d.ts +3 -3
  34. package/dist/api/logs-export.api.d.ts.map +1 -1
  35. package/dist/api/logs-export.api.js +8 -6
  36. package/dist/api/logs-export.api.js.map +1 -1
  37. package/dist/api/logs-list.api.d.ts +3 -3
  38. package/dist/api/logs-list.api.d.ts.map +1 -1
  39. package/dist/api/logs-list.api.js +39 -33
  40. package/dist/api/logs-list.api.js.map +1 -1
  41. package/dist/api/logs-stats.api.d.ts +3 -3
  42. package/dist/api/logs-stats.api.d.ts.map +1 -1
  43. package/dist/api/logs-stats.api.js +24 -24
  44. package/dist/api/logs-stats.api.js.map +1 -1
  45. package/dist/api/logs.api.d.ts +3 -3
  46. package/dist/api/permissions.api.d.ts +3 -3
  47. package/dist/api/permissions.api.d.ts.map +1 -1
  48. package/dist/api/permissions.api.js +12 -12
  49. package/dist/api/permissions.api.js.map +1 -1
  50. package/dist/api/roles.api.d.ts +3 -3
  51. package/dist/api/roles.api.d.ts.map +1 -1
  52. package/dist/api/roles.api.js +12 -12
  53. package/dist/api/roles.api.js.map +1 -1
  54. package/dist/api/types/auth.types.d.ts +1 -1
  55. package/dist/api/types/encryption.types.d.ts +1 -1
  56. package/dist/api/types/logs.types.d.ts +10 -8
  57. package/dist/api/types/logs.types.d.ts.map +1 -1
  58. package/dist/express/client-token-endpoint.d.ts.map +1 -1
  59. package/dist/express/client-token-endpoint.js +29 -11
  60. package/dist/express/client-token-endpoint.js.map +1 -1
  61. package/dist/express/error-handler.d.ts.map +1 -1
  62. package/dist/express/error-handler.js +30 -8
  63. package/dist/express/error-handler.js.map +1 -1
  64. package/dist/express/error-types.d.ts.map +1 -1
  65. package/dist/express/error-types.js +26 -9
  66. package/dist/express/error-types.js.map +1 -1
  67. package/dist/express/index.d.ts +4 -4
  68. package/dist/express/index.d.ts.map +1 -1
  69. package/dist/express/index.js.map +1 -1
  70. package/dist/express/logger-context.middleware.d.ts.map +1 -1
  71. package/dist/express/logger-context.middleware.js +12 -5
  72. package/dist/express/logger-context.middleware.js.map +1 -1
  73. package/dist/express/response-helper.d.ts.map +1 -1
  74. package/dist/express/response-helper.js.map +1 -1
  75. package/dist/express/validation-helper.d.ts.map +1 -1
  76. package/dist/express/validation-helper.js +6 -2
  77. package/dist/express/validation-helper.js.map +1 -1
  78. package/dist/miso-client.d.ts.map +1 -1
  79. package/dist/miso-client.js +11 -4
  80. package/dist/miso-client.js.map +1 -1
  81. package/dist/sdk-exports.d.ts +6 -5
  82. package/dist/sdk-exports.d.ts.map +1 -1
  83. package/dist/sdk-exports.js +20 -1
  84. package/dist/sdk-exports.js.map +1 -1
  85. package/dist/services/application-context.service.d.ts.map +1 -1
  86. package/dist/services/application-context.service.js +3 -1
  87. package/dist/services/application-context.service.js.map +1 -1
  88. package/dist/services/auth-cache-helpers.d.ts.map +1 -1
  89. package/dist/services/auth-cache-helpers.js +9 -6
  90. package/dist/services/auth-cache-helpers.js.map +1 -1
  91. package/dist/services/auth-environment-token.d.ts.map +1 -1
  92. package/dist/services/auth-environment-token.js.map +1 -1
  93. package/dist/services/auth-error-handler.d.ts.map +1 -1
  94. package/dist/services/auth-error-handler.js.map +1 -1
  95. package/dist/services/auth.service.d.ts +0 -10
  96. package/dist/services/auth.service.d.ts.map +1 -1
  97. package/dist/services/auth.service.helpers.d.ts +22 -0
  98. package/dist/services/auth.service.helpers.d.ts.map +1 -0
  99. package/dist/services/auth.service.helpers.js +45 -0
  100. package/dist/services/auth.service.helpers.js.map +1 -0
  101. package/dist/services/auth.service.js +21 -57
  102. package/dist/services/auth.service.js.map +1 -1
  103. package/dist/services/browser-permission.service.d.ts.map +1 -1
  104. package/dist/services/browser-permission.service.js +10 -4
  105. package/dist/services/browser-permission.service.js.map +1 -1
  106. package/dist/services/browser-role.service.d.ts.map +1 -1
  107. package/dist/services/browser-role.service.js +6 -2
  108. package/dist/services/browser-role.service.js.map +1 -1
  109. package/dist/services/cache.service.d.ts.map +1 -1
  110. package/dist/services/cache.service.js +2 -1
  111. package/dist/services/cache.service.js.map +1 -1
  112. package/dist/services/encryption.service.d.ts +3 -3
  113. package/dist/services/encryption.service.d.ts.map +1 -1
  114. package/dist/services/encryption.service.js +12 -6
  115. package/dist/services/encryption.service.js.map +1 -1
  116. package/dist/services/logger/index.d.ts +1 -1
  117. package/dist/services/logger/index.d.ts.map +1 -1
  118. package/dist/services/logger/index.js.map +1 -1
  119. package/dist/services/logger/log-entry-builder.d.ts.map +1 -1
  120. package/dist/services/logger/log-entry-builder.js.map +1 -1
  121. package/dist/services/logger/logger-chain.d.ts.map +1 -1
  122. package/dist/services/logger/logger-chain.js.map +1 -1
  123. package/dist/services/logger/logger-context.d.ts.map +1 -1
  124. package/dist/services/logger/logger-context.js +5 -3
  125. package/dist/services/logger/logger-context.js.map +1 -1
  126. package/dist/services/logger/logger-http-utils.d.ts.map +1 -1
  127. package/dist/services/logger/logger-http-utils.js.map +1 -1
  128. package/dist/services/logger/logger.service.d.ts.map +1 -1
  129. package/dist/services/logger/logger.service.js +2 -1
  130. package/dist/services/logger/logger.service.js.map +1 -1
  131. package/dist/services/logger/trace-field-utils.d.ts.map +1 -1
  132. package/dist/services/logger/trace-field-utils.js.map +1 -1
  133. package/dist/services/logger/unified-logger.service.d.ts.map +1 -1
  134. package/dist/services/logger/unified-logger.service.js.map +1 -1
  135. package/dist/services/permission.service.d.ts.map +1 -1
  136. package/dist/services/permission.service.js +6 -2
  137. package/dist/services/permission.service.js.map +1 -1
  138. package/dist/services/role.service.d.ts.map +1 -1
  139. package/dist/services/role.service.js +6 -2
  140. package/dist/services/role.service.js.map +1 -1
  141. package/dist/services/token-validation.service.d.ts.map +1 -1
  142. package/dist/services/token-validation.service.js +4 -2
  143. package/dist/services/token-validation.service.js.map +1 -1
  144. package/dist/types/data-client.types.d.ts +25 -5
  145. package/dist/types/data-client.types.d.ts.map +1 -1
  146. package/dist/types/data-client.types.js.map +1 -1
  147. package/dist/types/errors.types.d.ts.map +1 -1
  148. package/dist/types/filter-schema.types.d.ts.map +1 -1
  149. package/dist/types/filter-schema.types.js.map +1 -1
  150. package/dist/utils/audit-log-queue.d.ts.map +1 -1
  151. package/dist/utils/audit-log-queue.js +3 -1
  152. package/dist/utils/audit-log-queue.js.map +1 -1
  153. package/dist/utils/browser-jwt-decoder.d.ts.map +1 -1
  154. package/dist/utils/browser-jwt-decoder.js +1 -4
  155. package/dist/utils/browser-jwt-decoder.js.map +1 -1
  156. package/dist/utils/client-token-manager.d.ts.map +1 -1
  157. package/dist/utils/client-token-manager.js +9 -3
  158. package/dist/utils/client-token-manager.js.map +1 -1
  159. package/dist/utils/config-loader.d.ts.map +1 -1
  160. package/dist/utils/config-loader.js +16 -9
  161. package/dist/utils/config-loader.js.map +1 -1
  162. package/dist/utils/controller-url-resolver.js +4 -4
  163. package/dist/utils/controller-url-resolver.js.map +1 -1
  164. package/dist/utils/data-client-audit.d.ts.map +1 -1
  165. package/dist/utils/data-client-audit.js +26 -6
  166. package/dist/utils/data-client-audit.js.map +1 -1
  167. package/dist/utils/data-client-auth.d.ts +7 -0
  168. package/dist/utils/data-client-auth.d.ts.map +1 -1
  169. package/dist/utils/data-client-auth.js +62 -3
  170. package/dist/utils/data-client-auth.js.map +1 -1
  171. package/dist/utils/data-client-auto-init.d.ts.map +1 -1
  172. package/dist/utils/data-client-auto-init.js +12 -5
  173. package/dist/utils/data-client-auto-init.js.map +1 -1
  174. package/dist/utils/data-client-cache.js +2 -2
  175. package/dist/utils/data-client-cache.js.map +1 -1
  176. package/dist/utils/data-client-core.d.ts +82 -0
  177. package/dist/utils/data-client-core.d.ts.map +1 -0
  178. package/dist/utils/data-client-core.js +303 -0
  179. package/dist/utils/data-client-core.js.map +1 -0
  180. package/dist/utils/data-client-init.d.ts.map +1 -1
  181. package/dist/utils/data-client-init.js +2 -1
  182. package/dist/utils/data-client-init.js.map +1 -1
  183. package/dist/utils/data-client-oauth.d.ts.map +1 -1
  184. package/dist/utils/data-client-oauth.js +5 -2
  185. package/dist/utils/data-client-oauth.js.map +1 -1
  186. package/dist/utils/data-client-redirect.d.ts.map +1 -1
  187. package/dist/utils/data-client-redirect.js +8 -8
  188. package/dist/utils/data-client-redirect.js.map +1 -1
  189. package/dist/utils/data-client-request.d.ts +4 -33
  190. package/dist/utils/data-client-request.d.ts.map +1 -1
  191. package/dist/utils/data-client-request.js +80 -43
  192. package/dist/utils/data-client-request.js.map +1 -1
  193. package/dist/utils/data-client-request.types.d.ts +68 -0
  194. package/dist/utils/data-client-request.types.d.ts.map +1 -0
  195. package/dist/utils/data-client-request.types.js +3 -0
  196. package/dist/utils/data-client-request.types.js.map +1 -0
  197. package/dist/utils/data-client-response.d.ts.map +1 -1
  198. package/dist/utils/data-client-response.js +23 -9
  199. package/dist/utils/data-client-response.js.map +1 -1
  200. package/dist/utils/data-client-utils.d.ts.map +1 -1
  201. package/dist/utils/data-client-utils.js +2 -1
  202. package/dist/utils/data-client-utils.js.map +1 -1
  203. package/dist/utils/data-client.d.ts +3 -40
  204. package/dist/utils/data-client.d.ts.map +1 -1
  205. package/dist/utils/data-client.js +21 -242
  206. package/dist/utils/data-client.js.map +1 -1
  207. package/dist/utils/data-masker.d.ts +28 -35
  208. package/dist/utils/data-masker.d.ts.map +1 -1
  209. package/dist/utils/data-masker.js +116 -80
  210. package/dist/utils/data-masker.js.map +1 -1
  211. package/dist/utils/encryption-error.d.ts +2 -2
  212. package/dist/utils/encryption-error.js +1 -1
  213. package/dist/utils/environment-token.d.ts.map +1 -1
  214. package/dist/utils/environment-token.js +6 -2
  215. package/dist/utils/environment-token.js.map +1 -1
  216. package/dist/utils/error-extractor.d.ts.map +1 -1
  217. package/dist/utils/error-extractor.js +4 -2
  218. package/dist/utils/error-extractor.js.map +1 -1
  219. package/dist/utils/errors.d.ts.map +1 -1
  220. package/dist/utils/errors.js +29 -7
  221. package/dist/utils/errors.js.map +1 -1
  222. package/dist/utils/filter-colon.utils.d.ts.map +1 -1
  223. package/dist/utils/filter-colon.utils.js.map +1 -1
  224. package/dist/utils/filter-schema-loader.d.ts.map +1 -1
  225. package/dist/utils/filter-schema-loader.js +3 -1
  226. package/dist/utils/filter-schema-loader.js.map +1 -1
  227. package/dist/utils/filter-schema.utils.d.ts.map +1 -1
  228. package/dist/utils/filter-schema.utils.js.map +1 -1
  229. package/dist/utils/filter.utils.d.ts.map +1 -1
  230. package/dist/utils/filter.utils.js +11 -4
  231. package/dist/utils/filter.utils.js.map +1 -1
  232. package/dist/utils/http-client-audit.d.ts.map +1 -1
  233. package/dist/utils/http-client-audit.js +51 -14
  234. package/dist/utils/http-client-audit.js.map +1 -1
  235. package/dist/utils/http-client-masking.d.ts.map +1 -1
  236. package/dist/utils/http-client-masking.js +6 -2
  237. package/dist/utils/http-client-masking.js.map +1 -1
  238. package/dist/utils/http-client-metadata.d.ts.map +1 -1
  239. package/dist/utils/http-client-metadata.js.map +1 -1
  240. package/dist/utils/http-client.d.ts +4 -0
  241. package/dist/utils/http-client.d.ts.map +1 -1
  242. package/dist/utils/http-client.js +135 -2
  243. package/dist/utils/http-client.js.map +1 -1
  244. package/dist/utils/http-error-handler.d.ts.map +1 -1
  245. package/dist/utils/http-error-handler.js +6 -3
  246. package/dist/utils/http-error-handler.js.map +1 -1
  247. package/dist/utils/http-response-validator.d.ts.map +1 -1
  248. package/dist/utils/http-response-validator.js +5 -2
  249. package/dist/utils/http-response-validator.js.map +1 -1
  250. package/dist/utils/internal-http-client.d.ts.map +1 -1
  251. package/dist/utils/internal-http-client.js +19 -6
  252. package/dist/utils/internal-http-client.js.map +1 -1
  253. package/dist/utils/logging-helpers.d.ts.map +1 -1
  254. package/dist/utils/logging-helpers.js +2 -1
  255. package/dist/utils/logging-helpers.js.map +1 -1
  256. package/dist/utils/sensitive-fields.config.json +27 -55
  257. package/dist/utils/sensitive-fields.loader.d.ts +27 -16
  258. package/dist/utils/sensitive-fields.loader.d.ts.map +1 -1
  259. package/dist/utils/sensitive-fields.loader.js +186 -139
  260. package/dist/utils/sensitive-fields.loader.js.map +1 -1
  261. package/dist/utils/token-utils.d.ts.map +1 -1
  262. package/dist/utils/token-utils.js +3 -3
  263. package/dist/utils/token-utils.js.map +1 -1
  264. package/dist/utils/user-token-refresh.d.ts +40 -0
  265. package/dist/utils/user-token-refresh.d.ts.map +1 -0
  266. package/dist/utils/user-token-refresh.js +258 -0
  267. package/dist/utils/user-token-refresh.js.map +1 -0
  268. package/package.json +18 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  /**
3
- * Sensitive fields configuration loader
4
- * Loads ISO 27001 compliant sensitive fields from JSON configuration file
3
+ * Sensitive fields configuration loader for ISO 27001 compliance.
4
+ * Aligns with miso-client Python `sensitive_fields_loader` / packaged JSON shape.
5
5
  */
6
6
  var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
7
  if (k2 === undefined) k2 = k;
@@ -40,178 +40,225 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
40
40
  return (mod && mod.__esModule) ? mod : { "default": mod };
41
41
  };
42
42
  Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.HARDCODED_SENSITIVE_FIELDS = void 0;
44
+ exports.normalizeFieldName = normalizeFieldName;
45
+ exports.loadSensitiveFieldsConfigDict = loadSensitiveFieldsConfigDict;
46
+ exports.getSensitiveFieldNamesFromDict = getSensitiveFieldNamesFromDict;
47
+ exports.neverMaskFieldsFromCfg = neverMaskFieldsFromCfg;
48
+ exports.substringMinLengthFromCfg = substringMinLengthFromCfg;
49
+ exports.mergeWithHardcodedDefaultsFromCfg = mergeWithHardcodedDefaultsFromCfg;
50
+ exports.buildMergedSensitiveTokens = buildMergedSensitiveTokens;
43
51
  exports.loadSensitiveFieldsConfig = loadSensitiveFieldsConfig;
44
52
  exports.getFieldPatterns = getFieldPatterns;
45
53
  exports.getSensitiveFieldsArray = getSensitiveFieldsArray;
46
54
  const fs = __importStar(require("fs"));
47
55
  const path = __importStar(require("path"));
48
56
  const sensitive_fields_config_json_1 = __importDefault(require("./sensitive-fields.config.json"));
49
- /**
50
- * Get default sensitive fields (fallback if JSON file cannot be loaded)
51
- */
52
- function getDefaultSensitiveFields() {
53
- return new Set([
54
- // Authentication & Authorization
55
- "password",
56
- "passwd",
57
- "pwd",
58
- "secret",
59
- "token",
60
- "key",
61
- "auth",
62
- "authorization",
63
- "cookie",
64
- "session",
65
- "apikey",
66
- "accesstoken",
67
- "refreshtoken",
68
- // PII (ISO 27001)
69
- "email",
70
- "emailaddress",
71
- "phone",
72
- "phonenumber",
73
- "telephone",
74
- "mobile",
75
- "cellphone",
76
- "ssn",
77
- "socialsecuritynumber",
78
- "taxid",
79
- "taxidentification",
80
- // Financial Information
81
- "creditcard",
82
- "cc",
83
- "cardnumber",
84
- "cvv",
85
- "cvv2",
86
- "cvc",
87
- "pin",
88
- "bankaccount",
89
- "bankaccountnumber",
90
- "routingnumber",
91
- "iban",
92
- "swift",
93
- "accountnumber",
94
- // Security & Sensitive Data
95
- "otp",
96
- "onetimepassword",
97
- "privatekey",
98
- "publickey",
99
- "encryptionkey",
100
- "decryptionkey",
101
- ]);
57
+ /** Normalized field name (lowercase, no underscores or hyphens). */
58
+ function normalizeFieldName(field) {
59
+ return field.toLowerCase().replace(/[_-]/g, "");
102
60
  }
103
61
  /**
104
- * Get default field patterns (fallback if JSON file cannot be loaded)
62
+ * Hardcoded sensitive tokens when JSON cannot be loaded or mergeWithHardcodedDefaults is true.
63
+ * Omits bare `key` and `cc` to reduce false positives (e.g. datasource `key`, `success`).
105
64
  */
106
- function getDefaultFieldPatterns() {
107
- return [
108
- "password",
109
- "secret",
110
- "token",
111
- "key",
112
- "ssn",
113
- "creditcard",
114
- "bankaccount",
115
- "accountnumber",
116
- ];
117
- }
118
- function resolveConfigPath(customPath) {
119
- const envPath = customPath || process.env.MISO_SENSITIVE_FIELDS_CONFIG;
120
- if (!envPath)
121
- return null;
122
- return path.isAbsolute(envPath) ? envPath : path.resolve(process.cwd(), envPath);
65
+ exports.HARDCODED_SENSITIVE_FIELDS = new Set([
66
+ "password",
67
+ "passwd",
68
+ "pwd",
69
+ "secret",
70
+ "token",
71
+ "auth",
72
+ "authorization",
73
+ "cookie",
74
+ "session",
75
+ "ssn",
76
+ "creditcard",
77
+ "cvv",
78
+ "pin",
79
+ "otp",
80
+ "apikey",
81
+ "accesstoken",
82
+ "refreshtoken",
83
+ "privatekey",
84
+ "secretkey",
85
+ ]);
86
+ function isBrowserEnvironment() {
87
+ return (typeof globalThis !== "undefined" &&
88
+ "window" in globalThis &&
89
+ typeof globalThis.window !== "undefined");
123
90
  }
124
- function fieldsFromConfig(config) {
125
- const allFields = new Set();
126
- Object.values(config.categories).forEach((fields) => {
127
- fields.forEach((field) => allFields.add(field.toLowerCase()));
128
- });
129
- getDefaultSensitiveFields().forEach((field) => allFields.add(field));
130
- return allFields;
131
- }
132
- function loadConfigFromPath(configPath) {
133
- if (!fs.existsSync(configPath))
134
- return null;
135
- const configContent = fs.readFileSync(configPath, "utf8");
136
- const config = JSON.parse(configContent);
137
- return fieldsFromConfig(config);
91
+ function resolveConfigFilePath(customPath) {
92
+ if (customPath) {
93
+ return path.isAbsolute(customPath)
94
+ ? customPath
95
+ : path.resolve(process.cwd(), customPath);
96
+ }
97
+ const envPath = process.env.MISO_SENSITIVE_FIELDS_CONFIG;
98
+ if (envPath) {
99
+ return path.isAbsolute(envPath)
100
+ ? envPath
101
+ : path.resolve(process.cwd(), envPath);
102
+ }
103
+ return path.join(__dirname, "sensitive-fields.config.json");
138
104
  }
139
- function loadConfigFromModule() {
105
+ function readJsonFile(filePath) {
140
106
  try {
141
- const config = sensitive_fields_config_json_1.default;
142
- return fieldsFromConfig(config);
107
+ const raw = fs.readFileSync(filePath, "utf8");
108
+ const parsed = JSON.parse(raw);
109
+ return typeof parsed === "object" &&
110
+ parsed !== null &&
111
+ !Array.isArray(parsed)
112
+ ? parsed
113
+ : {};
143
114
  }
144
115
  catch {
145
- const configPath = path.join(__dirname, "sensitive-fields.config.json");
146
- return loadConfigFromPath(configPath);
116
+ return {};
147
117
  }
148
118
  }
149
- function loadSensitiveFieldsConfig(customPath) {
150
- if (typeof globalThis !== "undefined" && "window" in globalThis) {
151
- const globalWindow = globalThis.window;
152
- if (typeof globalWindow !== "undefined")
153
- return getDefaultSensitiveFields();
119
+ /**
120
+ * Load raw sensitive-fields JSON by priority: customPath, MISO_SENSITIVE_FIELDS_CONFIG, packaged default file, then bundled import.
121
+ */
122
+ function loadSensitiveFieldsConfigDict(customPath) {
123
+ if (isBrowserEnvironment()) {
124
+ return {};
125
+ }
126
+ if (typeof process === "undefined" || !process.env) {
127
+ return {};
154
128
  }
155
- if (typeof process === "undefined" || !process.env)
156
- return getDefaultSensitiveFields();
157
129
  try {
158
- const configPath = resolveConfigPath(customPath);
159
- if (configPath) {
160
- const result = loadConfigFromPath(configPath);
161
- if (result)
162
- return result;
130
+ const filePath = resolveConfigFilePath(customPath);
131
+ if (filePath && fs.existsSync(filePath)) {
132
+ const fromDisk = readJsonFile(filePath);
133
+ if (Object.keys(fromDisk).length > 0) {
134
+ return fromDisk;
135
+ }
163
136
  }
164
- const moduleResult = loadConfigFromModule();
165
- return moduleResult ?? getDefaultSensitiveFields();
166
137
  }
167
138
  catch {
168
- return getDefaultSensitiveFields();
139
+ /* fall through */
169
140
  }
170
- }
171
- function loadFieldPatternsFromPath(configPath) {
172
- if (!fs.existsSync(configPath))
173
- return null;
174
- const configContent = fs.readFileSync(configPath, "utf8");
175
- const config = JSON.parse(configContent);
176
- return config.fieldPatterns || getDefaultFieldPatterns();
177
- }
178
- function loadFieldPatternsFromModule() {
179
141
  try {
180
- const config = sensitive_fields_config_json_1.default;
181
- return config.fieldPatterns || getDefaultFieldPatterns();
142
+ const bundled = sensitive_fields_config_json_1.default;
143
+ if (bundled && typeof bundled === "object") {
144
+ return bundled;
145
+ }
182
146
  }
183
147
  catch {
184
- const configPath = path.join(__dirname, "sensitive-fields.config.json");
185
- return loadFieldPatternsFromPath(configPath);
148
+ /* fall through */
186
149
  }
150
+ return {};
187
151
  }
188
- function getFieldPatterns(customPath) {
189
- if (typeof globalThis !== "undefined" && "window" in globalThis) {
190
- const globalWindow = globalThis.window;
191
- if (typeof globalWindow !== "undefined")
192
- return getDefaultFieldPatterns();
152
+ function uniqueFieldsPreservingOrder(fields) {
153
+ const seen = new Set();
154
+ const out = [];
155
+ for (const field of fields) {
156
+ const k = field.toLowerCase();
157
+ if (seen.has(k))
158
+ continue;
159
+ seen.add(k);
160
+ out.push(field);
193
161
  }
194
- if (typeof process === "undefined" || !process.env)
195
- return getDefaultFieldPatterns();
196
- try {
197
- const configPath = resolveConfigPath(customPath);
198
- if (configPath) {
199
- const result = loadFieldPatternsFromPath(configPath);
200
- if (result)
201
- return result;
162
+ return out;
163
+ }
164
+ /**
165
+ * Flatten `fields` or legacy `categories` from config into display names (not yet normalized).
166
+ */
167
+ function getSensitiveFieldNamesFromDict(cfg) {
168
+ const bucket = (cfg.fields ?? cfg.categories);
169
+ if (!bucket || typeof bucket !== "object" || Array.isArray(bucket)) {
170
+ return [];
171
+ }
172
+ const all = [];
173
+ for (const v of Object.values(bucket)) {
174
+ if (Array.isArray(v)) {
175
+ for (const item of v) {
176
+ if (typeof item === "string" && item.trim()) {
177
+ all.push(item);
178
+ }
179
+ }
180
+ }
181
+ }
182
+ return uniqueFieldsPreservingOrder(all);
183
+ }
184
+ function neverMaskFieldsFromCfg(cfg) {
185
+ const raw = cfg.neverMaskFields;
186
+ const out = new Set();
187
+ if (!Array.isArray(raw))
188
+ return out;
189
+ for (const x of raw) {
190
+ if (typeof x === "string" && x.trim()) {
191
+ out.add(normalizeFieldName(x));
202
192
  }
203
- const moduleResult = loadFieldPatternsFromModule();
204
- return moduleResult ?? getDefaultFieldPatterns();
193
+ }
194
+ return out;
195
+ }
196
+ function substringMinLengthFromCfg(cfg) {
197
+ const sm = cfg.substringMinLength ?? 4;
198
+ try {
199
+ const n = Number(sm);
200
+ if (!Number.isFinite(n))
201
+ return 4;
202
+ return Math.max(1, Math.min(Math.trunc(n), 64));
205
203
  }
206
204
  catch {
207
- return getDefaultFieldPatterns();
205
+ return 4;
208
206
  }
209
207
  }
208
+ function mergeWithHardcodedDefaultsFromCfg(cfg) {
209
+ return cfg.mergeWithHardcodedDefaults !== false;
210
+ }
211
+ function fieldPatternsFromCfg(cfg) {
212
+ const p = cfg.fieldPatterns;
213
+ return Array.isArray(p)
214
+ ? p.filter((x) => typeof x === "string" && x.length > 0)
215
+ : [];
216
+ }
210
217
  /**
211
- * Get all sensitive fields as array (for DataMasker)
218
+ * Build merged normalized sensitive tokens (hardcoded + JSON fields + fieldPatterns).
212
219
  */
220
+ function buildMergedSensitiveTokens(cfg) {
221
+ const merge = mergeWithHardcodedDefaultsFromCfg(cfg);
222
+ const merged = new Set();
223
+ if (merge) {
224
+ exports.HARDCODED_SENSITIVE_FIELDS.forEach((f) => merged.add(f));
225
+ }
226
+ for (const field of getSensitiveFieldNamesFromDict(cfg)) {
227
+ merged.add(normalizeFieldName(field));
228
+ }
229
+ for (const pattern of fieldPatternsFromCfg(cfg)) {
230
+ merged.add(normalizeFieldName(pattern));
231
+ }
232
+ if (!merge && merged.size === 0) {
233
+ exports.HARDCODED_SENSITIVE_FIELDS.forEach((f) => merged.add(f));
234
+ }
235
+ return merged;
236
+ }
237
+ /**
238
+ * Merged sensitive field tokens for the resolved config (used by DataMasker helpers).
239
+ */
240
+ function loadSensitiveFieldsConfig(customPath) {
241
+ if (isBrowserEnvironment()) {
242
+ return new Set(exports.HARDCODED_SENSITIVE_FIELDS);
243
+ }
244
+ if (typeof process === "undefined" || !process.env) {
245
+ return new Set(exports.HARDCODED_SENSITIVE_FIELDS);
246
+ }
247
+ const cfg = loadSensitiveFieldsConfigDict(customPath);
248
+ return buildMergedSensitiveTokens(cfg);
249
+ }
250
+ function getFieldPatterns(customPath) {
251
+ if (isBrowserEnvironment()) {
252
+ return [];
253
+ }
254
+ if (typeof process === "undefined" || !process.env) {
255
+ return [];
256
+ }
257
+ const cfg = loadSensitiveFieldsConfigDict(customPath);
258
+ const fromFile = fieldPatternsFromCfg(cfg);
259
+ return fromFile.length > 0 ? fromFile : [];
260
+ }
213
261
  function getSensitiveFieldsArray(customPath) {
214
- const fieldsSet = loadSensitiveFieldsConfig(customPath);
215
- return Array.from(fieldsSet);
262
+ return Array.from(loadSensitiveFieldsConfig(customPath));
216
263
  }
217
264
  //# sourceMappingURL=sensitive-fields.loader.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sensitive-fields.loader.js","sourceRoot":"","sources":["../../src/utils/sensitive-fields.loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sensitive-fields.loader.js","sourceRoot":"","sources":["../../src/utils/sensitive-fields.loader.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"token-utils.d.ts","sourceRoot":"","sources":["../../src/utils/token-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAwDD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CAuB3E"}
1
+ {"version":3,"file":"token-utils.d.ts","sourceRoot":"","sources":["../../src/utils/token-utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAwDD;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,eAAe,CA2B3E"}
@@ -19,7 +19,7 @@ function decodeJWT(token) {
19
19
  if ((0, data_client_utils_1.isBrowser)()) {
20
20
  // Browser: use manual base64 decoding
21
21
  try {
22
- const parts = token.split('.');
22
+ const parts = token.split(".");
23
23
  if (parts.length !== 3) {
24
24
  return null;
25
25
  }
@@ -27,10 +27,10 @@ function decodeJWT(token) {
27
27
  let payloadStr = parts[1];
28
28
  // Add padding if needed
29
29
  while (payloadStr.length % 4) {
30
- payloadStr += '=';
30
+ payloadStr += "=";
31
31
  }
32
32
  // Replace URL-safe characters
33
- payloadStr = payloadStr.replace(/-/g, '+').replace(/_/g, '/');
33
+ payloadStr = payloadStr.replace(/-/g, "+").replace(/_/g, "/");
34
34
  const decoded = JSON.parse(atob(payloadStr));
35
35
  return decoded;
36
36
  }
@@ -1 +1 @@
1
- {"version":3,"file":"token-utils.js","sourceRoot":"","sources":["../../src/utils/token-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"token-utils.js","sourceRoot":"","sources":["../../src/utils/token-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ export declare const ACCESS_TOKEN_KEYS: readonly ["miso_token", "token", "accessToken", "authToken"];
2
+ export declare const REFRESH_TOKEN_KEYS: readonly ["miso:user-refresh-token", "refreshToken"];
3
+ export declare const ACCESS_TOKEN_EXPIRES_AT_KEYS: readonly ["miso_token_expires_at", "tokenExpiresAt", "accessTokenExpiresAt", "expiresAt"];
4
+ export interface TokenStorageMap {
5
+ [key: string]: unknown;
6
+ }
7
+ export interface RefreshCallbackResult {
8
+ token: string;
9
+ expiresIn?: number;
10
+ expiresAt?: string;
11
+ refreshToken?: string;
12
+ }
13
+ export declare function normalizeExpiresAt(value: unknown): Date | null;
14
+ export declare function getJwtExpiresAt(token: string): Date | null;
15
+ export declare function getEffectiveUserTokenRefreshBuffer(expiresAt: unknown, defaultBufferSeconds?: number, issuedAt?: unknown, now?: Date): number;
16
+ export declare function getUserTokenRefreshDueAt(expiresAt: unknown, defaultBufferSeconds?: number, issuedAt?: unknown, now?: Date): Date | null;
17
+ export declare function isUserTokenRefreshDue(expiresAt: unknown, defaultBufferSeconds?: number, issuedAt?: unknown, now?: Date): boolean;
18
+ export declare function isUserTokenExpired(expiresAt: unknown, now?: Date): boolean;
19
+ export declare function storeAccessToken(storage: TokenStorageMap, token: string, expiresAt?: unknown): TokenStorageMap;
20
+ export declare function storeRefreshToken(storage: TokenStorageMap, token: string): TokenStorageMap;
21
+ export declare function clearStoredAccessToken(storage: TokenStorageMap): TokenStorageMap;
22
+ export declare function clearStoredRefreshToken(storage: TokenStorageMap): TokenStorageMap;
23
+ export declare function clearStoredSessionTokens(storage: TokenStorageMap): TokenStorageMap;
24
+ export declare function getStoredRefreshToken(storage: TokenStorageMap): string | null;
25
+ export declare function getUserTokenExpiresAt(storage: TokenStorageMap): Date | null;
26
+ export declare class UserTokenRefreshManager {
27
+ private stores;
28
+ private callbacks;
29
+ registerRefreshCallback(userId: string, callback: () => Promise<RefreshCallbackResult | null>): void;
30
+ unregisterRefreshCallback(userId: string): void;
31
+ private getStore;
32
+ storeAccessToken(userId: string, token: string, expiresAt?: unknown): void;
33
+ storeRefreshToken(userId: string, token: string): void;
34
+ clearUserTokens(userId: string): void;
35
+ getAccessToken(userId: string): string | null;
36
+ getRefreshToken(userId: string): string | null;
37
+ getExpiresAt(userId: string): Date | null;
38
+ refreshIfDue(userId: string, defaultBufferSeconds?: number, now?: Date): Promise<RefreshCallbackResult | null>;
39
+ }
40
+ //# sourceMappingURL=user-token-refresh.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-token-refresh.d.ts","sourceRoot":"","sources":["../../src/utils/user-token-refresh.ts"],"names":[],"mappings":"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"}