@clipboard-health/execution-context 0.6.3 → 0.8.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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@clipboard-health/execution-context",
3
3
  "description": "A lightweight Node.js utility for managing execution contexts and metadata aggregation using AsyncLocalStorage.",
4
- "version": "0.6.3",
4
+ "version": "0.8.0",
5
5
  "bugs": "https://github.com/ClipboardHealth/core-utils/issues",
6
6
  "dependencies": {
7
7
  "tslib": "2.8.0"
@@ -12,4 +12,16 @@ export declare function newExecutionContext(source: string): ExecutionContext;
12
12
  * @param metadata - the metadata (key-value pair), to be added to the context
13
13
  */
14
14
  export declare function addMetadataToLocalContext(metadata: Record<string, unknown>): void;
15
+ /**
16
+ * A utility function that will add metadata to the list under current context's key
17
+ * @param key - the list's key (string) in the context
18
+ * @param metadata - the metadata (key-value pair), to be added to the context
19
+ */
15
20
  export declare function addToMetadataList(key: string, metadata: Record<string, unknown>): void;
21
+ /**
22
+ * A utility function that will add metadata to the record under current context's key,
23
+ * supporting nested records.
24
+ * @param key - the record's key (string) in the context
25
+ * @param metadata - the metadata (key-value pair), to be added to the context
26
+ */
27
+ export declare function addToMetadataRecord(key: string, metadata: Record<string, unknown>): void;
@@ -5,8 +5,10 @@ exports.runWithExecutionContext = runWithExecutionContext;
5
5
  exports.newExecutionContext = newExecutionContext;
6
6
  exports.addMetadataToLocalContext = addMetadataToLocalContext;
7
7
  exports.addToMetadataList = addToMetadataList;
8
+ exports.addToMetadataRecord = addToMetadataRecord;
8
9
  require("../types/global");
9
10
  const node_async_hooks_1 = require("node:async_hooks");
11
+ const util_1 = require("./util");
10
12
  globalThis.threadLocalStorage ||= new node_async_hooks_1.AsyncLocalStorage();
11
13
  function getAsyncLocalStorage() {
12
14
  return globalThis.threadLocalStorage;
@@ -56,8 +58,33 @@ function getMetadataListByKey(key) {
56
58
  }
57
59
  return [];
58
60
  }
61
+ /**
62
+ * A utility function that will add metadata to the list under current context's key
63
+ * @param key - the list's key (string) in the context
64
+ * @param metadata - the metadata (key-value pair), to be added to the context
65
+ */
59
66
  function addToMetadataList(key, metadata) {
60
67
  const metadataList = [...getMetadataListByKey(key), metadata];
61
68
  addMetadataToLocalContext({ [key]: metadataList });
62
69
  }
70
+ function getMetadataRecordByKey(key) {
71
+ const context = getExecutionContext();
72
+ if (context?.metadata && key in context.metadata) {
73
+ const metadataForKey = context.metadata[key];
74
+ if ((0, util_1.isRecord)(metadataForKey)) {
75
+ return metadataForKey;
76
+ }
77
+ }
78
+ return {};
79
+ }
80
+ /**
81
+ * A utility function that will add metadata to the record under current context's key,
82
+ * supporting nested records.
83
+ * @param key - the record's key (string) in the context
84
+ * @param metadata - the metadata (key-value pair), to be added to the context
85
+ */
86
+ function addToMetadataRecord(key, metadata) {
87
+ const metadataRecord = { ...getMetadataRecordByKey(key), ...metadata };
88
+ addMetadataToLocalContext({ [key]: metadataRecord });
89
+ }
63
90
  //# sourceMappingURL=contextStore.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contextStore.js","sourceRoot":"","sources":["../../../../../packages/execution-context/src/lib/contextStore.ts"],"names":[],"mappings":";;AAYA,kDAEC;AAED,0DAaC;AAMD,kDAKC;AAMD,8DAKC;AAcD,8CAGC;AApED,2BAAyB;AAEzB,uDAAqD;AAIrD,UAAU,CAAC,kBAAkB,KAAK,IAAI,oCAAiB,EAAE,CAAC;AAE1D,SAAS,oBAAoB;IAC3B,OAAO,UAAU,CAAC,kBAAkB,CAAC;AACvC,CAAC;AAED,SAAgB,mBAAmB;IACjC,OAAO,oBAAoB,EAAE,CAAC,QAAQ,EAAE,CAAC;AAC3C,CAAC;AAEM,KAAK,UAAU,uBAAuB,CAC3C,OAAyB,EACzB,QAA0B;IAE1B,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,oBAAoB,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE;YACvC,IAAI,CAAC;gBACH,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1D,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAgB,mBAAmB,CAAC,MAAc;IAChD,OAAO;QACL,MAAM;QACN,QAAQ,EAAE,EAAE;KACb,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAgB,yBAAyB,CAAC,QAAiC;IACzE,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CAAC,QAAQ,GAAG,EAAE,GAAG,OAAO,CAAC,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;IAC1D,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,OAAO,GAAG,mBAAmB,EAAE,CAAC;IACtC,IAAI,OAAO,EAAE,QAAQ,IAAI,GAAG,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjD,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC7C,IAAI,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAClC,OAAO,cAAc,CAAC;QACxB,CAAC;IACH,CAAC;IAED,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,SAAgB,iBAAiB,CAAC,GAAW,EAAE,QAAiC;IAC9E,MAAM,YAAY,GAAG,CAAC,GAAG,oBAAoB,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC9D,yBAAyB,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"contextStore.js","sourceRoot":"","sources":["../../../../../packages/execution-context/src/lib/contextStore.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export declare function isRecord(value: unknown): value is Record<string, unknown>;
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRecord = isRecord;
4
+ function isRecord(value) {
5
+ return typeof value === "object" && value !== null && !Array.isArray(value);
6
+ }
7
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../../../../../packages/execution-context/src/lib/util.ts"],"names":[],"mappings":";;AAAA,4BAEC;AAFD,SAAgB,QAAQ,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC"}