@flowcore/pathways 0.6.0 → 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/CHANGELOG.md +14 -0
- package/esm/pathways/builder.d.ts +18 -0
- package/esm/pathways/builder.d.ts.map +1 -1
- package/esm/pathways/builder.js +93 -10
- package/esm/pathways/index.d.ts +2 -0
- package/esm/pathways/index.d.ts.map +1 -1
- package/esm/pathways/index.js +2 -0
- package/esm/pathways/session-pathway.d.ts +37 -0
- package/esm/pathways/session-pathway.d.ts.map +1 -0
- package/esm/pathways/session-pathway.js +73 -0
- package/esm/pathways/types.d.ts +5 -0
- package/esm/pathways/types.d.ts.map +1 -1
- package/package.json +1 -1
- package/script/pathways/builder.d.ts +18 -0
- package/script/pathways/builder.d.ts.map +1 -1
- package/script/pathways/builder.js +93 -10
- package/script/pathways/index.d.ts +2 -0
- package/script/pathways/index.d.ts.map +1 -1
- package/script/pathways/index.js +2 -0
- package/script/pathways/session-pathway.d.ts +37 -0
- package/script/pathways/session-pathway.d.ts.map +1 -0
- package/script/pathways/session-pathway.js +77 -0
- package/script/pathways/types.d.ts +5 -0
- package/script/pathways/types.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.8.0](https://github.com/flowcore-io/flowcore-pathways/compare/v0.7.0...v0.8.0) (2025-03-18)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **pathways:** :sparkles: Add session-specific user resolver functionality ([0e0c074](https://github.com/flowcore-io/flowcore-pathways/commit/0e0c074b451b15d3a83ea49f0d838ed559306290))
|
|
9
|
+
|
|
10
|
+
## [0.7.0](https://github.com/flowcore-io/flowcore-pathways/compare/v0.6.0...v0.7.0) (2025-03-18)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* **pathways:** :sparkles: Add cloning functionality to PathwaysBuilder ([674c72a](https://github.com/flowcore-io/flowcore-pathways/commit/674c72a085c9e8805d127ebd2ae70c0279d990e4))
|
|
16
|
+
|
|
3
17
|
## [0.6.0](https://github.com/flowcore-io/flowcore-pathways/compare/v0.5.0...v0.6.0) (2025-03-18)
|
|
4
18
|
|
|
5
19
|
|
|
@@ -62,7 +62,12 @@ export declare class PathwaysBuilder<TPathway extends Record<string, unknown> =
|
|
|
62
62
|
private pathwayTimeoutMs;
|
|
63
63
|
private auditHandler?;
|
|
64
64
|
private userIdResolver?;
|
|
65
|
+
private readonly sessionUserResolvers;
|
|
65
66
|
private readonly logger;
|
|
67
|
+
private readonly baseUrl;
|
|
68
|
+
private readonly tenant;
|
|
69
|
+
private readonly dataCore;
|
|
70
|
+
private readonly apiKey;
|
|
66
71
|
/**
|
|
67
72
|
* Creates a new PathwaysBuilder instance
|
|
68
73
|
* @param options Configuration options for the PathwaysBuilder
|
|
@@ -99,6 +104,19 @@ export declare class PathwaysBuilder<TPathway extends Record<string, unknown> =
|
|
|
99
104
|
* @returns The PathwaysBuilder instance with custom user ID resolver configured
|
|
100
105
|
*/
|
|
101
106
|
withUserResolver(resolver: UserIdResolver): PathwaysBuilder<TPathway, TWritablePaths>;
|
|
107
|
+
/**
|
|
108
|
+
* Registers a user resolver for a specific session
|
|
109
|
+
* @param sessionId The session ID to associate with this resolver
|
|
110
|
+
* @param resolver The resolver function that resolves to the user ID for this session
|
|
111
|
+
* @returns The PathwaysBuilder instance for chaining
|
|
112
|
+
*/
|
|
113
|
+
withSessionUserResolver(sessionId: string, resolver: UserIdResolver): PathwaysBuilder<TPathway, TWritablePaths>;
|
|
114
|
+
/**
|
|
115
|
+
* Gets a user resolver for a specific session ID
|
|
116
|
+
* @param sessionId The session ID to get the resolver for
|
|
117
|
+
* @returns The resolver function for the session, or undefined if none exists
|
|
118
|
+
*/
|
|
119
|
+
getSessionUserResolver(sessionId: string): UserIdResolver | undefined;
|
|
102
120
|
/**
|
|
103
121
|
* Process a pathway event with error handling and retries
|
|
104
122
|
* @param pathway The pathway to process
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/pathways/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,KAAK,EAAyD,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAG/H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAA6B,eAAe,EAAE,MAAM,YAAY,CAAA;AAiB3J;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEzC;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;AAEvE;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe,CAE1B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,EAC7C,cAAc,SAAS,MAAM,QAAQ,GAAG,KAAK;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGxB;IACD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAGhC;IACD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG9B;IACD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG9B;IACD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyE;IAC5G,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGvB;IACD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyE;IACjG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyE;IAClG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuE;IAChG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuE;IAClG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuE;IACnG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0B;IAChE,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,gBAAgB,CAAqC;IAG7D,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,cAAc,CAAC,CAAgB;IAGvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAE/B;;;;;;;;;OASG;gBACS,EACV,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,gBAAgB,EAChB,MAAM,GACP,EAAE;QACD,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/pathways/builder.ts"],"names":[],"mappings":"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"}
|
package/esm/pathways/builder.js
CHANGED
|
@@ -150,6 +150,13 @@ export class PathwaysBuilder {
|
|
|
150
150
|
writable: true,
|
|
151
151
|
value: void 0
|
|
152
152
|
});
|
|
153
|
+
// Session-specific user resolvers
|
|
154
|
+
Object.defineProperty(this, "sessionUserResolvers", {
|
|
155
|
+
enumerable: true,
|
|
156
|
+
configurable: true,
|
|
157
|
+
writable: true,
|
|
158
|
+
value: new Map()
|
|
159
|
+
});
|
|
153
160
|
// Logger instance (but not using it yet due to TypeScript errors)
|
|
154
161
|
Object.defineProperty(this, "logger", {
|
|
155
162
|
enumerable: true,
|
|
@@ -157,8 +164,38 @@ export class PathwaysBuilder {
|
|
|
157
164
|
writable: true,
|
|
158
165
|
value: void 0
|
|
159
166
|
});
|
|
167
|
+
// Configuration values needed for cloning
|
|
168
|
+
Object.defineProperty(this, "baseUrl", {
|
|
169
|
+
enumerable: true,
|
|
170
|
+
configurable: true,
|
|
171
|
+
writable: true,
|
|
172
|
+
value: void 0
|
|
173
|
+
});
|
|
174
|
+
Object.defineProperty(this, "tenant", {
|
|
175
|
+
enumerable: true,
|
|
176
|
+
configurable: true,
|
|
177
|
+
writable: true,
|
|
178
|
+
value: void 0
|
|
179
|
+
});
|
|
180
|
+
Object.defineProperty(this, "dataCore", {
|
|
181
|
+
enumerable: true,
|
|
182
|
+
configurable: true,
|
|
183
|
+
writable: true,
|
|
184
|
+
value: void 0
|
|
185
|
+
});
|
|
186
|
+
Object.defineProperty(this, "apiKey", {
|
|
187
|
+
enumerable: true,
|
|
188
|
+
configurable: true,
|
|
189
|
+
writable: true,
|
|
190
|
+
value: void 0
|
|
191
|
+
});
|
|
160
192
|
// Initialize logger (use NoopLogger if none provided)
|
|
161
193
|
this.logger = logger ?? new NoopLogger();
|
|
194
|
+
// Store configuration values for cloning
|
|
195
|
+
this.baseUrl = baseUrl;
|
|
196
|
+
this.tenant = tenant;
|
|
197
|
+
this.dataCore = dataCore;
|
|
198
|
+
this.apiKey = apiKey;
|
|
162
199
|
this.logger.debug('Initializing PathwaysBuilder', {
|
|
163
200
|
baseUrl,
|
|
164
201
|
tenant,
|
|
@@ -210,6 +247,25 @@ export class PathwaysBuilder {
|
|
|
210
247
|
this.userIdResolver = resolver;
|
|
211
248
|
return this;
|
|
212
249
|
}
|
|
250
|
+
/**
|
|
251
|
+
* Registers a user resolver for a specific session
|
|
252
|
+
* @param sessionId The session ID to associate with this resolver
|
|
253
|
+
* @param resolver The resolver function that resolves to the user ID for this session
|
|
254
|
+
* @returns The PathwaysBuilder instance for chaining
|
|
255
|
+
*/
|
|
256
|
+
withSessionUserResolver(sessionId, resolver) {
|
|
257
|
+
this.logger.debug('Configuring session-specific user resolver', { sessionId });
|
|
258
|
+
this.sessionUserResolvers.set(sessionId, resolver);
|
|
259
|
+
return this;
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Gets a user resolver for a specific session ID
|
|
263
|
+
* @param sessionId The session ID to get the resolver for
|
|
264
|
+
* @returns The resolver function for the session, or undefined if none exists
|
|
265
|
+
*/
|
|
266
|
+
getSessionUserResolver(sessionId) {
|
|
267
|
+
return this.sessionUserResolvers.get(sessionId);
|
|
268
|
+
}
|
|
213
269
|
/**
|
|
214
270
|
* Process a pathway event with error handling and retries
|
|
215
271
|
* @param pathway The pathway to process
|
|
@@ -504,7 +560,8 @@ export class PathwaysBuilder {
|
|
|
504
560
|
pathway: pathStr,
|
|
505
561
|
metadata,
|
|
506
562
|
options: {
|
|
507
|
-
fireAndForget: options?.fireAndForget
|
|
563
|
+
fireAndForget: options?.fireAndForget,
|
|
564
|
+
sessionId: options?.sessionId
|
|
508
565
|
}
|
|
509
566
|
});
|
|
510
567
|
if (!this.pathways[path]) {
|
|
@@ -528,17 +585,43 @@ export class PathwaysBuilder {
|
|
|
528
585
|
}
|
|
529
586
|
// Create a copy of the metadata to avoid modifying the original
|
|
530
587
|
const finalMetadata = metadata ? { ...metadata } : {};
|
|
588
|
+
// Check for session-specific user resolver
|
|
589
|
+
let userId;
|
|
590
|
+
if (options?.sessionId) {
|
|
591
|
+
const sessionUserResolver = this.sessionUserResolvers.get(options.sessionId);
|
|
592
|
+
if (sessionUserResolver) {
|
|
593
|
+
try {
|
|
594
|
+
userId = await sessionUserResolver();
|
|
595
|
+
this.logger.debug(`Using session-specific user resolver`, {
|
|
596
|
+
pathway: pathStr,
|
|
597
|
+
sessionId: options.sessionId,
|
|
598
|
+
userId
|
|
599
|
+
});
|
|
600
|
+
}
|
|
601
|
+
catch (error) {
|
|
602
|
+
this.logger.error(`Error resolving session user ID`, error instanceof Error ? error : new Error(String(error)), {
|
|
603
|
+
pathway: pathStr,
|
|
604
|
+
sessionId: options.sessionId
|
|
605
|
+
});
|
|
606
|
+
}
|
|
607
|
+
}
|
|
608
|
+
}
|
|
531
609
|
// Process audit metadata if audit is configured
|
|
532
610
|
if (this.userIdResolver) {
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
611
|
+
// Only use global resolver if we don't already have a user ID from a session resolver
|
|
612
|
+
if (!userId) {
|
|
613
|
+
this.logger.debug(`Resolving user ID for audit metadata`, { pathway: pathStr });
|
|
614
|
+
userId = await this.userIdResolver();
|
|
615
|
+
}
|
|
616
|
+
}
|
|
617
|
+
// Determine the audit mode: default is "user" unless explicitly specified as "system"
|
|
618
|
+
const auditMode = options?.auditMode ?? "user";
|
|
619
|
+
this.logger.debug(`Adding audit metadata`, {
|
|
620
|
+
pathway: pathStr,
|
|
621
|
+
auditMode,
|
|
622
|
+
userId
|
|
623
|
+
});
|
|
624
|
+
if (userId) {
|
|
542
625
|
// Add appropriate audit metadata based on mode
|
|
543
626
|
if (auditMode === "system") {
|
|
544
627
|
finalMetadata["audit/user-id"] = "system";
|
package/esm/pathways/index.d.ts
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Exports all components needed to build and manage pathways including:
|
|
5
5
|
* - Pathway builder
|
|
6
|
+
* - Session pathway builder
|
|
6
7
|
* - State management
|
|
7
8
|
* - Storage adapters (KV, Postgres)
|
|
8
9
|
* - Logging
|
|
@@ -15,5 +16,6 @@ export * from "./internal-pathway.state.js";
|
|
|
15
16
|
export * from "./kv/kv-adapter.js";
|
|
16
17
|
export * from "./logger.js";
|
|
17
18
|
export * from "./postgres/index.js";
|
|
19
|
+
export * from "./session-pathway.js";
|
|
18
20
|
export * from "./types.js";
|
|
19
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pathways/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pathways/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC"}
|
package/esm/pathways/index.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Exports all components needed to build and manage pathways including:
|
|
5
5
|
* - Pathway builder
|
|
6
|
+
* - Session pathway builder
|
|
6
7
|
* - State management
|
|
7
8
|
* - Storage adapters (KV, Postgres)
|
|
8
9
|
* - Logging
|
|
@@ -15,4 +16,5 @@ export * from "./internal-pathway.state.js";
|
|
|
15
16
|
export * from "./kv/kv-adapter.js";
|
|
16
17
|
export * from "./logger.js";
|
|
17
18
|
export * from "./postgres/index.js";
|
|
19
|
+
export * from "./session-pathway.js";
|
|
18
20
|
export * from "./types.js";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { PathwaysBuilder } from "./builder.js";
|
|
2
|
+
import type { EventMetadata, PathwayWriteOptions } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* SessionPathwayBuilder wraps a PathwaysBuilder instance and automatically
|
|
5
|
+
* associates a session ID with all pathway writes.
|
|
6
|
+
*
|
|
7
|
+
* This provides a convenient way to track operations within a user session
|
|
8
|
+
* by automatically including the session ID in metadata.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SessionPathwayBuilder<TPathway extends Record<string, unknown> = {}, TWritablePaths extends keyof TPathway = never> {
|
|
11
|
+
private readonly pathwaysBuilder;
|
|
12
|
+
private readonly sessionId;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new SessionPathwayBuilder
|
|
15
|
+
*
|
|
16
|
+
* @param pathwaysBuilder The configured PathwaysBuilder instance to wrap
|
|
17
|
+
* @param sessionId Optional session ID to associate with all operations. If not provided, one will be generated automatically.
|
|
18
|
+
*/
|
|
19
|
+
constructor(pathwaysBuilder: PathwaysBuilder<TPathway, TWritablePaths>, sessionId?: string);
|
|
20
|
+
/**
|
|
21
|
+
* Gets the current session ID
|
|
22
|
+
*
|
|
23
|
+
* @returns The session ID associated with this instance
|
|
24
|
+
*/
|
|
25
|
+
getSessionId(): string;
|
|
26
|
+
/**
|
|
27
|
+
* Writes data to a pathway, proxying to the underlying PathwaysBuilder
|
|
28
|
+
*
|
|
29
|
+
* @param path The pathway to write to
|
|
30
|
+
* @param data The data to write
|
|
31
|
+
* @param metadata Optional metadata to include with the event
|
|
32
|
+
* @param options Optional write options
|
|
33
|
+
* @returns A promise that resolves to the event ID(s)
|
|
34
|
+
*/
|
|
35
|
+
write<TPath extends TWritablePaths>(path: TPath, data: TPathway[TPath], metadata?: EventMetadata, options?: PathwayWriteOptions): Promise<string | string[]>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=session-pathway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-pathway.d.ts","sourceRoot":"","sources":["../../src/pathways/session-pathway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAqBrE;;;;;;GAMG;AACH,qBAAa,qBAAqB,CAEhC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,EAC7C,cAAc,SAAS,MAAM,QAAQ,GAAG,KAAK;IAE7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4C;IAC5E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;;OAKG;gBAED,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,EAC1D,SAAS,CAAC,EAAE,MAAM;IAMpB;;;;OAIG;IACH,YAAY,IAAI,MAAM;IAItB;;;;;;;;OAQG;IACG,KAAK,CAAC,KAAK,SAAS,cAAc,EACtC,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EACrB,QAAQ,CAAC,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;CAU9B"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a UUID v4 in a cross-platform compatible way (Deno, Bun, Node.js)
|
|
3
|
+
* @returns A random UUID v4 string
|
|
4
|
+
*/
|
|
5
|
+
function generateUUID() {
|
|
6
|
+
// Check for Deno or browser crypto.randomUUID support
|
|
7
|
+
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
|
8
|
+
return crypto.randomUUID();
|
|
9
|
+
}
|
|
10
|
+
// Fallback to manual UUID generation (compatible with all platforms)
|
|
11
|
+
// Implementation based on RFC4122 version 4
|
|
12
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
|
13
|
+
const r = Math.random() * 16 | 0;
|
|
14
|
+
const v = c === 'x' ? r : (r & 0x3 | 0x8);
|
|
15
|
+
return v.toString(16);
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* SessionPathwayBuilder wraps a PathwaysBuilder instance and automatically
|
|
20
|
+
* associates a session ID with all pathway writes.
|
|
21
|
+
*
|
|
22
|
+
* This provides a convenient way to track operations within a user session
|
|
23
|
+
* by automatically including the session ID in metadata.
|
|
24
|
+
*/
|
|
25
|
+
export class SessionPathwayBuilder {
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new SessionPathwayBuilder
|
|
28
|
+
*
|
|
29
|
+
* @param pathwaysBuilder The configured PathwaysBuilder instance to wrap
|
|
30
|
+
* @param sessionId Optional session ID to associate with all operations. If not provided, one will be generated automatically.
|
|
31
|
+
*/
|
|
32
|
+
constructor(pathwaysBuilder, sessionId) {
|
|
33
|
+
Object.defineProperty(this, "pathwaysBuilder", {
|
|
34
|
+
enumerable: true,
|
|
35
|
+
configurable: true,
|
|
36
|
+
writable: true,
|
|
37
|
+
value: void 0
|
|
38
|
+
});
|
|
39
|
+
Object.defineProperty(this, "sessionId", {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
configurable: true,
|
|
42
|
+
writable: true,
|
|
43
|
+
value: void 0
|
|
44
|
+
});
|
|
45
|
+
this.pathwaysBuilder = pathwaysBuilder;
|
|
46
|
+
this.sessionId = sessionId ?? generateUUID();
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Gets the current session ID
|
|
50
|
+
*
|
|
51
|
+
* @returns The session ID associated with this instance
|
|
52
|
+
*/
|
|
53
|
+
getSessionId() {
|
|
54
|
+
return this.sessionId;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Writes data to a pathway, proxying to the underlying PathwaysBuilder
|
|
58
|
+
*
|
|
59
|
+
* @param path The pathway to write to
|
|
60
|
+
* @param data The data to write
|
|
61
|
+
* @param metadata Optional metadata to include with the event
|
|
62
|
+
* @param options Optional write options
|
|
63
|
+
* @returns A promise that resolves to the event ID(s)
|
|
64
|
+
*/
|
|
65
|
+
async write(path, data, metadata, options) {
|
|
66
|
+
// Create new options object with session ID
|
|
67
|
+
const finalOptions = options ? { ...options } : {};
|
|
68
|
+
// Always include the session ID in the options
|
|
69
|
+
finalOptions.sessionId = options?.sessionId ?? this.sessionId;
|
|
70
|
+
// The PathwaysBuilder will handle session-specific user resolvers
|
|
71
|
+
return await this.pathwaysBuilder.write(path, data, metadata, finalOptions);
|
|
72
|
+
}
|
|
73
|
+
}
|
package/esm/pathways/types.d.ts
CHANGED
|
@@ -132,6 +132,11 @@ export type PathwayWriteOptions = WebhookSendOptions & {
|
|
|
132
132
|
* @default "user"
|
|
133
133
|
*/
|
|
134
134
|
auditMode?: "user" | "system";
|
|
135
|
+
/**
|
|
136
|
+
* Session ID for this write operation
|
|
137
|
+
* Used to associate the operation with a specific session
|
|
138
|
+
*/
|
|
139
|
+
sessionId?: string;
|
|
135
140
|
};
|
|
136
141
|
export {};
|
|
137
142
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pathways/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAEzF;;;GAGG;AACH,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IACnD,QAAQ,CAAC,yBAAyB,EAAE,wGAAwG,CAAA;CAC7I,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO;IACpF;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAA;IAEX;;OAEG;IACH,SAAS,EAAE,CAAC,CAAA;IAEZ;;OAEG;IACH,MAAM,EAAE,CAAC,CAAA;IAET;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;AAExE;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAAG;AAEjE;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAE1I;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAElI;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,SAAS,OAAO,IAAI,UAAU,SAAS,KAAK,GAAG,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAErI;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;;;OAIG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAE9D;;;OAGG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;CAC1D,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACrD;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEhC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pathways/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAEzF;;;GAGG;AACH,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IACnD,QAAQ,CAAC,yBAAyB,EAAE,wGAAwG,CAAA;CAC7I,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO;IACpF;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAA;IAEX;;OAEG;IACH,SAAS,EAAE,CAAC,CAAA;IAEZ;;OAEG;IACH,MAAM,EAAE,CAAC,CAAA;IAET;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;AAExE;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAAG;AAEjE;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAE1I;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAElI;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,SAAS,OAAO,IAAI,UAAU,SAAS,KAAK,GAAG,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAErI;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;;;OAIG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAE9D;;;OAGG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;CAC1D,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACrD;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEhC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAE7B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@flowcore/pathways",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.0",
|
|
4
4
|
"description": "A TypeScript Library for creating Flowcore Pathways, simplifying the integration with the flowcore platform",
|
|
5
5
|
"homepage": "https://github.com/flowcore-io/flowcore-sdk#readme",
|
|
6
6
|
"repository": {
|
|
@@ -62,7 +62,12 @@ export declare class PathwaysBuilder<TPathway extends Record<string, unknown> =
|
|
|
62
62
|
private pathwayTimeoutMs;
|
|
63
63
|
private auditHandler?;
|
|
64
64
|
private userIdResolver?;
|
|
65
|
+
private readonly sessionUserResolvers;
|
|
65
66
|
private readonly logger;
|
|
67
|
+
private readonly baseUrl;
|
|
68
|
+
private readonly tenant;
|
|
69
|
+
private readonly dataCore;
|
|
70
|
+
private readonly apiKey;
|
|
66
71
|
/**
|
|
67
72
|
* Creates a new PathwaysBuilder instance
|
|
68
73
|
* @param options Configuration options for the PathwaysBuilder
|
|
@@ -99,6 +104,19 @@ export declare class PathwaysBuilder<TPathway extends Record<string, unknown> =
|
|
|
99
104
|
* @returns The PathwaysBuilder instance with custom user ID resolver configured
|
|
100
105
|
*/
|
|
101
106
|
withUserResolver(resolver: UserIdResolver): PathwaysBuilder<TPathway, TWritablePaths>;
|
|
107
|
+
/**
|
|
108
|
+
* Registers a user resolver for a specific session
|
|
109
|
+
* @param sessionId The session ID to associate with this resolver
|
|
110
|
+
* @param resolver The resolver function that resolves to the user ID for this session
|
|
111
|
+
* @returns The PathwaysBuilder instance for chaining
|
|
112
|
+
*/
|
|
113
|
+
withSessionUserResolver(sessionId: string, resolver: UserIdResolver): PathwaysBuilder<TPathway, TWritablePaths>;
|
|
114
|
+
/**
|
|
115
|
+
* Gets a user resolver for a specific session ID
|
|
116
|
+
* @param sessionId The session ID to get the resolver for
|
|
117
|
+
* @returns The resolver function for the session, or undefined if none exists
|
|
118
|
+
*/
|
|
119
|
+
getSessionUserResolver(sessionId: string): UserIdResolver | undefined;
|
|
102
120
|
/**
|
|
103
121
|
* Process a pathway event with error handling and retries
|
|
104
122
|
* @param pathway The pathway to process
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/pathways/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,KAAK,EAAyD,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAG/H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAA6B,eAAe,EAAE,MAAM,YAAY,CAAA;AAiB3J;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEzC;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;AAEvE;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe,CAE1B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,EAC7C,cAAc,SAAS,MAAM,QAAQ,GAAG,KAAK;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGxB;IACD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAGhC;IACD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG9B;IACD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG9B;IACD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyE;IAC5G,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGvB;IACD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyE;IACjG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyE;IAClG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuE;IAChG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuE;IAClG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuE;IACnG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0B;IAChE,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,gBAAgB,CAAqC;IAG7D,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,cAAc,CAAC,CAAgB;IAGvC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAE/B;;;;;;;;;OASG;gBACS,EACV,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,gBAAgB,EAChB,MAAM,GACP,EAAE;QACD,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB;
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/pathways/builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAExD,OAAO,KAAK,EAAyD,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAG/H,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEzC,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,UAAU,EAAE,YAAY,EAAE,mBAAmB,EAA6B,eAAe,EAAE,MAAM,YAAY,CAAA;AAiB3J;;;;GAIG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEzC;;;;GAIG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,aAAa,KAAK,IAAI,CAAA;AAEvE;;;GAGG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;AAElD;;GAEG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CACjC;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,eAAe,CAE1B,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,EAC7C,cAAc,SAAS,MAAM,QAAQ,GAAG,KAAK;IAE7C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA2B;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAGxB;IACD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAGhC;IACD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG9B;IACD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG9B;IACD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAyE;IAC5G,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGvB;IACD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyE;IACjG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAyE;IAClG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAuE;IAChG,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAuE;IAClG,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAuE;IACnG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiC;IAC9D,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAA0B;IAChE,OAAO,CAAC,YAAY,CAA2C;IAC/D,OAAO,CAAC,gBAAgB,CAAqC;IAG7D,OAAO,CAAC,YAAY,CAAC,CAAc;IACnC,OAAO,CAAC,cAAc,CAAC,CAAgB;IAGvC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAyC;IAG9E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAG/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAQ;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAC/B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAQ;IAE/B;;;;;;;;;OASG;gBACS,EACV,OAAO,EACP,MAAM,EACN,QAAQ,EACR,MAAM,EACN,gBAAgB,EAChB,MAAM,GACP,EAAE;QACD,OAAO,EAAE,MAAM,CAAA;QACf,MAAM,EAAE,MAAM,CAAA;QACd,QAAQ,EAAE,MAAM,CAAA;QAChB,MAAM,EAAE,MAAM,CAAA;QACd,gBAAgB,CAAC,EAAE,MAAM,CAAA;QACzB,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB;IAkCD;;;;OAIG;IACH,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAMhF;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAM3E;;;;OAIG;IACH,gBAAgB,CAAC,QAAQ,EAAE,cAAc,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAMrF;;;;;OAKG;IACH,uBAAuB,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC;IAM/G;;;;OAIG;IACH,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIrE;;;;;OAKG;IACU,OAAO,CAAC,OAAO,EAAE,MAAM,QAAQ,EAAE,IAAI,EAAE,aAAa;IA6IjE;;;;;;;;OAQG;IACH,QAAQ,CACN,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,MAAM,EAChB,CAAC,SAAS,OAAO,EACjB,CAAC,SAAS,OAAO,GAAG,IAAI,EAExB,QAAQ,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG;QAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAChG,eAAe,CAChB,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAC9C,cAAc,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CACtD;IA4DD;;;;;;OAMG;IACH,GAAG,CAAC,KAAK,SAAS,MAAM,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;IAK/D;;;;;;;;;;OAUG;IACH,MAAM,CAAC,KAAK,SAAS,MAAM,QAAQ,EACjC,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG;QAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;KAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GACxG,IAAI;IAqBP;;;;;OAKG;IACH,SAAS,CAAC,KAAK,SAAS,MAAM,QAAQ,EACpC,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG;QAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;KAAE,KAAK,IAAI,EACvF,IAAI,GAAE,QAAQ,GAAG,OAAO,GAAG,KAAgB,GAC1C,IAAI;IA4BP;;;;OAIG;IACH,OAAO,CAAC,KAAK,SAAS,MAAM,QAAQ,EAClC,IAAI,EAAE,KAAK,EACX,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,GAAG;QAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAA;KAAE,KAAK,IAAI,GACpG,IAAI;IAmBP;;;OAGG;IACH,UAAU,CACR,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACrE,IAAI;IAMP;;;;;;;OAOG;IACG,KAAK,CAAC,KAAK,SAAS,cAAc,EACtC,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EACrB,QAAQ,CAAC,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;IAuH7B;;;;;;;;;;OAUG;YACW,2BAA2B;CA4C1C"}
|
|
@@ -153,6 +153,13 @@ class PathwaysBuilder {
|
|
|
153
153
|
writable: true,
|
|
154
154
|
value: void 0
|
|
155
155
|
});
|
|
156
|
+
// Session-specific user resolvers
|
|
157
|
+
Object.defineProperty(this, "sessionUserResolvers", {
|
|
158
|
+
enumerable: true,
|
|
159
|
+
configurable: true,
|
|
160
|
+
writable: true,
|
|
161
|
+
value: new Map()
|
|
162
|
+
});
|
|
156
163
|
// Logger instance (but not using it yet due to TypeScript errors)
|
|
157
164
|
Object.defineProperty(this, "logger", {
|
|
158
165
|
enumerable: true,
|
|
@@ -160,8 +167,38 @@ class PathwaysBuilder {
|
|
|
160
167
|
writable: true,
|
|
161
168
|
value: void 0
|
|
162
169
|
});
|
|
170
|
+
// Configuration values needed for cloning
|
|
171
|
+
Object.defineProperty(this, "baseUrl", {
|
|
172
|
+
enumerable: true,
|
|
173
|
+
configurable: true,
|
|
174
|
+
writable: true,
|
|
175
|
+
value: void 0
|
|
176
|
+
});
|
|
177
|
+
Object.defineProperty(this, "tenant", {
|
|
178
|
+
enumerable: true,
|
|
179
|
+
configurable: true,
|
|
180
|
+
writable: true,
|
|
181
|
+
value: void 0
|
|
182
|
+
});
|
|
183
|
+
Object.defineProperty(this, "dataCore", {
|
|
184
|
+
enumerable: true,
|
|
185
|
+
configurable: true,
|
|
186
|
+
writable: true,
|
|
187
|
+
value: void 0
|
|
188
|
+
});
|
|
189
|
+
Object.defineProperty(this, "apiKey", {
|
|
190
|
+
enumerable: true,
|
|
191
|
+
configurable: true,
|
|
192
|
+
writable: true,
|
|
193
|
+
value: void 0
|
|
194
|
+
});
|
|
163
195
|
// Initialize logger (use NoopLogger if none provided)
|
|
164
196
|
this.logger = logger ?? new logger_js_1.NoopLogger();
|
|
197
|
+
// Store configuration values for cloning
|
|
198
|
+
this.baseUrl = baseUrl;
|
|
199
|
+
this.tenant = tenant;
|
|
200
|
+
this.dataCore = dataCore;
|
|
201
|
+
this.apiKey = apiKey;
|
|
165
202
|
this.logger.debug('Initializing PathwaysBuilder', {
|
|
166
203
|
baseUrl,
|
|
167
204
|
tenant,
|
|
@@ -213,6 +250,25 @@ class PathwaysBuilder {
|
|
|
213
250
|
this.userIdResolver = resolver;
|
|
214
251
|
return this;
|
|
215
252
|
}
|
|
253
|
+
/**
|
|
254
|
+
* Registers a user resolver for a specific session
|
|
255
|
+
* @param sessionId The session ID to associate with this resolver
|
|
256
|
+
* @param resolver The resolver function that resolves to the user ID for this session
|
|
257
|
+
* @returns The PathwaysBuilder instance for chaining
|
|
258
|
+
*/
|
|
259
|
+
withSessionUserResolver(sessionId, resolver) {
|
|
260
|
+
this.logger.debug('Configuring session-specific user resolver', { sessionId });
|
|
261
|
+
this.sessionUserResolvers.set(sessionId, resolver);
|
|
262
|
+
return this;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Gets a user resolver for a specific session ID
|
|
266
|
+
* @param sessionId The session ID to get the resolver for
|
|
267
|
+
* @returns The resolver function for the session, or undefined if none exists
|
|
268
|
+
*/
|
|
269
|
+
getSessionUserResolver(sessionId) {
|
|
270
|
+
return this.sessionUserResolvers.get(sessionId);
|
|
271
|
+
}
|
|
216
272
|
/**
|
|
217
273
|
* Process a pathway event with error handling and retries
|
|
218
274
|
* @param pathway The pathway to process
|
|
@@ -507,7 +563,8 @@ class PathwaysBuilder {
|
|
|
507
563
|
pathway: pathStr,
|
|
508
564
|
metadata,
|
|
509
565
|
options: {
|
|
510
|
-
fireAndForget: options?.fireAndForget
|
|
566
|
+
fireAndForget: options?.fireAndForget,
|
|
567
|
+
sessionId: options?.sessionId
|
|
511
568
|
}
|
|
512
569
|
});
|
|
513
570
|
if (!this.pathways[path]) {
|
|
@@ -531,17 +588,43 @@ class PathwaysBuilder {
|
|
|
531
588
|
}
|
|
532
589
|
// Create a copy of the metadata to avoid modifying the original
|
|
533
590
|
const finalMetadata = metadata ? { ...metadata } : {};
|
|
591
|
+
// Check for session-specific user resolver
|
|
592
|
+
let userId;
|
|
593
|
+
if (options?.sessionId) {
|
|
594
|
+
const sessionUserResolver = this.sessionUserResolvers.get(options.sessionId);
|
|
595
|
+
if (sessionUserResolver) {
|
|
596
|
+
try {
|
|
597
|
+
userId = await sessionUserResolver();
|
|
598
|
+
this.logger.debug(`Using session-specific user resolver`, {
|
|
599
|
+
pathway: pathStr,
|
|
600
|
+
sessionId: options.sessionId,
|
|
601
|
+
userId
|
|
602
|
+
});
|
|
603
|
+
}
|
|
604
|
+
catch (error) {
|
|
605
|
+
this.logger.error(`Error resolving session user ID`, error instanceof Error ? error : new Error(String(error)), {
|
|
606
|
+
pathway: pathStr,
|
|
607
|
+
sessionId: options.sessionId
|
|
608
|
+
});
|
|
609
|
+
}
|
|
610
|
+
}
|
|
611
|
+
}
|
|
534
612
|
// Process audit metadata if audit is configured
|
|
535
613
|
if (this.userIdResolver) {
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
614
|
+
// Only use global resolver if we don't already have a user ID from a session resolver
|
|
615
|
+
if (!userId) {
|
|
616
|
+
this.logger.debug(`Resolving user ID for audit metadata`, { pathway: pathStr });
|
|
617
|
+
userId = await this.userIdResolver();
|
|
618
|
+
}
|
|
619
|
+
}
|
|
620
|
+
// Determine the audit mode: default is "user" unless explicitly specified as "system"
|
|
621
|
+
const auditMode = options?.auditMode ?? "user";
|
|
622
|
+
this.logger.debug(`Adding audit metadata`, {
|
|
623
|
+
pathway: pathStr,
|
|
624
|
+
auditMode,
|
|
625
|
+
userId
|
|
626
|
+
});
|
|
627
|
+
if (userId) {
|
|
545
628
|
// Add appropriate audit metadata based on mode
|
|
546
629
|
if (auditMode === "system") {
|
|
547
630
|
finalMetadata["audit/user-id"] = "system";
|
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Exports all components needed to build and manage pathways including:
|
|
5
5
|
* - Pathway builder
|
|
6
|
+
* - Session pathway builder
|
|
6
7
|
* - State management
|
|
7
8
|
* - Storage adapters (KV, Postgres)
|
|
8
9
|
* - Logging
|
|
@@ -15,5 +16,6 @@ export * from "./internal-pathway.state.js";
|
|
|
15
16
|
export * from "./kv/kv-adapter.js";
|
|
16
17
|
export * from "./logger.js";
|
|
17
18
|
export * from "./postgres/index.js";
|
|
19
|
+
export * from "./session-pathway.js";
|
|
18
20
|
export * from "./types.js";
|
|
19
21
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pathways/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/pathways/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,cAAc,cAAc,CAAC;AAC7B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,oBAAoB,CAAC;AACnC,cAAc,aAAa,CAAC;AAC5B,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC"}
|
package/script/pathways/index.js
CHANGED
|
@@ -19,6 +19,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
19
19
|
*
|
|
20
20
|
* Exports all components needed to build and manage pathways including:
|
|
21
21
|
* - Pathway builder
|
|
22
|
+
* - Session pathway builder
|
|
22
23
|
* - State management
|
|
23
24
|
* - Storage adapters (KV, Postgres)
|
|
24
25
|
* - Logging
|
|
@@ -31,4 +32,5 @@ __exportStar(require("./internal-pathway.state.js"), exports);
|
|
|
31
32
|
__exportStar(require("./kv/kv-adapter.js"), exports);
|
|
32
33
|
__exportStar(require("./logger.js"), exports);
|
|
33
34
|
__exportStar(require("./postgres/index.js"), exports);
|
|
35
|
+
__exportStar(require("./session-pathway.js"), exports);
|
|
34
36
|
__exportStar(require("./types.js"), exports);
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { PathwaysBuilder } from "./builder.js";
|
|
2
|
+
import type { EventMetadata, PathwayWriteOptions } from "./types.js";
|
|
3
|
+
/**
|
|
4
|
+
* SessionPathwayBuilder wraps a PathwaysBuilder instance and automatically
|
|
5
|
+
* associates a session ID with all pathway writes.
|
|
6
|
+
*
|
|
7
|
+
* This provides a convenient way to track operations within a user session
|
|
8
|
+
* by automatically including the session ID in metadata.
|
|
9
|
+
*/
|
|
10
|
+
export declare class SessionPathwayBuilder<TPathway extends Record<string, unknown> = {}, TWritablePaths extends keyof TPathway = never> {
|
|
11
|
+
private readonly pathwaysBuilder;
|
|
12
|
+
private readonly sessionId;
|
|
13
|
+
/**
|
|
14
|
+
* Creates a new SessionPathwayBuilder
|
|
15
|
+
*
|
|
16
|
+
* @param pathwaysBuilder The configured PathwaysBuilder instance to wrap
|
|
17
|
+
* @param sessionId Optional session ID to associate with all operations. If not provided, one will be generated automatically.
|
|
18
|
+
*/
|
|
19
|
+
constructor(pathwaysBuilder: PathwaysBuilder<TPathway, TWritablePaths>, sessionId?: string);
|
|
20
|
+
/**
|
|
21
|
+
* Gets the current session ID
|
|
22
|
+
*
|
|
23
|
+
* @returns The session ID associated with this instance
|
|
24
|
+
*/
|
|
25
|
+
getSessionId(): string;
|
|
26
|
+
/**
|
|
27
|
+
* Writes data to a pathway, proxying to the underlying PathwaysBuilder
|
|
28
|
+
*
|
|
29
|
+
* @param path The pathway to write to
|
|
30
|
+
* @param data The data to write
|
|
31
|
+
* @param metadata Optional metadata to include with the event
|
|
32
|
+
* @param options Optional write options
|
|
33
|
+
* @returns A promise that resolves to the event ID(s)
|
|
34
|
+
*/
|
|
35
|
+
write<TPath extends TWritablePaths>(path: TPath, data: TPathway[TPath], metadata?: EventMetadata, options?: PathwayWriteOptions): Promise<string | string[]>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=session-pathway.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-pathway.d.ts","sourceRoot":"","sources":["../../src/pathways/session-pathway.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAqBrE;;;;;;GAMG;AACH,qBAAa,qBAAqB,CAEhC,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,EAAE,EAC7C,cAAc,SAAS,MAAM,QAAQ,GAAG,KAAK;IAE7C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4C;IAC5E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IAEnC;;;;;OAKG;gBAED,eAAe,EAAE,eAAe,CAAC,QAAQ,EAAE,cAAc,CAAC,EAC1D,SAAS,CAAC,EAAE,MAAM;IAMpB;;;;OAIG;IACH,YAAY,IAAI,MAAM;IAItB;;;;;;;;OAQG;IACG,KAAK,CAAC,KAAK,SAAS,cAAc,EACtC,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,QAAQ,CAAC,KAAK,CAAC,EACrB,QAAQ,CAAC,EAAE,aAAa,EACxB,OAAO,CAAC,EAAE,mBAAmB,GAC5B,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;CAU9B"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SessionPathwayBuilder = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Generates a UUID v4 in a cross-platform compatible way (Deno, Bun, Node.js)
|
|
6
|
+
* @returns A random UUID v4 string
|
|
7
|
+
*/
|
|
8
|
+
function generateUUID() {
|
|
9
|
+
// Check for Deno or browser crypto.randomUUID support
|
|
10
|
+
if (typeof crypto !== 'undefined' && crypto.randomUUID) {
|
|
11
|
+
return crypto.randomUUID();
|
|
12
|
+
}
|
|
13
|
+
// Fallback to manual UUID generation (compatible with all platforms)
|
|
14
|
+
// Implementation based on RFC4122 version 4
|
|
15
|
+
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
|
|
16
|
+
const r = Math.random() * 16 | 0;
|
|
17
|
+
const v = c === 'x' ? r : (r & 0x3 | 0x8);
|
|
18
|
+
return v.toString(16);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* SessionPathwayBuilder wraps a PathwaysBuilder instance and automatically
|
|
23
|
+
* associates a session ID with all pathway writes.
|
|
24
|
+
*
|
|
25
|
+
* This provides a convenient way to track operations within a user session
|
|
26
|
+
* by automatically including the session ID in metadata.
|
|
27
|
+
*/
|
|
28
|
+
class SessionPathwayBuilder {
|
|
29
|
+
/**
|
|
30
|
+
* Creates a new SessionPathwayBuilder
|
|
31
|
+
*
|
|
32
|
+
* @param pathwaysBuilder The configured PathwaysBuilder instance to wrap
|
|
33
|
+
* @param sessionId Optional session ID to associate with all operations. If not provided, one will be generated automatically.
|
|
34
|
+
*/
|
|
35
|
+
constructor(pathwaysBuilder, sessionId) {
|
|
36
|
+
Object.defineProperty(this, "pathwaysBuilder", {
|
|
37
|
+
enumerable: true,
|
|
38
|
+
configurable: true,
|
|
39
|
+
writable: true,
|
|
40
|
+
value: void 0
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(this, "sessionId", {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
configurable: true,
|
|
45
|
+
writable: true,
|
|
46
|
+
value: void 0
|
|
47
|
+
});
|
|
48
|
+
this.pathwaysBuilder = pathwaysBuilder;
|
|
49
|
+
this.sessionId = sessionId ?? generateUUID();
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Gets the current session ID
|
|
53
|
+
*
|
|
54
|
+
* @returns The session ID associated with this instance
|
|
55
|
+
*/
|
|
56
|
+
getSessionId() {
|
|
57
|
+
return this.sessionId;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Writes data to a pathway, proxying to the underlying PathwaysBuilder
|
|
61
|
+
*
|
|
62
|
+
* @param path The pathway to write to
|
|
63
|
+
* @param data The data to write
|
|
64
|
+
* @param metadata Optional metadata to include with the event
|
|
65
|
+
* @param options Optional write options
|
|
66
|
+
* @returns A promise that resolves to the event ID(s)
|
|
67
|
+
*/
|
|
68
|
+
async write(path, data, metadata, options) {
|
|
69
|
+
// Create new options object with session ID
|
|
70
|
+
const finalOptions = options ? { ...options } : {};
|
|
71
|
+
// Always include the session ID in the options
|
|
72
|
+
finalOptions.sessionId = options?.sessionId ?? this.sessionId;
|
|
73
|
+
// The PathwaysBuilder will handle session-specific user resolvers
|
|
74
|
+
return await this.pathwaysBuilder.write(path, data, metadata, finalOptions);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
exports.SessionPathwayBuilder = SessionPathwayBuilder;
|
|
@@ -132,6 +132,11 @@ export type PathwayWriteOptions = WebhookSendOptions & {
|
|
|
132
132
|
* @default "user"
|
|
133
133
|
*/
|
|
134
134
|
auditMode?: "user" | "system";
|
|
135
|
+
/**
|
|
136
|
+
* Session ID for this write operation
|
|
137
|
+
* Used to associate the operation with a specific session
|
|
138
|
+
*/
|
|
139
|
+
sessionId?: string;
|
|
135
140
|
};
|
|
136
141
|
export {};
|
|
137
142
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pathways/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAEzF;;;GAGG;AACH,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IACnD,QAAQ,CAAC,yBAAyB,EAAE,wGAAwG,CAAA;CAC7I,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO;IACpF;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAA;IAEX;;OAEG;IACH,SAAS,EAAE,CAAC,CAAA;IAEZ;;OAEG;IACH,MAAM,EAAE,CAAC,CAAA;IAET;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;AAExE;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAAG;AAEjE;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAE1I;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAElI;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,SAAS,OAAO,IAAI,UAAU,SAAS,KAAK,GAAG,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAErI;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;;;OAIG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAE9D;;;OAGG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;CAC1D,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACrD;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEhC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/pathways/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AAEzF;;;GAGG;AACH,KAAK,uBAAuB,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,GAAG;IACnD,QAAQ,CAAC,yBAAyB,EAAE,wGAAwG,CAAA;CAC7I,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,OAAO;IACpF;;OAEG;IACH,QAAQ,EAAE,CAAC,CAAA;IAEX;;OAEG;IACH,SAAS,EAAE,CAAC,CAAA;IAEZ;;OAEG;IACH,MAAM,EAAE,CAAC,CAAA;IAET;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAA;IAEnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAA;IAErB;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE3B;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAElB;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAED;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,MAAM,EAAE,CAAC,SAAS,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAA;AAExE;;GAEG;AACH,MAAM,WAAW,aAAc,SAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAAG;AAEjE;;;GAGG;AACH,MAAM,MAAM,WAAW,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;AAE1I;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,kBAAkB,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;AAElI;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,SAAS,MAAM,EAAE,UAAU,SAAS,OAAO,IAAI,UAAU,SAAS,KAAK,GAAG,uBAAuB,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;AAErI;;GAEG;AACH,MAAM,MAAM,YAAY,GAAG;IACzB;;;;OAIG;IACH,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;IAE9D;;;OAGG;IACH,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;CAC1D,CAAA;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,kBAAkB,GAAG;IACrD;;OAEG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;IAEvB;;OAEG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAEhC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,QAAQ,CAAA;IAE7B;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA"}
|