@openhealth/oht-custom-parser-lib 0.3.11 → 0.3.14

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.d.ts CHANGED
@@ -10,7 +10,7 @@ export { AcfBiomarkerRangeAnnotationCheck, AcfBiomarkerGenericDisclaimerLogic, M
10
10
  export { ErrorMessage, ErrorCode, ERROR_CATALOG, ERROR_MESSAGES, getErrorMessage, getRejectReason, } from './types/error.types';
11
11
  export { handleError, ValidationError, shouldSendSlackNotification, extractFormattedRejectReason, mapErrorToRejectReason, } from './service/fileUploadErrorHandler.service';
12
12
  export type { TransformationRule, TransformationContext, ApplyRulesResult as TransformationApplyRulesResult, ApplyRulesOptions as TransformationApplyRulesOptions, ValidationResult as TransformationValidationResult, } from './types/transformationRules.types';
13
- export { processingLogger, ProcessingContext, StageDuration, runWithContext, runWithContextAsync, } from './service/processingLogger.service';
13
+ export { processingLogger, ProcessingContext, StageDuration, getRequestIdFromContext, runWithContext, runWithContextAsync, } from './service/processingLogger.service';
14
14
  export { makeApiCallWithRetry, parseErrorObj } from './util-ts/apiUtils';
15
15
  export { extractValue, isBiomarkerValueNumerical, isBiomarkerExternalNoVisualRange, processAppendedMappings, fetchSynonymUnits, resolveUnitFromSynonyms, extractFromPath, applyFormat } from './util-ts/dataUtils';
16
16
  export { readFileFromBucket, uploadFileBufferToGCS } from './util-ts/googleStorageUtils';
package/dist/index.js CHANGED
@@ -4,7 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.processingLogger = exports.mapErrorToRejectReason = exports.extractFormattedRejectReason = exports.shouldSendSlackNotification = exports.ValidationError = exports.handleError = exports.getRejectReason = exports.getErrorMessage = exports.ERROR_MESSAGES = exports.ERROR_CATALOG = exports.ErrorCode = exports.RejectReason = exports.UploadType = exports.Sex = exports.DataImportFileUploadStatus = exports.BiomarkerValueType = exports.MeasurementValueComparator = exports.DigitizationStatus = exports.PipelineStep = exports.ReferenceRangeType = exports.BiomarkerCompatibility = exports.ManualCheck = exports.AcfBiomarkerGenericDisclaimerLogic = exports.AcfBiomarkerRangeAnnotationCheck = exports.unitSynonyms = exports.validateTransformationRuleExpression = exports.applyTransformationRules = exports.generateBIMessages = exports.publishToTopic = exports.aggregateBiMessages = exports.aggregateMessages = exports.sendMessageToSlack = exports.getSlackFileIssueNotificationMessage = exports.extractValueFromGreaterLowerThan = exports.extractUnit = exports.getRangeFromPositionAndRegex = exports.parseExamValue = exports.extractReferenceAnnotation = exports.extractReferenceRanges = exports.checkValueForPlausibleValues = exports.ohtMeasurementsExtractor = exports.ohtReportMeasurementsExtractor = exports.postFileUploadSetStatus = exports.queryFileUploadsWithFilters = exports.handleRejection = exports.isPatientAgeValid = exports.parseGender = exports.parseExternalPatientId = exports.postReportPreviewToCore = exports.postDataImportFileUploadToCore = void 0;
7
- exports.parseRange = exports.getMappedBiomarkersLatest = exports.getMappedBiomarkers = exports.getLowerThanPatterns = exports.getGreaterThanPatterns = exports.pinoLogger = exports.uploadFileBufferToGCS = exports.readFileFromBucket = exports.applyFormat = exports.extractFromPath = exports.resolveUnitFromSynonyms = exports.fetchSynonymUnits = exports.processAppendedMappings = exports.isBiomarkerExternalNoVisualRange = exports.isBiomarkerValueNumerical = exports.extractValue = exports.parseErrorObj = exports.makeApiCallWithRetry = exports.runWithContextAsync = exports.runWithContext = void 0;
7
+ exports.parseRange = exports.getMappedBiomarkersLatest = exports.getMappedBiomarkers = exports.getLowerThanPatterns = exports.getGreaterThanPatterns = exports.pinoLogger = exports.uploadFileBufferToGCS = exports.readFileFromBucket = exports.applyFormat = exports.extractFromPath = exports.resolveUnitFromSynonyms = exports.fetchSynonymUnits = exports.processAppendedMappings = exports.isBiomarkerExternalNoVisualRange = exports.isBiomarkerValueNumerical = exports.extractValue = exports.parseErrorObj = exports.makeApiCallWithRetry = exports.runWithContextAsync = exports.runWithContext = exports.getRequestIdFromContext = void 0;
8
8
  // ### SERVICES ###
9
9
  var reportCreator_service_1 = require("./service/reportCreator.service");
10
10
  Object.defineProperty(exports, "postDataImportFileUploadToCore", { enumerable: true, get: function () { return reportCreator_service_1.postDataImportFileUploadToCore; } });
@@ -70,6 +70,7 @@ Object.defineProperty(exports, "mapErrorToRejectReason", { enumerable: true, get
70
70
  // ### PROCESSING LOGGER ###
71
71
  var processingLogger_service_1 = require("./service/processingLogger.service");
72
72
  Object.defineProperty(exports, "processingLogger", { enumerable: true, get: function () { return processingLogger_service_1.processingLogger; } });
73
+ Object.defineProperty(exports, "getRequestIdFromContext", { enumerable: true, get: function () { return processingLogger_service_1.getRequestIdFromContext; } });
73
74
  Object.defineProperty(exports, "runWithContext", { enumerable: true, get: function () { return processingLogger_service_1.runWithContext; } });
74
75
  Object.defineProperty(exports, "runWithContextAsync", { enumerable: true, get: function () { return processingLogger_service_1.runWithContextAsync; } });
75
76
  // ### UTIL-TS ###
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;AAAA,mBAAmB;AACnB,yEAGyC;AAFvC,uIAAA,8BAA8B,OAAA;AAC9B,gIAAA,uBAAuB,OAAA;AAEzB,mFAQ8C;AAP5C,oIAAA,sBAAsB,OAAA;AACtB,yHAAA,WAAW,OAAA;AACX,+HAAA,iBAAiB,OAAA;AACjB,6HAAA,eAAe,OAAA;AACf,yIAAA,2BAA2B,OAAA;AAC3B,qIAAA,uBAAuB,OAAA;AAIzB,2GAE0D;AADxD,wJAAA,8BAA8B,OAAA;AAGhC,+FASoD;AARlD,4IAAA,wBAAwB,OAAA;AACxB,gJAAA,4BAA4B,OAAA;AAC5B,0IAAA,sBAAsB,OAAA;AACtB,8IAAA,0BAA0B,OAAA;AAC1B,kIAAA,cAAc,OAAA;AACd,gJAAA,4BAA4B,OAAA;AAC5B,+HAAA,WAAW,OAAA;AACX,oJAAA,gCAAgC,OAAA;AAGlC,yEAEyC;AADvC,6IAAA,oCAAoC,OAAA;AAAE,2HAAA,kBAAkB,OAAA;AAE1D,yEAKyC;AAJvC,0HAAA,iBAAiB,OAAA;AACjB,4HAAA,mBAAmB,OAAA;AACnB,uHAAA,cAAc,OAAA;AACd,2HAAA,kBAAkB,OAAA;AAEpB,qFAG+C;AAF7C,uIAAA,UAAU,OAA4B;AACtC,mJAAA,yBAAyB,OAAwC;AAGnE,gBAAgB;AAChB,mEAaqC;AAJnC,mHAAA,YAAY,OAAA;AAKd,+CAsC2B;AArCzB,6HAAA,gCAAgC,OAAA;AAChC,+HAAA,kCAAkC,OAAA;AAClC,wGAAA,WAAW,OAAA;AACX,mHAAA,sBAAsB,OAAA;AACtB,+GAAA,kBAAkB,OAAA;AAOlB,yGAAA,YAAY,OAAA;AACZ,+GAAA,kBAAkB,OAAA;AAClB,uHAAA,0BAA0B,OAAA;AAC1B,+GAAA,kBAAkB,OAAA;AAClB,uHAAA,0BAA0B,OAAA;AAC1B,gGAAA,GAAG,OAAA;AAgBH,uGAAA,UAAU,OAAA;AACV,yGAAA,YAAY,OAAA;AAKd,mDAO6B;AAL3B,wGAAA,SAAS,OAAA;AACT,4GAAA,aAAa,OAAA;AACb,6GAAA,cAAc,OAAA;AACd,8GAAA,eAAe,OAAA;AACf,8GAAA,eAAe,OAAA;AAEjB,2FAMkD;AALhD,6HAAA,WAAW,OAAA;AACX,iIAAA,eAAe,OAAA;AACf,6IAAA,2BAA2B,OAAA;AAC3B,8IAAA,4BAA4B,OAAA;AAC5B,wIAAA,sBAAsB,OAAA;AAUxB,4BAA4B;AAC5B,+EAM4C;AAL1C,4HAAA,gBAAgB,OAAA;AAGhB,0HAAA,cAAc,OAAA;AACd,+HAAA,mBAAmB,OAAA;AAGrB,kBAAkB;AAClB,+CAAuE;AAA/D,gHAAA,oBAAoB,OAAA;AAAE,yGAAA,aAAa,OAAA;AAC3C,iDAAiN;AAAzM,yGAAA,YAAY,OAAA;AAAE,sHAAA,yBAAyB,OAAA;AAAE,6HAAA,gCAAgC,OAAA;AAAE,oHAAA,uBAAuB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAAE,oHAAA,uBAAuB,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,wGAAA,WAAW,OAAA;AACpL,mEAAuF;AAA/E,wHAAA,kBAAkB,OAAA;AAAE,2HAAA,qBAAqB,OAAA;AACjD,mDAA2D;AAAnD,yHAAA,OAAO,OAAc;AAC7B,mDAAkF;AAA1E,oHAAA,sBAAsB,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AACpD,iDAAmF;AAA3E,gHAAA,mBAAmB,OAAA;AAAE,sHAAA,yBAAyB,OAAA;AACtD,6DAAqD;AAA7C,6GAAA,UAAU,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":";;;;;;;AAAA,mBAAmB;AACnB,yEAGyC;AAFvC,uIAAA,8BAA8B,OAAA;AAC9B,gIAAA,uBAAuB,OAAA;AAEzB,mFAQ8C;AAP5C,oIAAA,sBAAsB,OAAA;AACtB,yHAAA,WAAW,OAAA;AACX,+HAAA,iBAAiB,OAAA;AACjB,6HAAA,eAAe,OAAA;AACf,yIAAA,2BAA2B,OAAA;AAC3B,qIAAA,uBAAuB,OAAA;AAIzB,2GAE0D;AADxD,wJAAA,8BAA8B,OAAA;AAGhC,+FASoD;AARlD,4IAAA,wBAAwB,OAAA;AACxB,gJAAA,4BAA4B,OAAA;AAC5B,0IAAA,sBAAsB,OAAA;AACtB,8IAAA,0BAA0B,OAAA;AAC1B,kIAAA,cAAc,OAAA;AACd,gJAAA,4BAA4B,OAAA;AAC5B,+HAAA,WAAW,OAAA;AACX,oJAAA,gCAAgC,OAAA;AAGlC,yEAEyC;AADvC,6IAAA,oCAAoC,OAAA;AAAE,2HAAA,kBAAkB,OAAA;AAE1D,yEAKyC;AAJvC,0HAAA,iBAAiB,OAAA;AACjB,4HAAA,mBAAmB,OAAA;AACnB,uHAAA,cAAc,OAAA;AACd,2HAAA,kBAAkB,OAAA;AAEpB,qFAG+C;AAF7C,uIAAA,UAAU,OAA4B;AACtC,mJAAA,yBAAyB,OAAwC;AAGnE,gBAAgB;AAChB,mEAaqC;AAJnC,mHAAA,YAAY,OAAA;AAKd,+CAsC2B;AArCzB,6HAAA,gCAAgC,OAAA;AAChC,+HAAA,kCAAkC,OAAA;AAClC,wGAAA,WAAW,OAAA;AACX,mHAAA,sBAAsB,OAAA;AACtB,+GAAA,kBAAkB,OAAA;AAOlB,yGAAA,YAAY,OAAA;AACZ,+GAAA,kBAAkB,OAAA;AAClB,uHAAA,0BAA0B,OAAA;AAC1B,+GAAA,kBAAkB,OAAA;AAClB,uHAAA,0BAA0B,OAAA;AAC1B,gGAAA,GAAG,OAAA;AAgBH,uGAAA,UAAU,OAAA;AACV,yGAAA,YAAY,OAAA;AAKd,mDAO6B;AAL3B,wGAAA,SAAS,OAAA;AACT,4GAAA,aAAa,OAAA;AACb,6GAAA,cAAc,OAAA;AACd,8GAAA,eAAe,OAAA;AACf,8GAAA,eAAe,OAAA;AAEjB,2FAMkD;AALhD,6HAAA,WAAW,OAAA;AACX,iIAAA,eAAe,OAAA;AACf,6IAAA,2BAA2B,OAAA;AAC3B,8IAAA,4BAA4B,OAAA;AAC5B,wIAAA,sBAAsB,OAAA;AAUxB,4BAA4B;AAC5B,+EAO4C;AAN1C,4HAAA,gBAAgB,OAAA;AAGhB,mIAAA,uBAAuB,OAAA;AACvB,0HAAA,cAAc,OAAA;AACd,+HAAA,mBAAmB,OAAA;AAGrB,kBAAkB;AAClB,+CAAuE;AAA/D,gHAAA,oBAAoB,OAAA;AAAE,yGAAA,aAAa,OAAA;AAC3C,iDAAiN;AAAzM,yGAAA,YAAY,OAAA;AAAE,sHAAA,yBAAyB,OAAA;AAAE,6HAAA,gCAAgC,OAAA;AAAE,oHAAA,uBAAuB,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AAAE,oHAAA,uBAAuB,OAAA;AAAE,4GAAA,eAAe,OAAA;AAAE,wGAAA,WAAW,OAAA;AACpL,mEAAuF;AAA/E,wHAAA,kBAAkB,OAAA;AAAE,2HAAA,qBAAqB,OAAA;AACjD,mDAA2D;AAAnD,yHAAA,OAAO,OAAc;AAC7B,mDAAkF;AAA1E,oHAAA,sBAAsB,OAAA;AAAE,kHAAA,oBAAoB,OAAA;AACpD,iDAAmF;AAA3E,gHAAA,mBAAmB,OAAA;AAAE,sHAAA,yBAAyB,OAAA;AACtD,6DAAqD;AAA7C,6GAAA,UAAU,OAAA"}
@@ -1,4 +1,9 @@
1
1
  import pino from 'pino';
2
+ /**
3
+ * Returns a stable request id for the given context. Same id must be used for the whole request.
4
+ * Used to key the registry so each request has isolated state.
5
+ */
6
+ export declare function getRequestIdFromContext(context: ProcessingContext): string;
2
7
  /**
3
8
  * Processing context interface - contains all context information for a processing cycle
4
9
  */
@@ -69,57 +74,40 @@ interface ProcessingState {
69
74
  metadata?: Record<string, any>;
70
75
  }
71
76
  /**
72
- * ProcessingLoggerService - Singleton service for tracking processing state and logging
77
+ * ProcessingLoggerService - Singleton facade for request-scoped processing state and logging.
78
+ *
79
+ * State is keyed by request id (fileUploadId ?? messageId ?? cloudEventId) in a registry.
80
+ * AsyncLocalStorage holds only the current request id; getMutableState() resolves state via
81
+ * registry.get(id). When registry.get(id) is undefined (no context or stale id), a transient
82
+ * empty state is used so one request never overwrites another's context.
73
83
  *
74
- * Provides simplified API for logging processing progress with automatic stage timing,
75
- * measurement tracking, and comprehensive summary logging. Use logInfo, logWarn, logError,
76
- * logDebug for all application logs so they include the same context (file_name, file_upload_id, etc.)
77
- * and are searchable by fileUploadId/filename.
84
+ * Entry point: runWithContextAsync(context, fn). Creates registry entry, runs fn with id in ALS,
85
+ * removes entry in finally. Use logInfo, logWarn, logError, logDebug for application logs so they
86
+ * include the same context and are searchable by fileUploadId/filename.
78
87
  *
79
88
  * Usage:
80
89
  * ```typescript
81
- * processingLogger.clear();
82
- * processingLogger.setContext({ fileName: 'test.json', partnerId: 'partner_123' });
83
- * processingLogger.logStart();
84
- * processingLogger.logProgress(20, 'get_transformation_rules');
85
- * processingLogger.logInfo('Step completed', { count: 5 });
86
- * processingLogger.addMeasurement(15, 'measurements');
87
- * processingLogger.logEnd(true);
90
+ * await runWithContextAsync(context, async () => {
91
+ * processingLogger.logStart();
92
+ * processingLogger.logProgress(20, 'get_transformation_rules');
93
+ * processingLogger.logEnd(true);
94
+ * });
88
95
  * ```
89
96
  */
90
97
  declare class ProcessingLoggerService {
91
98
  private static instance;
92
- private state;
93
99
  private logger;
94
100
  private constructor();
95
101
  static getInstance(): ProcessingLoggerService;
96
- private initializeState;
97
102
  /**
98
- * Current state: request-scoped store when inside runWithContext, else singleton state.
99
- * All reads/writes go through this so parallel requests do not mix state.
103
+ * Resolves state from registry by current request id. When registry.get(id) is undefined
104
+ * (no context or stale id), returns a transient clear state so one request never overwrites another's context.
100
105
  */
101
106
  private getMutableState;
102
- /**
103
- * Reset all state for a new processing cycle. Call at the start of each Cloud Event / request
104
- * so that context and metrics from a previous request never leak.
105
- * Clears both context fields and run state; call setContext(context) after clear() in handlers.
106
- */
107
107
  clear(): void;
108
- /**
109
- * Set context for the current processing cycle. Overwrites all context fields.
110
- * Call after clear() for each new request.
111
- */
112
108
  setContext(context: ProcessingContext): void;
113
- /** Public getter for tests / inspection; returns a copy. Use file_upload_id when filtering logs. */
114
109
  getState(): ProcessingState;
115
- /**
116
- * Replace the underlying logger (for testing only).
117
- * Allows tests to inject a mock logger without mocking the module.
118
- */
119
110
  setLogger(logger: pino.Logger): void;
120
- /**
121
- * Context for the current log line (from request-scoped state when inside runWithContext).
122
- */
123
111
  private getLogContext;
124
112
  logInfo(message: string, data?: Record<string, unknown>): void;
125
113
  logWarn(message: string, data?: Record<string, unknown>): void;
@@ -138,14 +126,15 @@ declare class ProcessingLoggerService {
138
126
  }
139
127
  export declare const processingLogger: ProcessingLoggerService;
140
128
  /**
141
- * Run handler logic inside a request-scoped context so all logs (getLogContext) use this
142
- * context even when many requests run in parallel on the same instance. Call at the start
143
- * of each Cloud Event / request after building the context from the message.
129
+ * Run handler logic inside a request-scoped context. State is keyed by request id in the registry;
130
+ * ALS holds only the id. Call at the start of each Cloud Event / request after building the context.
131
+ * @deprecated Prefer runWithContextAsync for async handlers.
144
132
  */
145
133
  export declare function runWithContext<T>(context: ProcessingContext, fn: () => T): T;
146
134
  /**
147
- * Async variant: run handler logic inside a request-scoped context.
148
- * Each request gets its own state (context, stages, errors); use fileUploadId as unique identifier.
135
+ * Async variant: run handler logic inside a request-scoped context. Each request gets its own state
136
+ * in the registry keyed by request id; ALS holds only the id. Entry is removed in finally so one
137
+ * request never overwrites another's context.
149
138
  */
150
139
  export declare function runWithContextAsync<T>(context: ProcessingContext, fn: () => Promise<T>): Promise<T>;
151
140
  export {};
@@ -4,16 +4,40 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.processingLogger = void 0;
7
+ exports.getRequestIdFromContext = getRequestIdFromContext;
7
8
  exports.runWithContext = runWithContext;
8
9
  exports.runWithContextAsync = runWithContextAsync;
9
10
  const async_hooks_1 = require("async_hooks");
11
+ const crypto_1 = __importDefault(require("crypto"));
10
12
  const pinoLogger_1 = __importDefault(require("../util-ts/pinoLogger"));
11
13
  /**
12
- * Request-scoped full state so parallel requests (e.g. up to 100 messages per instance)
13
- * do not overwrite each other. Each request gets its own state (context, stages, errors, etc.)
14
- * keyed by runWithContext(context, fn). Use fileUploadId (or fileName) as the unique identifier.
14
+ * Registry: one ProcessingState per request, keyed by request id.
15
+ * When registry.get(id) is undefined we use a transient empty state so one request never overwrites another's context.
15
16
  */
16
- const processingStateStorage = new async_hooks_1.AsyncLocalStorage();
17
+ const processingStateRegistry = new Map();
18
+ /**
19
+ * AsyncLocalStorage holds only the current request id (not the full state).
20
+ * State is resolved via processingStateRegistry.get(id).
21
+ */
22
+ const requestIdStorage = new async_hooks_1.AsyncLocalStorage();
23
+ /** One-time dev warning when logging/state update happens with no registry entry (transient state). */
24
+ let hasWarnedNoContext = false;
25
+ function warnOnceNoContext() {
26
+ if (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'test' || hasWarnedNoContext)
27
+ return;
28
+ hasWarnedNoContext = true;
29
+ (0, pinoLogger_1.default)().warn({ msg: 'ProcessingLogger used outside runWithContextAsync; using transient state. Ensure handlers run inside runWithContextAsync(context, fn).' });
30
+ }
31
+ /**
32
+ * Returns a stable request id for the given context. Same id must be used for the whole request.
33
+ * Used to key the registry so each request has isolated state.
34
+ */
35
+ function getRequestIdFromContext(context) {
36
+ return (context.fileUploadId ??
37
+ context.messageId ??
38
+ context.cloudEventId ??
39
+ crypto_1.default.randomUUID());
40
+ }
17
41
  function buildInitialStateFromContext(context) {
18
42
  return {
19
43
  fileName: context.fileName ?? undefined,
@@ -46,28 +70,64 @@ function buildInitialStateFromContext(context) {
46
70
  };
47
71
  }
48
72
  /**
49
- * ProcessingLoggerService - Singleton service for tracking processing state and logging
73
+ * Creates a fresh empty state. Used as transient state when registry.get(id) is undefined
74
+ * so one request never overwrites another's context. This state is never stored in the registry.
75
+ */
76
+ function createEmptyState() {
77
+ return {
78
+ fileName: undefined,
79
+ fileUploadId: undefined,
80
+ partnerId: undefined,
81
+ partnerName: undefined,
82
+ signedUploadId: undefined,
83
+ cloudEventId: undefined,
84
+ messageId: undefined,
85
+ publishTime: undefined,
86
+ fileMimeType: undefined,
87
+ normalizerName: undefined,
88
+ isPreview: false,
89
+ reportPreviewId: undefined,
90
+ startTime: undefined,
91
+ endTime: undefined,
92
+ totalDurationMs: undefined,
93
+ stages: [],
94
+ currentStageStartTime: undefined,
95
+ currentStep: undefined,
96
+ progressPercentage: undefined,
97
+ measurementsCount: undefined,
98
+ unknownMeasurementsCount: undefined,
99
+ unknownUnitsCount: undefined,
100
+ unmappedLabKeysCount: undefined,
101
+ errors: [],
102
+ warnings: [],
103
+ success: undefined,
104
+ metadata: undefined,
105
+ };
106
+ }
107
+ /**
108
+ * ProcessingLoggerService - Singleton facade for request-scoped processing state and logging.
109
+ *
110
+ * State is keyed by request id (fileUploadId ?? messageId ?? cloudEventId) in a registry.
111
+ * AsyncLocalStorage holds only the current request id; getMutableState() resolves state via
112
+ * registry.get(id). When registry.get(id) is undefined (no context or stale id), a transient
113
+ * empty state is used so one request never overwrites another's context.
50
114
  *
51
- * Provides simplified API for logging processing progress with automatic stage timing,
52
- * measurement tracking, and comprehensive summary logging. Use logInfo, logWarn, logError,
53
- * logDebug for all application logs so they include the same context (file_name, file_upload_id, etc.)
54
- * and are searchable by fileUploadId/filename.
115
+ * Entry point: runWithContextAsync(context, fn). Creates registry entry, runs fn with id in ALS,
116
+ * removes entry in finally. Use logInfo, logWarn, logError, logDebug for application logs so they
117
+ * include the same context and are searchable by fileUploadId/filename.
55
118
  *
56
119
  * Usage:
57
120
  * ```typescript
58
- * processingLogger.clear();
59
- * processingLogger.setContext({ fileName: 'test.json', partnerId: 'partner_123' });
60
- * processingLogger.logStart();
61
- * processingLogger.logProgress(20, 'get_transformation_rules');
62
- * processingLogger.logInfo('Step completed', { count: 5 });
63
- * processingLogger.addMeasurement(15, 'measurements');
64
- * processingLogger.logEnd(true);
121
+ * await runWithContextAsync(context, async () => {
122
+ * processingLogger.logStart();
123
+ * processingLogger.logProgress(20, 'get_transformation_rules');
124
+ * processingLogger.logEnd(true);
125
+ * });
65
126
  * ```
66
127
  */
67
128
  class ProcessingLoggerService {
68
129
  constructor() {
69
130
  this.logger = (0, pinoLogger_1.default)();
70
- this.state = this.initializeState();
71
131
  }
72
132
  static getInstance() {
73
133
  if (!ProcessingLoggerService.instance) {
@@ -75,49 +135,23 @@ class ProcessingLoggerService {
75
135
  }
76
136
  return ProcessingLoggerService.instance;
77
137
  }
78
- initializeState() {
79
- return {
80
- fileName: undefined,
81
- fileUploadId: undefined,
82
- partnerId: undefined,
83
- partnerName: undefined,
84
- signedUploadId: undefined,
85
- cloudEventId: undefined,
86
- messageId: undefined,
87
- publishTime: undefined,
88
- fileMimeType: undefined,
89
- normalizerName: undefined,
90
- isPreview: undefined,
91
- reportPreviewId: undefined,
92
- startTime: undefined,
93
- endTime: undefined,
94
- totalDurationMs: undefined,
95
- stages: [],
96
- currentStageStartTime: undefined,
97
- currentStep: undefined,
98
- progressPercentage: undefined,
99
- measurementsCount: undefined,
100
- unknownMeasurementsCount: undefined,
101
- unknownUnitsCount: undefined,
102
- unmappedLabKeysCount: undefined,
103
- errors: [],
104
- warnings: [],
105
- success: undefined,
106
- metadata: undefined,
107
- };
108
- }
109
138
  /**
110
- * Current state: request-scoped store when inside runWithContext, else singleton state.
111
- * All reads/writes go through this so parallel requests do not mix state.
139
+ * Resolves state from registry by current request id. When registry.get(id) is undefined
140
+ * (no context or stale id), returns a transient clear state so one request never overwrites another's context.
112
141
  */
113
142
  getMutableState() {
114
- return processingStateStorage.getStore() ?? this.state;
143
+ const id = requestIdStorage.getStore();
144
+ if (id == null) {
145
+ warnOnceNoContext();
146
+ return createEmptyState();
147
+ }
148
+ const state = processingStateRegistry.get(id);
149
+ if (state === undefined) {
150
+ warnOnceNoContext();
151
+ return createEmptyState();
152
+ }
153
+ return state;
115
154
  }
116
- /**
117
- * Reset all state for a new processing cycle. Call at the start of each Cloud Event / request
118
- * so that context and metrics from a previous request never leak.
119
- * Clears both context fields and run state; call setContext(context) after clear() in handlers.
120
- */
121
155
  clear() {
122
156
  const state = this.getMutableState();
123
157
  state.fileName = undefined;
@@ -148,10 +182,6 @@ class ProcessingLoggerService {
148
182
  state.success = undefined;
149
183
  state.metadata = undefined;
150
184
  }
151
- /**
152
- * Set context for the current processing cycle. Overwrites all context fields.
153
- * Call after clear() for each new request.
154
- */
155
185
  setContext(context) {
156
186
  const state = this.getMutableState();
157
187
  state.fileName = context.fileName ?? undefined;
@@ -167,20 +197,18 @@ class ProcessingLoggerService {
167
197
  state.isPreview = context.isPreview ?? false;
168
198
  state.reportPreviewId = context.reportPreviewId ?? undefined;
169
199
  }
170
- /** Public getter for tests / inspection; returns a copy. Use file_upload_id when filtering logs. */
171
200
  getState() {
172
- return { ...this.getMutableState() };
201
+ const src = this.getMutableState();
202
+ return {
203
+ ...src,
204
+ stages: src.stages.map((s) => ({ ...s })),
205
+ errors: src.errors.map((e) => ({ ...e, timestamp: e.timestamp })),
206
+ warnings: src.warnings.map((w) => ({ ...w, timestamp: w.timestamp })),
207
+ };
173
208
  }
174
- /**
175
- * Replace the underlying logger (for testing only).
176
- * Allows tests to inject a mock logger without mocking the module.
177
- */
178
209
  setLogger(logger) {
179
210
  this.logger = logger;
180
211
  }
181
- /**
182
- * Context for the current log line (from request-scoped state when inside runWithContext).
183
- */
184
212
  getLogContext() {
185
213
  const src = this.getMutableState();
186
214
  return {
@@ -224,11 +252,7 @@ class ProcessingLoggerService {
224
252
  this.getMutableState().currentStageStartTime = now;
225
253
  this.getMutableState().currentStep = step;
226
254
  this.getMutableState().progressPercentage = percentage;
227
- this.getMutableState().stages.push({
228
- step,
229
- percentage,
230
- startTime: now,
231
- });
255
+ this.getMutableState().stages.push({ step, percentage, startTime: now });
232
256
  }
233
257
  endStage() {
234
258
  if (!this.getMutableState().currentStageStartTime || !this.getMutableState().currentStep)
@@ -267,18 +291,7 @@ class ProcessingLoggerService {
267
291
  report_preview_id: this.getMutableState().reportPreviewId,
268
292
  start_time: this.getMutableState().startTime.toISOString(),
269
293
  },
270
- context: {
271
- file_name: this.getMutableState().fileName,
272
- partner_id: this.getMutableState().partnerId,
273
- file_upload_id: this.getMutableState().fileUploadId,
274
- signed_upload_id: this.getMutableState().signedUploadId,
275
- message_id: this.getMutableState().messageId,
276
- publish_time: this.getMutableState().publishTime,
277
- file_mime_type: this.getMutableState().fileMimeType,
278
- normalizer_name: this.getMutableState().normalizerName,
279
- is_preview: this.getMutableState().isPreview,
280
- report_preview_id: this.getMutableState().reportPreviewId,
281
- },
294
+ context: this.getLogContext(),
282
295
  labels: {
283
296
  function_name: this.getMutableState().isPreview ? 'AgnosticParserReport' : 'AgnosticParser',
284
297
  partner_id: this.getMutableState().partnerId,
@@ -338,7 +351,12 @@ class ProcessingLoggerService {
338
351
  }
339
352
  }
340
353
  addError(error, step) {
341
- this.getMutableState().errors.push({ message: error.message, step, timestamp: new Date(), error });
354
+ this.getMutableState().errors.push({
355
+ message: error.message,
356
+ step,
357
+ timestamp: new Date(),
358
+ error,
359
+ });
342
360
  }
343
361
  addWarning(message, step) {
344
362
  this.getMutableState().warnings.push({ message, step, timestamp: new Date() });
@@ -358,7 +376,8 @@ class ProcessingLoggerService {
358
376
  formatStageDurations() {
359
377
  const stageDurations = {};
360
378
  this.getMutableState().stages.forEach((stage) => {
361
- if (stage.durationMs !== undefined && this.getMutableState().totalDurationMs) {
379
+ if (stage.durationMs !== undefined &&
380
+ this.getMutableState().totalDurationMs) {
362
381
  const percentageOfTotal = (stage.durationMs / this.getMutableState().totalDurationMs) * 100;
363
382
  stageDurations[stage.step] = {
364
383
  duration_ms: stage.durationMs,
@@ -375,21 +394,22 @@ class ProcessingLoggerService {
375
394
  this.endStage();
376
395
  this.getMutableState().endTime = new Date();
377
396
  if (this.getMutableState().startTime) {
378
- this.getMutableState().totalDurationMs = this.getMutableState().endTime.getTime() - this.getMutableState().startTime.getTime();
397
+ this.getMutableState().totalDurationMs =
398
+ this.getMutableState().endTime.getTime() -
399
+ this.getMutableState().startTime.getTime();
379
400
  }
380
401
  this.calculateStageDurations();
381
402
  const stageDurations = this.formatStageDurations();
382
403
  this.getMutableState().success = success;
383
- // When we log a failure, always include at least one error so the log explains the reason and
384
- // jsonPayload.errors exists for GCP metrics (e.g. failures-by-labels). If no error was
385
- // recorded (e.g. missing addError on a path, or state cleared by another request), add a synthetic one.
386
404
  const errorsForPayload = this.getMutableState().errors.length > 0
387
405
  ? this.getMutableState().errors.map((e) => ({
388
406
  message: e.message,
389
407
  step: e.step,
390
408
  timestamp: e.timestamp.toISOString(),
391
409
  ...(e.error?.stack && { stack: e.error.stack }),
392
- ...(e.error?.constructor?.name && { error_type: e.error.constructor.name }),
410
+ ...(e.error?.constructor?.name && {
411
+ error_type: e.error.constructor.name,
412
+ }),
393
413
  }))
394
414
  : success
395
415
  ? undefined
@@ -407,10 +427,15 @@ class ProcessingLoggerService {
407
427
  ? 'Unknown (no error detail recorded)'
408
428
  : undefined;
409
429
  const message = this.getMutableState().isPreview
410
- ? success ? 'Report preview processing completed' : 'Report preview processing failed'
411
- : success ? 'Processing completed' : 'Processing failed';
412
- // Log failures as WARNING so they are easy to filter (e.g. severity>=WARNING in Logs Explorer)
413
- const logMethod = success ? this.logger.info.bind(this.logger) : this.logger.warn.bind(this.logger);
430
+ ? success
431
+ ? 'Report preview processing completed'
432
+ : 'Report preview processing failed'
433
+ : success
434
+ ? 'Processing completed'
435
+ : 'Processing failed';
436
+ const logMethod = success
437
+ ? this.logger.info.bind(this.logger)
438
+ : this.logger.warn.bind(this.logger);
414
439
  logMethod({
415
440
  ...(failureReason && { failure_reason: failureReason }),
416
441
  processing_summary: {
@@ -429,20 +454,11 @@ class ProcessingLoggerService {
429
454
  errors_count: errorsForPayload?.length ?? 0,
430
455
  warnings_count: this.getMutableState().warnings.length,
431
456
  },
432
- context: {
433
- file_name: this.getMutableState().fileName,
434
- partner_id: this.getMutableState().partnerId,
435
- partner_name: this.getMutableState().partnerName,
436
- file_upload_id: this.getMutableState().fileUploadId,
437
- signed_upload_id: this.getMutableState().signedUploadId,
438
- cloud_event_id: this.getMutableState().cloudEventId,
439
- file_mime_type: this.getMutableState().fileMimeType,
440
- normalizer_name: this.getMutableState().normalizerName,
441
- is_preview: this.getMutableState().isPreview,
442
- report_preview_id: this.getMutableState().reportPreviewId,
443
- },
457
+ context: this.getLogContext(),
444
458
  labels: {
445
- function_name: this.getMutableState().isPreview ? 'AgnosticParserReport' : 'AgnosticParser',
459
+ function_name: this.getMutableState().isPreview
460
+ ? 'AgnosticParserReport'
461
+ : 'AgnosticParser',
446
462
  partner_id: this.getMutableState().partnerId,
447
463
  file_upload_id: this.getMutableState().fileUploadId,
448
464
  signed_upload_id: this.getMutableState().signedUploadId,
@@ -465,20 +481,35 @@ class ProcessingLoggerService {
465
481
  }
466
482
  exports.processingLogger = ProcessingLoggerService.getInstance();
467
483
  /**
468
- * Run handler logic inside a request-scoped context so all logs (getLogContext) use this
469
- * context even when many requests run in parallel on the same instance. Call at the start
470
- * of each Cloud Event / request after building the context from the message.
484
+ * Run handler logic inside a request-scoped context. State is keyed by request id in the registry;
485
+ * ALS holds only the id. Call at the start of each Cloud Event / request after building the context.
486
+ * @deprecated Prefer runWithContextAsync for async handlers.
471
487
  */
472
488
  function runWithContext(context, fn) {
489
+ const requestId = getRequestIdFromContext(context);
473
490
  const initialState = buildInitialStateFromContext(context);
474
- return processingStateStorage.run(initialState, fn);
491
+ processingStateRegistry.set(requestId, initialState);
492
+ try {
493
+ return requestIdStorage.run(requestId, fn);
494
+ }
495
+ finally {
496
+ processingStateRegistry.delete(requestId);
497
+ }
475
498
  }
476
499
  /**
477
- * Async variant: run handler logic inside a request-scoped context.
478
- * Each request gets its own state (context, stages, errors); use fileUploadId as unique identifier.
500
+ * Async variant: run handler logic inside a request-scoped context. Each request gets its own state
501
+ * in the registry keyed by request id; ALS holds only the id. Entry is removed in finally so one
502
+ * request never overwrites another's context.
479
503
  */
480
504
  async function runWithContextAsync(context, fn) {
505
+ const requestId = getRequestIdFromContext(context);
481
506
  const initialState = buildInitialStateFromContext(context);
482
- return processingStateStorage.run(initialState, fn);
507
+ processingStateRegistry.set(requestId, initialState);
508
+ try {
509
+ return await requestIdStorage.run(requestId, () => fn());
510
+ }
511
+ finally {
512
+ processingStateRegistry.delete(requestId);
513
+ }
483
514
  }
484
515
  //# sourceMappingURL=processingLogger.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"processingLogger.service.js","sourceRoot":"","sources":["../../service/processingLogger.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processingLogger.service.js","sourceRoot":"","sources":["../../service/processingLogger.service.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openhealth/oht-custom-parser-lib",
3
- "version": "0.3.11",
3
+ "version": "0.3.14",
4
4
  "description": "Shared nodejs lib with with reusable functions",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -8,6 +8,7 @@
8
8
  "/dist"
9
9
  ],
10
10
  "scripts": {
11
+ "build": "tsc",
11
12
  "test": "jest"
12
13
  },
13
14
  "keywords": [],
@@ -30,6 +31,7 @@
30
31
  "@types/jest": "^29.5.14",
31
32
  "axios-mock-adapter": "^2.1.0",
32
33
  "jest": "^29.7.0",
33
- "ts-jest": "^29.2.5"
34
+ "ts-jest": "^29.2.5",
35
+ "typescript": "^5.0.0"
34
36
  }
35
37
  }
package/readme.md CHANGED
@@ -38,6 +38,17 @@ const { connectToMongoDB } = require('oht-custom-parser-lib');
38
38
  - **Production / GCP**: Logs are emitted as JSON (one line per log) for Cloud Logging.
39
39
  - **Local / development**: When `NODE_ENV !== 'production'`, logs are pretty-printed in the terminal (colors, timestamps, readable structure). You can override: `LOG_PRETTY=true` to force pretty output, or `LOG_PRETTY=false` to force JSON when not in production.
40
40
 
41
+ ### Processing logger: request-scoped state
42
+
43
+ The processing logger (`processingLogger`, `runWithContextAsync`, `getRequestIdFromContext`) uses a **registry + facade** so each request has isolated state and logs never leak context between concurrent invocations (e.g. in Cloud Functions).
44
+
45
+ - **Registry**: One `ProcessingState` per request, keyed by request id (`fileUploadId ?? messageId ?? cloudEventId ?? generatedId`). The same id is used for the whole request.
46
+ - **AsyncLocalStorage**: Holds only the current request id; state is resolved via `registry.get(id)`.
47
+ - **Entry point**: Wrap your handler in `runWithContextAsync(context, async () => { ... })`. The lib creates a registry entry, runs your callback with the id in AsyncLocalStorage, and removes the entry in a `finally` block.
48
+ - **Clear-state rule**: If there is no request id or the id is not in the registry (e.g. logging outside `runWithContextAsync` or after teardown), the logger uses a **transient empty state** for that call only (never stored). That way one request never overwrites another’s context.
49
+
50
+ Use `processingLogger.logInfo`, `logWarn`, `logError`, `logProgress`, etc. inside the callback so logs include the same context and are searchable by `fileUploadId` / filename.
51
+
41
52
  ## Development
42
53
 
43
54
  ### Patch Versions