@sonisoft/now-sdk-ext-core 5.3.0 → 6.0.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.
@@ -1,115 +1,109 @@
1
- import * as winston from "winston";
2
- import { redactValue, isSecretKey, REDACTED } from "./redact.js";
3
- const { combine, timestamp, json, metadata, label } = winston.format;
4
- const { format, transports } = winston;
1
+ import { getRootLogger, logEpoch } from "./LogConfig.js";
2
+ /**
3
+ * A named handle onto the process-wide logger.
4
+ *
5
+ * This used to build its own winston logger with four File transports per instance. It
6
+ * no longer builds anything: there are ~43 of these across the codebase, and
7
+ * `ServiceNowRequest` is constructed per HTTP call, so each request was opening four
8
+ * more never-closed append streams. That is where the 120 MB of logs came from, and it
9
+ * also made rotation impossible — File transports track size independently, so several
10
+ * on one path interleave renames and lose lines.
11
+ *
12
+ * Destination, level, and rotation now live in LogConfig and are set once by the
13
+ * application. See `configureLogging`.
14
+ */
5
15
  export class Logger {
16
+ _labelName;
17
+ /** Set only by `setLogger`. Overrides the shared root for this instance. */
18
+ _override;
19
+ _cached;
20
+ _epochSeen = -1;
6
21
  /**
7
- * Strips credential material from every log entry.
8
- *
9
- * Applied as a format rather than fixed at each call site on purpose. There are
10
- * ~40 logging calls across src/, several of which pass whole request configs and
11
- * session objects, and the set grows. Auditing call sites catches today's leaks
12
- * and none of tomorrow's; a format in the pipeline catches both.
13
- *
14
- * The specific leak that motivated it: RequestHandler built `{auth: this._session}`
15
- * and logged it at debug on every single request, writing live cookies and tokens
16
- * to logs/app-debug.log.
22
+ * @param labelName Appears as `label` on every record from this instance.
23
+ * @param level Ignored. Kept so existing call sites still compile.
24
+ * @deprecated Pass the level to `configureLogging` instead — it applies process-wide.
17
25
  */
18
- static redactSecrets = winston.format((info) => {
19
- for (const key of Object.keys(info)) {
20
- if (key === "level" || key === "message" || key === "timestamp" || key === "label") {
21
- continue;
22
- }
23
- if (isSecretKey(key)) {
24
- info[key] = REDACTED;
25
- continue;
26
- }
27
- info[key] = redactValue(info[key]);
28
- }
29
- return info;
30
- });
31
- static errorFilter = winston.format((info) => {
32
- return info.level === "error" ? info : false;
33
- });
34
- static infoFilter = winston.format((info) => {
35
- return info.level === "info" ? info : false;
36
- });
37
- static debugFilter = winston.format((info) => {
38
- return info.level === "debug" ? info : false;
39
- });
40
- _labelName;
41
- _localLogger;
42
- _logLevel;
43
- constructor(labelName, level = "info") {
26
+ constructor(labelName, level) {
44
27
  this._labelName = labelName;
45
- this._logLevel = level;
46
- this.initLogger();
28
+ void level;
47
29
  }
30
+ /** Replaces the underlying winston logger for this instance only. Test seam. */
48
31
  setLogger(logger) {
49
- this._localLogger = logger;
32
+ this._override = logger;
50
33
  }
51
34
  getLabel() {
52
35
  return this._labelName;
53
36
  }
54
- initLogger() {
55
- this._localLogger = winston.createLogger({
56
- level: this._logLevel,
57
- format: combine(
58
- // First in the chain: redact before anything reshapes, nests, or
59
- // serializes the entry, so no later format can capture a raw value.
60
- Logger.redactSecrets(), label({ label: this._labelName }), timestamp({ format: "YYYY-MM-DD HH:mm:ss" }),
61
- // Format the metadata object
62
- metadata({ fillExcept: ["message", "level", "timestamp", "label"] })),
63
- transports: [
64
- new transports.File({
65
- filename: "logs/combined.log",
66
- format: format.combine(timestamp(), format.json())
67
- }),
68
- new transports.File({
69
- filename: "logs/app-error.log",
70
- level: "error",
71
- format: combine(Logger.errorFilter(), timestamp(), json()),
72
- }),
73
- new transports.File({
74
- filename: "logs/app-info.log",
75
- level: "info",
76
- format: combine(Logger.infoFilter(), timestamp(), json()),
77
- }),
78
- new transports.File({
79
- filename: "logs/app-debug.log",
80
- level: "debug",
81
- format: combine(Logger.debugFilter(), timestamp(), json()),
82
- }),
83
- ],
84
- exitOnError: false
85
- });
86
- }
37
+ /**
38
+ * @deprecated The `level` argument the constructor accepts is ignored; use
39
+ * `configureLogging({level})`.
40
+ */
87
41
  static createLogger(labelName) {
88
42
  return new Logger(labelName);
89
43
  }
44
+ /** Resolves the shared root, rebuilding the cached reference if config changed. */
45
+ root() {
46
+ if (this._override) {
47
+ return this._override;
48
+ }
49
+ if (this._epochSeen !== logEpoch()) {
50
+ this._cached = getRootLogger();
51
+ this._epochSeen = logEpoch();
52
+ }
53
+ return this._cached;
54
+ }
55
+ /**
56
+ * Attaches this instance's label to the record.
57
+ *
58
+ * The label used to be a winston format bound to a per-instance logger. With one
59
+ * shared root it has to travel with the call. Callers pass all sorts of things as
60
+ * `metadata`, so a non-object is nested rather than spread — spreading a string
61
+ * would scatter it across numeric keys.
62
+ */
63
+ meta(metadata) {
64
+ if (metadata === undefined || metadata === null) {
65
+ return { label: this._labelName };
66
+ }
67
+ if (typeof metadata === "object" && !Array.isArray(metadata)) {
68
+ // Label last, deliberately. Metadata objects here are assembled ad hoc and
69
+ // grow over time; a caller key named `label` would otherwise misattribute
70
+ // the record to a component that never emitted it.
71
+ return { ...metadata, label: this._labelName };
72
+ }
73
+ return { label: this._labelName, meta: metadata };
74
+ }
90
75
  debug(message, metadata) {
91
- this._localLogger.debug(message, metadata);
76
+ this.root().debug(message, this.meta(metadata));
92
77
  }
93
78
  info(message, metadata) {
94
- this._localLogger.info(message, metadata);
79
+ this.root().info(message, this.meta(metadata));
95
80
  }
96
81
  error(message, metadata) {
97
- this._localLogger.error(message, metadata);
82
+ this.root().error(message, this.meta(metadata));
98
83
  }
99
84
  warn(message, metadata) {
100
- this._localLogger.warn(message, metadata);
85
+ this.root().warn(message, this.meta(metadata));
86
+ }
87
+ verbose(message, metadata) {
88
+ this.root().verbose(message, this.meta(metadata));
89
+ }
90
+ http(message, metadata) {
91
+ this.root().http(message, this.meta(metadata));
92
+ }
93
+ silly(message, metadata) {
94
+ this.root().silly(message, this.meta(metadata));
101
95
  }
102
96
  addInfoMessage(message, metadata) {
103
- this._localLogger.info(message, metadata);
97
+ this.info(message, metadata);
104
98
  }
105
99
  addErrorMessage(message, metadata) {
106
- this._localLogger.error(message, metadata);
100
+ this.error(message, metadata);
107
101
  }
108
102
  addWarnMessage(message, metadata) {
109
- this._localLogger.warn(message, metadata);
103
+ this.warn(message, metadata);
110
104
  }
111
105
  successful(message, metadata) {
112
- this._localLogger.info(message, metadata);
106
+ this.info(message, metadata);
113
107
  }
114
108
  }
115
109
  //# sourceMappingURL=Logger.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/util/Logger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Logger.js","sourceRoot":"","sources":["../../src/util/Logger.ts"],"names":[],"mappings":"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"}
@@ -14,6 +14,18 @@
14
14
  * `access_token`, …) because they come from the SDK's own session objects.
15
15
  */
16
16
  export declare const REDACTED = "[redacted]";
17
+ /**
18
+ * Removes credential material from a log message string.
19
+ *
20
+ * The leak this exists for: `ScriptTracer` logged `Session ID from debugger/start:
21
+ * ${token}` at INFO level, so a live session token landed in `app-info.log` on every
22
+ * trace. `AMBClient` did the same with session cookies, truncated to 80 characters —
23
+ * truncation is not redaction, and a partial cookie is still a cookie.
24
+ *
25
+ * Deliberately biased toward over-redaction. Losing `30s` from `token refresh: 30s`
26
+ * costs a diagnostic; leaking a session token costs an instance.
27
+ */
28
+ export declare function redactMessage(message: string): string;
17
29
  export declare function isSecretKey(key: string): boolean;
18
30
  /**
19
31
  * Returns a copy of `value` with every secret-shaped key replaced by `[redacted]`.
@@ -41,6 +41,21 @@ const SECRET_KEYS = [
41
41
  "sysparm_ck",
42
42
  "apikey",
43
43
  "api_key",
44
+ // Bayeux/CometD. `clientId` is not an identifier in the harmless sense — it is the
45
+ // credential that authorises every subsequent message on an AMB connection, and
46
+ // SubscriptionCommandSender logs whole handshake responses as metadata.
47
+ "clientid",
48
+ "client_id",
49
+ // ServiceNow session cookies, by name. `redactMessage` already catches these in
50
+ // message text; without them here the same value was redacted in a string and left
51
+ // intact as a key. Listed explicitly rather than adding a `session` FRAGMENT, which
52
+ // would also destroy the deliberate non-secret diagnostics in AMBClient
53
+ // (`sessionKeys`, `sessionType`) that log key names and shapes but never values.
54
+ "jsessionid",
55
+ "glide_session_store",
56
+ "glide_user_route",
57
+ "glide_user_activity",
58
+ "glide_sso_id",
44
59
  ];
45
60
  /** Substrings that make a key secret regardless of what surrounds them. */
46
61
  const SECRET_FRAGMENTS = [
@@ -52,6 +67,67 @@ const SECRET_FRAGMENTS = [
52
67
  ];
53
68
  /** Depth cap. Session and response graphs are deep; nothing useful lives past this. */
54
69
  const MAX_DEPTH = 8;
70
+ /**
71
+ * Named patterns for secrets interpolated into a log MESSAGE.
72
+ *
73
+ * Key-based redaction cannot reach these: by the time a template literal has been
74
+ * evaluated there is no key left, only text. So this matches on the secret's NAME as it
75
+ * appears in the text — the same rule, applied to a different carrier.
76
+ *
77
+ * Every pattern is anchored on a name and bounded in what it will consume. An unbounded
78
+ * `.*` here would be a denial-of-service on the logging path, and a value-shaped pattern
79
+ * (entropy, length) would redact half of every ServiceNow sys_id.
80
+ */
81
+ const MESSAGE_PATTERNS = [
82
+ // A Cookie/Set-Cookie header carries several pairs; take the whole line, or the
83
+ // second pair survives while the first is redacted.
84
+ { re: /\b(set-cookie|cookie)(\s*:\s*).+/gi, with: "$1$2" + REDACTED },
85
+ // `Bearer <token>` — the one case with no delimiter to key off.
86
+ { re: /\b(bearer\s+)[A-Za-z0-9._~+/-]{8,}=*/gi, with: "$1" + REDACTED },
87
+ // Session/servlet cookies by name, wherever they appear in the text.
88
+ {
89
+ re: /\b(JSESSIONID|glide_session_store|glide_user_route|glide_user_activity|glide_sso_id|sysparm_ck)(\s*=\s*)[^\s;,"']+/gi,
90
+ with: "$1$2" + REDACTED,
91
+ },
92
+ // `<secret-ish label> … : value` / `= value`. The middle is capped at 32 chars and
93
+ // may not itself contain a delimiter, which is what keeps this from running away —
94
+ // it is how `Session ID from debugger/start: <token>` is caught without also
95
+ // eating `Error during request. Status: 401`.
96
+ {
97
+ re: /\b(pass(?:word|wd)?|secret|tokens?|api[_-]?keys?|credentials?|cookies?|session[ _-]?id|authorization|x-usertoken)([^:=\n]{0,32}?[:=]\s*)[^\s,;)\]}]+/gi,
98
+ with: "$1$2" + REDACTED,
99
+ },
100
+ ];
101
+ /** Cheap pre-filter. Most messages carry no delimiter and can skip the scan entirely. */
102
+ function mayContainSecret(message) {
103
+ return message.includes("=") || message.includes(":") || /bearer/i.test(message);
104
+ }
105
+ /**
106
+ * Removes credential material from a log message string.
107
+ *
108
+ * The leak this exists for: `ScriptTracer` logged `Session ID from debugger/start:
109
+ * ${token}` at INFO level, so a live session token landed in `app-info.log` on every
110
+ * trace. `AMBClient` did the same with session cookies, truncated to 80 characters —
111
+ * truncation is not redaction, and a partial cookie is still a cookie.
112
+ *
113
+ * Deliberately biased toward over-redaction. Losing `30s` from `token refresh: 30s`
114
+ * costs a diagnostic; leaking a session token costs an instance.
115
+ */
116
+ export function redactMessage(message) {
117
+ if (typeof message !== "string" || message.length === 0) {
118
+ return message;
119
+ }
120
+ if (!mayContainSecret(message)) {
121
+ return message;
122
+ }
123
+ let out = message;
124
+ for (const pattern of MESSAGE_PATTERNS) {
125
+ // Shared module-level regexes carry lastIndex between calls with /g.
126
+ pattern.re.lastIndex = 0;
127
+ out = out.replace(pattern.re, pattern.with);
128
+ }
129
+ return out;
130
+ }
55
131
  export function isSecretKey(key) {
56
132
  if (!key) {
57
133
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/util/redact.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/util/redact.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonisoft/now-sdk-ext-core",
3
- "version": "5.3.0",
3
+ "version": "6.0.0",
4
4
  "description": "Comprehensive TypeScript library extending ServiceNow SDK with application management, ATF testing, real-time log monitoring, AMB event subscriptions, and automation tools",
5
5
  "keywords": [
6
6
  "servicenow",